有一个日志文件,我们希望密切关注它。通常它不会收到任何更新。但它每周会更新一两次,当它更新时,我们希望收到通知。
有没有办法定期检查(cron-job)并检测此类文本文件中的更改,并让 Linux 发送有关更改的电子邮件。如果电子邮件包含新行,那就太好了,但我们没有后一个愿望。
答案1
对于快速而简单的文件内容测试系统,我建议使用Monit 及其文件内容服务测试默认情况下,Monit 守护程序将每 30 秒或 60 秒检查一次(可配置),但这是一种简单的方法来实现您的要求。在此基础上,可以轻松配置电子邮件通知或其他操作。
他们的例子:
check file syslog with path /var/log/syslog
ignore match
"^\w{3} [ :0-9]{11} [._[:alnum:]-]+ monit\[[0-9]+\]:"
ignore match /etc/monit/ignore.regex
if match
"^\w{3} [ :0-9]{11} [._[:alnum:]-]+ mrcoffee\[[0-9]+\]:"
if match /etc/monit/active.regex then alert
答案2
如果你正在使用 Nagios,请查看check_logfiles
插入:
Name : check_logfiles
Arch : x86_64
Version : 3.4.2
Release : 1.el5.rf
Size : 167 k
Repo : installed
Summary : Logfile check plugin for nagios
URL : http://sourceforge.net/projects/check-logfiles
License : GPL
Description: check_logfiles is a plugin for Nagios which searches for patterns in logfiles. It is capable of scanning
: multiple logfiles and their rotated ancestors in a single run.
例如:
# /usr/lib64/nagios/plugins/check_logfiles --logfile='/var/log/mysqld.log' --criticalpattern='is marked as crashed'
OK - no errors or warnings|default_lines=0 default_warnings=0 default_criticals=0 default_unknowns=0