Nagios で外部サーバーのシステムリソースを監視する

SETUP

サーバー監視ツール Nagios と nrpe を併せて使用することで、外部サーバーにあるシステムリソースを Nagios で監視することができるようになります。


Nagios と nrpe

Nagios とは http://www.nagios.org/ で提供されている、サーバー監視ツールです。

これを利用することで、サーバーの状態を自動でモニタリングして、異常があれば管理者へメールで通知するといったことが可能となります。

ただ、ハードディスクの使用容量や CPU のロードアベレージといったシステムリソース情報は、Nagios 単体では、それがインストールされたサーバーの情報しか監視することができません。

そこで、今回は nrpe をインストールすることで、外部サーバーのシステムリソース情報も監視できるようにしようと思います。

 

なお、ここでは既に Nagios がインストールされ、サーバー監視を実施しているサーバー(以下、Nagios サーバー) が整っているものとして話を進めて行こうと思います。

Nagios のインストール方法については EZ-NET: CentOS 5.4 にサーバー監視ツール Nagios 3.2 をインストールする で記していますのでそちらを参考にしてください。

 

nrpe のインストール

Nagios で外部サーバーのシステムリソースを監視するには、監視対象の外部サーバーに nrpe というパッケージをインストールしておく必要があります。

nrpe パッケージは CentOS 5.5 の場合、平成 22 年 10 月 23 日現在、yum を使って rpmforge リポジトリーから入手することが出来るようになっているようです。rpmforge リポジトリーの追加方法については EZ-NET: Linux の使い方: CentOS 5.4 のシステムアップデート取得先としてリポジトリを追加する を参考にしてみてください。

 

システムリソース監視対象のサーバーへログインしたら、rpmforge リポジトリーが利用できる状態で、次のようにして nrpe に必要なパッケージのインストールを行います。

yum --enablerepo=rpmforge install nagios-nrpe

これにより nrpe の実行ファイル "/usr/sbin/nrpe" およびその設定ファイル "/etc/nagios/nrpe.cfg" がインストールされました。

これと併せて nagios-plugins パッケージがインストールされることにより、"/usr/lib64/nagios/plugins" ディレクトリーには、システムリソースを監視するための Nagios プラグインが自動的に用意されました。

 

システムリソース監視対象のサーバーへ nrpe のインストールが完了したら、まずは nrpe の動作に関わる設定を行います。

nrpe の設定に当たり、設定ファイル "/etc/nagios/nrpe.cfg" を編集して行きます。

 

最初の主要どころとしては、この設定ファイル内の "server_port" と "server_address" でしょうか。

待ち受けたいポート番号と、必要に応じて待ち受ける IP アドレスを限定するために、これらの項目を設定しておきます。特に問題がなければ既定値のままでも良いと思います。

他、最初の設定で肝心なのが、この設定ファイル内の "allowed_hosts" の項目です。ここで、nrpe へ情報を取得しにくる Nagios の IP アドレスを指定します。初期値では localhost のみが接続対象となっているので、適切な IP アドレスを設定しておく必要があります。

ここでは、カンマ区切りで複数の IP アドレスを指定することが出来るようでした。

 

ただし、IP をカンマ区切りで指定する際に、カンマの前後に空白文字を入れてしまうと正しく動作しないので、必ず、空白文字を入れないで IP アドレスを列挙するように注意します。

空白を入れてしまって接続が拒否された場合、Nagios の管理ページには "Could not complete SSL handshake" というエラーが表示されてしまうので気をつけましょう。

 

ここまでできたら、ひとまず nrpe を起動してくことにしましょう。

service nrpe start

併せて、次のようにして Linux の起動時に nrpe が自動起動するようにしておくと良いでしょう。

chkconfig nrpe on

 

nrpe を設定する : 被監視側

外部サーバーのシステムリソースを監視するにあたり、そのサーバー上の nrpe で、監視したいリソース情報を登録しておく必要があります。

監視したいリソースの設定は "/etc/nagios/nrpe.cfg" 内で行います。

あらかじめいくつかの監視リソースが設定されているようでしたので、今回はそこからひとつを抜粋して、そのリソースを監視する設定を行ってみたいと思います。

command[check_hda1]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p /dev/hda1

既定でこのような監視設定がされていました。

command というのが監視設定で、この [ ] の中に記されている名称を使って、外部から Nagios がこのリソース情報を取得します。

リソース監視は、ここで指定されている Nagios プラグインが実施するので、以降の設定方法は通常の Nagios と同じ感じになります。

ここでは check_disk プラグインを使用していますので、パーティション "/dev/hda1" の空き容量が 20% を切った時点で WARNING をだし、10% を切った場合は CRITICAL とするという設定になっています。

 

このような形で、任意の Nagios プラグインをコマンド名に関連付けて行く形になります。

なお、任意の引数を利用したコマンドを用意することも出来るらしいのですが、セキュリティーの面からお勧めできないような記載がありましたので、今回は任意の引数を持たないコマンドだけでやってみたいと思います。

 

nrpe を設定する : 監視側

システムリソース監視対象のサーバーで nrpe の設定が完了したら、実際の Nagios で監視しているサーバー側に、これらのシステムリソースを監視する設定を行います。

外部サーバーを nrpe で監視するためには check_nrpe プラグインが必要になります。

インストールされていない場合は、次のようにして rpmforge から nagios-plugins-nrpe パッケージをインストールすることができます。

yum --enablerepo=rpmforge install nagios-plugins-nrpe

check_nrpe プラグインの用意が出来たら、それを用いて監視を行うためのコマンドを "/etc/nagios/objects/commands.cfg" に登録します。

define command {

 

command_name check-nrpe-command

command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$

}

たとえば、このような感じでしょうか。

これにより、監視対象として check-nrpe-command に監視先のコマンド名を引数として渡すことで、外部サーバーのシステムリソースを監視することが出来るようになります。

もし、外部サーバー上で nrpe の待ち受けポートを変更している場合には、check_nrpe のオプションとして -p 2222 というようにポート番号を指定することで、任意のポートでの nrpe による情報取得が可能です。

 

こうしたら、"/etc/nagios/objects/" 内の適切な設定ファイル内の check_command として、たとえば次のように追記することで、外部サーバーのハードディスクの使用容量を監視することができるようになります。

check_command    check-nrpe-command!check_hda1

こうしたら、次のように Nagios に設定ファイルを読み込ませて、外部サーバーのシステムリソースが監視され始めることを確認します。

nagios -v /etc/nagios/nagios.cfg

service nagios reload

監視が始まるまでに少し時間がかかる場合もありますが、ステータスが "Pending" から "OK" などの別のステータスに変化したら、これで、外部リソースが監視され、その情報を Nagios 管理ページから確認することが可能になります。