首页 > Web开发 > 详细

zabbix监控web应用日志报警并发送消息到钉钉

时间:2020-01-09 18:41:38      阅读:114      评论:0      收藏:0      [点我收藏+]

 

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

技术分享图片

 

 技术分享图片

 

 

技术分享图片

 

 

技术分享图片

 

 

技术分享图片

 

 

技术分享图片

 

 

技术分享图片

 

 

技术分享图片

 

 

 

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

原文:https://www.cnblogs.com/ouyangfei/p/12172183.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!