zabbix - 对接钉钉机器人接口
一:下载发送程序
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格式的换行去掉后重新测试。
附录:
报警信息 | 恢复信息 |
四: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) |