生产上经常会监控某些具体端口状态,下面介绍具体步骤:
主机名 | ip | 操作系统 | zabbix版本 |
zabbix-server | 172.27.9.63 | Centos7.3.1611 | zabbix_server (Zabbix) 3.4.8 |
zabbix-agent | 172.27.9.65 | Centos7.3.1611 | zabbix_agentd (daemon) (Zabbix) 3.4.8 |
1.脚本编写
两个脚本,port_alert.sh为端口自发现脚本,port.conf为指定的监控端口号
[[email protected] ~]# cd /etc/zabbix/script/ [[email protected] script]# more port_alert.sh #/bin/bash CONFIG_FILE=/etc/zabbix/script/port.conf Check(){ grep -vE '(^ *#|^$)' ${CONFIG_FILE} | grep -vE '^ *[0-9]+' &> /dev/null if [ $? -eq 0 ] then echo Error: ${CONFIG_FILE} Contains Invalid Port. exit 1 else portarray=($(grep -vE '(^ *#|^$)' ${CONFIG_FILE} | grep -E '^ *[0-9]+')) fi } PortDiscovery(){ length=${#portarray[@]} printf "{\n" printf '\t'"\"data\":[" for ((i=0;i<$length;i++)) do printf '\n\t\t{' printf "\"{#TCP_PORT}\":\"${portarray[$i]}\"}" if [ $i -lt $[$length-1] ];then printf ',' fi done printf "\n\t]\n" printf "}\n" } port(){ Check PortDiscovery } port
[[email protected] script]# more port.conf 22 80 # abc 1 #ebc 50 3306 8080 10050 10051 3822 21 9100
注意两个脚本属主为zabbix:zabbix。
配置文件port.conf每个端口号一行,每行的被监控端口可以有空格,空行和注释行#会被过滤。
2.修改被监控端的zabbix_agent.conf配置文件,新增KEY值port.alert
[[email protected] ~]# view /etc/zabbix/zabbix_agentd.conf UserParameter=port.alert,/etc/zabbix/script/port_alert.sh
重启agent端zabbix服务
[[email protected] ~]# systemctl restart zabbix-agent
3.server端测试
[[email protected] ~]# zabbix_get -s 172.27.9.65 -k port.alert { "data":[ {"{#TCP_PORT}":"22"}, {"{#TCP_PORT}":"80"}, {"{#TCP_PORT}":"50"}, {"{#TCP_PORT}":"3306"}, {"{#TCP_PORT}":"8080"}, {"{#TCP_PORT}":"10050"}, {"{#TCP_PORT}":"10051"}, {"{#TCP_PORT}":"3822"}, {"{#TCP_PORT}":"21"}, {"{#TCP_PORT}":"9100"} ] }
测试成功,返回json格式的合法端口号
4.新建模板,创建自动发现规则
新建模板:
新建自动发现规则:
自动发现清单中新建监控项原型:
自动发现清单中新建触发器:
添加表达式:
模板关联主机:
查看最新数据:
查看告警信息:
查看微信端告警:
查看邮件报警:
微信、邮件告警搭建链接:http://blog.51cto.com/3241766/2108769
原文地址:http://blog.51cto.com/3241766/2117521
时间: 2024-10-15 18:32:05