Linuxサーバーのリソース監視ツールで
あるnrpeをインストールする。
Nagiosにおけるサーバーのリソース監視は、プラグインにより
行うが、標準ではNagiosをインストールしているホスト自身のものはできるがリモートのホストのリソースについては不可能である。
これを改善するツールがnrpeであり、Nagiosのプラグイン
による監視をネットワークを使って吸い上げる構造になっている。
(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 というディレクトリに作成された nrpe と check_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
のファイルに次の内容を追加する。
これを追加しておかないと、後で 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 に登録されたかを確認する。
として、
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に挑戦するつもりである。
|