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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
[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机器看下脚本配置,其他机器脚本内容类似!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[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
***************当你发现自己的才华撑不起野心时,就请安静下来学习吧***************

本文转自散尽浮华博客园博客,原文链接:http://www.cnblogs.com/kevingrace/p/7661498.html,如需转载请自行联系原作者
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
2月前
|
存储 Prometheus 监控
程序开发中的监控和日志分析
监控和日志分析在软件开发中至关重要,它们帮助实时了解应用状态、及时发现并解决问题。监控确保系统稳定运行,优化性能和资源;日志分析则助于追踪问题根源、监测用户行为并提供安全审计。利用如Prometheus、ELK Stack等工具可实现高效监控与日志管理,从而优化应用性能和用户体验。
106 0
|
2月前
|
存储 运维 监控
监控与日志管理:保障系统稳定运行与高效运维的基石
【8月更文挑战第16天】监控与日志管理是保障系统稳定运行和高效运维的基石。它们不仅能够帮助企业及时发现并解决问题,还能够为性能调优、资源优化和业务决策提供有力支持。因此,在构建系统架构时,企业应高度重视监控与日志管理的规划和实施,确保它们能够充分发挥作用,为企业的发展保驾护航。同时,随着技术的不断进步和应用场景的不断拓展,监控与日志管理也将持续演进和创新,为企业带来更多的价值和便利。
|
1月前
|
运维 Kubernetes 监控
Loki+Promtail+Grafana监控K8s日志
综上,Loki+Promtail+Grafana 监控组合对于在 K8s 环境中优化日志管理至关重要,它不仅提供了强大且易于扩展的日志收集与汇总工具,还有可视化这些日志的能力。通过有效地使用这套工具,可以显著地提高对应用的运维监控能力和故障诊断效率。
66 0
|
2月前
|
SQL 数据库 Java
Hibernate 日志记录竟藏着这些秘密?快来一探究竟,解锁调试与监控最佳实践
【8月更文挑战第31天】在软件开发中,日志记录对调试和监控至关重要。使用持久化框架 Hibernate 时,合理配置日志可帮助理解其内部机制并优化性能。首先,需选择合适的日志框架,如 Log4j 或 Logback,并配置日志级别;理解 Hibernate 的多级日志,如 DEBUG 和 ERROR,以适应不同开发阶段需求;利用 Hibernate 统计功能监测数据库交互情况;记录自定义日志以跟踪业务逻辑;定期审查和清理日志避免占用过多磁盘空间。综上,有效日志记录能显著提升 Hibernate 应用的性能和稳定性。
38 0
|
2月前
|
开发者 前端开发 编解码
Vaadin解锁移动适配新境界:一招制胜,让你的应用征服所有屏幕!
【8月更文挑战第31天】在移动互联网时代,跨平台应用开发备受青睐。作为一款基于Java的Web应用框架,Vaadin凭借其组件化设计和强大的服务器端渲染能力,助力开发者轻松构建多设备适应的Web应用。本文探讨Vaadin与移动设备的适配策略,包括响应式布局、CSS媒体查询、TouchKit插件及服务器端优化,帮助开发者打造美观且实用的移动端体验。通过这些工具和策略的应用,可有效应对屏幕尺寸、分辨率及操作系统的多样性挑战,满足广大移动用户的使用需求。
35 0
|
2月前
|
存储 JSON 监控
FastAPI日志之谜:如何揭开Web应用监控与调试的面纱?
【8月更文挑战第31天】在现代Web开发中,日志记录对于监控应用状态、诊断问题和了解用户行为至关重要。FastAPI框架提供了强大的日志功能,使开发者能轻松集成日志记录。本文将详细介绍如何在FastAPI中设置和利用日志,包括基础配置、请求响应日志、错误处理和结构化日志等内容,帮助提升应用的可维护性和性能。
56 0
|
2月前
|
消息中间件 Prometheus 监控
Producer的监控与日志记录最佳实践
【8月更文第29天】在分布式系统中,消息队列作为关键组件之一,其稳定性和性能至关重要。生产者(Producer)负责生成并发送消息到消息队列中,因此确保生产者的健康运行是非常重要的。本文将探讨如何为生产者设置监控和日志记录,以跟踪其健康状况和性能指标。
34 0
|
2月前
|
Prometheus 监控 Cloud Native
Web服务器的日志分析与监控
【8月更文第28天】Web服务器日志提供了关于服务器活动的重要信息,包括访问记录、错误报告以及性能数据。有效地分析这些日志可以帮助我们了解用户行为、诊断问题、优化网站性能,并确保服务的高可用性。本文将介绍如何使用日志分析和实时监控工具来监测Web服务器的状态和性能指标,并提供具体的代码示例。
163 0
|
3月前
|
弹性计算 Prometheus Cloud Native
SLS Prometheus存储问题之Union MetricStore在性能测试中是如何设置测试环境的
SLS Prometheus存储问题之Union MetricStore在性能测试中是如何设置测试环境的
|
2月前
|
Prometheus 监控 安全
下一篇
无影云桌面