![SNMP 滴答计数器环绕逻辑](https://linux22.com/image/621800/SNMP%20%E6%BB%B4%E7%AD%94%E8%AE%A1%E6%95%B0%E5%99%A8%E7%8E%AF%E7%BB%95%E9%80%BB%E8%BE%91.png)
我正在尝试基于时钟计数器通过 SNMP 计算远程代理的 CPU 使用率(百分比)ssCpuRaw*
。据我所知,它们都是类型COUNTER(32 bit)
,因此在达到其值后它们会返回零MAX
。
我监控的代理大约有 80% 的时间处于空闲状态,因此空闲计数器将在未来某个时间点首先循环,远早于其他计数器。我现在的问题是空闲计数器到达后其他计数器会发生什么MAX
?SNMP 是否足够智能,可以重置其他ssCpuRaw*
计数器?否则这些计数器之间的关系将非常具有误导性,导致每次计算百分比的尝试都毫无用处,直到所有剩余计数器都循环,或者我完全偏离了这里?
谢谢
答案1
不,如果重置其他计数器,您将丢失上次查询和换行之间累积的数字。
查询这些计数器的适当方法是
sysUptime.0
在单个数据包中发出 GET 请求和计数器值,这样您就可以获得原子视图- 使用该
sysUptime.0
对象来查明代理是否已被重置。 - 分别计算每个计数器与上一次查询的差值,并校正换行
您的查询需要足够频繁,以免错过连续两次溢出,这应该很容易。重置测试用于过滤发生的峰值,例如,如果计数器似乎从 3,000,000,000 回绕到 0。
这确实意味着您无法解释在其中一个计数器已经包装一次后收集的数据。