-
问题描述
在一次项目中,需要通过zabbix去监控一台宏杉的存储,但由于该存储是不支持SNMP的,只能通过SNMPTRAP去获取这台存储的告警信息,当我们去存储上发送一条测试的snmptrap信息时,却发现zabbix-server没有生成zabbix_trap_receiver.pl。 - 排错思路
首先,先从selinux和防火墙入手,发现是都是关闭的,没有问题,其次,检查zabbix-server的配置文件中有没有开启snmptrapd,这里参数StartSNMPTrapd = 1 表示开启snmptrapd服务,等于0则表示没有开启,这里表示已经开启的,也没有问题,这里SNMPTrapFile参数是接收告警信息的文件的和perl接收器中的要对应。
第三,我们查看snmptrapd的配置文件和对应的perl接收文件的路径是否和zabbix-server配置文件中的对应。这里发现也是对的上的。
第四,检测一下是不是网络策略中没有放通UDP/162端口,这里我们通过tcpdump工具来抓包一下。发现可以抓到存储发送过来的包,说明网络也是没有问题的。
tcpdump -i ens192 host 10.111.20.11 and port 162
第五,我们排查一下snmptrapd服务状态是不是异常,发现snmptrap的服务的确是异常的,出现这样的问题,我们怀疑是缺少net-snmp-perl包导致,通过rpm -qa | grep net-snmp ,发现确实是没有安装net-snmp-perl包,接着我们通过yum -y install net-snmp-perl,发现这个ios是缺少这个包的,由于在网上没有找到5.7.2-28版本的包,最后我们通过删除原先的包,重新安装了一个新高一点的版本就可以了
- 测试结果
发现snmptrapd的状态没有报错,而且存储存储上测试的trap信息也能收到信息。