前言
zabbix监控系统部署完成以后,出现问题及时报警。是运维进行故障应急响应的关键。下面就来实现zabbix通过钉钉报警。
钉钉的配置
创建群聊
添加一个自定义机器人
webhook
zabbix配置
报警脚本 dingding.py
dingding.py 内容如下:
#!/usr/bin/env python3
#coding:utf-8
import requests
import json
import sys
import os
import datetime
#钉钉机器人的webhook的值
#token为钉钉后台上一步获取
webhook = "https://oapi.dingtalk.com/robot/send?access_token=xxxxxx"
#日志文件
log_path = "/tmp/dingding.log"
#接收数据
user=sys.argv[1]
title=sys.argv[2]
text=sys.argv[3]
#构建数据
data={
"msgtype": "text",
"text": {
"content": 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(log_path):
f=open(log_path,"a+")
else:
f=open(log_path,"w+")
#写入分割线
f.write("\n" + "--"*30)
#写日志
if x.json()["errcode"] == 0:
f.write("\n" + str(datetime.datetime.now()) + " " + str(user) + " " + "发送成功" + " " + str(title) + " " + "\n" + str(text))
f.close()
else:
f.write("\n" + str(datetime.datetime.now()) + " " + str(user) + " " + "发送失败" + " " + str(title) + " " + "\n" + str(text))
f.close()
进行发送报警信息测试
/usr/lib/zabbix/alertscripts/dingding.py 189100xx805 监控测试 监控报警好不好使
配置zabbix报警媒介
配置动作
消息:
告警主机:{HOST.NAME}
主机IP: {HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态: {TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID: {EVENT.ID}
配置用户
报警在docker下实现
pip3 install pyinstaller -i https://mirrors.aliyun.com/pypi/simple/
pyinstaller -F dingding.py
FAQ
发消息中文乱码
将docker内的环境变量设置为
LC_ALL=C.utf8
LANG=C.utf8
学习到了,感谢博主
对小白真的很友好,写的很全面。
喜欢这篇文章,作者666,文章真棒!