1.申请一个钉钉企业版
2.群内申请一个机器人
下载电脑版钉钉,登录后,在要接收群消息的群里,点击右上角设置图标,下滑找到机器人,添加一个机器人,保存机器人的webhook地址
保存这里的加签字符串
保存这里的webhook地址
3.zabbbix-server机器上创建钉钉告警脚本
在zabbix-server 机器上,/usr/local/share/zabbix/alertscripts 目录下创建一个dingding-webhook.py
]# cat dingding-webhook.py
#!/usr/bin/python3
import json
import requests
import sys
import time
import hmac
import hashlib
import base64
import re
from dingtalkchatbot.chatbot import DingtalkChatbotsecret = "SEC9a601e20d6153103******" # 钉钉机器人的加签字段内容
webhook = "https://oapi.dingtalk.com/robot/send?access_token=****" # 钉钉机器人的Webhook字段内容def dd_robot(msg):dd = DingtalkChatbot(webhook=webhook, secret=secret)dd.send_text(msg=msg, is_at_all=False, at_mobiles=[])if __name__ == "__main__":msg = str(sys.argv[1])outputmsg = (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())) + " 输出:" + msg)with open("/var/log/zabbix/zabbix_dingtalk.log", "a") as f:f.write(outputmsg + '\n')dd_robot(msg)
脚本编写完成之后需要为脚本添加执行权限
]# chmod +x dingding-webhook.py
]# chown zabbix.zabbix /var/log/zabbix/zabbix_dingtalk.log
Python环境预装
python3 -m pip install requests DingtalkChatbot urllib3
4.测试
命令行测试脚本能否成功执行
]# ./wechat-webhook.py "测试"
会在钉钉群内收到我们测试发出的消息
5.在zabbix web页面上添加告警媒介
问题 模板配置如下
主题: 故障发生 {EVENT.NAME}
消息:
**************错误**************
事件名称:{EVENT.NAME}
告警地址:{HOST.NAME}
监控项目:{ITEM.NAME}
监控取值:{EVENT.VALUE}
告警严重性:{EVENT.SEVERITY}
当前状态:{EVENT.STATUS}
告警时间:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}问题恢复 模板配置如下
主题: 故障恢复 {TRIGGER. NAME} {EVENT.DURATION}: {EVENT.NAME}
消息:
**************恢复**************
事件名称:{EVENT.NAME}
告警地址:{HOST.NAME}
监控项目:{ITEM.NAME}
监控取值:{EVENT.RECOVERY.VALUE}
告警严重性:{EVENT.SEVERITY}
当前状态:{EVENT.RECOVERY.STATUS}
告警时间:{EVENT.DATE} {EVENT.TIME}
恢复时间:{EVENT.RECOVERY.TIME}
持续时间:{EVENT.AGE}
事件ID:{EVENT.RECOVERY.ID}
添加消息模板后,点击更新
6.给相应的用户配置邮件告警
7.设置触发器,通知人员
8.测试
在zabbix客户端上停止nginx,看钉钉群内是否报警
[root@zabbix-web01 ~]# systemctl stop nginx
重新启动nginx,看钉钉群内是否报警