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

简介:

需求说明对线上业务日志进行监控,当日志中出现的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日志并进行多维度分析。
相关文章
|
24天前
|
监控 关系型数据库 MySQL
《MySQL 简易速速上手小册》第7章:MySQL监控和日志分析(2024 最新版)
《MySQL 简易速速上手小册》第7章:MySQL监控和日志分析(2024 最新版)
42 3
|
4月前
|
存储 Prometheus 监控
Prometheus vs. ELK Stack:容器监控与日志管理工具的较量
随着容器化技术的广泛应用,容器监控与日志管理成为了关键任务。本文将对两种常用工具进行比较与选择,分别是Prometheus和ELK Stack。Prometheus是一款开源的监控系统,专注于时序数据的收集和告警。而ELK Stack则是一套完整的日志管理解决方案,由Elasticsearch、Logstash和Kibana三个组件组成。通过比较它们的特点、优势和适用场景,读者可以更好地了解如何选择适合自己需求的工具。
|
5月前
|
Kubernetes 监控 容器
k8s学习-CKA真题-监控Pod日志
k8s学习-CKA真题-监控Pod日志
78 0
|
2月前
|
Prometheus 监控 Kubernetes
Kubernetes 集群监控与日志管理实践
【2月更文挑战第29天】 在微服务架构日益普及的当下,Kubernetes 已成为容器编排的事实标准。然而,随着集群规模的扩大和业务复杂度的提升,有效的监控和日志管理变得至关重要。本文将探讨构建高效 Kubernetes 集群监控系统的策略,以及实施日志聚合和分析的最佳实践。通过引入如 Prometheus 和 Fluentd 等开源工具,我们旨在为运维专家提供一套完整的解决方案,以保障系统的稳定性和可靠性。
|
14天前
|
分布式计算 DataWorks 关系型数据库
DataWorks操作报错合集之在DataWorks中设置了一个任务节点的调度时间,并将其发布到生产环境,但到了指定时间(例如17:30)却没有产生运行实例和相关日志如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
31 0
|
6天前
|
存储 运维 监控
【Docker专栏】Docker日志管理与监控的最佳方法
【5月更文挑战第7天】本文探讨了Docker容器的日志管理与监控,强调其在运维中的重要性。Docker默认使用`json-file`日志驱动,可通过`docker logs`命令查看。建议选择合适日志驱动,配置日志选项,并集成ELK Stack等工具进行高级分析。实时监控、设置警报、分析数据和审计日志是实践关键。最佳实践包括日志数据与容器数据分离、使用日志代理、保护敏感信息及遵守法规。关注新技术以提升系统稳定性和安全性。
【Docker专栏】Docker日志管理与监控的最佳方法
|
7天前
|
监控 安全 数据可视化
中间件应用日志记录和监控
【5月更文挑战第1天】中间件应用日志记录和监控
22 3
中间件应用日志记录和监控
|
13天前
|
Prometheus 监控 Cloud Native
【Go语言专栏】Go语言中的日志记录与监控
【4月更文挑战第30天】Go语言在软件开发和运维中扮演重要角色,提供灵活的日志记录机制和与多种监控工具的集成。内置`log`包支持基本日志记录,而第三方库如`zap`、`zerolog`和`logrus`则扩展了更多功能。监控方面,Go应用可与Prometheus、Grafana、Jaeger等工具配合,实现系统指标收集、可视化和分布式追踪。健康检查通过HTTP端点确保服务可用性。结合日志和监控,能有效提升Go应用的稳定性和性能。
|
13天前
|
存储 监控 关系型数据库
PHP编写的电脑监控软件:用户登录日志记录与分析
使用PHP编写简单但功能强大的电脑监控软件,记录用户登录日志并进行分析。代码示例展示了如何获取并存储用户IP地址和登录时间到数据库,然后进行登录数据的分析,如计算登录频率和常见登录时间。此外,还介绍了如何通过定时任务自动将监控数据提交到网站,以便实时监控用户活动,提升系统安全性和稳定性。
40 0
|
13天前
|
Prometheus 监控 Kubernetes
Kubernetes 集群的监控与日志管理策略
【4月更文挑战第30天】 在微服务架构日益普及的当下,容器化技术与编排工具如Kubernetes成为了运维领域的重要话题。有效的监控和日志管理对于保障系统的高可用性和故障快速定位至关重要。本文将探讨在Kubernetes环境中实施监控和日志管理的最佳实践,包括选用合适的工具、部署策略以及如何整合这些工具来提供端到端的可见性。我们将重点讨论Prometheus监控解决方案和EFK(Elasticsearch, Fluentd, Kibana)日志管理堆栈,分析其在Kubernetes集群中的应用,并给出优化建议。