1.创建钉钉机器人

        在钉钉中创建群聊,然后在设置中创建钉钉机器人。

prometheus钉钉告警配置多个 zabbix钉钉告警到用户_json

 

prometheus钉钉告警配置多个 zabbix钉钉告警到用户_钉钉_02

 

prometheus钉钉告警配置多个 zabbix钉钉告警到用户_zabbix_03

        机器人名字随便,安全设置我选择【自定义关键词】,并设置内容为zabbix,即机器人收到的每条消息内容均需要带“zabbix”才可以发出。

prometheus钉钉告警配置多个 zabbix钉钉告警到用户_钉钉_04

        复制保留Webhook的内容,以便后面使用。

prometheus钉钉告警配置多个 zabbix钉钉告警到用户_zabbix_05

2. 配置zabbix-server

        在zabbix-server端查看zabbix_server.conf配置文件,查找AlertScriptsPath=字段,记住对应的路径。

vim /etc/zabbix/zabbix_server.conf

prometheus钉钉告警配置多个 zabbix钉钉告警到用户_zabbix_06

        我这里的路径是/usr/lib/zabbix/alertscripts

        进入该目录,创建脚本。

cd /usr/lib/zabbix/alertscripts
vim dingding.py

        文件内容如下:

#!/usr/bin/env python
#coding:utf-8
import requests
import json
import sys
import os

headers = {'Content-Type': 'application/json;charset=utf-8'}
api_url = "这里填入钉钉机器人的webhook"

def msg(text):
    json_text= {
     "msgtype": "text",
        "text": {
            "content": text
        },
    }
    print requests.post(api_url,json.dumps(json_text),headers=headers).content

if __name__ == '__main__':
    text = sys.argv[1]
    msg(text)

        保存退出后,修改文件的可执行权限:

chmod +x /usr/lib/zabbix/alertscripts/dingding.py

        测试发送消息,可以看到钉钉群可以收到发送的消息了。【注意:这里你的服务器可能会出现报错,提示缺少相关的包,按照提示下载安装即可】

python dingding.py "zabbix监控告警消息测试"

prometheus钉钉告警配置多个 zabbix钉钉告警到用户_prometheus钉钉告警配置多个_07

3. zabbix的web界面配置

3.1 创建告警媒介

        创建告警媒介,在web页面上点击【管理】-【报警媒介类型】-【创建告警媒介】

,名称随意,类型选择脚本,脚本名称输入我们创建的脚本名称dingding.py,脚本参数输入{ALERT.MESSAGE},由于我们的python脚本只有1个输入变量,所以我们这里的参数也只需要1个就可以了。

prometheus钉钉告警配置多个 zabbix钉钉告警到用户_zabbix_08

3.2 配置收件人

        这里我们演示的是给admin账号配置收件信息,实际中也可以给其他账号配置,步骤一样的。

        点击【管理】-【用户】-【Admin】,点击【报警媒介】 

prometheus钉钉告警配置多个 zabbix钉钉告警到用户_prometheus钉钉告警配置多个_09

prometheus钉钉告警配置多个 zabbix钉钉告警到用户_机器人_10

         类型选择我们刚刚创建的【钉钉告警】,收件人随便填,没有用。其他的可以按需选择。

prometheus钉钉告警配置多个 zabbix钉钉告警到用户_机器人_11

 3.3 创建动作

        打开【配置】-【动作】,点击【创建动作】

prometheus钉钉告警配置多个 zabbix钉钉告警到用户_json_12

        名称随便填,加入新的触发条件,一般可以选择监控模板,或者主机,计算方式一般选择【或】

prometheus钉钉告警配置多个 zabbix钉钉告警到用户_prometheus钉钉告警配置多个_13

        接着点击【操作】,默认时间指发送告警信息的间隔时间,我这里为了测试的时效性填了60s,消息内容可以看自己的喜好,我这里也把我的贴在下面,可以复制参考;

prometheus钉钉告警配置多个 zabbix钉钉告警到用户_机器人_14

         我的消息内容如下,由于我们的python脚本只有1个文本参数,所以我们可以不用配置标题,所有告警内容都在消息内容里发出即可。*注意:由于前面我们在钉钉中配置的机器人的消息中必须含有zabbix字段,所以我们要在消息内容中含有zabbix。

【zabbix告警】
告警问题:{EVENT.NAME}
告警时间:{EVENT.DATE}-{EVENT.TIME}
告警主机:{HOST.NAME}
告  警  IP:{HOST.IP}
监控项目:{ITEM.NAME}
故障等级:{EVENT.SEVERITY}

         在【操作细节】下面点击【添加】,选择发送到的用户或者群组,选择发送媒介,这里我只选择了【钉钉告警】,然后点击添加。

prometheus钉钉告警配置多个 zabbix钉钉告警到用户_zabbix_15

         接下来切换到【恢复操作】界面,恢复操作是指故障恢复后发送的消息内容,其他地方一样的配置。注意的是同样需要在内容中包含zabbix,才能顺利发到钉钉上。

【zabbix告警恢复】
恢复时间:{EVENT.DATE}-{EVENT.TIME}
告警名称:{EVENT.NAME}
告警主机:{HOST.NAME}
告  警  IP:{HOST.IP}
告警等级:{EVENT.SEVERITY}

prometheus钉钉告警配置多个 zabbix钉钉告警到用户_prometheus钉钉告警配置多个_16

        接下来切换到【更新操作】界面,配置也同上。注意三个操作都要添加上操作细节。 

【zabbix告警更新】
{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.
{EVENT.UPDATE.MESSAGE}

Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}.

prometheus钉钉告警配置多个 zabbix钉钉告警到用户_机器人_17

        到了这里配置就完成了,保存好动作就可以了。

4. 告警生效测试

        完成所有的配置后,我们就可以进行测试了。

        此处我这里以监控服务器端口为例,我创建了1个【监控项】和1个【触发器】,具体操作手册不在此处详解了。我的触发器监听服务器的19000端口。

        接下来在服务器中kill掉19000端口的进程,然后就收到了钉钉群消息。

prometheus钉钉告警配置多个 zabbix钉钉告警到用户_prometheus钉钉告警配置多个_18

        然后我们再把进行启动,约60s后,就收到了恢复的信息。

        

prometheus钉钉告警配置多个 zabbix钉钉告警到用户_zabbix_19

        好啦,到这里咱们的配置钉钉机器人的过程就结束啦!