zabbix - 对接钉钉机器人接口

zabbix - 对接钉钉机器人接口

zabbix - 对接钉钉机器人接口

一:下载发送程序 

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

测试:

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

zabbix - 对接钉钉机器人接口

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

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


二:zabbix3.0 配置 

1、部署程序

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


2、创建报警媒介

zabbix - 对接钉钉机器人接口


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

zabbix - 对接钉钉机器人接口


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

zabbix - 对接钉钉机器人接口


三:zabbix3.2 配置

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

zabbix - 对接钉钉机器人接口

附录:

报警信息

<?xml version="1.0" encoding="UTF-8" ?> <root>  <from>{HOSTNAME1}</from>  <time>{EVENT.DATE} {EVENT.TIME}</time>  <level>{TRIGGER.SEVERITY}</level>  <name>{TRIGGER.NAME}</name>  <key>{TRIGGER.KEY1}</key>  <value>{ITEM.VALUE}</value>  <now>{ITEM.LASTVALUE}</now>  <id>{EVENT.ID}</id>  <ip>{HOST.IP}</ip>  <url>这里是点击报警消息可以访问的链接地址</url>  <age>{EVENT.AGE}</age>  <status>{EVENT.STATUS}</status> <acknowledgement> {EVENT.ACK.STATUS} </acknowledgement> <acknowledgementhistory> {EVENT.ACK.HISTORY}</acknowledgementhistory> </root>

恢复信息

<?xml version="1.0" encoding="UTF-8" ?> <root>  <from>{HOSTNAME1}</from>  <time>{EVENT.DATE} {EVENT.TIME}</time>  <level>{TRIGGER.SEVERITY}</level>  <name>{TRIGGER.NAME}</name>  <key>{TRIGGER.KEY1}</key>  <value>{ITEM.VALUE}</value>  <now>{ITEM.LASTVALUE}</now>  <id>{EVENT.ID}</id>  <ip>{HOST.IP}</ip>  <color>FF4A934A</color>  <url>这里的url会替换报警媒介的url</url>  <age>{EVENT.AGE}</age>  <recoveryTime>{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}</recoveryTime>  <status>{EVENT.RECOVERY.STATUS}</status> </root>


四: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 - 对接钉钉机器人接口


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

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

zabbix - 对接钉钉机器人接口

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

附加:通用机器人

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

#!/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)