最近发现生产网环境中的某台N9K-C93108TC-FX-B交换机自动重启了,并影响了部分相关单上联的业务。发现过程就不再描述了,基本上就是发现告警,查接口、查设备发现是设备重启了。
在设备上查看设备重启原因:

直接给思科开case,同时自己‘百度’了下原因,两方面都指向了思科的bug,原文描述:
‘This issue occurs with a switch running a version that supports netflow. The netflow process is always running even if there is no active configuration to send netflow to a specific destination.’

思科给的解决办法是升级至官方推荐的版本(常规操作。。。),临时的workaround却没有。

就是要每次人肉登到交换机上查看nfm相关的进程占用的内存大小,当占用内存大小在3-3.5G的时候手工重启设备。总之设备还是要重启,只是能提前大概知道什么时候设备可能自己扛不住了。
当第一台设备重启了以后,手工去查看了其他Spine和Leaf交换机的内存占用情况:

计算时间从上线到现在大概一年时间,使用了2.4G,到3.5G还有1G左右,按照这个速度怎么抗个3个月左右不成问题,然鹅刚算完没多久就被打脸,接连又有两台设备重启。这个内存的使用速度和流量相关,而且不是线性增长,并不能用这种方法计算。
不能每次都这样人肉去看30台左右的设备的内存,得想个办法,于是就用python写了个简单的脚本登录每台设备show相关信息,

但是每次都需要执行然后用肉眼观察判断每个交换机内存使用大小,导入表格看变化趋势,比较费时费力,如果要是能加到现有监控系统里面就好了。此时想到了之前一直想用而又没有去研究的Zabbix SSH agent的监控功能,SSH到设备上,然后执行个脚本或命令获取返回值,然后就可以加告警出图了。
NEXUS系列设备原生支持python,但是还要研究如何放到设备上,如何执行,反正是ssh到设备上,如果执行个命令能获得相关结果也就可以了。说干就干!(之后有时间的话估计会研究下简单的脚本如何放在设备上执行吧,先插个旗子)

回显是一行信息,之前用脚本执行的时候是通过python截取字符串的方式获取到相关数值,如何通过CLI回显单个数值是个问题。研究了半天‘|’后面的输出命令,常用的不好使,不常用的没研究出来,但他毕竟是个类linux系统,百度下linux如何可以做到。

试一把:

果然好使,其中‘cut -b 30-41’是经过多次测试后,保证每台设备都能输出正确结果的长度。
有返回值后面的就好说了,常规Zabbix操作,加个SSH agent 类型的监控,加图加触发器。

全部加上后的data信息:

历史曲线图及Trigger(思科给的回复是3-3.5G的内存使用会导致重启,因此设置了3G提醒告警提示手工重启设备)

全加在一起的效果,比较乱:

(目前仍在计划ACI整体的升级,后续更新)