zabbix可以使用webhook来实现告警通知。Webhook是一种在事件发生时自动触发HTTP POST请求的机制,可以将告警信息发送到指定的URL.
目录
一、脚本部署
1、首先将脚本上传至zabbix server端
查看脚本应该部署得目录位置
cat /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts
将脚本存在到 /usr/lib/zabbix/alertscripts 目录下,脚本更换机器人更改 key 就行
vim /usr/lib/zabbix/alertscripts/webhook.py
#!/usr/bin/python
#-*- coding: utf-8 -*-
import requests
import json
import sys
import os
#api_url="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=7550122e-9f95-4dfc-9d8b-3d47204fc254"
api_url="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=40d6be84-f457-43ef-b915-90691c678f88"
headers = {'Content-Type': 'application/json;charset=utf-8'}
def msg(user,subject,text):
json_text = {
"msgtype": "text",
"text": {
"content": subject + '\n' + text
},
}
print(requests.post(api_url, json.dumps(json_text), headers=headers).content)
if __name__ == '__main__':
user = str(sys.argv[1])
subject = str(sys.argv[2])
text = str(sys.argv[3])
#user = "tt"
#subject = "test"
#text = "hello zjh-zabbix-wechat-webhook "
msg(user,subject,text)
2、给脚本赋予执行权限
二、zabbix web界面配置
1、配置报警媒介类型
1.1、新建报警媒介
点击 管理 ---> 报警媒介类型 ---> 创建媒介类型
类型选择脚本,名称自己填写,脚本名称zabbix 部署得脚本名称,脚本参数如下
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
1.2、告警媒介模板
1.2.1、发送告警消息得模板
主题:
服务故障: {EVENT.NAME}
消息:
告警主机: **{HOST.NAME}**
主机地址: **{HOST.IP}**
监控项目: {ITEM.NAME}
当前取值: {ITEM.LASTVALUE}
告警等级: {TRIGGER.SEVERITY}
告警时间: {EVENT.DATE}-{EVENT.TIME}
事件ID: {EVENT.ID}
1.2.2、告警恢复消息模板
主题:
故障恢复: {EVENT.NAME}
消息:
主机名称: **{HOST.NAME}**
主机地址: **{HOST.IP}**
告警名称: {EVENT.NAME}
持续时长: {EVENT.DURATION}
恢复时间: {EVENT.RECOVERY.DATE}-{EVENT.RECOVERY.TIME}
当前状态: {TRIGGER.STATUS}
当前取值: {ITEM.LASTVALUE}
事件ID: {EVENT.ID}