munin-limitsの警告を最小限に...

(2011/7/7追記)どうも、以下のプログラムでは、メール送信プロセスが 正しく終了せず、メール送信プロセスが溜まってしまう。 muninのcontact.XXX.command にスクリプトを書くのはまずいみたい。 "/usr/bin/perl /...PATH.../notify.pl..." とすれば動いた。 どうも、command にスクリプトが書いてある場合"sh -c" してくれているんだけど、 何か不具合があるような...

muninで、USBRTの温度監視ができて、munin-limitで警告メールがだせるようになった。 でも、本来の目的は家猫の体調のためなので、警告温度は34℃ほどに設定したら、 設定温度を越えたら5分おきに、ずーっとメールが届く。 さすがに、職場じゃ大量のメールが届くので、状態が閾値を越えたときにだけメールが欲しい。

メールを送るスクリプトに、warning,criticalのデータ件数をつけて呼び出すようにして、 件数が変化していなければ、メールを送らないようにした。

(( /etc/munin/munin.conf ))
contact.nagios.command \
    /usr/bin/perl /etc/munin/my-plugins/notify.pl \ # (7/7修正)
    "${var:numwfields}:${var:numcfields}" \
    "[Munin] tsaitoh.net" \
    携帯メアド

(( notify.pl ))
#!/usr/bin/perl

exit 0 if ( @ARGV < 3 ) ;

my $stat = shift @ARGV ;
my $subj = shift @ARGV ;
my $mailto = shift @ARGV ;

my $last_file = "/var/run/munin/munin.last-stat" ;
my $last_stat = "" ;

# 前回の状態を読み込む
if ( open( FH , "$last_file" ) ) {
    $last_stat = <FH> ;
    chomp( $last_stat ) ; # chompの使い方間違ってた...
    close FH ;
}

if ( $stat eq $last_stat ) {
    # 状態の変化がなければ報告しない
    exit 0 ;
} else {
    # 状態を記録しておく
    if ( $stat eq "0:0" ) {
        unlink( $last_file ) if ( -f $last_file ) ;
    } elsif ( open( FH , ">$last_file" ) ) {
        print FH "$stat\n" ;
        close FH ;
    }
    # 報告を送信する
    if ( open(FH,"|/usr/bin/mail -s \"$subj\" \"$mailto\"") ) {
        while( <> ) {
            print FH $_ ;
        }
        close FH ;
    }
}
 

2017年2月

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28        

ウェブページ

アーカイブ

Webデータ

このブログ記事について

このページは、T-Saitohが2011年6月18日 11:15に書いたブログ記事です。

ひとつ前のブログ記事は「オープンソース製作者が...(06/17)」です。

次のブログ記事は「FacebookからGmailに届く...(06/19)」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。