生产centos7.6实战部署 zabbix4.0 通过 钉钉 发送告警信息

环境:
zabbix版本:4.0 LTS

系统版本: CentOS 7.6

Python版本: 3.6.0
一、添加Media Types
生产centos7.6实战部署 zabbix4.0 通过 钉钉 发送告警信息

Name:自定义的媒介名称

Type:Scipt 脚本

Scipt name : 脚本名称

Scipt parameters : 传递给脚本的参数。(该参数可以在后面的Actions部分自定义)。这里我们就使用了一个内建参数{ALERT.MESSAGE}。
二、添加Users
这里我们使用已有的Admin账户来关联告警媒介DingTalk
生产centos7.6实战部署 zabbix4.0 通过 钉钉 发送告警信息
生产centos7.6实战部署 zabbix4.0 通过 钉钉 发送告警信息
点击添加按钮,弹出如下

生产centos7.6实战部署 zabbix4.0 通过 钉钉 发送告警信息

Type: 选择前面定义的 Ding Talk

Send to : 任意填写什么内容。(本来这个内容与媒介内建变量{ALERT.SENDTO}对应,但是我们前面没有使用就不管它。)
三、添加Actions
本部分定义发送消息的具体内容以及在什么情况下发送消息。

这里我们选择与Triger进行关联,即在某些Triger触发的情况下执行发送动作
生产centos7.6实战部署 zabbix4.0 通过 钉钉 发送告警信息
输入自定义的动作名称,添加一个新条件,这里是 触发级别 大于等于 平均 ,记得点击Add按钮
生产centos7.6实战部署 zabbix4.0 通过 钉钉 发送告警信息

操作(Operations):

标题:服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!
内容:
{
告警主机:{HOST.NAME}
告警信息:{TRIGGER.NAME}
告警项目:{ITEM.NAME}
告警时间:{EVENT.DATE}_{EVENT.TIME}
当前状态:故障 值={ITEM.VALUE}
故障已持续{EVENT.AGE},请尽快处理
事件ID:{EVENT.ID}
}

恢复操作 (Revovery Operations):

标题:服务器:{HOST.NAME}: {TRIGGER.NAME}已恢复!
内容:
{
告警信息:{TRIGGER.NAME}
告警项目:{ITEM.NAME}
告警时间:{EVENT.DATE}{EVENT.TIME}
恢复时间:{EVENT.RECOVERY.DATE}
{EVENT.RECOVERY.TIME}
当前状态:{TRIGGER.STATUS} 值={ITEM.VALUE}
故障共持续{EVENT.AGE}
事件ID:{EVENT.ID}
}

确认操作(Update Operations) :

标题:服务器:{HOST.NAME}: 报警确认!
内容:
{
确认信息:"{ACK.MESSAGE}"
服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!
确认人:{USER.FULLNAME}
时间:{ACK.DATE} {ACK.TIME}
当前的问题是: {TRIGGER.NAME}
时间ID:{EVENT.ID}
}
这里我们介绍Operations
生产centos7.6实战部署 zabbix4.0 通过 钉钉 发送告警信息
设置完Default message后,点击New添加新的条件,主要是设置告警
四、注册钉钉

1.注册钉钉账户

2.创建一个群。

3.创建机器人
生产centos7.6实战部署 zabbix4.0 通过 钉钉 发送告警信息
生产centos7.6实战部署 zabbix4.0 通过 钉钉 发送告警信息
生产centos7.6实战部署 zabbix4.0 通过 钉钉 发送告警信息

输入机器人名字
生产centos7.6实战部署 zabbix4.0 通过 钉钉 发送告警信息

生产centos7.6实战部署 zabbix4.0 通过 钉钉 发送告警信息
记住这个webhook,后面告警脚本需要用到

五、添加告警脚本
脚本路径在zabbix_server.conf文件里面所指定AlertScriptsPath目录下。

脚本AlertDingTalk.py如下:
#!/usr/bin/python

-- coding: utf-8 --

import requests
import json
import sys
import os

headers = {‘Content-Type’: ‘application/json;charset=utf-8’}
api_url = “https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxxxxx” #填入上面得到的webhook

def msg(text):
json_text= {
“msgtype”: “text”,
“text”: {
“content”: text
},
“at”: {
“atMobiles”: [
“xxxxxxxxxxxxx”
],
“isAtAll”: False
}
}
print(requests.post(api_url,json.dumps(json_text),headers=headers).content)

if name == ‘main’:
text = sys.argv[1]
msg(text)
五、测试
停掉客户端的zabbix-agent,即可收到如下告警消息
生产centos7.6实战部署 zabbix4.0 通过 钉钉 发送告警信息

上一篇:(2)string trigger 与 快捷键的 应用区别


下一篇:Quartz.Net实现定时调度学习总结