首先在钉钉上开启钉钉机器人功能

说明:自定义关键词是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应用日志报警并发送消息到钉钉的更多相关文章

  1. 自学Zabbix4.1 zabbix监控web服务器访问性能

    自学Zabbix4.1 zabbix监控web服务器访问性能 使用Zabbix实现对web性能的监控,通过它可以了解web站点的可用性以及性能.最终将各项指标绘制到图形中,这样我们可以了解到一个站点的 ...

  2. (40)zabbix监控web服务器访问性能

    zabbix web监控介绍 在host列可以看到web(0),在以前的版本这项是独立出来的,这个主要实现zabbix对web性能的监控,通过它可以了解web站点的可用性以及性能. 最终将各项指标绘制 ...

  3. zabbix学习笔记:zabbix监控之短信报警

    zabbix学习笔记:zabbix监控之短信报警 zabbix的报警方式有多种,除了常见的邮件报警外,特殊情况下还需要设置短信报警和微信报警等额外方式.本篇文章向大家介绍短信报警. 短信报警设置 短信 ...

  4. zabbix 监控web网站性能

    一直在纠结用什么实例来给大家演示呢?想来想去还是官方的好,那我们怎么用zabbix监控web性能和可用性呢?我们这边分为几个步骤:打开网站.登陆.登陆验证.退出,一共4个小step,看实例. 检测流程 ...

  5. zabbix监控WEB网站性能

    一直在纠结用什么实例来给大家演示呢?想来想去还是官方的好,那我们怎么用zabbix监控web性能和可用性呢?我们这边分为几个步骤:打开网站.登陆.登陆验证.退出,一共4个小step,看实例. 检测流程 ...

  6. zabbix 监控redis 挂掉自动重启 并发送企业微信

    1.创建redis监控项[配置]-[主机]-[监控项]-创建监控项,监控6379端口(注意关闭防火墙或者开启防火墙端口6379) redis配置文件设置允许任何地址监听: 添加监控项 2.创建redi ...

  7. zabbix监控web应用

    1)web应用监控介绍 使用zabbix自带的web场景可以监控url的状态码,响应时间,url的下载速度,非常的棒 思路:定义模板-->创建应用集--->定义web场景--->定义 ...

  8. (九)zabbix监控web应用

    1)web应用监控介绍 使用zabbix自带的web场景可以监控url的状态码,响应时间,url的下载速度,非常的棒 思路:定义模板-->创建应用集--->定义web场景--->定义 ...

  9. Zabbix监控web,MySQL,TCP状态,Nginx

    接上篇Zabbix使用SMTP发送邮件报警并且制定报警内容 Zabbix怎么设置声音告警 web监控 在zabbix server选择web 创建一个监控web的场景 添加后这里有数字1 查看 假如在 ...

随机推荐

  1. postman 中post方式提交数据

    post方式提交数据时,把参数填写在body中而不是pOST下面的哪一行

  2. laravel博客后台操作步骤

  3. js原生继承几种方式

    js原生继承 js本身并没有继承和类的概念,本质上是通过原型链(prototype)的形式实现的. 1.先写两个构造函数Parent和Child,用于将Child继承Parent function P ...

  4. Windows 10 Shared folder - 5168: Spn check for SMB/SMB2 fails.

    在搭建 Win10 Shared Folder 时,运行一段时间后就报 Access denied. 导致 Shared Folder 访问不了. 查了下 Event Viewer -> Win ...

  5. Example-09-01

    #define _CRT_SECURE_NO_WARNINGS #include <cstdio> #include <cstring> int min(int a, int ...

  6. JS精度问题,解决方案 math.js

    JS精度问题    Vue中使用 解决方案 math.js npm install mathjs import { create, all } from 'mathjs' const config = ...

  7. Postman接口测试工具学习笔记

    - 新建测试接口 在Postman中有两种新建测试接口的方式,第一种是图片右上角的,点击可以选择 request 请求进行新建 选择 Request 以后会出现下面图片的对话框,让你输入一个保存接口的 ...

  8. Bi-LSTM-CRF for Sequence Labeling

    做了一段时间的Sequence Labeling的工作,发现在NER任务上面,很多论文都采用LSTM-CRFs的结构.CRF在最后一层应用进来可以考虑到概率最大的最优label路径,可以提高指标. 一 ...

  9. 设置html各元素不可点击(持续更新)

    1.span <span id="nextStep" onclick="right">下一页</span> $("#nextS ...

  10. Codeforces 1100F(离线 or 在线)

    传送门 •参考资料 [1]:在线线性基 [2]:离线线性基 [3]:离线线性基 •题意 给你 n 个数,m 次询问: 每次询问给定一个区间 $l,r$,求 $a_{l \cdots r}$ 异或的最大 ...