找出哪个日志行触发了一个日志检查通知?

我们在Debian中使用logcheck软件包进行日志监控。

如果我理解正确,logcheck将监视日志,过滤掉已知的(正常和不重要的)消息,并在出现可能指示问题的任何消息时触发邮件。

Logcheck发送给我一个日志摘录(系统事件)。 但日志看起来并不可疑。 它包含如下消息:

 Jul 31 08:22:03 example pop3d: Connection, ip=[::ffff:123.456.789.123] 

我认为logcheck也发送周围的日志部分,如果有一条线,触发通知 – 但我怎么能找出,确切的线触发这封邮件?

检查日志检查状态的一种方法是将所有规则复制到文件中,然后使用egrep进行分析:

 # First of all: cat /etc/logcheck/ignore.d.server/ > /tmp/logcheckrules # color last 10 log lines. Darken matches (which would not trigger a warning) tail -n10 /var/log/syslog | GREP_COLOR=30 egrep --color -f /tmp/lcd # When you have a single line and what to check wether your regex is working: tail n-10 /var/log/syslog | GREP_COLOR=32 egrep --color "singleRegExpGoesHere" 

事实certificate,我们收到的消息最后很多,触发日志检查。

在系统上有一个“快递stream行”文件 – 但这与courierpop3login匹配。 所以我们只是复制这个文件,并将string改为pop3d

命令

 cat /var/log/syslog|egrep -v -f /etc/logcheck/ignore.d.server/LOCAL 

显示什么还没有在这个文件中过滤

 cat /var/log/syslog|egrep -f /etc/logcheck/ignore.d.server/LOCAL 

以显示文件规则匹配的内容,甚至是

 cat /etc/logcheck/ignore.d.server/* | egrep -v -f /dev/stdin /var/log/syslog 

看看什么不是通过任何规则过滤的,

对debugging非常有帮助。