一、钉钉上操作
1 创建钉钉群
这里自行选择群类型,我选择的是内部群
邀请好友进群,起一个群名
创建钉钉群完成
2 添加机器人
点击右上角设置
往下翻,找到机器人
点击添加机器人
选择自定义
点击添加
填写机器人名字,增加自定义关键词
生成webhook(保管好webhook的值;后面需要用到。)
点击完成即可完成配置
二、服务器上操作
1 编写钉钉脚本
1.1 安装python3.6.8
可参考:\ Linux下安装python3.6.8
1.2 创建日志文件
[root@zabbix alertscripts]# mkdir -p /usr/lib/zabbix/log/
[root@zabbix alertscripts]# touch /usr/lib/zabbix/log/dingding.log
[root@zabbix alertscripts]# chown zabbix.zabbix -R /usr/lib/zabbix/log/
1.2 配置钉钉脚本
1.2.1 创建python脚本
为了方便管理,将脚本写在/etc/zabbix/data/zabbix/alertscripts
下
[root@zabbix-server01 ~]# cd /etc/zabbix/data/zabbix/alertscripts
[root@zabbix-server01 alertscripts]# vim dingding.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import requests
import json
import sys
import os
import datetime
webhook = "https://oapi.dingtalk.com/robot/send?access_token=2618cd9c45fe772848e4079d4c642c86610947f3d72071f17973b8c27b5429c1"
user=sys.argv[1]
subject=sys.argv[2]
text=sys.argv[3]
data={
"msgtype": "text",
"text": {
"content": "%s%s"%(subject,text)
},
"at": {
"atMobiles": [
user
],
"isAtAll": False
}
}
headers = {'Content-Type': 'application/json'}
x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
if os.path.exists("/usr/lib/zabbix/log/dingding.log"):
f=open("/usr/lib/zabbix/log/dingding.log","a+")
else:
f=open("/usr/lib/zabbix/log/dingding.log","w+")
f.write("\n"+"--"*30)
if x.json()["errcode"] == 0:
f.write("\n"+str(datetime.datetime.now())+" "+str(user)+" "+"发送成功"+"\n"+str(text))
f.close()
else:
f.write("\n"+str(datetime.datetime.now())+" "+str(user)+" "+"发送失败"+"\n"+str(text))
f.close()
#为脚本添加执行权限
[root@zabbix alertscripts]# chmod +x dingding.py
#修改脚本的属主和属组:
[root@zabbix alertscripts]# chown zabbix.zabbix dingding.py
1.2.2 测试py脚本
在测试脚本之前,需要提前安装python模块
pip3 install requests
#shell脚本 手机号 关键词 告警信息
./dingding.py 12312312312 告警 test
成功收到消息,完成
三、web页面操作
1 添加脚本媒介
依次点击管理 -> 媒介 -> 创建媒介类型
下面要用到的脚本参数
{ALERT.SUBJECT}
{ALERT.MESSAGE}
{ALERT.SENDTO}
填写完成后,点击左下方更新按钮
划到最下面可以看到我们刚刚添加的内容
2 配置动作
依次点击配置 -> 动作 -> 触发器动作 -> 创建动作
依次添加 操作、恢复操作
内容如下
#告警操作内容:
##标题:
服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!
##消息内容:
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
#恢复操作内容
##标题:
服务器:{HOST.NAME}: {TRIGGER.NAME}已恢复!
##消息内容:
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
持续时间:{EVENT.AGE}
事件ID:{EVENT.ID}
配置完成后,点击添加
3 添加报警媒介
依次点击 用户设置 -> 配置 -> 添加
添加完记得点击更新
四、钉钉接收告警信息测试
这里我们只做简单测试,停掉zabbix-agent01
进入zabbix-agent01
的shell
使用下面命令,停掉zabbix-agent01
systemctl stop zabbix-agent
等待两到三分钟,可以看到主页发现问题
查看钉钉群,可以看到刚刚的预警信息已发送至钉钉
重启agent01
的服务,可以看到,恢复信息也已经发送至钉钉群
至此,zabbix自动发送预警及恢复信息到钉钉群,已经全部配置完成✿✿ヽ(°▽°)ノ✿