Zabbix-4.0-设置钉钉报警脚本
问题:当服务器发生报错时,有一个信息能实现自动发送到我的手机或者应用上,以达到对服务器的实时的监控与处理。邮件与短信不能满足实时性,于是想到了钉钉的通知。
思路:在钉钉里面建一个群,群里面拉个机器人。用zabbix配置一个脚本,让服务器监控的报警自动发送到钉钉,再由钉钉发送给自己。
参考链接:
python之钉钉机器人zabbix报警:https://blog.51cto.com/m51cto/2051945
小油2018zabbix钉钉报警:https://www.cnblogs.com/xiaoyou2018/p/10612628.html#commentform
钉钉开发者文档机器人:https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq
一、环境准备
zabbix4.0
zabbix系统:centos7.6
脚本:python2.7
客户端:windwos10
报警应用:钉钉
二、脚本及说明
脚本:dingding.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
import json
import sys
import os
import datetime
webhook = "https://oapi.dingtalk.com/robot/send?access_xxxxxxxxxxxxxxxxxx"
user=sys.argv[1]
text=sys.argv[3]
data={
"msgtype": "text",
"text": {
"content":text
},
"at": {
"atMobiles": [
user
],
"isAtAll": True
}
}
headers = {'Content-Type': 'application/json'}
x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
if os.path.exists("/usr/local/zabbix/log/dingding.log"):
f=open("/usr/local/zabbix/log/dingding.log","a+")
else:
f=open("/usr/local/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()
解释:一定记住用手打,不要复制粘贴,因为linux的编码可能复制进去用不了,耐心一点!!!
前面带#的2行是定义,定义语言与编码字符串
跟着5行import是python的格式用法
中间的webhook是机器人的地址,要再钉钉群里面建了机器人把地址更换进来
user很text是定义变量,里面的1跟3是后面输出的的3个值
data是钉钉机器人的用法
atMobiles是钉钉里面发给谁的手机号,要加上
isAtAlL是开启是否@所有人,钉钉发送给群所有人
下面的if else是定义日志的文件路径与日志显示的内容
三、钉钉建一个群,添加一个机器人,复制地址
钉钉新建一个群,点击群右侧“更多”-“群助手”-“添加自定义机器人”-“复制地址”
四、zabbix服务器配置脚本
机器人地址:`https://oapi.dingtalk.com/robot/send?access_tokenxxxxxxxxx`
1.远程zabbix服务器,检查安装python(centos7.6自带python2.x版本)
python -V 查看python版本(这个脚本是基于puthon2.x版本的)
yum -y install epel-release 安装epel源
yum install python-pip 安装pip工具
pip -v 查看版本
pip install requests 安装模块requests
2.编写脚本,脚本要新建在zabbix 的alertscripts目录下
cd /usr/lib/zabbix/alertscripts 打开目录
vim dingding.py 编辑新建脚本
3.脚本:见上
一定要将自己的钉钉机器人地址,替换webhook里面的地址,其他可以不变
4.日志文件创建与授权:
chmod 777 dingding.py
chown zabbix.zabbix dingding.py
touch /usr/local/zabbix/logs/dingding.log
chown zabbix.zabbix /usr/local/zabbix/logs/dingding.log
5.测试脚本
python dingding.py user1 12345678911 测试发送钉钉 (测试中要输入3个数据,分别是用户,电话,跟内容)
五、zabbix管理界面添加脚本
1.登录zabbix管理网页,上面选择“管理”-“报警媒介类型”-“创建报警媒介类型”(将刚才写的dingding脚本调用起来)
2.单击“管理”-“用户”-“Admin”-“报警媒介”-添加一个刚才的报警媒介
3.单击“配置”-“动作”-“创建一个动作”
设置“操作”的报警;“恢复操作”的报警;“更新”的报警的格式;
在操作里面添加发送脚本的动作,每一个都要做添加发送脚本的动作!
操作的报警消息内容格式:
服务器:{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}
}
六、测试
1.添加一个监控主机,并设置一个测试值,例如ping
见我的另一篇博客:https://www.cnblogs.com/subsea/p/13532579.html
2.关闭或者拔掉网线,测试客户机,看钉钉是否通知
Zabbix-4.0-设置钉钉报警脚本的更多相关文章
- Zabbix 3.0 配置企业微信报警(注册---测试)
一.申请企业微信 1.登录企业微信官网,点击企业注册 二.配置企业微信 1.邀请管理员使用企业微信,如果有多个人直接添加新成员 2.管理员收到邀请,下载手机版企业微信,使用微信号登陆即可 3.创建应用 ...
- Zabbix 3.0 配置企业微信报警(配置zabbix-web)
一.添加报警媒体类型 Name:自定义 Type:选择script Scripts name:填写脚本名称 Script parameters:脚本参数 --corpid=XXX --corpsecr ...
- (26)zabbix脚本报警介质自定义(钉钉)
zabbix机器人告警配置 首先在钉钉中创建一个群然后设置群机器人添加自定义机器人(webhook...) 添加后复制其中的webhook地址到报警脚本dingding.py中的webhook=... ...
- zabbix设置钉钉报警
1 添加机器人 在钉钉群里面添加一个机器人 会获取到一个URL: 'https://oapi.dingtalk.com/robot/send?access_token=62be1ea97b4653b8 ...
- zabbix利用python脚本发送钉钉报警
#!/usr/bin/python # -*- coding: utf-8 -*- import requests import json import sys import os headers = ...
- zabbix报警-邮件-钉钉
安装zabbix的时候已经配置了zabbix_server的脚本目录 AlertScriptsPath=/opt/app/zabbix/script 所以把邮件.钉钉.微信相关的脚本都放在/opt/z ...
- Zabbix 配置钉钉脚本告警
1.钉钉账号创建,并创建一个组,在组中添加一个机器人,然后记下webhook地址即可. 2.编辑一个报警脚本,此处使用的是BASH脚本,并覆盖我们的webhook地址到相应的位置. [root@loc ...
- zabbix的简单操作(查看监控,自定义监控和钉钉监控报警)
zabbix是一种监控软件,我用的是centos7.5版本 一:我已经添加好主机了,接下来就是看看怎么查看监控内容的 1.打开zabbix服务的web网页 2.检测最新数据,要在最新数据中筛选 3.查 ...
- zabbix自动监控钉钉报警
钉钉报警 一:设置钉钉机器人 二:zabbix服务器server端配置 1.修改zabbix_server.conf文件 [root@server ~]# vim /usr/local/zabbix ...
- Python钉钉报警及Zabbix集成钉钉报警
钉钉报警设置 创建群机器人 11111 接口地址 发送短消息 发送普通消息 import requests import json url = 'https://oapi.dingtalk.com/r ...
随机推荐
- java数组输出的三种方式
第一种:foreach语句遍历输出 //通过foreach语句遍历输出数组 int nums[] = new int [4]; for (int num:nums) { System.out.prin ...
- 022_go语言中的协程
代码演示 package main import "fmt" func f(from string) { for i := 0; i < 3; i++ { fmt.Print ...
- 铁大树洞与市面上现有APP对比
写在前面 铁大树洞这款APP严格来说并没有可以参照的对象,但如果非要说的话也可以有.这里我们选取百度贴吧进行对比. 百度贴吧 可以看到,百度贴吧的贴吧首页排版要更加好看,且在首页添加了各种分类.也许我 ...
- Java泛型是什么?实战demo
1. 概述 泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用. 什么是泛型?为什么要使用泛型? 泛型,即“参数化类型”.一提到参数,最熟悉的就是定义方法时有形参,然后调用 ...
- 微信公众号怎么添加附件?比如word文档,pdf文件等
微信公众号怎么添加附件?比如word文档,pdf文件等 我们都知道创建一个微信公众号,在公众号中发布一些文章是非常简单的,但公众号添加附件下载的功能却被限制,如今可以使用小程序“微附件”进行在公众 ...
- ebook 电子书项目
ebook电子书网站使用eclipse开发,开发语言主体是JAVA,使用的是servlet+jsp,前端使用javascript和jQuery,页面布局设计使用的是bootstrap,在这里我记下我开 ...
- JS学习第七天
从js-bom入门到放弃 window常用属性: document 返回该窗口内装载的HTML文档 location 返回该窗口装载的HTML文档的URL screen 返回当前浏览者屏幕对象 his ...
- sharedb结合elementUi编写的实时小工具
我是使用sharedb 作为后端 ,然后前端使用的elementUI样式,编写的一个值班小工具.接下来,让我们先来了解一下sharedb是什么吧? sharedb工具 github地址:https:/ ...
- 记好这 24 个 ES6 方法,用来解决实际开发的 JS 问题
本文主要介绍 24 中 es6 方法,这些方法都挺实用的,本本请记好,时不时翻出来看看. 1.如何隐藏所有指定的元素 const hide = (el) => Array.from(el).fo ...
- 同事不太懂负载均衡,我直接把阿里架构师的这份Nginx笔记甩给他
Nginx功能强大,架构复杂,学习.维护和开发的门槛较高. 本份笔记深入最新的Nginx源码,详细剖析了模块体系.动态插件.功能框架.进程模型.事件驱动.线程池.TCP/UDP/HTTP 处理等Ngi ...