共计 1842 个字符,预计需要花费 5 分钟才能阅读完成。
生产上经常会监控某些具体端口状态,下面介绍具体步骤:
主机名 | 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 为指定的监控端口号
[root@zabbix-agent ~]# cd /etc/zabbix/script/
[root@zabbix-agent 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
[root@zabbix-agent 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
[root@zabbix-agent ~]# view /etc/zabbix/zabbix_agentd.conf
UserParameter=port.alert,/etc/zabbix/script/port_alert.sh
重启 agent 端 zabbix 服务
[root@zabbix-agent ~]# systemctl restart zabbix-agent
3.server 端测试
[root@zabbix-server ~]# 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. 新建模板,创建自动发现规则
新建模板:
新建自动发现规则:
自动发现清单中新建监控项原型:
自动发现清单中新建触发器:
添加表达式:
模板关联主机:
查看最新数据:
查看告警信息:
查看微信端告警:
查看邮件报警:
微信、邮件告警搭建链接:https://www.linuxidc.com/Linux/2018-09/154433.htm
: