zabbix监控,实现指定的监控内容,进行钉钉告警推送。
流程:
- 钉钉机器人获取webhook及zabbix告警字段
- server上配置钉钉告警脚本
- 管理项-添加告警媒介,并赋予给用户(用户添加报警媒介“钉钉告警”)
- 配置项-添加动作(监控项状态通过钉钉发送告警)
- 测试
第一步,钉钉机器人获取webhook及zabbix告警字段
关于创建钉钉机器人,我前面文章有写,或者自行百度也可以
第二步,server上配置钉钉告警脚本
python脚本,需安装python及requests模块
#安装epel源
yum -y install epel-release
#安装python及依赖模块
yum -y install python && yum -y install python-pip && pip install requests
查看zabbix-server脚本路径:
grep ^AlertScriptsPath /etc/zabbix/zabbix_server.conf
(我的查询:/usr/lib/zabbix/alertscripts)
在此目录下创建钉钉脚本:
vi /usr/lib/zabbix/alertscripts/dingding.py
脚本内容如下:
- 注意:第1行,查看你的python路径是否一致
- 注意:第5行,改为你的webhook路径
- 注意:第18行,发消息是@所有人还是只@配置的消息发送人
- 注意:dingding.log文件,需提前创建!或者改为自己的log路径
#!/usr/bin/python
#coding:utf-8
import requests,json,sys,os,datetime
# 机器人的Webhook地址
webhook="你的钉钉webhook"
user=sys.argv[1]
text=sys.argv[3]
data={
"msgtype": "text",
"text": {
"content": text
},
"at": {
"atMobiles": [
# 在web端用户绑定媒介中通过指定用户注册是的手机号,可以通知指定人员,否则只发消息,不艾特具体人
user
],
"isAtAll": 1
# 设置为1,则@所有人
# "isAtAll": 1
# 设置为0,则@一个人
# "isAtAll": 0
}
}
headers = {'Content-Type': 'application/json'}
x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
if os.path.exists("/var/log/zabbix/dingding.log"):
f=open("/var/log/zabbix/dingding.log","a+")
else:
f=open("/var/log/zabbix/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()
创建dingding.log日志文件
#创建dingding.log
touch/var/log/zabbix/dingding.log
#授权给zabbix
chown zabbix:zabbix /var/log/zabbix/dingding.log
测试dingding.py
#添加执行权限
chmod +x /usr/lib/zabbix/alertscripts/dingding.py
#测试
/usr/lib/zabbix/alertscripts/dingding.py 《钉钉用户名或手机号》test "《带关键字的消息》"
脚本测试没问题,日志和钉钉都查看到消息,ok。
第三步:管理项-添加告警媒介,并赋予给用户
登录web管理,管理项添加钉钉告警媒介
添加报警媒介类型:
脚本参数:
#对应脚本中的,user=sys.argv[1](发给钉钉群中哪个用户)。
{ALERT.SENDTO}
#代表发送的信息的标题,在"报表"的"动作日志"中可以看到。
{ALERT.SUBJECT}
#对应脚本中的,text=sys.argv[3](发送的报警内容)。
{ALERT.MESSAGE}
添加消息模板:消息模板中加入你钉钉的“关键字”
通过web平台测试:钉钉媒介
用户并赋予钉钉告警媒介权限,选择默认管理员
第四步,配置项-添加动作
添加“操作”
实现效果:监控项发生改变将发送消息给admin赋值的媒介消息。
测试:
我这个教程中,监控项是nginx的存活状态
当监控的主机nginx停止和恢复时,钉钉收到的消息
发表评论