场景介绍
公司即时通讯平台需要调用手机厂商的消息推送网关(小米/华为/苹果等),但是有时候会因防火墙策略整改或是其他原因导致网络不通,影响移动终端的消息推送,进而影响用户体验。为了能够让运维人员能够第一时间发现问题,及时进行故障的排查和恢复,所以用zabbix监控网络策略。下面在虚拟机模拟场景进行监控。
网络拓扑
展示下比较业余的网络拓扑:
制作监控过程
1. 修改agent配置文件
[root@slave79101 zabbix_agentd.conf.d]# cat monitor_remote_port_tracer.conf
UserParameter=s.remote.port.c[*],sh /usr/local/zabbix/share/zabbix/alertscripts/scan_remote_port2.sh $1
2. 编辑脚本
需要监控的IP和端口
[root@slave79101 zabbix_agentd.conf.d]# cat /usr/local/zabbix/share/zabbix/alertscripts/scan_remote_port.txt
192.168.79.103:8880
192.168.79.103:443
192.168.79.101:443
192.168.79.101:22212
192.168.79.101:5432
192.168.79.101:8080
监控脚本
[root@slave79101 zabbix_agentd.conf.d]# cat /usr/local/zabbix/share/zabbix/alertscripts/scan_remote_port2.sh
#!/bin/bash
echo > /tmp/scan_remote_port_info.txt
hostname=`uname -n`
count1=0
count2=0
for ipport in `cat /usr/local/zabbix/share/zabbix/alertscripts/scan_remote_port.txt`
do
ip=`echo $ipport | awk -F':' '{print $1}'`
port=`echo $ipport | awk -F':' '{print $2}'`
c=`nmap $ip -p $port | grep open |wc -l`
#echo $t
if [ "$c" == "1" ];
then
echo "本地服务器: $hostname 可以抵达服务器: $ip 的端口: $port" >> /tmp/scan_remote_port_info.txt
let count1+=1
else
echo "本地服务器: $hostname 不可抵达服务器: $ip 的端口: $port" >> /tmp/scan_remote_port_info.txt
let count2+=1
fi
done
case $1 in
count1)
echo $count1
;;
count2)
echo $count2
;;
get)
cat /tmp/scan_remote_port_info.txt
;;
*)
echo "please input {count1|count2|get}"
;;
esac
说明:
脚本说明:
count1:是统计可以抵达的网络
count2:是统计不可抵达的网络,当count2返回值大于等于1时触发报警。
get:是全部检测结果的概览
3. 测试
在zabbix服务端测试
[root@slave79103 ~]# zabbix_get -s 192.168.79.101 -p 10050 -I 192.168.79.103 -k s.remote.port.c[get]
本地服务器: slave79101 可以抵达服务器: 192.168.79.103 的端口: 8880
本地服务器: slave79101 不可抵达服务器: 192.168.79.103 的端口: 443
本地服务器: slave79101 可以抵达服务器: 192.168.79.101 的端口: 443
本地服务器: slave79101 不可抵达服务器: 192.168.79.101 的端口: 22212
本地服务器: slave79101 可以抵达服务器: 192.168.79.101 的端口: 5432
本地服务器: slave79101 可以抵达服务器: 192.168.79.101 的端口: 8080
[root@slave79103 ~]# zabbix_get -s 192.168.79.101 -p 10050 -I 192.168.79.103 -k s.remote.port.c[count1]
4
[root@slave79103 ~]# zabbix_get -s 192.168.79.101 -p 10050 -I 192.168.79.103 -k s.remote.port.c[count2]
2
4. zabbix界面自定义监控
创建应用集
创建监控项
创建告警
创建图表
展示监控效果