一、需要被监控端准备三个文件
- port.sh
CONFIG_FILE=/etc/zabbix/zabbix_agentd.d/port
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
chmod +x port.sh #给个执行权限
- port 文件,写入要监控的端口
vim port
7001
7002
- port.conf 配置文件
vim port.conf
UserParameter=port.alert,/etc/zabbix/zabbix_agentd.d/port.sh #指向脚本文件
二、重启zabbix-agent
systemctl restart zabbix-agent
三、在zabbix-server端测试
[root@localhost ~]# zabbix_get -s 192.168.1.2 -k port.alert
{
"data":[
{"{#TCP_PORT}":"7000"},
{"{#TCP_PORT}":"7001"}
]
}
#### 如果没有就zabbix_get 就下载
#### rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
#### yum install -y zabbix-get-3.4.0-1.el7.x86_64
四、zabbix-server页面端的设置
- 配置->模板->创建模板,填写对应的信息
- 配置->模板->端口监控->自动发现规则->创建发现规则
-
创建监控项
名称: {#TCP_PORT}端口. 键值: net.tcp.listen[{#TCP_PORT}]
-
创建触发器原型
名称:Port:{#TCP_PORT} is down,please check
问题表现形式: {Port-status:net.tcp.listen[{#TCP_PORT}].last()}<>1
恢复表达式: {Port-status:net.tcp.listen[{#TCP_PORT}].last()}=1
- 创建图形原型
五、主机引用模板
- 配置》主机》选择主机》批量更新
- 可以主机里多了自动发现,和监控项
- 查看检测到的数据
六、加入企业微信告警
- 配置》动作》创建动作
-
多添加几个触发器
-
选择操作
默认标题: 故障告警:{TRIGGER.STATUS}: {TRIGGER.NAME} 消息内容: 告警主机:{HOST.NAME} 主机地址:{HOST.IP} 告警时间:{EVENT.DATE} {EVENT.TIME} 告警等级:{TRIGGER.SEVERITY} 告警信息:{TRIGGER.NAME} 问题详情:{ITEM.NAME}:{ITEM.VALUE} 事件代码:{EVENT.ID}
-
选择恢复操作
默认标题:
故障解除:{TRIGGER.STATUS}: {TRIGGER.NAME}
消息内容:
恢复主机:{HOST.NAME}
主机地址:{HOST.IP}
恢复时间:{EVENT.DATE} {EVENT.TIME}
恢复等级:{TRIGGER.SEVERITY}
恢复信息:{TRIGGER.NAME}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
事件代码:{EVENT.ID}
- 告警消息接收成功