zabbix钉钉告警设置

群机器人是钉钉群的高级扩展功能,群机器人支持Webhook协议的自定义接入,支持更多可能性. 比如我们可将Zabbix运维报警提醒通过自定义机器人聚合到钉钉群中,以实现钉钉告警。下面记录下Zabbix通过钉钉告警的设置过程:

一. 钉钉机器人创建
登录钉钉客户端,创建一个群,把需要收到报警信息的人员都拉到这个群内.然后点击群右上角的"群机器人"->"添加机器人"->"自定义",记录该机器人的webhook值!
二.编写脚本

我的zabbix server的配置文件在/usr/local/zabbix-server/etc/zabbix_server.conf,在此文件中找到shell文件的路径,相关的配置shell文件拷贝到此目录下

[[email protected] alertscripts]# cat    /usr/local/zabbix-server/etc/zabbix_server.conf | grep alertscripts
# AlertScriptsPath=${datadir}/zabbix/alertscripts
[[email protected] alertscripts]# pwd
/usr/local/zabbix-server/share/zabbix/alertscripts

钉钉告警的脚本如下:(一个是用脚本语言编写,一个是用python脚本编写,采用其中的一个即可,输入的参数不一样。此次采用脚本语言做配置)
 cat post.sh
#!/bin/bash
header="Content-Type: application/json;charset=utf-8"
url="https://oapi.dingtalk.com/robot/send?access_token=9e16c7xxxx"
txt='{
      "msgtype":"text",
          "text":{
                 "content":"'$1'"
                 },
          "at":{
                 "atMobiles":["'$2'"],
                 "isAtAll":false
                 }
     }'
curl  -X POST "${url}" -H "${header}"  -d "${txt}"

cat dingding.py
代码如下:
#!/usr/bin/env python
#coding:utf-8
#zabbix钉钉报警
import requests,json,sys,os,datetime
webhook="https://oapi.dingtalk.com/robot/send?access_token=9exxxxxa8c0bef"
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("/usr/local/zabbix/logs/dingding.log"):
    f=open("/usr/local/zabbix/logs/dingding.log","a+")
else:
    f=open("/usr/local/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()
chown zabbix:zabbix post.sh
chown zabbix:zabbix dingding.py
上述两个文件赋予执行权限。
测试:./post.sh waninthisisaest 13661196xxx
./dingding.py test 13661196xxx "这个条测试信息,忽略"
如果能收到消息,表示脚本没有问题。
三 界面配置

1.  配置脚本administrator->Media types,注意脚本的名称一定和上面一致。

zabbix钉钉告警设置

zabbix钉钉告警设置

2 配置用户

zabbix钉钉告警设置

zabbix钉钉告警设置

zabbix钉钉告警设置

zabbix钉钉告警设置

zabbix钉钉告警设置

zabbix钉钉告警设置

zabbix钉钉告警设置

zabbix钉钉告警设置