在Linux下,什么是自动查看日志文件的简单方法,如果出现某个string,给我发电子邮件? 我有一个应用程序会将某些故障logging到日志文件中,但没有内置的发送警报或执行失败脚本的方法。 我想我可以用tail -f和一些shell脚本来安装某些东西,但是如果存在,我宁愿使用现有的维护工具。
我检查了这个页面上提到的几个选项,结果使用了更简单的东西: swatch 。
那些其他的系统非常适合处理现有的系统日志,或者用软件来控制输出。 我只是不想写一堆代码来做电子邮件通知。 所以我就像这样创build了一个样本文件:
watchfor /./ mail addresses=me\@example.com:other\@example.com,subject=log_alert
然后启动它
swatch -c send-me-everything.swatch -t /my/app/urgentevents
这是粗糙的,但由于我控制日志文件输出,我不需要任何更复杂的。
在我们使用重量级解决scheme( Zenoss )之前,我们使用的是logcheck ,它是Debian的一部分,但也可以很容易地移植到其他发行版。 我在Gentoo上使用它。 像RHEL这样的发行版带有logwatch ,它做了类似的事情。
最好的方法是使用日志分析程序。
例如,OSSEC是免费/开源的,允许您随心所欲地观看尽可能多的日志文件,并为某些事件生成电子邮件警报(甚至主动响应)。
链接: http : //www.ossec.net
我知道,破解一个shell脚本很有趣,但是比一个多年来正在开发的成熟程序要稳定的多。 此外,如果将来需要扩展脚本或添加更多触发器,则会变得更加复杂。 OSSEC(和其他工具)已经为你完成了这个框架。
LoFiMo (日志文件监视器)在Sourceforge应该让你开始或NuHe可能工作,但我不太熟悉它。
我发现了一个名为tenshi的工具,看起来正是我所需要做的。 它包含在默认的Debian repos中,不幸的是不在RHEL / CentOS中(我有两个OS作为服务器的组合)。
我知道一个答案已经被接受,但是rsyslog更强大,并且为不使用syslog的应用程序提供了内置过滤,SMTP警报和基于非系统日志的文件监视function。 它现在是Ubuntu 10.x上的标准系统日志实现。