NRPE (Nagios Remote Plugin Executor)

Linuxサーバーのリソース監視ツールで あるnrpeをインストールする。
Nagiosにおけるサーバーのリソース監視は、プラグインにより 行うが、標準ではNagiosをインストールしているホスト自身のものはできるがリモートのホストのリソースについては不可能である。
これを改善するツールがnrpeであり、Na
giosのプラグイン による監視をネットワークを使って吸い上げる構造になっている。

(1)コンパイル

  最新バージョンであるnrpe-2.0.tar.gz で試してみたが、
        CHECK_NRPE: Error - Could not complete SSL handshake
  なるエラーが出てデータの取得が出来ない。
 (原因は定かではないが、別のPCでopenssl−develをインストール した後コンパイルして見たところ難なく動作した。)

そこでSSLを使っていない一つ前の nrpe-1.9.tar.gz を使う  ことにして http://public.kde.planetmirror.com/pub/nagios/ からダウンロードした。

インストールはウンロードしたnrpe-1.9.tar.gz を適当なディレクトリに展開。
   # tar  xvzf nrpe-1.9.tar.gz
   # cd  nrpe-1.9
   # ./configure
   # make all

そして、(nrpe-1.9)/src というディレクトリに作成された nrpecheck_nrpe が目的のバイナリファイルです。
左図のように、この nrpe をリモートホスト上で実行し、check_nrpe をNagiosを稼動させているホスト上で実行することになる。

リモートホスト上でNagiosを稼動させておく必要はないが、
Nagiosのプラグイン(check_procs、 check_disks、check_users、check_load等)が必要となるので、リモートホストにもNagiosの plugin
はインストールすることにした。

ここで、nrpe と check_nrpe はそれぞれ違うホスト上で実行するわけなので各々のマシンでコンパイルするひつようがある。



(2) インストール
まず、Nagiosを稼動させているホストへのインストールは、作成した check_nrpe をNagiosで使用している他のプラグイン(check_ping等)と同じディレクトリ(デフォルトでインストールしている場合は、 /usr/local/nagios/libexec )にコピーする。
   # cp  src/check_nrpe  /usr/local/nagios/libexec/

また、リモートホスト上では、そのマシンでコンパイルした nrpe とnrpeの設定ファイルである nrpe.cfg を適当な場所にコピーする。
  つまり /usr/local/nagios/libexec と /usr/local/nagios/etc のディレクトリにコピーする。
  # cp  (リモートホスト上でコンパイルした)nrpe  (リモートホスト上の)/usr/local/nagios/libexec/
  # cp  (リモートホスト上でコンパイルした)nrpe.cfg  (リモートホスト上の)/usr/local/nagios/etc/


(3) リモートホストでの各種設定
それでは、リモートホスト上でnrpe をxinetd の下で実行するのに必要な各種設定を行う。
まず、インストールした nrpe.cfg の内容を見てみるが、

############################################################################
# Sample NRPE Config File
# Written by: Ethan Galstad (nagios@nagios.org)
#
# Last Modified: 12-30-2002
#
# NOTES:
# This is a sample configuration file for the NRPE daemon.  It needs to be
# located on the remote host that is running the NRPE daemon, not the host
# from which the check_nrpe client is being executed.
#############################################################################



# PORT NUMBER
# Port number we should wait for connections on.
# NOTE: This must be a non-priviledged port (i.e. > 1024).
# NOTE: This option is ignored if NRPE is running under either inetd or xinetd

server_port=5666

******** 途中省略 ********

command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
command[check_disk1]=/usr/local/nagios/libexec/check_disk -w 20 -c 10 -p /dev/hda5
command[check_disk2]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/hdb1
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -sZ
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200
そのままで使えそうなので、最後のところにだけ、今回のホストで使えるように修正した。

各プラグインの引数については、
   #  /usr/local/nagios/libexec/check_users  --help
とすれば意味が表示される。

nrpe は 5666番のポートを使用し、TCPを使ってデータのやりとりをおこなっているのでリモートホストの /etc/services のファイルに次の内容を追加する。
   nrpe      5666/TCP        # NRPE

これを追加しておかないと、後で xinetd をリスタートさせても nrpe が正しく動かないようである。
なお、ポート番号については、空いている番号であれば任意の番号を使うことも可能なようである。

次に、nrpe の起動を xinetd で出来るよう下記の内容で nrpe というファイルを /etc/xinetd.d/ ディレクトリに作成する。

   #  default: on
   #  description: NRPE
   service  nrpe
   {
        disable          =  no
        flags             =  REUSE
        socket_type   =  stream
        wait              =  no
        user              =  nagios
        server           =  /usr/local/nagios/libexec/nrpe
        server_args    =  -c  /usr/local/nagios/etc/nrpe.cfg --inetd
        log_on_failure  +=  USERID
        only_from       =  192.168.0.6     NagiosホストのIPアドレス
   }

以上で、リモートホスト上の設定が終了しましたので、xinetd をリスタートさせる。
   # /etc/init.d/xinetd restart

リスタート後、nrpeが正しくxinetd に登録されたかを確認する。
   # tail  /var/log/messages

として、
   Oct 14 12:57:19 ms12 xinetd[29696]: Unknown service: nrpe/tcp

という表示があった場合、nrpeが正しく登録されていないので、もう一度設定した内容を見直すことが
必要となる。

また、/etc/hosts.deny に次の内容を追加します。
   nrpe:      ALL  EXCEPT Nagios ServerのIPまたはドメイン


(4) Nagios側(ローカルホスト)の設定
まずは、check_nrpe というコマンドの登録する。
/usr/local/nagios/etc/checkcommands.cfg に、以下の行を追加します。
# 'check_nrpe' command definition
define command{
        command_name    check_nrpe
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
        }

$HOSTADDRESS$にはターゲットとなるリモートホストのIPアドレスが、$ARG1$にはリモートホスト上で実行するローカルプラグイン (check_procs、check_users等)がセットされる。
 
次に、services.cfg にも監視する項目を追加する。

# Service definition
define service{
        use                             generic-service         ; Name of servic
e template to use

        host_name                       test
        service_description             DISKCHECK
        is_volatile                       0
        check_period                     24x7
        max_check_attempts           5
        normal_check_interval          30
        retry_check_interval            1
        contact_groups                  linux-admins
        notification_interval            120
        notification_period              24x7
        notification_options             c,r
        check_command                 check_nrpe!check_disk1
        }

以上でNagios側の準備もでたことになる。再起動させれば完了である。 
以下に監視画面を示す。

監視画面

 とりあえず動かすことは出来たが、やはり通信の暗号化は必要であるので再度Ver2.0に挑戦するつもりである。

前 ページ