钉钉报警脚本
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# https://www.aityp.com
import requests
import json
import sys
import os
import time
#import configparser
headers = {'Content-Type': 'application/json;charset=utf-8'}
time=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
log_file = "/var/log/zabbix/zabbix_dingding.log"
api_url = "https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxx"
def log(info):
#注意权限,否则写不进去日志
if os.path.isfile(log_file) == False:
f = open(log_file, 'a+')
f = open(log_file,'a+')
f.write(info)
f.close()
def msg(text,user):
json_text= {
"msgtype": "markdown",
"markdown": {
"title":"zabbix monitor",
"text": text
},
"at": {
"atMobiles": [
user
],
"isAtAll": True
}
}
r=requests.post(api_url,data=json.dumps(json_text),headers=headers).json()
code = r["errcode"]
if code == 0:
log(time + ":消息发送成功 返回码:" + str(code) + "n")
log(time+str(text)+"n")
else:
log(time + ":消息发送失败 返回码:" + str(code) + "n")
exit(3)
if __name__ == '__main__':
text = sys.argv[3]
user = sys.argv[1]
msg(text,user)
将该脚本放入到/usr/lib/zabbix/alertscripts 里
chmod +x dingding.py
关键是zabbix web端配置
1,添加报警媒介
2,配置动作里,对触发器创建动作,添加钉钉报警
3,添加报警格式内容
内容:
监控告警通知
------
**主机名称:** {HOSTNAME1}
**告警名称:** {TRIGGER.NAME}
**告警级别:** {TRIGGER.SEVERITY}
**告警时间:** {EVENT.DATE} {EVENT.TIME}
**检查项:** {TRIGGER.KEY1}
**当前值:** {ITEM.LASTVALUE}
**IP地址:** {HOST.IP}
**事件ID:** {EVENT.ID}
4,恢复报警格式内容
内容:
font color=#008000 size=6 face="黑体">监控恢复通知
------
**主机名称:** {HOSTNAME1}
**告警名称:** {TRIGGER.NAME}
**告警级别:** {TRIGGER.SEVERITY}
**告警时间:** {EVENT.DATE} {EVENT.TIME}
**恢复时间:** {EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
**故障时长:** {EVENT.AGE}
**检查项:** {TRIGGER.KEY1}
**当前值:** {ITEM.LASTVALUE}
**IP地址:** {HOST.IP}
**事件ID:** {EVENT.ID}
5,用户Admin绑定报警媒介
6,最终效果
服务器租用托管,机房租用托管,主机租用托管,https://www.e1idc.com