赞
踩
1、服务器环境准备(Centos7.6)
(1)
服务器1:zabbix服务端
服务器2:客户端
(2)
客户端服务器上安装agent,并且安装httpd服务,在zabbix网页添加此主机,并且配置监控项和触发器
①安装httpd服务
[root@controlnode alertscripts]# yum install httpd -y
②启动httpd服务并加入开机自启
- [root@controlnode alertscripts]# systemctl start httpd
-
- [root@controlnode alertscripts]# systemctl enable httpd
-
- [root@controlnode alertscripts]# netstat -tunlp | grep 80
③创建主机
④创建监控项
⑤创建触发器
⑥环境准备完毕
2、钉钉环境准备
2.1、到钉钉官网下载pc版钉钉,安装、注册、登陆:
钉钉下载地址:https://www.dingtalk.com/
2.2、创建群聊和钉钉机器人:
1、创建群聊,把需要收到报警的人员都拉到这个群:
(1)
(2)
(3)
2.3、创建钉钉机器人:
(1)
(2)
(3)
(4)
(5)
(6)
(7)
点击“设置说明”可以查看钉钉服务端API说明。
2.4、脚本配置:
(1)、查看zabbix-server脚本存放的位置:
- [root@controlnode ~]# grep ^AlertScriptsPath /etc/zabbix/zabbix_server.conf
-
- AlertScriptsPath=/usr/lib/zabbix/alertscripts
(2)、创建钉钉报警脚本:
- [root@controlnode ~]# cd /usr/lib/zabbix/alertscripts/
-
- [root@controlnode 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中
(3)、赋予脚本执行权限和创建日志文件:
①、脚本赋予可执行权限:
[root@controlnode alertscripts]# chmod +x dingding.py
②、创建日志文件:
- [root@controlnode alertscripts]# touch /var/log/zabbix/dingding.log
-
- [root@controlnode alertscripts]# chown zabbix.zabbix /var/log/zabbix/dingding.log
(4)、手动测试脚本是否可以正常发送消息:
①、测试命令:
[root@controlnode alertscripts]# ./dingding.py qichangjun0110 test "这是条告警测试信息,请忽略"
参数说明:
1)qichangjun0110:钉钉群中任意一个人员的钉钉号。
如何查看自己的钉钉号:
2)test:这里因脚本中没有设置接收参数,所以无实际意义,仅仅起到变量占位的作用。
3)"这是条告警测试信息,请忽略":这是具体的告警信息,告警信息必须包含“安全设置”
中自己设置的“自定义关键词”,否则无法发送告警信息,我这里设置的告警关键字是"告警"。
注意:该脚本要求至少python2.6.6版本,且具有requests模块,否则会报如下错误:
- Traceback (most recent call last):
-
- File "./dingding.py", line 4, in <module>
-
- import requests,json,sys,os,datetime
-
- ImportError: No module named requests
解决办法如下:
- yum install python-pip -y
-
- pip install --upgrade pip
-
- pip install requests
②、钉钉群收到报警信息:
③、在ZabbixServer上查看发送消息日志:
[root@controlnode alertscripts]# cat /var/log/zabbix/dingding.log
2.5、zabbix web 界面设置:
触发器触发"动作"——>特定的"报警媒介"——>单个用户的账号或用户组中用户的账号
1、创建报警媒介:
(1)
(2)
脚本参数:
{ALERT.SENDTO}
#对应脚本中的,user=sys.argv[1](发给钉钉群中哪个用户)。
{ALERT.SUBJECT}
#代表发送的信息的标题,在"报表"的"动作日志"中可以看到。
{ALERT.MESSAGE}
#对应脚本中的,text=sys.argv[3](发送的报警内容)。
2、创建报警动作,将报警发送给Admin用户:
(1)创建动作
(2)添加触发器,添加上文环境准备的触发器
(3)分别添加告警操作和恢复操作
(4)添加告警操作
"主题"对应"钉钉告警"媒介中的:{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}
(5)添加恢复操作
(6)恢复操作配置详情
主题:故障恢复:{EVENT.NAME}
消息:
恢复主机:{HOSTNAME1}
恢复时间:{EVENT.DATE} {EVENT.TIME}
主机IP:{HOST.IP}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
(7)点击添加
3、给Admin用户添加报警媒介:
(1)
(2)
"收件人"对应"钉钉告警"中的:{ALERT.SENDTO}
特别注意:这里只需要添加钉钉群里的任何一个成员的钉钉账号即可,即添加一个收件人,这样在机器人群里成员都能看到告警信息.
如果添加多个收件人,则机器人群里就会发送多个告警信息,一个收件人发一条信息.
(3)
2.6、报警测试(在zabbixServer服务器上进行测试):
(1)、httpd 服务停止告警:
①、停止httpd服务:
[root@controlnode alertscripts]# systemctl stop httpd
②、服务故障告警信息:
(2)、httpd 服务恢复告警:
①、启动httpd服务:
[root@controlnode alertscripts]# systemctl start httpd
②、服务恢复告警信息:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。