开发者社区> 技术小胖子> 正文

Zabbix监控之检测程序日志中错误发生的次数

简介:
+关注继续查看

最近开发人员提了一个新的监控需求,当一个日志文件中出现的错误的次数增加时(日志文件中的错误关键字出现数量增加)则触发报警。

我觉得这是一个无聊的问题,问题之所以无聊,是因为该问题本身就具有局限性(自己给自己挖坑)。首先,日志文件不可能无穷的增大,因此当日志文件因为人为维护时发生的任何变化必会触发报警;

其次,通过检测错误关键字或者错误代码的方法也可能不靠谱,例如日志中可能出现一些并不是错误代码但与错误代码相同的数字,因此错误关键字和错误代码需要同时监测;

再如产生日志的进程的重新启动或者挂起,日志切割(logrotate)等都会导致存储的计数发生变化,很多情况都会触发虚假报警,因此这个问题真的很无聊!

并不是说要检测到这个错误的次数真的很复杂(实际也确实不简单),如果要检测是否有问题大可不必这样做,对于程序而言,所有影响程序正确执行的任何问题全都是异常,只要异常被捕获并被正确处理势必可以清晰的知道问题出在哪里,该如何解决。因此设计初期如果不提前做好这些打算,日后处理起来只能以无聊来讽刺了。

废话不说了,有两个方法可以简易实现,在此贴一下。

方法1:写两个脚本,一个持续运行,一个供监控软件运行,其中持续运行的脚本可以由crontab来做,供监控软件运行的命令行和脚本无论逻辑有多复杂流程有多少条必须具有退出运行的处理。

方法2:利用监控软件自带的diff或change,变化趋势由监控软件判断(以Zabbix为例),Zabbix的Trigger的表达式能轻松的将采集到数据以各种表达式计算出用户想要的数据,省却了用户自己编写程序或脚本解决文字比较、数字计算和趋势计算等较为复杂的问题。

方法1:getdata.sh在后台运行用来提供数据,checkdata.sh给Zabbix运行,用来查询数据。

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
#!/bin/bash
# Name: getdata.sh
javalogfile=/data/tomcat/tomcat-cstest/logs/catalina.out
pathtojavalogfile=$(dirname $javalogfile)
zabbixstatusfile=pathtojavalogfile/.zabbixstatus.catalina.out
errorkeyword=13003
previoustime=$(grep "$errorkeyword" $javalogfile | wc -l)
currenttime=$(grep "$errorkeyword" $javalogfile | wc -l)
if [[ ! $previoustime -eq $currenttime ]]; then
    echo 0
    exit 1
fi
while [[ $previoustime -eq $currenttime ]]; do
    # 其实此处就像crontab,while+sleep=crontab
    sleep 2
    currenttime=$(grep "$errorkeyword" $javalogfile | wc -l)
    if [[ $currenttime -gt $previoustime ]]; then
        previoustime=$currenttime
        echo 0 >>$zabbixstatusfile
    elif [[ $currenttime -le $previoustime ]]; then
        echo 1 >>$zabbixstatusfile
    fi
done
 
#!/bin/bash
# Name: checkdata.sh
javalogfile=/data/tomcat/tomcat-cstest/logs/catalina.out
pathtojavalogfile=$(dirname $javalogfile)
zabbixstatusfile=pathtojavalogfile/.zabbixstatus.catalina.out
grep "0" $zabbixstatusfile
if [[ $? -eq 0 ]]; then
    echo 0
    true > $zabbixstatusfile
    exit 1
else
    echo 1
    exit 0
fi

方法2:产生数据和查询数据都交给Zabbix去做。

1
2
3
4
5
6
7
8
9
10
11
12
# single line for Zabbix
# ItemName: cs connection error
# TemplateNmae: Template App JavaLogMonitor
# ApplicationName: JavaErrorCodeTextFound
# TriggerName: cs connection error is occur
# # /etc/zabbix/zabbix_agentd.conf.d/userparameter_csconnerr.conf 
# /etc/zabbix/zabbix_agentd.conf.d/userparameter_cs.conf
# {Template App JavaLogMonitor:csprocess.cs.csconnerr[*].diff(0)}>0
# For /bin/bash, such as CentOS
# UserParameter=csprocess.cs.csconnerr[*],javalogfile=/data/tomcat/tomcat-cstest/logs/catalina.out;errorkeyword=13003;if [[ -f $javalogfile ]]; then echo $(grep "$errorkeyword" $javalogfile | wc -l); exit 0; else echo 0; exit 1; fi
# For /bin/sh, such as Ubuntu
UserParameter=csprocess.cs.csconnerr[*],javalogfile=/data/tomcat/tomcat-cstest/logs/catalina.out;errorkeyword=13003;if test -f $javalogfile ; then echo $(grep "$errorkeyword" $javalogfile | wc -l); exit 0; else echo 0; exit 1; fi

--end--


本文转自 urey_pp 51CTO博客,原文链接:http://blog.51cto.com/dgd2010/1678879,如需转载请自行联系原作者



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Zabbix icmping外网检测(学习笔记十二)
1、yum install -y fping 2、vi zabbix_server.conf     FpingLocation=/usr/sbin/fping 3、service zabbix_server restart 4、chown root...
895 0
ZABBIX监控容器内的MySQL数据
ZABBIX监控容器内的MySQL数据
55 0
Zabbix与乐维监控对比分析(八)——其他功能篇
本篇是Zabbix与乐维监控对比分析专题系列文章的第八篇,也是最后一篇,包括二者知识库、CMDB系统集成与ITSM系统集成等功能的对比分析。
24 0
监控神器Zabbix部署
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。 zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。 zabbix由2部分构成,zabbix server与可选组件zabbix agent。 zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Ubuntu,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。
63 0
Zabbix与乐维监控对比分析(七)——网络功能篇
本篇是Zabbix与乐维监控对比专题系列文章的第七篇——网络功能篇,具体包括IP地址管理、网络端口映射发现、网络配置备份、专线监控等功能的对比分析
66 0
Zabbix与乐维监控对比分析(六)——图形图表篇
本篇是Zabbix与乐维监控对比分析专题系列文章的第六篇——图形图表篇,包括二者在模板图形及模板表格等功能的对比分析。
39 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
《Zabbix 监控常用手册》
立即下载
网络流量异常行为分析系统
立即下载
基于日志trace的智能故障定位系统
立即下载