专栏首页散尽浮华针对业务日志的监控报警设置

针对业务日志的监控报警设置

需求说明对线上业务日志进行监控,当日志中出现的ERROR条数超过30条时立即报警! 监控脚本部署到qd-inf-logcollector01服务器上了(需要提前做好qd-inf-logcollector01到业务部署机器的ssh无密码信任关系)

1)qd-inf-logcollector01 机器上的操作记录:

[root@qd-inf-logcollector01 ~]$ cd /app/script/
[root@qd-inf-logcollector01 script]$ ll
total 372
-rwxr-xr-x 1 root root    446 Oct 13 13:02 celery-antiwater_ERROR_monit.sh
-rwxr-xr-x 1 root root    442 Oct 13 13:04 celery-dislike_ERROR_monit.sh
-rwxr-xr-x 1 root root    443 Oct 13 13:58 celery-flower_ERROR_monit.sh
-rwxr-xr-x 1 root root    436 Oct 13 14:01 celery-report_ERROR_monit.sh
-rwxr-xr-x 1 root root    436 Oct 13 14:03 consumer01_ERROR_monit.sh
-rwxr-xr-x 1 root root    436 Oct 13 14:04 consumer02_ERROR_monit.sh
-rwxr-xr-x 1 root root    437 Oct 13 14:06 imgsearch01_ERROR_monit.sh
-rwxr-xr-x 1 root root    437 Oct 13 14:07 imgsearch02_ERROR_monit.sh
-rwxr-xr-x 1 work work    857 Oct 12 14:31 sms.py                             //这个是短信报警脚本(内部短信脚本,这里就不贴出来了)
-rwxr-xr-x 1 root root    435 Oct 13 14:08 snapshot01_ERROR_monit.sh
-rwxr-xr-x 1 root root    435 Oct 13 14:10 snapshot02_ERROR_monit.sh
-rwxr-xr-x 1 root root    433 Oct 13 14:11 xcspam01_ERROR_monit.sh
-rwxr-xr-x 1 root root    433 Oct 13 14:12 xcspam02_ERROR_monit.sh

下面贴出其中两个日志的监控脚本,其他的脚本内容类似:
[root@qd-inf-logcollector01 script]$ cat celery-antiwater_ERROR_monit.sh 
#!/bin/bash 
while true
do
  TIME1=$(date +%Y-%m-%d)
  TIME2=$(date +%H:%M -d'-1 minute')
  NUM=$(ssh root@10.111.232.148 'grep -E '${TIME1}' /app/script/antiwater_ERROR.log|grep '${TIME2}' |wc -l')

  if [[ "${NUM}" -ge 30 ]]
  then
    python /app/script/sms.py antiwater_ERROR.log "qd-vpc-op-rule01 server 在${TIME1} ${TIME2}产生${NUM}个antiwater ERROR!请收到报警后尽快查看并处理!"
    sleep 600
  else
    sleep 30
  fi
done

[root@qd-inf-logcollector01 script]$ cat consumer01_ERROR_monit.sh 
#!/bin/bash 

while true
do
  TIME1=$(date +%Y-%m-%d)
  TIME2=$(date +%H:%M -d'-1 minute')
  NUM=$(ssh root@10.111.232.225 'grep -E '${TIME1}' /app/script/ERROR.log |grep '${TIME2}'|wc -l')

  if [[ "${NUM}" -ge 30 ]]
  then
    python /app/script/sms.py xcspam_error_log "qd-vpc-op-consumer01 server 在${TIME1} ${TIME2}产生${NUM}个xcspam ERROR!请收到报警后尽快查看并处理!"
    sleep 600
  else
    sleep 30 
  fi
done

特别注意:
需要在后台执行这些脚本,因为当ERROR日志信息注入量比较大(比如上万条)的时候,就不适合使用crontab定时执行了。
[如果使用crontab定时执行的话,那么定时时间间隔短的话,比如一分钟执行一次,那么当ERROR比较多的时候,报警信息就会很多!如果定时时间间隔长的话,那么在ERROR信息出现的时候,可能无法第一时间报警,这样就失去了报警的意义了。]
所以还是将脚本放在后台执行比较合理,这样当ERROR条数超过30条时,会立即第一时间发出第一个报警,然后根据脚本中的sleep进行报警频率调整!这样也是为了确保监控报警的时效性!

[root@qd-inf-logcollector01 script]$ nohup /bin/bash -x /app/script/celery-antiwater_ERROR_monit.sh &            //回车,按ctrl+c,放在后台执行
[root@qd-inf-logcollector01 script]$ nohup /bin/bash -x /app/script/consumer01_ERROR_monit.sh & 
[root@qd-inf-logcollector01 script]$ ps -ef|grep monit.sh
root     20574     1  0 14:03 ?        00:00:00 /bin/bash -x /app/script/consumer01_ERROR_monit.sh
root     32568     1  0 13:03 ?        00:00:00 /bin/bash -x /app/script/celery-antiwater_ERROR_monit.sh

2)业务部署机器(也就是监控的目标机器上)的脚本配置,这里选择consumer01机器看下脚本配置,其他机器脚本内容类似!

[root@qd-vpc-op-consumer01 ~]# cd /app/script/
[root@qd-vpc-op-consumer01 script]# ll
total 28
-rwxr-xr-x 1 work work  35 Oct  9 17:02 empty_ERROR_log.sh
-rw-r--r-- 1 work work   0 Oct 13 03:00 ERROR.log
-rwxr-xr-x 1 work work 186 Oct  9 16:34 monit_log.sh

[root@qd-vpc-op-consumer01 script]# cat monit_log.sh
#!/bin/bash
FILE="/data/log/xcspam/xcspam_error.log"
nohup /usr/bin/tail  -f $FILE |grep ERROR >> /app/script/ERROR.log &

首次执行下这个脚本,然后将tail命令的动作放在后台一直执行
这样,一旦xcspam_error.log文件中有ERROR信息输入,就会被打入到ERROR.log中
这样确保了监控的实时性!
[root@qd-vpc-op-consumer01 script]# /bin/bash -x /app/script/monit_log.sh

[root@qd-vpc-op-consumer01 script]# ps -ef|grep tail
root     11337     1  0 Oct09 ?        00:09:01 /usr/bin/tail -f /data/log/xcspam/xcspam_error.log

随着监控的执行,ERROR.log文件也会不断增大,故需要一个清理脚本:
[root@qd-vpc-op-consumer01 script]# cat empty_ERROR_log.sh 
#!/bin/bash
>/app/script/ERROR.log

[root@qd-vpc-op-consumer01 script]# crontab -l
0 3 */2 * * /bin/bash -x /app/script/empty_ERROR_log.sh > /dev/null 2>&1

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 介绍linux下利用编译bash设置root账号共用的权限审计设置

    在日常运维工作中,公司不同人员(一般是运维人员)共用root账号登录linux服务器进行维护管理,在不健全的账户权限审计制度下,一旦出现问题,就很难找出源头,甚...

    洗尽了浮华
  • linux下用户操作记录审计环境的部署记录

    通常,我们运维管理人员需要知道一台服务器上有哪些用户登录过,在服务器上执行了哪些命令,干了哪些事情,这就要求记录服务器上所用登录用户的操作信息,这对于安全维护来...

    洗尽了浮华
  • Linux下间隔多少秒 (即以秒为单位) 去执行某条命令或某个shell脚本的操作方法

    在日常运维工作中, 经常会碰到以秒为单位去定时执行某些命令或监控脚本的需求。 说到定时任务就要用到crontab,通常来说,crontab的最小单位是分钟级别,...

    洗尽了浮华
  • Linux下监控用户操作轨迹

    在实际工作当中,都会碰到误删除、误修改配置文件等事件。如果没有堡垒机,要在linux系统上查看到底谁对配置文件做了误操作,特别是遇到删库跑路的事件,当然可以通过...

    有暗香盈袖
  • day10、nfs+rsync全网备份及实时同步

    题目要求 注意:博主使用的系统为: [root@web01 ~]# uname -a Linux web01 2.6.32-696.el6.x86_64 #1...

    863987322
  • Redis集群生产环境高可用方案实战过程

    sentinel是一个分布式系统,可以在一个架构中运行多个sentinel进程,这些进程使用流言协议(gossip protocols)来接收关于rdis主...

    民工哥
  • 上传三组表格即可分析AI模型,可视化工具Manifold开源,来自Uber华人女工程师

    调试机器学习模型是最痛苦的,因为算法本身不透明,就算运行结果不好,有时你也很难知道问题出在哪里。

    量子位
  • tolua之wrap文件的原理与使用

    每个wrap文件都是对一个c#类的包装,在lua中,通过对wrap类中的函数调用,间接的对c#实例进行操作。

    马三小伙儿
  • 【Unity游戏开发】tolua之wrap文件的原理与使用

    本文内容转载自:https://www.cnblogs.com/blueberryzzz/p/9672342.html 。非常感谢原作者慷慨地授权转载,比心!...

    马三小伙儿
  • Tensorflow日志格式

    Level Level for Humans Level Description 0 DEBUG all messages are logged (Defau...

    Dean0731

扫码关注云+社区

领取腾讯云代金券