我们正在使用logcheck
Debian 中的包进行日志监控。
如果我理解正确的话,logcheck 会监视日志,过滤掉已知(正常和不重要的)消息,并且在出现任何可能表明存在问题的消息时触发邮件。
Logcheck 正在向我发送日志摘录(系统事件)。但日志看起来并没有什么可疑之处。它包含如下消息:
Jul 31 08:22:03 example pop3d: Connection, ip=[::ffff:123.456.789.123]
我认为,如果有一行触发了通知,logcheck 也会发送日志的周围部分 - 但我如何才能找出哪一行触发了这封邮件?
答案1
检查日志检查状态的一种方法是将所有规则复制到一个文件中,然后用于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"
事实证明,我们收到的许多消息都触发了日志检查。
系统上有一个“courier-pop”文件 - 但它与 匹配courierpop3login
。所以我们只需复制此文件并将字符串更改为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
查看未被任何规则过滤的内容,
对于调试非常有帮助。