场景介绍

公司即时通讯平台需要调用手机厂商的消息推送网关(小米/华为/苹果等),但是有时候会因防火墙策略整改或是其他原因导致网络不通,影响移动终端的消息推送,进而影响用户体验。为了能够让运维人员能够第一时间发现问题,及时进行故障的排查和恢复,所以用zabbix监控网络策略。下面在虚拟机模拟场景进行监控。

网络拓扑

展示下比较业余的网络拓扑:

Zabbix监控很难?看完这篇文章可以轻松上手zabbix自定义监控_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界面自定义监控
创建应用集

Zabbix监控很难?看完这篇文章可以轻松上手zabbix自定义监控_服务器_02

Zabbix监控很难?看完这篇文章可以轻松上手zabbix自定义监控_zabbix_03

创建监控项

Zabbix监控很难?看完这篇文章可以轻松上手zabbix自定义监控_运维_04

创建告警

Zabbix监控很难?看完这篇文章可以轻松上手zabbix自定义监控_运维_05

创建图表

Zabbix监控很难?看完这篇文章可以轻松上手zabbix自定义监控_服务器_06


Zabbix监控很难?看完这篇文章可以轻松上手zabbix自定义监控_服务器_07

展示监控效果

Zabbix监控很难?看完这篇文章可以轻松上手zabbix自定义监控_linux_08


Zabbix监控很难?看完这篇文章可以轻松上手zabbix自定义监控_zabbix_09


Zabbix监控很难?看完这篇文章可以轻松上手zabbix自定义监控_zabbix_10