Zabbix监控误报交换机重启问题

问题描述

最近时不时无规律的收到zabbix的监控报警,是不同的交换机重启的误报,提示交换机重启了,但检查看后发现实际并没有重启。

我们发现监控是否重启是监控交换机的引导时间,使用的是如下OID:

[root@rds ~]# snmpwalk -v 2c -c public 192.168.1.9 1.3.6.1.2.1.1.3.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (704406) 1:57:24.06

这样看来192.168.1.9这台设备sysUptime是0天1小时57分钟。

那我们登入交换机设备上验证一下:

WL-4507#show version 
Cisco IOS Software, IOS-XE Software, Catalyst 4500 L3 Switch Software (cat4500e-UNIVERSAL-M), Version 03.03.00.SG RELEASE SOFTWARE (fc3)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2012 by Cisco Systems, Inc.
Compiled Sun 15-Apr-12 09:07 by prod_rel_team
 
ROM: 15.0(1r)SG5
WL-4507 uptime is 1 year, 18 weeks, 6 days, 3 hours, 29 minutes
Uptime for this control processor is 1 year, 18 weeks, 6 days, 3 hours, 31 minutes
System returned to ROM by power-on
System restarted at 11:14:10 BeiJing Tue Jan 12 2016

结果发现此交换机并没有重启,这台设备sysUptime是1年18周6天,大概就是497天。

原因分析

经过查阅相关资料,得知sysUpTime是由一个32-bit的counter来计数的,单位是1/100秒,所以最大时间为496天,过了496天就溢出,变成0,然后又重新计算时间,所以zabbix误报。

解决方法

可以使用另一个计数值来计算时间,那就是snmpEngineId (1.3.6.1.6.3.10.2.1.3.0) ,其同样是32-bit的值,但它的单位是秒,最大时间为49600天,即所以可以存135年的运行时间,足够了。本质是使用SNMP服务的启动时间来表示sysUptime.

[root@rds ~]# snmpwalk -v 2c -c public 192.168.1.9 1.3.6.1.6.3.10.2.1.3.0
SNMP-FRAMEWORK-MIB::snmpEngineTime.0 = INTEGER: 42957135 seconds

可以看到192.168.1.9这台设备使用1.3.6.1.6.3.10.2.1.3.0查询的结果是42957135s,即为497天,是正确的时间。

zabbix监控更改: 找到Template SNMP Generic: Device uptime, 将SNMP OID改为:1.3.6.1.6.3.10.2.1.3.0 使用自定义倍数改为:1 或者取消勾选。


PS:有时会因为交换机系统的Bug,SNMP服务会自动重启,需要结合两个OID一起使用。