概述
在主备网络中,尤其是在动态路由组网的一个架构中,主备网络切换比较快速,有时感觉不到变化。
最近遇到一个案例,在zabbix监控的主线网关可以正常通讯,但是在主线华为防火墙上面做的健康检测却失败了,失败时,直接在防火墙上ping网关也是可以正常通讯的,过段时间又恢复了正常,造成了主备线路来回切换,网络震荡。
由此考虑可以在zabbix添加一个监控,用于监控健康状态,经查询官方资料,确实有几个oid可以进行检测,但是实际通过snmpwalk无法获取到。主要原因可能是由于防火墙版本过低,并没有支持到OID,以后可以通过版本升级解决测试一下。以下为官方文档查询到的trap支持特性,后面会研究如何通过trap进行实现。

也可以通过官方工具进行mib查询,链接如下:
https://info.support.huawei.com/info-finder/tool/zh/enterprise/mib

过程
因为指定的oid并无法直接通过snmpwalk进行直接获取,经过查询,可以通过默认路由状态来判断健康检查是否失败,也算是一个曲线救国的方法。
此方法只能适用于默认路由通过绑定健康检查来生效的情况。健康检查失败,路由失效。

使用snmpwalk获取这个节点下的内容
[root@localhost ~]# snmpwalk -Cc -v 2c -c snmp.local 192.168.241.1 1.3.6.1.2.1.4.24.4.1.16
IP-FORWARD-MIB::ipCidrRouteStatus.0.0.0.0.0.0.0.0.0.211.124.11.219 = INTEGER: active(1)
IP-FORWARD-MIB::ipCidrRouteStatus.127.0.0.0.255.0.0.0.0.127.0.0.1 = INTEGER: active(1)
IP-FORWARD-MIB::ipCidrRouteStatus.127.0.0.1.255.255.255.255.0.127.0.0.1 = INTEGER: active(1)
IP-FORWARD-MIB::ipCidrRouteStatus.127.255.255.255.255.255.255.255.0.127.0.0.1 = INTEGER: active(1)
IP-FORWARD-MIB::ipCidrRouteStatus.192.168.10.0.255.255.255.0.0.192.168.241.3 = INTEGER: active(1)
IP-FORWARD-MIB::ipCidrRouteStatus.192.168.22.0.255.255.255.0.0.192.168.241.3 = INTEGER: active(1)
IP-FORWARD-MIB::ipCidrRouteStatus.192.168.23.0.255.255.255.0.0.192.168.241.3 = INTEGER: active(1)
IP-FORWARD-MIB::ipCidrRouteStatus.192.168.100.0.255.255.255.0.0.192.168.241.3 = INTEGER: active(1)
IP-FORWARD-MIB::ipCidrRouteStatus.192.168.240.0.255.255.255.0.0.192.168.241.3 = INTEGER: active(1)
IP-FORWARD-MIB::ipCidrRouteStatus.192.168.240.0.255.255.255.0.0.192.168.243.1 = INTEGER: active(1)
IP-FORWARD-MIB::ipCidrRouteStatus.192.168.241.0.255.255.255.0.0.192.168.241.1 = INTEGER: active(1)
IP-FORWARD-MIB::ipCidrRouteStatus.192.168.241.1.255.255.255.255.0.127.0.0.1 = INTEGER: active(1)
IP-FORWARD-MIB::ipCidrRouteStatus.192.168.241.255.255.255.255.255.0.127.0.0.1 = INTEGER: active(1)
IP-FORWARD-MIB::ipCidrRouteStatus.192.168.242.0.255.255.255.0.0.192.168.242.2 = INTEGER: active(1)
IP-FORWARD-MIB::ipCidrRouteStatus.192.168.242.2.255.255.255.255.0.127.0.0.1 = INTEGER: active(1)
IP-FORWARD-MIB::ipCidrRouteStatus.192.168.242.255.255.255.255.255.0.127.0.0.1 = INTEGER: active(1)
IP-FORWARD-MIB::ipCidrRouteStatus.192.168.243.0.255.255.255.0.0.192.168.243.2 = INTEGER: active(1)
IP-FORWARD-MIB::ipCidrRouteStatus.192.168.243.2.255.255.255.255.0.127.0.0.1 = INTEGER: active(1)
IP-FORWARD-MIB::ipCidrRouteStatus.192.168.243.255.255.255.255.255.0.127.0.0.1 = INTEGER: active(1)
IP-FORWARD-MIB::ipCidrRouteStatus.255.255.255.255.255.255.255.255.0.127.0.0.1 = INTEGER: active(1)
通过以上信息,可以看到IP-FORWARD-MIB::ipCidrRouteStatus.0.0.0.0.0.0.0.0.0.211.124.11.219 = INTEGER: active(1) 就是需要监控的节点。
此时就可以通过zabbix针对这个节点进行监控,为了更快的获取,将更新间隔设置为1s,当有故障时可以第一时间获得。

创建触发器进行告警,节点值为1时,路由状态就是正常的。
因为这个节点在路由失效后,就无法进行监测了,节点会消失,需要添加nodata函数,当节点获取值2s以上没有数据,就会触发告警。2s无数据也有可能会比较敏感,可以根据实际情况进行修改。

致此结束,当故障时就可以收到信息了。
评论区