为了监控目的,我尝试从交换机堆栈中获取以下信息。以下是通过 ssh 登录直接在交换机堆栈上执行的命令及其输出:
root@stack> show virtual-chassis
Preprovisioned Virtual Chassis
Virtual Chassis ID: cf44.0df5.1234
Virtual Chassis Mode: Enabled
Mstr Mixed Neighbor List
Member ID Status Serial No Model prio Role Mode ID Interface
0 (FPC 0) Prsnt GAxxxxxxx8 ex3300-48t 129 Master* NA 2 vcp-255/1/2
3 vcp-255/1/3
1 vcp-255/1/1
1 (FPC 1) Prsnt GAxxxxxxx2 ex3300-48t 0 Linecard NA 0 vcp-255/1/2
5 vcp-255/1/3
2 vcp-255/1/1
2 (FPC 2) Prsnt GAxxxxxxx3 ex3300-48t 0 Linecard NA 1 vcp-255/1/2
3 vcp-255/1/3
0 vcp-255/1/1
3 (FPC 3) Prsnt GAxxxxxxx1 ex3300-48t 0 Linecard NA 4 vcp-255/1/2
2 vcp-255/1/3
0 vcp-255/1/1
4 (FPC 4) Prsnt GAxxxxxxx7 ex3300-48t 129 Backup NA 5 vcp-255/1/2
6 vcp-255/1/3
3 vcp-255/1/1
5 (FPC 5) Prsnt GAxxxxxxx5 ex3300-48t 0 Linecard NA 4 vcp-255/1/2
6 vcp-255/1/3
1 vcp-255/1/1
6 (FPC 6) Prsnt GAxxxxxxx3 ex3300-48t 0 Linecard NA 4 vcp-255/1/0
5 vcp-255/1/1
最后,我想检查成员数量和/或状态(Prsnt/NotPrsnt),以及角色是否发生了变化(例如备份-->主)。
使用 snmpwalk 我得到了一个很长的条目列表,但是没有任何条目与上面的任何值匹配。
那么这是否意味着没有可能将该信息从堆栈中获取出来?
答案1
嗯,这是一个有分量的问题……分解一下
会员数量
鉴于 VC 在 SNMP 上的描述方式,您很可能不会得到该信息。OID 树中没有当前“成员计数”值。您最好的选择是步行.1.3.6.1.4.1.2636.3.40.1.4.1.1.1.2
并计算返回的序列号(或使用成员 ID、MAC 或其他任何值)。看起来您正在使用 Icinga,因此您可能想要使用脚本来获取该 OID 并计算结果,因为 Icinga 不会为您执行此操作。我在 Nagios 中对其他几十种情况做了类似的事情。(我根据其中一些情况编写了一个快速脚本;使用它,或将其用作示例来执行您想要的操作:https://gist.github.com/peelman/ef7b682de3af579c2896585385e18e7c)。
会员地位
我看不出有什么(简单)方法可以获取存在/不存在状态。你可能只能放弃这个方法,或者逐个监控 VCP 接口本身。
角色变化
这是一个很好的使用陷阱的方法;但如果你打算使用轮询,并且你正在静态设置优先级,这样你就知道你的主/备份将是什么最多的时间,那么您可以查看下的值.1.3.6.1.4.1.2636.3.40.1.4.1.1.1.3
;节点 .0 将是成员 0,节点 .1 将是成员 1,依此类推。
值 1 表示主用,2 表示备用,3 表示线路卡(可在管理信息库本身)。问题是,如果您将所有这些都留给默认虚拟机架设置的动态,而不设置主控优先级、静态成员 ID(基于序列号)等,这些值可能会发生变化。
npeelman@nagios:~$ snmpwalk -v2c -c community ex3300-test.domain.tld .1.3.6.1.4.1.2636.3.40.1.4.1.1.1.3
JUNIPER-VIRTUALCHASSIS-MIB::jnxVirtualChassisMemberRole.0 = INTEGER: master(1)
JUNIPER-VIRTUALCHASSIS-MIB::jnxVirtualChassisMemberRole.1 = INTEGER: backup(2)