NRPEというプラグインモジュールを使うと、Nagiosでゲスト側の細かい監視 データを採取できるようになります(エージェント動作)。今回は、Nagiosが動いている監視サーバとは別のサーバ(ゲスト側)でNRPEエージェント を稼働させ、ゲスト側のログからある特定のキーワードを見つけると障害発生(アラート)とする設定例を書いてみます。
サマリー
1.ゲスト側の設定
・NRPEのインストール
・Nagios本体から呼び出される監視モジュールの設定
・root権限が必要な場合の設定
・単体テスト
2.ホスト側の設定
・必要なプラグインがあるかの確認と必要であればインストール
・ゲスト側の監視モジュールをNRPE経由でテスト
・Nagiosの各種設定
・動作確認
検証に使った環境
ゲスト側 192.168.0.151 Debian GNU Linux 6.0.3 squeeze kernel 2.6.32-5-686 nagios-nrpe-server 2.12-4 nagios-plugins 1.4.15-3squeeze1 nagios-plugins-basic 1.4.15-3squeeze1 nagios-plugins-standard 1.4.15-3squeeze1
Nagiosホスト側 192.168.0.152 Debian GNU Linux 6.0.3 squeeze kernel 2.6.32-5-686 nagios3 3.2.1-2 nagios-plugins 1.4.15-3squeeze1 nagios-plugins-basic 1.4.15-3squeeze1 nagios-plugins-standard 1.4.15-3squeeze1 nagios-nrpe-plugin 2.12-4
それではゲスト側から作業を開始します。
NRPEのインストール
aptitude install nagios-nrpe-server
このコマンドでNRPEエージェントと必要なNagiosプラグイン一式が全てインストールされ、自動的にエージェントはデーモンとして動作を始めます。デフォルトでは localhost からしか接続を受け付けないので、/etc/nagios/nrpe.cfg の設定を変更します。
allowed_hosts=127.0.0.1
となっているので、NagiosホストのIPアドレスを追加します。
allowed_hosts=127.0.0.1,192.168.0.152 ←例:152がNagiosホスト
設定を変更したら、/etc/init.d/nagios-nrpe-server restart を忘れずに!
Nagios本体から呼び出される監視モジュールの設定
/etc/nagios/nrpe.d/ にNagiosホストから呼び出されるコマンドの登録を行います。
今回は Log をチェックして”ERR”という単語がある行を見つけたらクリティカル(致命的)なエラーだと検出する方法です。
/usr/lib/nagios/plugins/check_log -F /var/log/messages -O /tmp/.messages_old -q ERR
これには check_log というプラグインを使います。このプラグインは呼び出される度に、-F で指定されたファイルを -O で指定されたファイルと比較してdiffを取ります。その差分の中に指定されたキーワードがあるか調べて結果を返します。その後、-F で指定したフィルを -O のファイルへコピーします。
※ですから、一番最初に呼ばれた時には -O のファイルは無いので単にファイルをコピーするだけの動作を行います。
このプラグインの動作を確認して正常に作動しているなら、下記内容を check_log.cfg と名前を付けて /etc/nagios/nrpe.d/ に置きます。
command[check_log]= sudo /usr/lib/nagios/plugins/check_log -F /var/log/messages -O /tmp/.messages_old -q ERR
root権限が必要な場合の設定
NRPEは実行時にnagiosというユーザで実行されます。今回は /var/log 以下のファイルを読むのでroot権限がないとファイルが読めません。そのため、sudo で実行出来るように設定します。
visudo を実行して、最下行に
nagios ALL=NOPASSWD:/usr/lib/nagios/plugins/check_log
を追加して下さい。
※ もし visudo を実行したときになにやらエラーを起こすときは、自動起動する nano というエディターのインストールに問題がある場合です。 aptitude purge nano と一度きれいに消してから、aptitude install nano と再インストールしてみて下さい。だいたい、これで治ります。
単体テスト
sudo -u nagios sudo /usr/lib/nagios/plugins/check_log -F /var/log/messages -O /tmp/.messages_old -q ERR
…と、実行して動作を確認して下さい。
以上でゲスト側(監視される方)の設定は終了です。
次にNagiosが動いているホスト側の設定に移ります。
必要なプラグインの確認
NRPE を一度も使っていないのであれば、NRPE のプラグインのインストールが必要です。
aptitude install nagios-nrpe-plugin
を実行し、/etc/nagios-plugins/config/ に下記ファイルを作成しましょう。
/etc/nagios-plugins/config/nrpe.cfg # check nrpe define command{ command_name check_nrpe command_line /usr/lib/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ }
ゲスト側の監視モジュールをNRPE経由でテスト
それではNRPE経由で監視情報がとれるかチェックしてみます。
/usr/lib/nagios/plugins/check_nrpe -H 192.168.0.151 -c check_log
-H は NRPE が動作している被監視サーバを指定します(名前でも可)。
-c は1-2.で設定したコマンド名を指定します。
何も問題がなければ、Log check ok – 0 pattern matches found という表示が出るはずです。
Nagiosの各種設定
/etc/nagios3/conf.d/services_nagios2.cfg
# check log define service { hostgroup_name check_log service_description LOG check check_command check_nrpe!check_log use generic-service max_check_attempts 1 retry_interval 1 }
【注意】 ゲスト側で実行される chek_log というプラグインは、異常を検知しても通知されるのは1回きりです。しかし、Nagios のデフォルト設定は連続で4回エラーが発生しないと通知メールが発行されませんので設定を少し追加します。
上記の max_check_attempts がその為の設定で、これは1回でもエラーが発生すると通知を発行します(つまり、デフォルトはこの値が4になっている)。また、エラー通知状態になった後のチェックは1分間隔とするのが次の retry_interval の指定です。正常な状態に復帰するとデフォルト5分間隔のチェックに戻ります。
そして、/etc/nagios3/conf.d/hostgroups_nagios2.cfg に、
define hostgroup { hostgroup_name check_log alias Log members server01 ←被監視サーバ 192.168.0.151 }
を追加すればNagios側の設定は終了です。
動作確認
しばらく放置して Log の状況やわざと ERR を起こしてみてちゃんとエラーメールが飛ぶかどうか動作を確認して下さい。
- 投稿タグ
- nagios
こんなにわかりやすいページは初めて!!
ありがとうございます。ご質問等ありましたら遠慮無く書き込んでください。