Apache-2.2

監控特定字元串的 Apache 錯誤日誌

  • October 27, 2012

什麼是推薦的解決方案來梳理 apache 前一天的 /var/log/httpd/error_log 在檢測到此類字元串時查找包含特定字元串和電子郵件的行?

它可以通過 cron 每小時執行一次,在我的例子中,字元串是“sigkill”或“reached maxclients”。

Nagios、Cacti 等將是矯枉過正。我需要一些簡單的東西。

謝謝

但如果你真的更喜歡 perl,它比 bash 輕一點,但是……

#!/usr/bin/perl -w

use strict;

my $cachefile="/var/cache/lastpos-apache2-scan4maxclntOrSigKill";
my $logfile="/var/log/apache2/error.log";
my $searchstr="sigkill|reached maxclients";

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 /$searchstr/i;
};
close FH;

open FH,">".$cachefile;
print FH $newpos;
close FH;

引用自:https://serverfault.com/questions/442932