Chinaunix首页 | 论坛 | 博客
  • 博客访问: 268360
  • 博文数量: 24
  • 博客积分: 179
  • 博客等级: 入伍新兵
  • 技术积分: 1859
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-30 13:11
文章分类
文章存档

2014年(4)

2011年(2)

2010年(18)

分类: 系统运维

2010-10-14 16:45:25

 

12.7  监控错误日志实例

.目的

1)发现日志是否产生某个关键字(如系统日志的error)。

2)不从头重复检查。日志文件不停滚动,每次从头检查的话,会查到已经发现的错误,就不符合我们的需求。

3)发现新的关键字在日志中即发送报警。

2.原理

Linuxdiff工具,对比两个文件,并以grep提取我们要关注的“关键字”,如果有输出,则表明有异常,然后报警,再把源文件拿去覆盖对比的那个对象文件。

3.实验

1)工具:Nagios插件check_log

2)文件:/var/log/messages/var/log/message.arc。文件/var/log/messages本不存在,是执行命令后自动生成的。

我们先来看一下/var/log/messages 的内容:

Mar 21 04:02:10 MONITOR syslogd 1.4.1: restart.

Mar 23 15:03:32 MONITOR kernel: Kernel logging (proc) stopped.

Mar 23 15:03:32 MONITOR kernel: Kernel log daemon terminating.

Mar 23 15:03:33 MONITOR exiting on signal 15

Mar 23 15:03:33 MONITOR syslogd 1.4.1: restart.

Mar 23 15:03:33 MONITOR kernel: klogd 1.4.1, log source=/proc/kmsg

started.

现在执行:

./check_log  -F /var/log/messages -O /var/log/messages.arc -q "stop"

输出如下(因为/var/log/messages.arc无内容):

Mar 23 15:03:32 MONITOR kernel: Kernel logging (proc) stopped.

执行完毕后,两个文件的内容就一致了。当我们再次执行:

./check_log  -F /var/log/messages -O /var/log/messages.arc -q "stop"

输出内容为:

Log check ok - 0 pattern matches found

这表明当前并没有新的“stop”产生。

接下来,修改文件/var/log/messages.arc,比如把stoped去掉一个s字母,然后执行:

./check_log  -F /var/log/messages -O /var/log/messages.arc -q "stop"

则会得出第一次执行的输出。

4.结论和改进

可以满足一定的需求,如以error做正则表达式来判断是否有错误产生。

改进脚本,使其有一定量的error产生时,发送警告,多于一个量时,则发送critical告警。
阅读(3194) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~