diff --git a/zabbix-md/zabbix钉钉报警.md b/zabbix-md/zabbix钉钉报警.md index f95f1ac..b39aad4 100644 --- a/zabbix-md/zabbix钉钉报警.md +++ b/zabbix-md/zabbix钉钉报警.md @@ -1,247 +1,247 @@ -

Zabbix钉钉报警

- ------- - -**作者:行癫(盗版必究)** - -## 一:环境准备 - -#### 1.监控环境 - -​ zabbix-server正常运行,并且正常对zabbix-agent进行监控 - -#### 2.注册钉钉 - -![image-20230228204528919](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20230228204528919.png) - -​ 安装钉钉PC端,注册账户,添加好友(至少3好友) - -​ 创建群组 - -![image-20230228204728705](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20230228204728705.png) - -![image-20230228204804255](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20230228204804255.png) - -![image-20230228204900830](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20230228204900830.png) - -​ 创建机器人 - -![image-20230228205012078](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20230228205012078.png) - -![image-20230228205045700](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20230228205045700.png) - -![image-20230228205114319](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20230228205114319.png) - -![image-20230228205155984](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20230228205155984.png) - - 注意:保存webhook - -#### 3.python3环境 - -​ 安装python3 - -```shell -[root@xingdian ~]# yum -y install python3 -[root@xingdian ~]# yum -y install python-pip -``` - -​ 更换pip源 - -```shell -[root@xingdian ~]# mkdir ~/.pip -[root@xingdian ~]# vim ~/.pip/pip.conf -[global] -index-url=http://mirrors.aliyun.com/pypi/simple/ - -[install] -trusted-host=mirrors.aliyun.com -``` - -​ 安装requests模块 - -```shell -[root@xingdian ~]# pip install --upgrade pip -[root@xingdian ~]# pip install requests -``` - -#### 4.配置监控脚本 - -​ 创建钉钉脚本 - -```shell -[root@xingdian ~]# cd /usr/lib/zabbix/alertscripts/ -[root@xingdian alertscripts]# vim dingding.py - -#!/usr/bin/python - -#-*- coding: utf-8 -*- - -#zabbix钉钉报警 -import requests,json,sys,os,datetime - -webhook="https://oapi.dingtalk.com/robot/send?access_token=feb43aea482d9da72e781d92dbfc074f701642a166f31194ff347954f500a404" - -#说明:这里改为自己创建的机器人的webhook的值 - -user=sys.argv[1] - -#发给钉钉群中哪个用户 - -text=sys.argv[3] - -#发送的报警内容 - -data={ - - "msgtype": "text", - - "text": { - - "content": text - - }, - - "at": { - - "atMobiles": [ - - user - - ], - - "isAtAll": False - - } - -} - -#钉钉API固定数据格式 - -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() - -#将发送的告警信息写入本地日志/var/log/zabbix/dingding.log中 - -[root@xingdian alertscripts]# chmod +x dingding.py -``` - -​ 创建日志文件 - -```shell -[root@xingdian alertscripts]# touch /var/log/zabbix/dingding.log -[root@xingdian alertscripts]# chown zabbix.zabbix /var/log/zabbix/dingding.log -``` - -​ 测试命令 - -```shell -[root@xingdian alertscripts]# ./dingding.py xingdian test "这是条告警测试信息,请忽略" -``` - -​ 参数说明 - -​ xingdian:钉钉群中任意一个人员的钉钉号 - -​ test:这里因脚本中没有设置接收参数,所以无实际意义,仅仅起到变量占位的作用 - -​ "这是条告警测试信息,请忽略":这是具体的告警信息,告警信息必须包含“安全设置”中自己设置的“自定义关键词” - -![image-20230228210234266](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20230228210234266.png) - -## 二:配置Zabbix监控 - -#### 1.创建主机群组 - -#### 2.创建主机 - -#### 3.创建监控项 - -​ (监控nginx服务是否正常运行) - -#### 4.创建触发器 - -#### 5.创建报警媒介 - -脚本参数: - -```shell -{ALERT.SENDTO} -#对应脚本中的,user=sys.argv[1](发给钉钉群中哪个用户) -{ALERT.SUBJECT} -#代表发送的信息的标题,在"报表"的"动作日志"中可以看到 -{ALERT.MESSAGE} -#对应脚本中的,text=sys.argv[3](发送的报警内容) -``` - -#### 6.创建动作 - -​ 关联触发器 - -​ 添加操作 - -```shell -"主题"对应"钉钉告警"媒介中的:{ALERT.SUBJECT} -"消息"对应"钉钉告警"媒介中的:{ALERT.MESSAGE} - -主题: - -故障名称(触发器名称):{EVENT.NAME} - -消息: - -告警主机:{HOSTNAME1} -告警时间:{EVENT.DATE} {EVENT.TIME} -告警等级:{TRIGGER.SEVERITY} -告警信息: {TRIGGER.NAME} -告警项目:{TRIGGER.KEY1} -问题详情:{ITEM.NAME}:{ITEM.VALUE} -当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} -事件ID:{EVENT.ID} -``` - -​ 添加恢复操作 - -```shell -主题:故障恢复:{EVENT.NAME} - -消息: - -恢复主机:{HOSTNAME1} -恢复时间:{EVENT.DATE} {EVENT.TIME} -主机IP:{HOST.IP} -告警项目:{TRIGGER.KEY1} -问题详情:{ITEM.NAME}:{ITEM.VALUE} -当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} -事件ID:{EVENT.ID} -``` - -#### 7.用户关联报警媒介 - -#### 8.模拟报警产生 - -#### 9.查看报警信息 - +

Zabbix钉钉报警

+ +------ + +**作者:行癫(盗版必究)** + +## 一:环境准备 + +#### 1.监控环境 + +​ zabbix-server正常运行,并且正常对zabbix-agent进行监控 + +#### 2.注册钉钉 + +![image-20230228204528919](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20230228204528919.png) + +​ 安装钉钉PC端,注册账户,添加好友(至少3好友) + +​ 创建群组 + +![image-20230228204728705](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20230228204728705.png) + +![image-20230228204804255](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20230228204804255.png) + +![image-20230228204900830](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20230228204900830.png) + +​ 创建机器人 + +![image-20230228205012078](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20230228205012078.png) + +![image-20230228205045700](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20230228205045700.png) + +![image-20230228205114319](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20230228205114319.png) + +![image-20230228205155984](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20230228205155984.png) + + 注意:保存webhook + +#### 3.python3环境 + +​ 安装python3 + +```shell +[root@xingdian ~]# yum -y install python3 +[root@xingdian ~]# yum -y install python-pip +``` + +​ 更换pip源 + +```shell +[root@xingdian ~]# mkdir ~/.pip +[root@xingdian ~]# vim ~/.pip/pip.conf +[global] +index-url=http://mirrors.aliyun.com/pypi/simple/ + +[install] +trusted-host=mirrors.aliyun.com +``` + +​ 安装requests模块 + +```shell +[root@xingdian ~]# pip3 install --upgrade pip +[root@xingdian ~]# pip3 install requests +``` + +#### 4.配置监控脚本 + +​ 创建钉钉脚本 + +```shell +[root@xingdian ~]# cd /usr/lib/zabbix/alertscripts/ +[root@xingdian alertscripts]# vim dingding.py + +#!/usr/bin/python + +#-*- coding: utf-8 -*- + +#zabbix钉钉报警 +import requests,json,sys,os,datetime + +webhook="https://oapi.dingtalk.com/robot/send?access_token=feb43aea482d9da72e781d92dbfc074f701642a166f31194ff347954f500a404" + +#说明:这里改为自己创建的机器人的webhook的值 + +user=sys.argv[1] + +#发给钉钉群中哪个用户 + +text=sys.argv[3] + +#发送的报警内容 + +data={ + + "msgtype": "text", + + "text": { + + "content": text + + }, + + "at": { + + "atMobiles": [ + + user + + ], + + "isAtAll": False + + } + +} + +#钉钉API固定数据格式 + +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() + +#将发送的告警信息写入本地日志/var/log/zabbix/dingding.log中 + +[root@xingdian alertscripts]# chmod +x dingding.py +``` + +​ 创建日志文件 + +```shell +[root@xingdian alertscripts]# touch /var/log/zabbix/dingding.log +[root@xingdian alertscripts]# chown zabbix.zabbix /var/log/zabbix/dingding.log +``` + +​ 测试命令 + +```shell +[root@xingdian alertscripts]# ./dingding.py xingdian test "这是条告警测试信息,请忽略" +``` + +​ 参数说明 + +​ xingdian:钉钉群中任意一个人员的钉钉号 + +​ test:这里因脚本中没有设置接收参数,所以无实际意义,仅仅起到变量占位的作用 + +​ "这是条告警测试信息,请忽略":这是具体的告警信息,告警信息必须包含“安全设置”中自己设置的“自定义关键词” + +![image-20230228210234266](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20230228210234266.png) + +## 二:配置Zabbix监控 + +#### 1.创建主机群组 + +#### 2.创建主机 + +#### 3.创建监控项 + +​ (监控nginx服务是否正常运行) + +#### 4.创建触发器 + +#### 5.创建报警媒介 + +脚本参数: + +```shell +{ALERT.SENDTO} +#对应脚本中的,user=sys.argv[1](发给钉钉群中哪个用户) +{ALERT.SUBJECT} +#代表发送的信息的标题,在"报表"的"动作日志"中可以看到 +{ALERT.MESSAGE} +#对应脚本中的,text=sys.argv[3](发送的报警内容) +``` + +#### 6.创建动作 + +​ 关联触发器 + +​ 添加操作 + +```shell +"主题"对应"钉钉告警"媒介中的:{ALERT.SUBJECT} +"消息"对应"钉钉告警"媒介中的:{ALERT.MESSAGE} + +主题: + +故障名称(触发器名称):{EVENT.NAME} + +消息: + +告警主机:{HOSTNAME1} +告警时间:{EVENT.DATE} {EVENT.TIME} +告警等级:{TRIGGER.SEVERITY} +告警信息: {TRIGGER.NAME} +告警项目:{TRIGGER.KEY1} +问题详情:{ITEM.NAME}:{ITEM.VALUE} +当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} +事件ID:{EVENT.ID} +``` + +​ 添加恢复操作 + +```shell +主题:故障恢复:{EVENT.NAME} + +消息: + +恢复主机:{HOSTNAME1} +恢复时间:{EVENT.DATE} {EVENT.TIME} +主机IP:{HOST.IP} +告警项目:{TRIGGER.KEY1} +问题详情:{ITEM.NAME}:{ITEM.VALUE} +当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} +事件ID:{EVENT.ID} +``` + +#### 7.用户关联报警媒介 + +#### 8.模拟报警产生 + +#### 9.查看报警信息 + ![image-20230301115458160](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20230301115458160.png) \ No newline at end of file