我在apache2上运行了一些服务器应用程序; Ruby on Rails,PHP等。
在所有情况下,只要apache响应HTTP错误500内部服务器错误,我希望apache给我发送电子邮件。
我该怎么做?
答案 0 :(得分:11)
你可以这样做的一种方法是使用发送电子邮件的PHP脚本,以及输出某种500条消息。然后使用ErrorDocument
指令:
ErrorDocument 500 /path/to/script/that/sends/email.php
答案 1 :(得分:10)
您可以采取一些措施来实现相同的结果:
您可以使用ErrorDocument directive让它指向某些CGI 脚本,是perl,PHP或任何其他服务器端执行的 脚本。然后,该脚本可以发送电子邮件并回复错误500 文档。
您可以使用一些外部工具来查看您的apache日志 文件并配置theese工具向您发送电子邮件。有几种工具和方法可以做到这一点。对于很多Linux 建议使用工具和方法 https://serverfault.com/questions/45246/linux-monitor-logs-and-email-alerts
编写一个apache模块。我认为mod_tee是一个很好的起点。
答案 2 :(得分:4)
创建一个名为log_monitor.sh
的脚本:
#!/usr/bin/perl -w
use strict;
my $cachefile="/var/cache/lastpos-apache2-scan4maxclntOrSigKill";
my $logfile="/var/log/httpd/error_log";
my $searchstr=" 500 ";
my $lastpos=0;
if (-f $cachefile) {
open FH,"<".$cachefile;
$lastpos=<FH>;
close FH;
};
my $newpos=(stat $logfile)[7];
open FH,"<".$logfile;
seek FH,$lastpos,0;
while (<FH>) {
print if m/$searchstr/i;
};
close FH;
open FH,">".$cachefile;
print FH $newpos;
close FH;
根据需要修改$searchstr
。请注意“500”周围的空格,因为您不希望在其路径或文件名(以及其他位置)中包含“500”的文件中匹配包含404的错误。
将脚本配置为通过cron每隔X分钟运行一次。 X的值越大,您获得的电子邮件就越少(对于与您提供的字符串匹配的所有错误,每X分钟只发送一封电子邮件)。 cron作业的结果将自动通过电子邮件发送给您(如果正确设置了cron)