snmp的最大值导致报警问题
文章目录
某天下午突然收到一条告警信息:ASA被重启!!
异常 - 10.1.1.1
异常时间 2016.12.11 - 14:10:2110.1.1.1 reloaded
10.1.1.1(10.1.1.1)sysUpTime : 00:04:14
上面的报警信息来自内网的zabbix,调用脚本通过微信公众号推送报警信息;针对所有的网络设备都配置了snmp,来监控一些参数。
检查思路,作为出口设备,如果一旦真的重启,引发的报警信息就不只是一条了,初步判断是误报,登陆ASA也能看到,ASA up 1 year 132 days
zabbix上设置的报警的triger是
{10.1.1.1:sysUpTime.last(0)}<600
在思科提供的mib中检查,针对sysuptime的描述如下:
the timetick value for system uptime (OID 1.3.6.1.2.1.1.3.0) is a 32-bit value so once the system has been up for 1 year, 132 days, 2 hours, 27 minutes and 52.96 seconds the value will roll to 0 again
也就是说这个值最多记497天,之后会清零重计。
解决方案就是同时监控这个值snmpenginetime
(.1.3.6.1.6.3.10.2.1.3) ,进行综合判断。
这个两个oid都是counter32类型,最大值都是2^32-1=4294967295,区别是sysuptime
指设备的网络管理部分,每次系统重新启动时都会重新初始化,单位是百分之一秒,最多到42949672.95s;snmpenginetime
是指设备SNMP模块的运行时间,单位是一秒,最大可以到4294967295s,也就是135年。
另外,即使未重启设备,该模块也可能会独立重启。以下情况会导致SNMP模块重启,并将snmpenginetime清零:
- 配置SNMPv3(必须配置snmpEngineID)
- 更改snmpEngineID
- 设备重启
- 设备bug导致snmp服务重启
建议监控系统中结合两个oid一起使用。
关于接口流量的最大值
在MIB中,ifOutOctets和ifInOctets来分别表示接口流出数据量和接口流入数据量,单位是字节。其数据类型为counter32。其能表示最大值为2^32-1=4294967295。依据oid的值累加,千兆口跑满32秒就可以达到最大值。
ifHCOutOctets和ifHCInOctets也是分别表示接口流出数据量和接口流入数据量其数据类型为counter64,最大值为16EB这个值的概念是如果千兆口满跑4000多年才能达到。
早起设备有一个这样的建议何时使用何种计数器:
1 | <20,000,000 bits/second 使用counter32 |
对于目前的设备,建议直接使用counter64:
类型 | IF-MIB | OID |
---|---|---|
counter32 | ifInOctets | 1.3.6.1.2.1.2.2.1.10 |
counter32 | ifOutOctets | 1.3.6.1.2.1.2.2.1.16 |
counter64 | ifHCInOctets | 1.3.6.1.2.1.31.1.1.1.6 |
counter64 | ifHCOutOctets | 1.3.6.1.2.1.31.1.1.1.10 |
原文作者: Mansur
原文链接: http://nbma.info/snmp-max-value-notify/
许可协议: 除特别声明外,本站文章均采用CC BY-NC 4.0许可协议,转载请注明出处。