zabbix 接入钉钉告警
[TOC]
1.创建消息群并添加机器人
- 第1步,创建一个钉钉消息群,点击右上角的“群设置”
- 第2步,点击“添加机器人”,然后选择“自定义”
- 第3步,填写机器人名字,增加自定义关键词,然后选择“完成”
- 第4步,生成webhook,点击“复制”并保存好,后面需要用到
示例:
https://oapi.dingtalk.com/robot/send?access_token=d196252885f017e12e21c372e733789ce24cc546df1c15709f3479d3cd7a91e3
2.创建告警脚本
- 第5步,创建告警日志文件,示例
/etc/zabbix/logs/dingding.log
mkdir -p /etc/zabbix/{logs,alertscripts}
touch /etc/zabbix/logs/dingding.log
chown zabbix.zabbix -R /etc/zabbix/
- 第6步,调整 zabbix_server.conf 中告警脚本的路径,并重启 zabbix_server 服务
#.修改告警脚本的路径
new="/etc/zabbix/alertscripts"
sed -i "s|^AlertScriptsPath.*|AlertScriptsPath=${new}|" /usr/local/zabbix/etc/zabbix_server.conf
cat /usr/local/zabbix/etc/zabbix_server.conf | grep Scripts
#.重启zabbix服务
service zabbix_server restart
- 第7步,创建告警脚本,注意修改 webhook值 及 告警日志文件
[root@zabbix-server ~]# cat /etc/zabbix/alertscripts/dingding.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
import json
import sys
import os
import datetime
webhook = "https://oapi.dingtalk.com/robot/send?access_token=d196252885f017e12e21c372e733789ce24cc546df1c15709f3479d3cd7a91e3"
user=sys.argv[1]
subject=sys.argv[2]
text=sys.argv[3]
data={
"msgtype": "text",
"text": {
"content": "%s%s"%(subject,text)
},
"at": {
"atMobiles": [
user
],
"isAtAll": False
}
}
headers = {'Content-Type': 'application/json'}
x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
if os.path.exists("/etc/zabbix/logs/dingding.log"):
f=open("/etc/zabbix/logs/dingding.log","a+")
else:
f=open("/etc/zabbix/logs/dingding.log","w+")
f.write("\n"+"--"*30)
if x.json()["errcode"] == 0:
f.write("\n"+str(datetime.datetime.now())+" "+str(user)+" "+"发送成功"+"\n"+str(text))
f.close()
else:
f.write("\n"+str(datetime.datetime.now())+" "+str(user)+" "+"发送失败"+"\n"+str(text))
f.close()
- 第8步,配置告警脚本权限
chmod +x /etc/zabbix/alertscripts/dingding.py
chown zabbix.zabbix /etc/zabbix/alertscripts/dingding.py
- 第9步,安装python模块,测试
dingding.py脚本
#.安装pip
curl -sL 'http://iso.sqlfans.cn/python/install_pip_1931.sh' | bash
pip --version
#.安装requests模块
pip install requests
#.格式:dingding.py 手机号 关键词 告警信息
/etc/zabbix/alertscripts/dingding.py 18001833558 告警 test
- 第10步,确认消息群已收到如下告警消息:
3.创建zabbix报警媒介
- 第11步,登录zabbix控制台,创建报警媒介,依次点击“管理 -> 报警媒介类型 -> 创建媒介类型”
- 第12步,填写报警媒介的相关信息,包含3个脚本参数
{ALERT.SUBJECT}、{ALERT.MESSAGE}、{ALERT.SENDTO},然后点击“添加”
- 第13步,配置动作,依次点击“配置 -> 动作 -> 触发器动作 -> 创建动作”
- 第14步,在[动作]标签页,填写名称,示例 dingding_alert
- 第15步,在[操作]标签页,依次配置“操作、恢复操作”,然后点击“添加”
#告警操作内容:
##主题:
服务器:{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}
#恢复操作内容
##主题:
服务器:{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}
- 第16步,为指定用户添加报警媒介,依次点击“用户设置 -> 配置 -> 添加”,报警媒介类型 选择 dingding
4.告警测试
- 第17步,执行
service zabbix_agentd stop停掉 zabbix 服务器的 agent 服务,等待2-3分钟,可以看到主页发现问题,同时消息群收到预警信息
- 第18步,执行
service zabbix_agentd start启动 agent 服务,等待2-3分钟,可以看到主页的问题已恢复,同时消息群收到恢复信息
至此,zabbix自动发送预警及恢复信息到钉钉群,已经全部配置完成。












