在 Linux 中检测文本文件中的新行并通过电子邮件发送

在 Linux 中检测文本文件中的新行并通过电子邮件发送

有一个日志文件,我们希望密切关注它。通常它不会收到任何更新。但它每周会更新一两次,当它更新时,我们希望收到通知。

有没有办法定期检查(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

相关内容