我在服务器上 grep syslog 查找错误,并注意到这些行与我要查找的内容无关,但足够警报:
kernel: [8456851.218586] ata2.00: irq_stat 0x08000000, interface fatal error
kernel: [8456851.220076] res 50/00:00:80:45:c1/00:00:08:00:00/e0 Emask 0x10 (ATA bus error)
我如何确保我的服务器在发生类似错误时通过电子邮件向我发出警报?我至少需要捕获所有驱动器错误(当涉及到服务器 H/WI 时,最重要的是要处理电源中断和 HDD 故障)。然而,任何其他很有可能表明即将发生故障的事情都值得通过电子邮件发送,只要我没有收到太多误报而不再仔细查看这些电子邮件。
答案1
我用来logcheck
扫描我的日志文件。它每小时扫描一次新条目,并通过电子邮件将所有未知行以及已知行发送给我,这些行将被分类包含在报告中。
还有一些工具可以查看您的日志文件,并在日志文件包含某些内容时向您发送电子邮件。
答案2
我在 中使用该ommail
模块rsyslog
。配置很简单,您可以使用多个 smtp 服务器来发送警报电子邮件(作为故障转移):
$template mailSubject,"EMERGENCY:"
$template mailBody," %$NOW% %timereported:8:15% %programname%: %msg%\n"
$ActionMailSMTPServer mail1.example.com
$ActionMailFrom [email protected]
$ActionMailTo [email protected]
$ActionMailSubject mailSubject
$ActionExecOnlyOnceEveryInterval 60
*.emerg :ommail:;mailBody
# begin backup action, carried out if primary fails
$ActionExecOnlyWhenPreviousIsSuspended on
$ActionMailSMTPServer mail2.example.com
$ActionMailFrom [email protected]
$ActionMailTo [email protected]
$ActionExecOnlyOnceEveryInterval 60
&