Zabbix-监控程序端口连接状态
说明
在日常巡检工作中,要检查各程序端口状态,为的是避免进程存在,但程序端口连接异常导致的故障。为了能对此类场景进行自动、批量、实时的监控,于是结合shell、zabbix研究出一个小方法,现在分享出来也是避免自己忘记。
拓扑
简单举例,我有五台服务器,其中四台服务器上安装的程序相同,并都要与同一台调度服务器的10100端口保持长连接,当连接异常时视为程序故障,需要zabbix及时告警。
方法
创建检测模板
创建好检测模板后,记得应用到被检测的主机上。
模板 监控项 触发器
编写检测脚本
我习惯在zabbix服务器的外部检查脚本目录下编写脚本,并将脚本添加到计划任务里。
*/5 * * * * /apps/zabbix/share/zabbix/externalscripts/port_check.sh
[root@Zabbix_Server externalscripts]# pwd /apps/zabbix/share/zabbix/externalscripts [root@Zabbix_Server externalscripts]# tree -L 3 . ├── port_check │ ├── host.txt │ └── result.txt └── port_check.sh
[root@Zabbix_Server externalscripts]# cat port_check/host.txt 192.168.1.10 1qaz3edc 192.168.1.100 10100 test_app 192.168.1.11 1qaz3edc 192.168.1.100 10100 test_app 192.168.1.12 1qaz3edc 192.168.1.100 10100 test_app 192.168.1.13 1qaz3edc 192.168.1.100 10100 test_app
#!/bin/bash work_dir=/apps/zabbix/share/zabbix/externalscripts host_file=${work_dir}/port_check/host.txt result_file=${work_dir}/port_check/result.txt rm -rf ${result_file} function fun_check_port() { #$1被检测服务器的ip #$2被检测服务器的密码 #$3要与其建连的服务器IP #$4要监控的端口 #$5端口的程序,用来与端口合并使用,定义zabbix键值的 echo $1 $5_$4 `sshpass -p $2 ssh root@$1 netstat -anpt | grep $3:$4 | grep ESTABLISHED | wc -l` >> ${result_file} } for Ip in `awk {print $1} ${ host_file}` do Passwd=`awk -v I=${ Ip} {if(I==$1) print $2} ${ host_file}` Other_ip=`awk -v I=${ Ip} {if(I==$1) print $3} ${ host_file}` Port=`awk -v I=${ Ip} {if(I==$1) print $4} ${ host_file}` Soft=`awk -v I=${ Ip} {if(I==$1) print $5} ${ host_file}` fun_check_port ${Ip} ${Passwd} ${Other_ip} ${Port} ${Soft} done if [ -s ${result_file} ] then /apps/zabbix/bin/zabbix_sender -vv -z 127.0.0.1 -i ${result_file} fi
下一篇:
高可用系统设计这一篇你绝对能学会