Zabbix5.0钉钉报警(centos7)
2.1、到钉钉官网下载pc版钉钉,安装、注册、登陆:
钉钉下载地址:https://www.dingtalk.com/
2.2、创建群聊和钉钉机器人:
1、创建群聊,把需要收到报警的人员都拉到这个群:
(1)
(2)
(3)
(4)
2、创建钉钉机器人:
(1)
(2)
(3)
(4)
(5)
(6)
(7)
点击“设置说明”可以查看钉钉服务端API说明。
2.3、脚本配置:
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
#说明:以下脚本只要将webhook改为你自己的webhook值即可,其它的不需要改变。
#!/usr/bin/python
#-*- coding: utf-8 -*-
#zabbix钉钉报警
import requests,json,sys,os,datetime
webhook="https://oapi.dingtalk.com/robot/send?access_token=78eba715496454260d5937aba8582231522f69e93e31d686fbb93551056a5550"
#说明:这里改为自己创建的机器人的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、赋予脚本执行权限和创建日志文件:
(1)脚本赋予可执行权限:
[root@controlnode alertscripts]# chmod +x dingding.py
(2)创建日志文件:
[root@controlnode alertscripts]# touch /var/log/zabbix/dingding.log
[root@controlnode alertscripts]# chown zabbix.zabbix /var/log/zabbix/dingding.log
4、手动测试脚本是否可以正常发送消息:
(1)测试命令:
[root@controlnode alertscripts]# ./dingding.py hyjy2504164765 test "这是条告警测试信息,请忽略"
参数说明:
1)hyjy2504164765:钉钉群中任意一个人员的钉钉号。
如何查看自己的钉钉号:
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
pip install --upgrade pip
pip install requests
(2)钉钉群收到报警信息:
(3)在ZabbixServer上查看发送消息日志:
[root@controlnode alertscripts]# cat /var/log/zabbix/dingding.log
2.4、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)
(5)
1)
"主题"对应"钉钉告警"媒介中的:{ALERT.SUBJECT}
"消息"对应"钉钉告警"媒介中的:{ALERT.MESSAGE}
2)
主题:
服务故障告警:{TRIGGER.STATUS}: {TRIGGER.NAME}
消息:
服务故障告警:{TRIGGER.STATUS}: {TRIGGER.NAME}
告警主机:{HOST.NAME}
主机IP: {HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID: {EVENT.ID}
(6)
(7)
主题:
服务故障恢复告警:{TRIGGER.STATUS}: {TRIGGER.NAME}
消息:
服务故障恢复告警:{TRIGGER.STATUS}: {TRIGGER.NAME}
告警主机:{HOST.NAME}
主机IP: {HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID: {EVENT.ID}
(8)
3、给用户添加报警媒介:
(1)
(2)
"收件人"对应"钉钉告警"中的:{ALERT.SENDTO}
特别注意:这里只需要添加钉钉群里的任何一个成员的钉钉账号即可,即添加一个收件人,这样在机器人群里成员都能看到告警信息.
如果添加多个收件人,则机器人群里就会发送多个告警信息,一个收件人发一条信息.
(3)
2.5、报警测试(在zabbixServer服务器上进行测试):
1、监控nginx web服务:
(1)安装nginx:
[root@controlnode alertscripts]# yum install nginx -y
(2)修改端nginx端口号为8080(不然会和httpd的8080端口号重复):
[root@controlnode alertscripts]# vim /etc/nginx/nginx.conf
listen 8080 default_server;
listen [::]:8080 default_server;
(3)启动nginx并加入开机自启动:
[root@controlnode alertscripts]# systemctl start nginx
[root@controlnode alertscripts]# systemctl enable nginx
[root@controlnode alertscripts]# netstat -tunlp | grep 8080
2、创建web场景及web状态触发器:
(1)创建web场景:
1)
2)
3)
4)
5)
6)查看网站监控图形:
7)
8)
#网站的下载速度和网站的响应速度:
(2)添加web状态触发器:
上面第6步操作如下图:
3、创建tcp连接端口监控项及触发器:
(1)创建tcp连接端口监控项:
上面第6步骤选项如下:
(2)创建tcp连接端口监控项的触发器:
上面第6步骤选项如下:
4、查看触发器状态:
5、nginx web 服务停止告警:
(1)停止nginx服务:
[root@controlnode alertscripts]# systemctl stop nginx
(2)服务故障告警信息:
6、nginx web 服务恢复告警:
(1)启动nginx服务:
[root@controlnode alertscripts]# systemctl start nginx
(2)服务恢复告警信息:
Zabbix5.0钉钉报警(centos7)的更多相关文章
- linux(centos8):zabbix配置邮件报警(监控错误日志)(zabbix5.0)
一,zabbix5.0发邮件报警的准备工作: zabbix5.0在linux平台上的安装:参见这一篇: https://www.cnblogs.com/architectforest/p/129125 ...
- zabbix的简单操作(查看监控,自定义监控和钉钉监控报警)
zabbix是一种监控软件,我用的是centos7.5版本 一:我已经添加好主机了,接下来就是看看怎么查看监控内容的 1.打开zabbix服务的web网页 2.检测最新数据,要在最新数据中筛选 3.查 ...
- Zabbix-4.0-设置钉钉报警脚本
问题:当服务器发生报错时,有一个信息能实现自动发送到我的手机或者应用上,以达到对服务器的实时的监控与处理.邮件与短信不能满足实时性,于是想到了钉钉的通知. 思路:在钉钉里面建一个群,群里面拉个机器人. ...
- Zabbix5.0微信报警
3.1.注测企业微信: 3.2.企业微信注册成功后进入后台管理: 3.3.添加一个部门,并记住部门id: #我这里添加的子部门ID为2 3.4.添加一个用户到上面创建的部门里面(这里采取直接将管理员添 ...
- 远见而明察近观若明火|Centos7.6环境基于Prometheus和Grafana结合钉钉机器人打造全时监控(预警)Docker容器服务系统
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_181 我们知道,奉行长期主义的网络公司,势必应在软件开发流程管理体系上具备规范意识,即代码提交有CR(CodeReview),功能 ...
- elk报警监控之sentinl 钉钉+邮件告警
注:我的elk sentinl版本都是6.5.1 前期知识 es的查询语法.es watcher使用方法. https://www.cnblogs.com/pilihaotian/p/5830754. ...
- aws cloudwatch监控怎么通过钉钉机器人报警
最近在完善海外业务在aws服务的CloudWatchh监控,发现CloudWatch报警通知要通过aws的sns服务,直接支持的通道有短信和邮件,但是我们想推到钉钉群里面的群机器人里面这个就要借助aw ...
- prometheus报警消息钉钉通知
设置prometheus 的web hook 为对应服务: 报警的配置如下,设置了web hook url,报警就会把消息发给web hookurl,但是这里的数据格式和钉钉要求的格式不一样,所以后面 ...
- 使用python对mysql主从进行监控,并调用钉钉发送报警信息
1.编写python的监控脚本 A.通过获取mysql库中的状态值来判断这个mysql主从状态是否正常 B.进行两个状态值的判断 C.进行调取钉钉机器人,发送消息 2.设置定时任务进行脚本运行 cro ...
随机推荐
- redis分布式锁-spring boot aop+自定义注解实现分布式锁
接这这一篇redis分布式锁-java实现末尾,实现aop+自定义注解 实现分布式锁 1.为什么需要 声明式的分布式锁 编程式分布式锁每次实现都要单独实现,但业务量大功能复杂时,使用编程式分布式锁无疑 ...
- java基础——Scanner的基础和进阶
Scanner对象 目的:用来获取用户的输入 基本语法: Scanner s = new scanner (System.in); 通过Scanner 类的next()和nextLine()方法,获取 ...
- 优麒麟使用教程第三期:Windows 平台 U 盘启动盘制作
优麒麟使用教程第三期:Windows 平台 U 盘启动盘制作 发布时间:2019-06-27 09:00:15 点击次数:2847 在前几期教程中,小编介绍了如何在虚拟机中安装和使用优麒麟,接下来,小 ...
- 查看报错原因 sshd -t
b for ssh.service failed because the control process exited with error code. See "systemctl sta ...
- 二进制部署K8S-3核心插件部署
二进制部署K8S-3核心插件部署 5.1. CNI网络插件 kubernetes设计了网络模型,但是pod之间通信的具体实现交给了CNI往插件.常用的CNI网络插件有:Flannel .Calico. ...
- S5 Linux信息显示与搜索文件命令
5.1-5 uname.hostname.dmesg.stat.du 5.6 date:显示与设置系统时间 5.7 echo:显示一行文本 5.8-12 watch.which.whereis.loc ...
- Navigation 在fragment之间用bundel传递数据
使用 Bundle 对象在目的地之间传递参数 如果您不使用 Gradle,仍然可以使用 Bundle 对象在目的地之间传递参数.创建 Bundle 对象并使用 navigate() 将它传递给目的地, ...
- 五:.net core(.NET 6)使用Autofac实现依赖注入
Autofac的简单使用: 由于将来可能引用很多包,为了保持统一队形,我们再新建一个类库项目Wsk.Core.Package,当做包的引用集合: 删掉Class1,把Wsk.Core.Wsk.Core ...
- GO语言面向对象02---继承
package main import ( "fmt" ) type Dog struct { Name string Age int } func (d *Dog)bite() ...
- OpenCV 查找轮廓
本文将结合实例代码,介绍 OpenCV 如何查找轮廓.获取边界框. 代码: contours.py OpenCV 提供了 findContours 函数查找轮廓,需要以二值化图像作为输入.并指定些选项 ...