今天加装了一台服务器ServiceLabs,已开启了snmp服务,执行netstat -an|grep 161命令已查到UDP 161端口已监听。
但cacti监测服务器却拿不到数据,开始还以为是服务器的防火墙过滤了udp 161端口的数据,但清空了iptables的所有规则,默认策略也已是ACCEPT了,Cacti服务器还是获取不到任何数据,怀疑是IDC服务商对服务器做了限制,于是打算在服务器ServiceLabs上安装iperf,用它来监听udp端口161,然后在Cacti端以客户端方式运行iperf命令连接到服务器端的iperf做测试,具体步骤如下:
首先确保iperf服务端,即服务器Servicelabs端的SNMP服务已停止,不要让它占用udp 161端口,因为此端口一会iperf要用到。
停止snmpd服务:
root@service-labs:~#service snmpd stop
让iperf以服务端运行,并且以udp模式监听161端口:
root@service-labs:~# iperf -w 64000 -i 1 -u -p 161 -s
然后在cacti服务器端执行iperf命令,通过udp模式连接服务器ServiceLabs的161端口,命令如下:
root@cacti:~# iperf -w 64000 -u -p 161 -i 1 -t 5 -c service-labs.com
如上图所示,cacti服务器执行完iperf测试后,提示read failed:Connection refused,在服务端ServiceLabs的iperf监听程序没有数据,一点反应也没有,于是更换个端口,如:监听udp端口5161:
root@service-labs:~# iperf -w 64000 -i 1 -u -p 5161 -s
然后在cacti服务器端执行iperf命令,通过udp模式连接服务器ServiceLabs的5161端口,命令如下:
root@cacti:~# iperf -w 64000 -u -p 5161 -i 1 -t 5 -c service-labs.com
Cacti客户端iperf连接服务器ServiceLabs的5161端口测试时,在ServiceLabs服务器端的iperf是有数据的,如下图所示:
说明ServiceLabs服务端处理了udp 161端口了,所以只能让snmpd监听5161端口,cacti配置也把监测默认的161改为监测5161端口即可。