share facebook facebook2 twitter menu hatena pocket slack

2013.05.22 WED

nagiosってなんじゃ?(nrpe + check_log3 + negateでログに特定のキーワードが含まれていなかったらアラート)

三浦 悟

WRITTEN BY三浦 悟

今回は、nagiosについてです。

アプリログの内容についての監視方法には様々な要件がありますが、特定の間隔でログを監視し「error」などの文言が
ある場合はアラートとするなどがよくあるケースで、以前の記事「nagiosってなんじゃ?(nrpeの出力が途中で
切れる問題)
」にも書きました。

その逆に、例えば多量のアクセスがあるにも関わらず頻繁に出力されるはずの重要なキーワードが
出力されていない場合は、不測の事態が起こっているかも知れません。
今回は特定の間隔でログを監視し、その中にキーワードが含まれていなかったらアラートするというものです。

○nrpe + check_log3の利用

まずは通常のようにcheck_log3の設定をします。

Nagiosサーバー側に、以下の設定をします。
3分間隔でチェック、キーワード「hoge」が1つでも含まれていたらCRITICALを出します。
今回、WARNINGは出さないため、WARNINGの閾値をとても大きな数値にしておきます。

■commands.cfg


define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -a $ARG2$
}

■client.cfg


define host{
use linux-server
host_name client_a
alias client_a
address ec2-54-250-36-70.ap-northeast-1.compute.amazonaws.com
}

define service {
use generic-service
host_name client_a
service_description CHECKLOG3
normal_check_interval 3
check_command check_nrpe!check_log3!/var/log/httpd/access_log /etc/nagios/seeks/check_log3.httpd.seek hoge 99999999999999 1

}

そうすると、キーワードが含まれている場合は、下記のようになります。

また、キーワードが含まれていない場合は、下記のようになります。

○nrpe + check_log3 + negateの利用

次に、逆のパターンを試してみます
nagiosにはnegateというプラグインがあり、CRITICALとOKの評価を反転します。
このプラグインを使用して、評価反転用のcheck_nrpeコマンドを定義します。

■commands.cfg


define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -a $ARG2$
}

define command{
command_name check_nrpe_negate
command_line $USER1$/negate $USER1$/check_nrpe -H '$HOSTADDRESS$' -c $ARG1$ -a $ARG2$
}

■client.cfg


define host{
use linux-server
host_name client_a
alias client_a
address ec2-54-250-36-70.ap-northeast-1.compute.amazonaws.com
}

#define service {
# use generic-service
# host_name client_a
# service_description CHECKLOG3
# normal_check_interval 3
# check_command check_nrpe!check_log3!/var/log/httpd/access_log /etc/nagios/seeks/check_log3.httpd.seek hoge 99999999999999 1
#}

define service {
use generic-service
host_name client_a
service_description NEGATE_CHECKLOG3
normal_check_interval 3
check_command check_nrpe_negate!check_log3!/var/log/httpd/access_log /etc/nagios/seeks/check_log3.httpd.seek hoge 99999999999999 1

}

そうすると、キーワードが含まれている場合は、下記のようになります。

また、キーワードが含まれていない場合は、下記のようになります。

以上のようになり、結果が反転します。
nrpeでなくどのプラグインでもnegateと組み合わせることができ、少し工夫が必要なときにはとても便利です。

こちらの記事はなかの人(memorycraft)監修のもと掲載しています。
元記事は、こちら

三浦 悟

三浦 悟

高円寺在住のなんじゃ系男子 またの名をmemorycraftといいます。 炭水化物大好き 日々の「なんじゃ?」を記事にしてます。