syslog-ngで自動メール送信

以前からサーバにはsyslog-ngを導入していたのだがようやくアラートを自動でメール通知するようにした。
Perlでメール送信スクリプトを作ってsyslog-ngからこのスクリプトを呼び出すという方法。
作ったPerlスクリプト
alert_mail.pl

#!/usr/bin/perl
### For Sendmail
#$sendmail = '/usr/lib/sendmail';
### For Postfix
#$sendmail = '/usr/sbin/sendmail';
### For qmail
$sendmail = '/var/qmail/bin/sendmail';
$from = 'username@kajukaju.net';
$to = 'username@kajukaju.net';
$header = <<END;
From: $from
To: $to
Subject: Syslog-ng Alert!
Mime-Version: 1.0
Content-Type: text/plain; charset="ISO-2022-JP"
Content-Transfer-Encoding: 7bit
X-Mailer: syslog-ng auto sender program ver1.0 by kajukaju.net
END
while (<STDIN>) {
if ($_) {
$body = $_;
$body =~ s/^<[0-9]*>//g;
open(MAIL, "| $sendmail -t -i");
print MAIL $header,$body;
close(MAIL);
}
}

あとはsyslog-ng.confでalert_mail.plを呼び出す。
syslog-ng.conf

destination d_mailsend { program("/usr/local/bin/alert_mail.pl"); };
filter f_mailsend { match("messages"); };
log { source(s_sys); filter(f_mailsend); destination(d_mailsend); };

【syslog-ngの導入はこちら】
http://www.kajukaju.net/centos/syslogng.php

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)