zabbix5监控网页状态,当网页出现问题时,往钉钉群推送告警信息。
点击模板选择web监测
1)web监测场景设置如下:
2)web监测步骤设置如下:
成功添加步骤
web场景设置成功
3)查看web监测状态
设置触发器,触发器名称为:测试【数据接口主页崩了]
当监测的网页返回的状态码不等于200的时候,触发报警
选择监控项
Response code for step “打开首页” of scenario “百度首页”.
web.test.rspcode[百度首页,打开首页]
表达式如下:表示最新取回的值与200状态码进行比较,当状态码不等于200时触发告警
{Zabbix server:web.test.rspcode[百度首页,打开首页].last()}<>200
为了触发问题报警,这里修改监控项等于200告警,如下所示触发告警:
1)设置报警媒介类型,脚本名称为zabbix_monitor_test.py
2)信息模板的类型选择:问题模板
主题:
Problem: {EVENT.NAME}
消息:
Problem started at {EVENT.TIME} on {EVENT.DATE}
Problem name: {EVENT.NAME}
Host: {HOST.NAME}
Severity: {EVENT.SEVERITY}
Operational data: {EVENT.OPDATA}
Original problem ID: {EVENT.ID}
{TRIGGER.URL}
3)设置报警媒介类型的选项
4) 部署python脚本
监控脚本应该存放到/usr/lib/zabbix/alertscripts目录下
cat /etc/zabbix/zabbix_server.conf
#查看监控脚本位置
AlertScriptsPath=/usr/lib/zabbix/alertscripts
设置zabbix_agent允许以root用户运行,确保可以执行python脚本
vim /etc/zabbix/zabbix_agentd.conf
AllowRoot=1
设置后重启zabbix_agent,查看zabbix-agent的状态
systemctl restart zabbix-agent
systemctl status zabbix-agent
zabbix_monitor_test.py实现获取监控信息,并往钉钉群推送告警信息
脚本放到/usr/lib/zabbix/alertscripts/目录下:
#!/usr/local/bin/python3
import time # 时间模块
import os, sys
import requests
import json
api_url = 'https://oapi.dingtalk.com/robot/send?access_token=25fad8baeaa9b07c16ab71e8c023398fb5ee1fe4b1f346af292899dff0ea8b36'
headers = {'Content-Type': 'application/json;charset=utf-8'}
# 往钉钉群推送消息
def msg(text):
json_text = {
"msgtype": "markdown",
"markdown": {
"title": "编组状态通知",
"text": text
}
}
print(requests.post(api_url, json.dumps(json_text), headers=headers).content)
if __name__ == '__main__':
text = sys.argv[1]
msg(text)
这里是为管理员用户设置钉钉告警
报警媒介选择钉钉报警
要赋予用户有读写权限
1)添加动作
为触发器添加动作,选择上面设置的触发器,触发器名称为:测试【数据接口主页崩了]
监控项遇到问题,就会触发动作,往钉钉群中推送报警信息
如下图所示选择动作对应的触发器:测试【数据接口主页崩了]
2)设置操作
主题:故障{TRIGGER.STATUS},服务器:{HOSTNAME},发生:{TRIGGER.NAME}故障!
消息:
{
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
告警项目:{ITEM.NAME}
告警时间:{EVENT.DATE}{EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.VALUE}
}
3)设置恢复操作
操作类型:选择通知所有参与者
主题:恢复{TRIGGER.STATUS},服务器:{HOSTNAME1}:{TRIGGER.NAME}已恢复
消息:{
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE}{EVENT.TIME}
故障持续时间:{EVENT.AGE}
恢复时间:{EVENT.RECOVERY.TIME}
告警等级:{TRIGGER.SEVERITY}
}
动作设置完如下图所示:
成功设置了动作,动作名称为:网页挂掉触发钉钉告警
为了触发告警,设置状态码等于200触发报警
{Zabbix server:web.test.rspcode[百度首页,打开首页].last()}=200
如下图所示:成功触发触发器告警,往钉钉群推送告警信息
钉钉群收到的告警信息如下所示:
问题修复后,触发动作恢复操作,会往钉钉群里推送问题已解决信息,如下图所示:
#测试直接通过修改触发器监控项的值修复问题
{Zabbix server:web.test.rspcode[百度首页,打开首页].last()}<>200
往钉钉群推送消息,参考这篇博客:利用钉钉接口往钉钉群推送信息](https://blog.csdn.net/zhengzaifeidelushang/article/details/106208515)