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
				       
			          下一篇:
			            高可用系统设计这一篇你绝对能学会 
			          
			        
