当我们使用sysUpTime(.1.3.6.1.2.1.1.3.0)获取设备运行时长时,会发现有的设备时间是正确的,有的设备时间是错误的。这是因为sysUpTime是由一个32-bit的counter来计数的,单位是1/100秒,所以最大时间为496天,过了496天就溢出,变成0,然后又重新计算时间。

snmpwalk -v 3 -u zfop -a MD5 -A zfop2016 -x DES -X zfop2016 -l authPriv 172.82.10.234 1.3.6.1.2.1.1.3.0 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (924233900) 106 days, 23:18:59.00

做为变通的办法,可以使用另一个计数值来计算时间,那就是snmpEngineId (.1.3.6.1.6.3.10.2.1.3.0) ,其同样是32-bit的值,但它的单位是秒,所以可以存135年的运行时间,足够了。

snmpwalk -v 3 -u zfop -a MD5 -A zfop2016 -x DES -X zfop2016 -l authPriv 172.82.10.234 1.3.6.1.6.3.10.2.1.3.0
SNMP-FRAMEWORK-MIB::snmpEngineTime.0 = INTEGER: 3967454 seconds

发表回复