(1)コンパイル
ダウンロードしたnrpe-1.2.5.tar.gz を適当なディレクトリに展開し、約束どおりのコマンドでコンパイルは終了です。(なんと簡単な。)
# tar xvzf nrpe-1.2.5.tar.gz
# cd nrpe-1.2.5
# ./configure
# make all |
そして、(nrpe-1.2.5)/src というディレクトリに作成された nrpe と check_nrpe が目的のバイナリファイルです。
左図のように、この nrpe をリモートホスト上で実行し、check_nrpe をNetSaintを稼動させているホスト上で実行することになります。
リモートホスト上でNetSaintを稼動させておく必要はありませんが、NetSaintのプラグイン(check_procs、check_disks、check_users、check_load等)が必要となりますので、リモートホストにもNetSaintをインストールしておくようにしましょう。
また、注意しなければならないのは、nrpe と check_nrpe はそれぞれ違うホスト上で実行するわけですから、各々のマシンでコンパイルしなければなりません。
(2)インストール
まず、NetSaintを稼動させているホストへのインストールは、作成した check_nrpe
をNetSaintで使用している他のプラグイン(check_ping等)と同じディレクトリ(デフォルトでインストールしている場合は、/usr/local/netsaint/libexec
)にコピーするだけです。
| # cp src/check_nrpe /usr/local/netsaint/libexec/ |
また、リモートホスト上では、そのマシンでコンパイルした nrpe とnrpeの設定ファイルである
nrpe.cfg を適当な場所にコピーします。
今回は、リモートホスト上にもNetSaintをインストールしておくことにしていますので、それぞれを
/usr/local/netsaint/libexec と /usr/local/netsaint/etc のディレクトリにコピーします。
# cp (リモートホスト上でコンパイルした)nrpe (リモートホスト上の)/usr/local/netsaint/libexec/
# cp (リモートホスト上でコンパイルした)nrpe.cfg (リモートホスト上の)/usr/local/netsaint/etc/ |
(3)リモートホストでの各種設定
それでは、リモートホスト上でnrpe をxinetd の下で実行するのに必要な各種設定を行います。
まず、インストールした nrpe.cfg の内容を見てみましょう。
####################################################
# Sample NRPE Config File
# Written by: Ethan Galstad (netsaint@netsaint.org)
#
# Last Modified: 03/30/2000
####################################################
< 一 部 省 略 >
#
# Note: Any plugins that are used in the command lines must reside
# on the machine that this daemon is running on! The examples below
# assume that you have plugins installed in a /usr/local/netsaint/libexec
# directory.
command[check_users]=/usr/local/netsaint/libexec/check_users 5 10
command[check_load]=/usr/local/netsaint/libexec/check_load 5 10 15 20 25 30
command[check_disk1]=/usr/local/netsaint/libexec/check_disk 80 95 /dev/hda1
command[check_disk2]=/usr/local/netsaint/libexec/check_disk 80 95 /dev/hdb1
command[check_zombie_procs]=/usr/local/netsaint/libexec/check_procs 5 10 Z
command[check_total_procs]=/usr/local/netsaint/libexec/check_procs 150 200 |
最後のところに、具体的なプラグインのフォーマットが記述されていますが、必要に応じてインストールしたリモートホストで使えるよう修正しましょう。
各プラグインの引数については、
| # /usr/local/netsaint/libexec/check_users --help |
とすれば意味が表示されるので参考にしてください。
さて、nrpe は 5666番のポートを使用し、TCPを使ってデータのやりとりをおこないます。
そこで、リモートホストの /etc/services のファイルに次の内容を追加します。
これを追加しておかないと、後で xinetd をリスタートさせても nrpe が正しく動きませんので注意してください。
なお、ポート番号については、空いている番号であれば任意の番号を使うこともできます。
次に、下記の内容で nrpe というファイルを /etc/xinetd.d/ ディレクトリに作成します。
# default: on
# description: NRPE
service nrpe
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user =
netsaint
server = /usr/local/netsaint/libexec/nrpe
server_args = -i /usr/local/netsaint/etc/nrpe.cfg
log_on_failure += USERID
only_from = NetSaint ServerのIPまたはドメイン
} |
以上で、リモートホスト上の設定が終了しましたので、xinetd をリスタートさせます。
| # /etc/init.d/xinetd restart |
リスタート後、nrpeが正しくxinetd に登録されたかを確認しましょう。
として、
| Oct 14 12:57:19 ms12 xinetd[29696]: Unknown service: nrpe/tcp |
という表示があった場合、nrpeが正しく登録されていませんので、もう一度設定した内容を見直すことにしましょう。(正しく登録された場合には、特に表示はありません。)
なお、xinetd でなく inetd を使用している場合には、/etc/inetd.conf ファイルに次の内容を追加します。
nrpe stream tcp nowait netsaint /usr/sbin/tcpd
/usr/local/netsaint/libexec/nrpe -i
/usr/local/netsaint/etc/nrpe.cfg |
(実際には、1行で記入します。)
また、/etc/hosts.deny に次の内容を追加します。
| nrpe: ALL EXCEPT NetSaint ServerのIPまたはドメイン |
(4)NetSaint側(ローカルホスト)の設定
まずは、check_nrpe というコマンドの登録です。
/usr/local/netsaint/etc/hosts.cfg の「COMMAND CONFIGURATION」のところに、以下の行を追加します。
| command[check_nrpe]=/usr/local/netsaint/libexex/check_nrpe $HOSTADDRESS$ -c $ARG1$ |
$HOSTADDRESS$にはターゲットとなるリモートホストのIPアドレスが、$ARG1$にはリモートホスト上で実行するローカルプラグイン(check_procs、check_users等)がセットされます。
なお、私の環境では、このコマンドの登録を /usr/local/netsaint/etc/command.cfg
ファイルに行った場合、うまく作動しませんでしたので注意してください。
次に、「SERVICE CONFIGURATION」のところで、ターゲットとなるリモートホストに対して実行するローカルプラグインを定義します。
以下に例を示します。
service[remote]=Users;0;24x7;3;5;1;admins;120;24x7;0;0;0;;check_nrpe!check_users
service[remote]=CPU;0;24x7;3;5;1;admins;120;24x7;0;0;0;;check_nrpe!check_load
service[remote]=HDA1;0;24x7;3;5;1;admins;120;24x7;0;0;0;;check_nrpe!check_disk1
service[remote]=HDB1;0;24x7;3;5;1;admins;120;24x7;0;0;0;;check_nrpe!check_disk2
service[remote]=Total Proc;0;24x7;3;5;1;admins;120;24x7;0;0;0;;check_nrpe!check_total_procs
service[remote]=Zombie Proc;0;24x7;3;5;1;admins;120;24x7;0;0;0;;check_nrpe!check_zombie_procs
|
以上でNetSaint側の準備もできました。
新しい設定を有効にするためにNetSaintを再起動させれば完了です。
実際には、稼動しているNetSaintを一旦ストップし、起動テスト( pre-flight
check )を行ってから、スタートさせましょう。
さて、せっかくNRPEが動くようになったところですが、NRPEの場合データのやりとりを平文で行っているため、セキュリティ面で少々問題があります。
そこで、NetSaintサーバーとリモートホスト間のデータを暗号化してやりとりする
NRPEP(NetSaint Remote Plugin Executor/Perl) がありますので、こちらを使うようにしたほうがいいでしょう。(~_~;)
|