zabbix钉钉报警

 

 

 

 

 

zabbix钉钉报警

我们在钉钉上建立群聊,然后在群聊上添加钉钉机器人:

zabbix钉钉报警

zabbix钉钉报警

编写,脚本需要放在zabbix 的alertscripts目录下(如果不知道该目录的位置,可以使用find命令查找)

find / -iname alertscripts

脚本

vim /usr/local/zabbix/alertscripts/dingding.py
#!/usr/bin/env python
#coding:utf-8
#zabbix钉钉报警
import requests,json,sys,os,datetime
webhook="上面创建钉钉机器人的webhook地址"
user=sys.argv[1]
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("/tmp/zabbix_dingding.log"):
    f=open("/tmp/zabbix_dingding.log","a+")
else:
    f=open("/tmp/zabbix_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()

脚本创建的时候最好在服务器端新建,不要在windows主机上创建完后再上传到服务器上,很有可能出现无法调用脚本的问题(在服务器上能使用脚本发送测试信息,log日志也可以看到,但是zabbix server 无法调用脚本,动作日志看已经发送,但钉钉收不到信息,log日志也查看不到该信息),我猜测可能是windows和Linux的编码问题

脚本和log授权

chmod +x /usr/local/zabbix/alertscripts/dingding.py
chown zabbix.zabbix  /usr/local/zabbix/alertscripts/dingding.py
chmod +x  /tmp/zabbix_dingding.log
chown  zabbix.zabbix   /tmp/zabbix_dingding.log

zabbix钉钉报警

zabbix钉钉报警

zabbix钉钉报警

zabbix钉钉报警

zabbix钉钉报警

zabbix钉钉报警

zabbix钉钉报警

操作

默认接收人 : 
服务器:{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}
}

 日子查看

[root@JumpFency alertscripts]# more /tmp/zabbix_dingding.log 

zabbix钉钉报警

 

上一篇:django实现钉钉接口调用,读取钉钉上填写的表单信息


下一篇:GCD与LCM