添加钉钉机器人
登录钉钉PC端,依次点击右上角“姓名“-”机器人人管理“
添加机器人
填写对应信息
复制保存对应的webhook信息
#一###########################################################################
配置对应脚本(golang-zabbix-robot-64)
下载钉钉所需要的脚本golang-zabbix-robot-64,链接: https://pan.baidu.com/s/167xWGG49SXWXJGPRvWdeDQ 提取码: 936r
cd /usr/local/src
mv golang-zabbix-robot-64 /usr/local/zabbix/share/zabbix/alertscripts/
cd /usr/local/zabbix/share/zabbix/alertscripts/
chmod 777 golang-zabbix-robot-64
chown zabbix:zabbix golang-zabbix-robot-64
测试发送
./golang-zabbix-robot-64 -webhook=https://oapi.dingtalk.com/robot/send?access_token=xxxxxx
配置用户告警媒介
-webhook=https://oapi.dingtalk.com/robot/send?access_token=xxxxxx
-msg={ALERT.MESSAGE}
-url=xxxx
因为使用的是机器人,这里的收件人随意填写
创建对应动作(url填写zabbix_server访问地址,是为了在发生故障时能点击url直接访问zabbix-erver)
告警信息:
故障{TRIGGER.STATUS},服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<from>{HOST.NAME}</from>
<time>{EVENT.DATE} {EVENT.TIME}</time>
<level>{TRIGGER.SEVERITY}</level>
<name>{TRIGGER.NAME}</name>
<key>{TRIGGER.KEY}</key>
<value>{ITEM.VALUE}</value>
<now>{ITEM.LASTVALUE}</now>
<id>{EVENT.ID}</id>
<ip>{HOST.IP}</ip>
<url>这里的url会替换报警媒介的url</url>
<age>{EVENT.AGE}</age>
<status>{EVENT.STATUS}</status>
<acknowledgement> {EVENT.ACK.STATUS} </acknowledgement>
<acknowledgementhistory> {EVENT.ACK.HISTORY}</acknowledgementhistory>
</root>
恢复信息
恢复{TRIGGER.STATUS}, 服务器:{HOST.NAME}: {TRIGGER.NAME}已恢复!
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<from>{HOST.NAME}</from>
<time>{EVENT.DATE} {EVENT.TIME}</time>
<level>{TRIGGER.SEVERITY}</level>
<name>{TRIGGER.NAME}</name>
<key>{TRIGGER.KEY}</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>OK</status>
</root>
测试验证
#二###########################################################################
配置对应脚本(dingdingrobot.py)
cd /usr/local/src
mv dingdingrobot.py /usr/local/zabbix/share/zabbix/alertscripts/
cd /usr/local/zabbix/share/zabbix/alertscripts/
chmod 777 dingdingrobot.py
chown zabbix:zabbix dingdingrobot.py
curl https://bootstrap.pypa.io/2.6/get-pip.py -o get-pip.py
curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
python get-pip.py
pip install requests
vim dingdingrobot.py
#!/usr/bin/python
#-*-coding:utf8-*-
import requests
import json
import sys
import os
import urllib3
urllib3.disable_warnings()
url = "https://oapi.dingtalk.com/robot/send?access_token=xxxxxx" # 这里的url就是webhook的Api接口
headers = {'Content-Type': 'application/json;charset=utf-8'} #头部信息,Zabbix官方文档写法,可以查看zabbix官方文档
def message(text): #定义信息函数
text_info= { #编写规则可以查看Zabbix官方文档的Zabbix Api
"msgtype": "text",
"at": {
"atMobiles": [
"152xxxxx453" #填入号码会@相应号码的人
],
"isAtAll": False #True会@所有人
},
"text": {
"content": text
}
}
print requests.post(url,json.dumps(text_info),headers=headers).content #将返回的数据编码成 JSON 字符串
if __name__ == '__main__': #调用message函数
text = sys.argv[1]
message(text)
测试发送
./dingdingrobot.py "Hello World!"
配置告警媒介
{ALERT.MESSAGE}
因为使用的是机器人,这里的收件人随意填写
创建对应动作
故障操作
服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!
告警主机:{HOST.NAME}
告警信息:{TRIGGER.NAME}
告警项目:{ITEM.NAME}
告警时间:{EVENT.DATE}_{EVENT.TIME}
当前状态:故障 值={ITEM.VALUE}
故障已持续{EVENT.AGE},请尽快处理
事件ID:{EVENT.ID}
恢复操作
服务器:{HOST.NAME}: {TRIGGER.NAME}已恢复!
告警信息:{TRIGGER.NAME}
告警项目:{ITEM.NAME}
告警时间:{EVENT.DATE}_{EVENT.TIME}
恢复时间:{EVENT.RECOVERY.DATE}_{EVENT.RECOVERY.TIME}
当前状态:{TRIGGER.STATUS} 值={ITEM.VALUE}
故障共持续{EVENT.AGE}
事件ID:{EVENT.ID}
测试验证
#三##########################################################################
配置对应脚本
cd /usr/local/src
mv dingdingrobot.sh /usr/local/zabbix/share/zabbix/alertscripts/
cd /usr/local/zabbix/share/zabbix/alertscripts/
chmod 777 dingdingrobot.sh
chown zabbix:zabbix dingdingrobot.sh
vim dingdingrobot.sh
#!/bin/bash
to=$1
subject=$2
text=$3
curl 'https://oapi.dingtalk.com/robot/send?access_token=567e11df9f093ee8e849e5ba773d793119b94ce0863416ffdd55a9a97a91b3ad' -H 'Content-Type: application/json' \
-d '{"msgtype": "text",
"text": {
"content": "'"$text"'"
},
"at":{
"atMobiles":[
"'"$1"'"
],
"isAtAll":false
}
}'
测试发送
./dingdingrobot.sh 11 22 "Hello World!"
配置告警媒介
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
因为使用的是机器人,这里的收件人随意填写
创建对应动作
故障操作
故障{TRIGGER.STATUS},服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!
告警主机:{HOST.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE}
事件 ID:{EVENT.ID}
恢复操作
恢复{TRIGGER.STATUS}, 服务器:{HOST.NAME}: {TRIGGER.NAME}已恢复!
告警主机:{HOST.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE}
事件 ID:{EVENT.ID}
测试验证
#四##########################################################################
配置对应脚本
cd /usr/local/src
mv ddrobot.py /usr/local/zabbix/share/zabbix/alertscripts/
cd /usr/local/zabbix/share/zabbix/alertscripts/
chmod 777 ddrobot.py
chown zabbix:zabbix ddrobot.py
curl https://bootstrap.pypa.io/2.6/get-pip.py -o get-pip.py
curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
python get-pip.py
pip install requests
vim ddrobot.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
import json
import sys
import os
import urllib3
urllib3.disable_warnings()
headers = {'Content-Type': 'application/json;charset=utf-8'}
api_url = "https://oapi.dingtalk.com/robot/send?access_token=xxxxxx"
def msg(text, subject):
json_text = {
"actionCard": {
"title": subject,
"text": text,
"hideAvatar": "0",
"btnOrientation": "0",
"btns": [
{
"title": subject[:12],
"actionURL": ""
}
]
},
"msgtype": "actionCard"
}
print(requests.post(api_url,json.dumps(json_text),headers=headers).content)
if __name__ == '__main__':
text = sys.argv[1]
text = text.replace("\n", "\r")
subject = sys.argv[2]
msg(text, subject)
测试发送
./ddrobot.py Hello World!
配置告警媒介
{ALERT.MESSAGE}
{ALERT.SUBJECT}
因为使用的是机器人,这里的收件人随意填写
创建对应动作
故障操作
故障{TRIGGER.STATUS},服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!
告警主机:{HOST.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE}
事件 ID:{EVENT.ID}
恢复操作
恢复{TRIGGER.STATUS}, 服务器:{HOST.NAME}: {TRIGGER.NAME}已恢复!
告警主机:{HOST.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE}
事件 ID:{EVENT.ID}
测试验证
#五############################################################################
配置对应脚本
cd /usr/local/src
mv ddrobot.sh /usr/local/zabbix/share/zabbix/alertscripts/
cd /usr/local/zabbix/share/zabbix/alertscripts/
chmod 777 ddrobot.sh
chown zabbix:zabbix ddrobot.sh
vim ddrobot.sh
#!/bin/bash
header="Content-Type: application/json;charset=utf-8"
url="https://oapi.dingtalk.com/robot/send?access_token=xxxxxx" #你的钉钉webhook地址
txt='{
"msgtype":"text",
"text":{
"content":"'$1'"
},
"at":{
"atMobiles":["'$2'"],
"isAtAll":false
}
}'
curl -X POST "${url}" -H "${header}" -d "${txt}"
测试发送
./ddrobot.sh 666 999
配置告警媒介
{ALERT.MESSAGE}
创建对应动作
故障操作
故障{TRIGGER.STATUS},服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!
告警主机:{HOST.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE}
事件 ID:{EVENT.ID}
恢复操作
恢复{TRIGGER.STATUS}, 服务器:{HOST.NAME}: {TRIGGER.NAME}已恢复!
告警主机:{HOST.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE}
事件 ID:{EVENT.ID}
测试验证