我不相信有一种方法可以OR
通过SNMP直接轮询结果,但是您当然可以轮询IP SLA结果并自己计算。
使用CISCO-RTTMON-MIB (1.3.6.1.4.1.9.9.42),您可以检查可达性检查的超时值,获取它返回的真/假值,并OR
使用您使用的任何脚本语言执行此操作通过 SNMP 轮询。
例如,我设置了一个与你上面类似的测试:
track 10 ip sla 1 reachability
!
track 20 ip sla 2 reachability
!
track 30 list boolean or
object 10
object 20
!
ip sla 1
icmp-echo 8.8.8.8 source-ip 10.129.10.62
ip sla schedule 1 life forever start-time now
ip sla 2
icmp-echo 4.2.2.2 source-ip 10.129.10.62
ip sla schedule 2 life forever start-time now
!
ip route 10.171.20.0 255.255.255.252 10.129.10.61 track 30
然后,我在 IOS 中验证了输出:
R-VOIPLAB#show track 30
Track 30
List boolean or
Boolean OR is Up
2 changes, last change 00:01:21
object 10 Up
object 20 Up
接下来,在 IP SLA 跟踪到位后,我在我的监控服务器上安装了 CISCO-RTTMON-MIB,并遍历了 rttMonCtrlOperTimeoutOccurred (1.3.6.1.4.1.9.9.42.1.2.9.1.6)的值,因为它是 True/False 输出.
需要注意的关键项目是,由于我们正在轮询是否发生超时,因此False 表示目的地可达,而True 表示不可达且已发生超时。
snmpwalk -v3 -a SHA -A SNMP-AUTH-PASS -l authNoPriv -u SNMPUSER r-voiplab rttMonCtrlOperTimeoutOccurred
CISCO-RTTMON-MIB::rttMonCtrlOperTimeoutOccurred.1 = INTEGER: false(2)
CISCO-RTTMON-MIB::rttMonCtrlOperTimeoutOccurred.2 = INTEGER: false(2)
最后,我将那个盒子的流量黑洞化到 8.8.8.8,并再次检查 IOS 中的 Track 结果:
R-VOIPLAB(config)#ip route 8.8.8.8 255.255.255.255 null 0
R-VOIPLAB(config)#end
R-VOIPLAB#show track 30
Track 30
List boolean or
Boolean OR is Up
2 changes, last change 00:21:18
object 10 Down
object 20 Up
Tracked by:
STATIC-IP-ROUTING 0
现在我们有一个处于Down
状态的测试对象,让我们再次查看轮询 rttMonCtrlOperTimeoutOccurred 的结果:
snmpwalk -v3 -a SHA -A SNMP-AUTH-PASS -l authNoPriv -u SNMPUSER r-voiplab rttMonCtrlOperTimeoutOccurred
CISCO-RTTMON-MIB::rttMonCtrlOperTimeoutOccurred.1 = INTEGER: true(1)
CISCO-RTTMON-MIB::rttMonCtrlOperTimeoutOccurred.2 = INTEGER: false(2)
现在,正如我上面所说的,您只需要轮询这些值并在脚本中使用它们即可。