C语言学习网

zabbix - 对接钉钉机器人接口

发表于:2022-12-07 作者:安全数据网编辑
编辑最后更新 2022年12月07日,一:下载发送程序 zabbix 钉钉报警机器人 - 向钉钉群聊中发送报警消息 (go语言写的脚本,可用 -h查看选项)测试:./golang-zabbix-robot-64 -webhook='htt


一:下载发送程序

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

测试:

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

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

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


二:zabbix3.0 配置

1、部署程序

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


2、创建报警媒介


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


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


三:zabbix3.2 配置

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

附录:

报警信息

{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、创建报警媒介


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

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

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

附加:通用机器人

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

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




0