跳到主要内容

[toc]

zabbix3.4使用钉钉告警

第一步、钉钉机器人创建

打开windows钉钉客户端-->右上角头像处-->机器人管理

iShot_2024-08-29_10.47.50

选择自定义

iShot_2024-08-29_10.50.07

选择添加

iShot_2024-08-29_10.51.17

填写机器人名字和要添加到的群组

iShot_2024-08-29_10.52.51

这里的webhook值需要写在后续python脚本中

iShot_2024-08-29_10.55.22

第二步、zabbix-server端编写python脚本

#在zabbix-server端编辑python脚本
[root@zabbix-server alertscripts]# pwd
/usr/lib/zabbix/alertscripts
[root@zabbix-server alertscripts]# cat >/usr/lib/zabbix/alertscripts/dingding.py <<EOF
#!/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?xxx" #注意,api_url到后边的一串是一行,且这里的api_url要写成自己企业钉钉中创建的机器人中的webhook

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

if __name__ == '__main__':
text = sys.argv[1]
msg(text)
EOF

#赋予脚本执行权限
[root@zabbix-server alertscripts]# chmod +x dingding.py

#修改脚本所有者为zabbix
[root@zabbix-server alertscripts]# chown zabbix.zabbix dingding.py

#安装依赖包
[root@zabbix-server ~]# yum -y install python-pip
[root@zabbix-server ~]# pip install requests

#执行脚本进行测试,返回以下内容即为正确,并且钉钉能够收到信息
[root@zabbix-server alertscripts]# ./dingding.py test
{"errmsg":"ok","errcode":0}

iShot_2024-08-29_10.56.52

第三步、zabbix web界面设置

3.1 创建钉钉告警

管理-->报警媒介类型-->创建媒体类型

iShot_2024-08-29_10.57.46

填写相关信息,注意脚本参数写 {ALERT.MESSAGE}

iShot_2024-08-29_10.58.46

iShot_2024-08-29_11.00.06

右上角小人头-->报警媒介-->添加

iShot_2024-08-29_11.00.57

iShot_2024-08-29_11.01.54

3.2 修改告警操作

修改操作标题如下

服务器:{HOST.NAME}发生: {TRIGGER.NAME} 故障!

修改消息内容如下

服务器:{HOST.NAME}发生: {TRIGGER.NAME} 故障!
{
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
}

iShot_2024-08-29_11.06.06

3.3 修改恢复操作

修改恢复标题如下

服务器:{HOST.NAME}: {TRIGGER.NAME} 已恢复!

修改恢复内容如下

服务器:{HOST.NAME}: {TRIGGER.NAME} 已恢复!
{
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
持续时间:{EVENT.AGE}
事件ID:{EVENT.ID}
}

iShot_2024-08-29_11.07.34

3.4 修改确认信息

修改确认标题如下

服务器:{HOST.NAME}:  报警确认

修改确认内容如下

服务器:{HOST.NAME}:  报警确认
{
确认人:{USER.FULLNAME}
时间:{ACK.DATE} {ACK.TIME}
确认信息如下:
"{ACK.MESSAGE}"
问题服务器IP:{HOSTNAME1}
问题ID:{EVENT.ID}
当前的问题是: {TRIGGER.NAME}
}

iShot_2024-08-29_11.08.32

第四步、钉钉验证

pc端钉钉

iShot_2024-08-29_11.13.07

手机端钉钉

iShot_2024-08-29_11.14.26