zabbix - 对接钉钉机器人接口_第1张图片

一:下载发送程序 

zabbix 钉钉报警机器人 - 向钉钉群聊中发送报警消息 (go语言写的脚本,可用 -h查看选项)

测试:

./golang-zabbix-robot-64  -webhook='https://oapi.dingtalk.com/roboxxxxxxxx'

wKiom1jmF2_jX5bXAABYD4eJ8us451.png

此时你的机器人会发送一个来自于千思网的消息,此时说明golong可用。

接下来就要区分你的zabbix的版本了,以下分别是3.0 3.2 2.4的配置方式


二:zabbix3.0 配置 

1、部署程序

将go脚本拷贝至服务端警告目录AlertScriptspath下,添加执行权限。


2、创建报警媒介

zabbix - 对接钉钉机器人接口_第2张图片


3、添加用户或组,加入报警媒介

zabbix - 对接钉钉机器人接口_第3张图片


4、创建动作,创建触发发送条件

zabbix - 对接钉钉机器人接口_第4张图片


三:zabbix3.2 配置

3.2和3.0配置大致一样,只是有部分会发生消息送不到的情况,尝试将上述xml格式的换行去掉后重新测试。

zabbix - 对接钉钉机器人接口_第5张图片

附录:

报警信息

 {HOSTNAME1}    {TRIGGER.SEVERITY}  {TRIGGER.NAME}  {TRIGGER.KEY1}  {ITEM.VALUE}  {ITEM.LASTVALUE}  {EVENT.ID}  {HOST.IP}  这里是点击报警消息可以访问的链接地址  {EVENT.AGE}  {EVENT.STATUS} {EVENT.ACK.STATUS} {EVENT.ACK.HISTORY}

恢复信息

 {HOSTNAME1}    {TRIGGER.SEVERITY}  {TRIGGER.NAME}  {TRIGGER.KEY1}  {ITEM.VALUE}  {ITEM.LASTVALUE}  {EVENT.ID}  {HOST.IP}  FF4A934A  这里的url会替换报警媒介的url  {EVENT.AGE}  {EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}  {EVENT.RECOVERY.STATUS}


四:zabbix 2.4 配置

相对于3版本,2.4 虽经典但是却有点跟不上时代了,公司为了保持稳定,也不敢贸然升级,所以只能对 2.4进行相应的配置了。

1、部署程序

同样在警告目录AlertScriptspath下,添加脚本 zabbix-dingding.sh

#!/bin/bash

webhook="https://oapi.dingtalk.com/robot/send?access_token=xxx"

/zabbix/share/zabbix/alertscripts/golang-zabbix-robot-64 -webhook=$webhook -msg="$3"


2、创建报警媒介

zabbix - 对接钉钉机器人接口_第6张图片


3、创建用户或组,加入报警媒介,同上

4、创建动作,创建触发发送条件,采用3.2格式,不换行

zabbix - 对接钉钉机器人接口_第7张图片

-----------------------------------------------------------------------------------------

附加:通用机器人

有时我们会用自定义的监控脚本,去监控服务状态,或者某个程序等等,怎么对接到钉钉呢?

#!/usr/bin/env python
#coding=utf-8
import urllib
import urllib2
import json
import re
f = open('xxxxxxxxxx','r')   #取文件的内容发送
your_data = f.read()
f.close()
#print your_data
headers = {'Content-Type': 'application/json'}
test_data = {
     'msgtype':"text",
     "text":{
       'content':"%s" % your_data
}, 
     "at":{
     "atMobiles":[
     # "you iphone"
     ],
     "isAtAll":"false"
}
}
#requrl = "https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxxxxxxxxx"
req = urllib2.Request(url = requrl,headers = headers,data = json.dumps(test_data))
response = urllib2.urlopen(req)