zabbix监控web应用日志报警并发送消息到钉钉
首先在钉钉上开启钉钉机器人功能
说明:自定义关键词是zabbix发送过来的消息内容必须含有你定义的ERROR或者error字段,否则消息无法发送过来
ip地址段:一般都是zabbix-server的IP地址
webhook 是钉钉接口的地址,等会要复制粘贴到zabbix-server上面去
自定义机器人
钉钉提供了一个 webhook 地址,https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx。 复制地址
获取到Webhook地址后,用户可以使用任何方式向这个地址发起 HTTP POST 请求,即可实现
给该群组发送消息。
--------------------------------------------------------------------------------------------------------------------------------------
在zabbix-server服务器上编写发送到钉钉接口的脚本,一般都是用python编写的
vim /etc/zabbix/zabbix_server.conf
:/alertscripts 找到这一行(alertscripts是zabbix-server自定义脚本的目录,所有自定义的脚本都放在此处)
cd /usr/lib/zabbix/alertscripts/
vim dingding.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
import json
import sys
import os
headers = {'Content-Type': 'application/json;charset=utf-8'}
api_url = "https://xxxxxxxxxx" 钉钉机器人擎天柱的webhook地址
def msg(text):
json_text= {
"msgtype": "text",
"text": {
"content": text
},
"at": {
"atMobiles": [
"1527xxxxxx23" 发送给这个钉钉用户 (钉钉用户都是手机号码注册的)
],
"isAtAll": True 发送给群里面的所有人(不想让其他人收到报警这里填False即可)
}
}
print(requests.post(api_url,json.dumps(json_text),headers=headers).content)
if __name__ == '__main__':
text = sys.argv[1]
msg(text)
:wq保存退出
chmod 755 dingding.py
手动测试是否能发消息到钉钉
./dingding.py "ERROR could not found java-scripts"
注意这里的内容包含了钉钉自定义的关键词ERROR,如果没有关键词你是发不过去的
去钉钉上面看看有没有收到消息
说明zabbix-server手动发送消息到钉钉的成功,接口无问题
----------------------------------------------------------------------------------------------------------------------
上面是手动测试的,现在我们在zabbix-server页面配置zabbix自动发送报警内容到钉钉
名称就叫钉钉好了(可以随便取名)
类型选择脚本
脚本名称对应zabbix服务器/usr/lib/zabbix/alertscripts/路径下的dingding.py,名字要和dingding.py保持一致
脚本参数{ALERT.MESSAGE}
网上还有很一部分人这里写-msg={ALERT.MESSAGE} 效果应该是一样的(我不确定)
直接用管理员用户,也可以创建用户
用系统默认的好了,这里面的信息不要动,我没标红色框的不要动好吗,敌不动我不动
动这个
点击添加
类型是钉钉
收件人是 我的钉钉账户(也就是你的手机号码,手机号码就是钉钉账户,要我说几遍)
都勾选上,不要质疑我
手动添加主机
表示添加成功
名称随便取
名称 website 我的应用服务就叫website,所以取名叫website,方便(可以任意取名)
类型 选择zabbix主动模式(这里不一定是主动模式,根据实际情况选择)
键值 是非常重要的
我这里是检查tomcat的日志文件
log[/root/logs/website-log/website-error-2020-01-02.log,"ERROR|error",,,skip,,]
或许你有疑问,如果这里是轮训日志怎么办
log[/root/logs/website-log/website-error-`date +%F`.log,"ERROR|error",,,skip,,]
这是有问题的,log不支持正则表达式`date +%F`
logtr[/root/logs/website-log/website-error-`date +%F`.log,"ERROR|error",,,skip,,]
logtr倒是支持正则表达式,这样写也不报错
但是好像消息发送不出去(我不知是哪里有问题)
我建议还是监控web1和web2的原始日志吧website-error.log(这样要监控两边,很麻烦)
如果你是测试的话我建议在zabbix-agent上创建一样的日志
zabbix-agent服务器
cd /root
mkdir logs
cd logs
mkdir website-log
cd website-log
touch website-error-2020-01-02.log
等会测试完了之后你可以删掉
配置动作(就是如果检测到website-error-2020-01-02.log内容有ERROR字段之后该做些什么)
在新的触发条件里面选择 触发器示警度 选择 >= 信息
在点击添加
触发器示警度>= 信息 表示如果报警的后果要大于等于信息,就开干
告警主机:{HOST.NAME}
告警信息:{TRIGGER.NAME}
告警项目:{ITEM.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警问题:{ITEM.VALUE}
当前状态:故障
故障已持续{EVENT.AGE},请尽快处理
事件ID:{EVENT.ID}
告警信息:{TRIGGER.NAME}
告警项目:{ITEM.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
告警问题:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}
故障共持续{EVENT.AGE}
事件ID:{EVENT.ID}
--------------------------------------------------------------------------------------------------------------------------------------------
现在开始测试
zabbix-agent
cd /root/logs/website-log
echo "17:12:56.370 ERROR com.alibaba.druid.pool.DruidDataSource[ROW=1087][mdc=Hd1bb2J81X] - testWhileIdle is true, validationQuery not set ">>website-error-2020-01-02.log
-----------------------------------------------------------------------------------------------------------------------------------------
去钉钉上看看
-----------------------------------------------------------------------------------------------------------------------
在到zabbix-server上面
我这里本来是1,我手动把问题关闭了就是0了
你那里应该是显示1
点击有问题的那一项,进去之后确认问题,
状态:输入ok
然后 在关闭问题的框上打勾
----------------------------------------------------------------------------------------------------------------------------
去钉钉上看看
zabbix监控web应用日志报警并发送消息到钉钉的更多相关文章
- 自学Zabbix4.1 zabbix监控web服务器访问性能
自学Zabbix4.1 zabbix监控web服务器访问性能 使用Zabbix实现对web性能的监控,通过它可以了解web站点的可用性以及性能.最终将各项指标绘制到图形中,这样我们可以了解到一个站点的 ...
- (40)zabbix监控web服务器访问性能
zabbix web监控介绍 在host列可以看到web(0),在以前的版本这项是独立出来的,这个主要实现zabbix对web性能的监控,通过它可以了解web站点的可用性以及性能. 最终将各项指标绘制 ...
- zabbix学习笔记:zabbix监控之短信报警
zabbix学习笔记:zabbix监控之短信报警 zabbix的报警方式有多种,除了常见的邮件报警外,特殊情况下还需要设置短信报警和微信报警等额外方式.本篇文章向大家介绍短信报警. 短信报警设置 短信 ...
- zabbix 监控web网站性能
一直在纠结用什么实例来给大家演示呢?想来想去还是官方的好,那我们怎么用zabbix监控web性能和可用性呢?我们这边分为几个步骤:打开网站.登陆.登陆验证.退出,一共4个小step,看实例. 检测流程 ...
- zabbix监控WEB网站性能
一直在纠结用什么实例来给大家演示呢?想来想去还是官方的好,那我们怎么用zabbix监控web性能和可用性呢?我们这边分为几个步骤:打开网站.登陆.登陆验证.退出,一共4个小step,看实例. 检测流程 ...
- zabbix 监控redis 挂掉自动重启 并发送企业微信
1.创建redis监控项[配置]-[主机]-[监控项]-创建监控项,监控6379端口(注意关闭防火墙或者开启防火墙端口6379) redis配置文件设置允许任何地址监听: 添加监控项 2.创建redi ...
- zabbix监控web应用
1)web应用监控介绍 使用zabbix自带的web场景可以监控url的状态码,响应时间,url的下载速度,非常的棒 思路:定义模板-->创建应用集--->定义web场景--->定义 ...
- (九)zabbix监控web应用
1)web应用监控介绍 使用zabbix自带的web场景可以监控url的状态码,响应时间,url的下载速度,非常的棒 思路:定义模板-->创建应用集--->定义web场景--->定义 ...
- Zabbix监控web,MySQL,TCP状态,Nginx
接上篇Zabbix使用SMTP发送邮件报警并且制定报警内容 Zabbix怎么设置声音告警 web监控 在zabbix server选择web 创建一个监控web的场景 添加后这里有数字1 查看 假如在 ...
随机推荐
- form组件类 钩子函数验证
# 全局钩子 def clean(self): pwd = self.cleaned_data.get("password") re_pwd = self.cleaned_data ...
- hdu 1045 Fire Net(dfs)
Fire Net Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Su ...
- 2012年NOIP普及组复赛题解
题目涉及算法: 质因数分解:入门: 寻宝:模拟: 摆花:动态规划: 文化之旅:搜索. 质因数分解 题目链接:https://www.luogu.org/problem/P1075 这道题目只需要开个 ...
- jQuery中动态创建、添加元素的方法总结
<input type="button" value="创建元素" id="btn"> <div id="box ...
- Java Integer类的缓存
首先看一段代码(使用JDK 5),如下: public class Hello { public static void main(String[] args) { int a = 1000, b = ...
- spring security BCryptPasswordEncoder加密解密,不错的随机盐,不错的加密解密方法
项目中用这个加密感觉不错啊,推荐: 1.先大体看看,了解一下 浅谈使用springsecurity中的BCryptPasswordEncoder方法对密码进行加密(encode)与密码匹配(match ...
- es6—变量的解构赋值
数组的解构赋值 ]]]]]]] = []}} = {}} = {}})]: first]: last} = arr} = {}) {}))}))}) {}))}))].]]]])})] }}} = { ...
- win10 uwp 使用 Microsoft.Graph 发送邮件
在 2018 年 10 月 13 号参加了 张队长 的 Office 365 训练营 学习如何开发 Office 365 插件和 OAuth 2.0 开发,于是我就使用 UWP 尝试使用 Micros ...
- H3C STP配置示例
- H3C配置Trunk端口