分类: 系统运维
2010-10-14 16:45:25
(1)发现日志是否产生某个关键字(如系统日志的error)。
(2)不从头重复检查。日志文件不停滚动,每次从头检查的话,会查到已经发现的错误,就不符合我们的需求。
(3)发现新的关键字在日志中即发送报警。
用Linux的diff工具,对比两个文件,并以grep提取我们要关注的“关键字”,如果有输出,则表明有异常,然后报警,再把源文件拿去覆盖对比的那个对象文件。
(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
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
Mar 23 15:03:33 MONITOR kernel: klogd
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"
则会得出第一次执行的输出。
可以满足一定的需求,如以error做正则表达式来判断是否有错误产生。