ロードアベレージで警告メール

  • ロードアベレージは処理待ちのプロセス数
    • CPUコア数以下におさえたい?
    • 3値表示は、1分、5分、15分の平均値

cronで記録してる

  • /etc/cron.d/sysstatにこう書かれてる
# run system activity accounting tool every an hour
5 * * * * root /usr/lib/sa/sa1 1 1
# generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib/sa/sa2 -A
  • 中略

/etc/cron.d/DK_top_report

/usr/local/hyperbox/bin/top_report.pl に送信メアドがズバリ書いてあった

  • /usr/local/hyperbox/bin/top_report.pl
#!/usr/bin/perl
# Heavy load process checker

$load_threshold = "5";
$process_threshold = "250";
$to='';
$cc='';
$host=`hostname`;
chop($host);
$from="top_report@".$host;
$sendmail='/usr/sbin/sendmail';

$load = `uptime`;
$psnum = `ps aux | wc -l`;

$load =~ s/^.*average\:\ (.*)$/$1/;
($load1,$load2,$load3) = split(/,/,$load,3);

if ( $load1 >= $load_threshold || $psnum >= $process_threshold ) {
        $top_head = "USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND";
        $top = `/bin/ps auwx --no-heading|/bin/sort +2nr`;
        #$TOP=`/usr/bin/top -b -n 1`;
        if (!(open(OUT,"| $sendmail -t -f $from"))) { print "sendmail open error.\n"; }
        print OUT "To: $to\n";
        print OUT "Cc: $cc\n";
        print OUT "From: $from\n";
        print OUT "Subject: $host is heavy loaded.\n";
        print OUT "$host is heavy loaded.\n";
        print OUT "process ($process_threshold) : $psnum";
        print OUT "load ($load_threshold)    : $load \n";
        print OUT "$top_head \n";
        print OUT $top;
        close(OUT);
}