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
然后 在关闭问题的框上打勾

  ----------------------------------------------------------------------------------------------------------------------------

去钉钉上看看

 

posted @ 2020-01-09 16:31  十二宙  阅读(2200)  评论(0编辑  收藏  举报