传统的钉钉群机器人告警为text格式,最近研究了下使用markdown来传,感觉比text看起来更适读。
废话不多说,直接开淦。
复制群机器人webhook地址:
https://oapi.dingtalk.com/robot/sendaccess_token=xxxxxxxxxxxxxxxxece8053e86414ee67c015e63b315304eee79
Zabbix端需安装Python3环境,Zabbix调用的脚本如下:
#!/usr/bin/python3
import requests, json, sys, os, datetime
#webhook = "https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxxx634ece8053e86414ee67c015e63b315304eee79" # 阿里测试
webhook = "https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxxxxxxx0f64da8aaac4bb95885e277f1c48aafb462d17a60" # 正式群
#user = sys.argv[1] #用户
subject = sys.argv[1] #标题
text = sys.argv[2] #消息
data = {
"msgtype": "markdown",
"markdown": {
"title": subject,
"text":text
},
"at": {
"atMobiles": [
"138XXXX7526"
],
"isAtAll": False
}
}
headers = {'Content-Type': 'application/json'}
x = requests.post(url=webhook, data=json.dumps(data), headers=headers)
其中subject对应的是报警媒介中Message type的主题,在钉钉中显示为标题,不出现在正文,只在消息列表中出现,text对应的就是正文。
接下来我们配置Zabbix的告警配置
- 创建新的告警媒介:媒介类型选择脚本,提前将上方的脚本放置于
/usr/local/share/zabbix/alertscripts
中并在脚本名称处填写你命名的文件名,这里要注意一下如果你在Windows 下编辑,必须将行尾序列改为LF,否则Python执行会报错。 - 添加告警参数:我这里只用到了2个参数,一个是
{ALERT.SUBJECT}
告警标题,一个是{ALERT.MESSAGE}
告警正文,按照填写即可。 - 增加Message type:一般增加3个就足够了,发现问题、问题恢复、问题更新,详细的设置在下方说明。
- 检查其他影响告警的设置:1,动作:记得开启动作,不然Zabbix告警测试可以,但是没办法推送。2,用户开启告警:在用户配置中,关联相应的Message type,做一下简单的配置。
重点:关于Zabbix推送钉钉机器人webhook在网上已经有很多教程,上方只是略过,下面才是重点。以下配置都是个人习惯,可根据实际情况调整。
在Message type中,比如我添加一个发现告警的信息,默认配置如下:
要实现以上的功能,先将主题改为自己想要显示的标题,如“Zabbix-发现故障”,这样,在手机提示及电脑钉钉上的消息列表中都会显示这个。
我再将原来的标题内容Problem: {EVENT.NAME}
复制到消息中,使用###将其作为3级标题,正文使用>符号设为引用文本,需要注意的是,使用>之后的文本将会换行,如果引用的文本需要换行,在结尾处增加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}
评论前必须登录!
注册