この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
こんにちは。wryyyです。
ディスク使用率や、Load Average等サーバに関する様々な監視が行える
Nagios
ですが、今回はNagiosでのログ監視について見て行きたいと思います。
まずは NagiosExchangeからcheck_logs.plをダウンロードし、インストールします。
(check_logs.plはperlで実行されるため、要perlです。)
そして、実行権を付けましょう!
これで、ひとまず ログ監視を実行できるようになりました。
さて、実行できたは良いものの
・どのファイルを読むのか
・どのエラーが発生した時に、メールを飛ばすようにするのか
等が設定できていないため、このままでは監視になりません。
ということで、次は「どのファイルを読み」、「どのエラーを拾うか」の設定をしていきます。
まずは、xxx.cfgというログ監視設定ファイルを作成し、/etc/nagios/check_logs/等、適当な場所へ配置します。
以下、設定ファイルの例です。
$seek_file_template='/var/lib/nagios/$log_file.check_log.seek';
# Required log files array
@log_files = (
{'file_name' => '/var/log/syslog',
'reg_exp' => '(ERROR|CRIT)',
# 'lines' => 2, #optional number of output lines after match
# 'new_line_reg_exp' => '^', #optional new line regex to stop output lines
# 'seek_file_suffix' => '2' #optional seek file suffix
},
{'file_name' => '/var/adm/messages',
'reg_exp' => '(WARN|ERROR|FATAL)',
},
);
上記、設定ファイルについて説明していきます。
まず、一番始めにある
$seek_file_template=’/var/tmp/$log_file.check_log.seek’;
これは、seekと呼ばれる、ログファイルを何行目まで読んだかを保存しておくファイルを指定しています。
次に、どのファイルを読むかについてですが、
これは、上部にある’file_name’ =>にて指定ができます。
次に、どのエラーを拾うかについては、
‘reg_exp’ => ‘(ERROR|CRIT)’を見てください。
()内に、拾いたい文言を「|」区切りで記載することにより、
()内に記載されている文言のログを拾う事ができます。
これで、基本的なログ監視の設定は以上です。
ただ、この設定だと拾わなくて良いログまで拾ってしまい、
このエラーは監視しなくて良いだろう!というログまで拾ってしまう可能性があります。
(su に失敗した時のエラーまで拾う必要はあるのか??等)
そこで、拾わなくて良いエラーがある場合は
‘neg_reg_exp’ => ‘()’
と記載することにより、()内に記載されているエラーは拾わないようになります。
以上、簡単ですがNagiosのログ監視設定でした。
監視に不必要なエラーを拾わないようにする設定は情報が少ないため、
参考にしていただけたら幸いです。