※評価は、CentOS6.6(x86_64) + rsyslog-8.8.0で行っています
以下に、rsyslogの比較的新しいフォーマットでの記述方法と昔ながらの記述方法の2種類を記載します。
⇒ログに'network connection error' あるいは'authentication failures'の文字列が出力されたら、メールでの通知を想定した例です
RainerScript styleフォーマットでの記述例
module(load="ommail")
template(name="mailSubject"
type="string"
string="Error on %hostname%"
)
template(name="mailBody"
type="string"
string="RSYSLOG Alert\r\nmsg='%msg%'"
)
if \
( $msg contains 'network connection error' ) or \
( $msg contains 'authentication failures' ) \
then {
action(
type="ommail"
server="localhost"
port="25"
mailfrom="alert@rsyslog.example.com"
mailto="user01@rsyslog.example.com"
subject.template="mailSubject"
template="mailBody"
body.enable="on"
#action.execonlyonceeveryinterval="3600"
)
}
※コメントアウトしているaction.execonlyonceeveryintervalパラメータは、メールの通知間隔を調整するのに使います。監視している文字列がログに大量に出力された時に、メールがバーストするのを防ぐ為に利用します。
⇒上記の記述をそのまま有効にした場合、1度メールを送信したら同じメールを送信できるのは1時間(3600秒)後になります
⇒上記の記述をそのまま有効にした場合、1度メールを送信したら同じメールを送信できるのは1時間(3600秒)後になります
Legacyフォーマットでの記述例
$ModLoad ommail
$template mailSubject,"Error on %hostname%"
$template mailBody,"RSYSLOG Alert\r\nmsg='%msg%'"
$ActionMailSMTPServer localhost
$ActionMailFrom alert@rsyslog.example.com
$ActionMailTo user01@rsyslog.example.com
$ActionMailSubject mailSubject
#$ActionExecOnlyOnceEveryInterval 3600
if \
( $msg contains 'network connection error' ) or \
( $msg contains 'authentication failures' ) \
then :ommail:;mailBody
※コメントアウトしている部分は、先のaction.execonlyonceeveryintervalパラメータと同じ目的で利用します。
動作検証
Puttyなどの端末を2つ立ち上げておき、
する事で動作を確認する事ができます。
- 1つはメールログをtail、
- もう一つで以下のようにloggerコマンドを実行 (⇒私の環境では/var/log/messagesに出力されました)
する事で動作を確認する事ができます。
# logger network connection error
0 件のコメント:
コメントを投稿