这里介绍两种方式监听端口
1、第一种方式是通过脚本实现
2、第二种方式通过zabbix自带键值实现
主机名 | ip | 操作系统 | zabbix版本 |
zabbix-server | 192.168.26.143 | CentOS 7.5 | 4.0 LTS |
zabbix-agent | 192.168.26.141 | CentOS 7.5 | 4.0 LTS |
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
创建port.conf,写入要监控的端口号
[root@zabbix-agent script]# more port.conf
22
80
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 192.168.26.141 -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.新建模板,创建自动发现规则
新建模板:
Port Alert
新建自动发现规则:
自动发现清单中新建监控项原型:
{#TCP_PORT} 端口
net.tcp.listen[{#TCP_PORT}]
port-alert
自动发现清单中新建触发器:
添加表达式:
port:{#TCP_PORT} is down,please check
{Port Alert:net.tcp.listen[{#TCP_PORT}].last()}<>1
模板关联主机:
监测中、最新数据、仪表板可以看到最新数据与报警信息,就不一一截图了
原文链接:https://blog.51cto.com/loong576/2117521
下面介绍第二种方式
配置-主机-监控项-创建监控项
名称自定义,键值选择:net.tcp.service[service,<ip>,<port>]
创建新的触发器
表达式选添加
表达式