钉钉群助手报警服务器日志信息

需求:1, 使用 grep 查找关键字的方式,查找日志中的错误信息,并输出到文件;
2, 判断文件 不为空 则 使用 钉钉机器人反馈附件到 日志监控报警群;
3, 做好计划任务,每8时自动执行一次;
4,要求群机器人分享的链接标题要包含日志行数,时间,日志为空则不发送链接。

钉钉开发平台上面对群机器人开发语言有限制,我唯一熟悉点的就是python,所以用sh脚本输出日志到文件,然后用python脚本发送信息到群机器人。

1,sh脚本查找日志并输出到txt文件

#!/bin/bash
#2020-03-12
now_time=`date "+%Y%m%d_%H%M"`
grep '404 -' /data/logs/apache_access/*  > /data/logs/20200312/apache_access_404_$now_time.txt

2,python脚本发送信息给群机器人

# encoding: utf-8
import json
import requests
import sys
import datetime

now_time=datetime.datetime.now().strftime('%Y%m%d_%H%M')
print now_time     #脚本执行时间


log_name="/data/logs/20200312/apache_access_404_%s.txt" % now_time   #文件名

count = len(open(r'%s' % log_name,'rU').readlines())          #日志行数


def send_msg(url):
    headers = {'Content-Type': 'application/json;charset=utf-8'}
    data = {
        "msgtype": "link",
        "link": {
            "text":  "%s  sh_yx_cong3 \n日志行数:%s" %(now_time, count),       #群机器人分享的标题
            "title": "sh_yx_cong3 %s apache_access_404_log" %(now_time),      #群机器人分享的内容
            "picUrl": "",                                                                                            #群机器人分享链接的图片
            "messageUrl": "群机器人分享的链接" %(now_time)                                                  #群机器人分享链接的地址
        }
    }
    r = requests.post(url,data = json.dumps(data),headers=headers)
    return r.text
if __name__ == '__main__':
   url = 'https://oapi.dingtalk.com/robot/send?access_token=你自己的群机器人地址'

if count != 0:                              #如果日志为空,则不发送
    print(send_msg(url))
else:
    print('log_len != 0')

3,设置cron定时执行脚本

crontab -e
1 */8 * * * /usr/bin/bash /root/script/f1_greplog.sh && /usr/bin/python/2.7 /root/script/f2_error_404log.py

4,实际效果
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章