Nagios 3.0でリモートLinuxホストを監視する方法:初心者向けステップバイステップ完全ガイド

前回の記事「Nagios 3.0 ジャンプスタートガイド」では、Red HatサーバーにおけるNagios 3.0の概要、インストール、設定について解説しました。今回から3回にわたり、リモートLinuxホストおよびその上で稼働する各種サービスの監視方法を詳しく説明していきます。その他のNagios関連記事も併せてご覧ください。
本記事の目次
I. 概要
II. リモートホストにNagiosプラグインとNRPEをインストールするステップ
III. Nagios監視サーバー側で行う設定ステップ
I. 概要
Nagios(nagios-serverにインストールされたもの)が、リモートLinuxホスト上のサービス(例:ディスク使用量)を監視する際、大まかには以下の3つのステップが実行されます。
- Nagiosはnagios-server上でcheck_nrpeコマンドを実行し、check_diskコマンドを使用してリモートホストのディスク使用量を監視するよう要求します。
- nagios-server上のcheck_nrpeは、リモートホスト上のNRPEデーモンに接続し、リモートホストでのcheck_diskの実行を依頼します。
- check_diskコマンドの実行結果は、NRPEデーモンからnagios-server上のcheck_nrpeへ返送されます。
この一連の流れを図式化すると以下の通りです。
Nagios Server (check_nrpe) —–> リモートホスト (NRPEデーモン) —–> check_disk Nagios Server (check_nrpe) <—– リモートホスト (NRPEデーモン) <—– check_disk(ディスク使用量を返却)
II. リモートホストにNagios PluginsとNRPEをインストールするステップ
1. Nagios PluginsとNRPEアドオンのダウンロード
Nagios.orgから以下のファイルをダウンロードし、/home/downloadsディレクトリに配置します。
- nagios-plugins-1.4.11.tar.gz
- nrpe-2.12.tar.gz
2. nagiosアカウントの作成
[remotehost]# useradd nagios [remotehost]# passwd nagios
3. nagios-pluginのインストール
[remotehost]# cd /home/downloads [remotehost]# tar xvfz nagios-plugins-1.4.11.tar.gz [remotehost]# cd nagios-plugins-1.4.11 [remotehost]# export LDFLAGS=-ldl [remotehost]# ./configure --with-nagios-user=nagios --with-nagios-group=nagios --enable-redhat-pthread-workaround [remotehost]# make [remotehost]# make install [remotehost]# chown nagios.nagios /usr/local/nagios [remotehost]# chown -R nagios.nagios /usr/local/nagios/libexec/
注意: Red Hat環境では、./configureの実行中に「checking for redhat spopen problem…」というメッセージが表示されて処理が止まることがあります。この問題への回避策として、./configureコマンドに--enable-redhat-pthread-workaroundオプションを追加してください。
4. NRPEのインストール
[remotehost]# cd /home/downloads [remotehost]# tar xvfz nrpe-2.12.tar.gz [remotehost]# cd nrpe-2.12 [remotehost]# ./configure [remotehost]# make all [remotehost]# make install-plugin [remotehost]# make install-daemon [remotehost]# make install-daemon-config [remotehost]# make install-xinetd
5. NRPEをデーモン(xinetd経由)として動作させる設定
- /etc/xinetd.d/nrpeを編集し、only_fromディレクティブにNagios監視サーバーのIPアドレスを追加します。127.0.0.1の後にスペースを空けて、監視サーバーのIPアドレスを記述してください(この例では監視サーバーのIPアドレスは192.168.1.2です)。
only_from = 127.0.0.1 192.168.1.2
- /etc/servicesを編集し、ファイルの末尾に以下の行を追加します。
nrpe 5666/tcp # NRPE
- xinetdサービスを再起動します。
[remotehost]# service xinetd restart
- NRPEがポートをリッスンしているか確認します。
[remotehost]# netstat -at | grep nrpe tcp 0 0 *:nrpe *:* LISTEN
- NRPEが正常に機能していることを確認します。
[remotehost]# /usr/local/nagios/libexec/check_nrpe -H localhost NRPE v2.12
6. /usr/local/nagios/etc/nrpe.cfgの編集
リモートホスト上に配置されるnrpe.cfgファイルには、リモートホスト上の各種サービスをチェックするために必要なコマンドが定義されています。デフォルトでは、いくつかの標準的なチェックコマンドがサンプルとして同梱されています。例として、check_usersとcheck_loadを以下に示します。
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
これらのチェックコマンドにおいて、「-w」は「Warning(警告)」、「-c」は「Critical(致命的)」を表します。たとえば、下記のcheck_diskコマンドの場合、利用可能なディスク容量が20%以下になるとNagiosは警告メッセージを送信し、10%以下になるとクリティカルメッセージを送信します。ご自身の環境に合わせて「-c」と「-w」パラメータの値を適宜調整してください。
command[check_disk]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/hda1
注意: nrpe.cfgに定義されているコマンドは、リモートホストのコマンドラインから直接実行して結果を確認することができます。たとえば、実際にcheck_diskコマンドを実行すると、以下のように表示されました。
[remotehost]#/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/hda1 DISK CRITICAL - free space: / 6420 MB (10% inode=98%);| /=55032MB;51792;58266;0;64741
この例では、/dev/hda1の空きディスク容量が10%しかないためCRITICALメッセージが表示されています。このメッセージがNagiosサーバーへ返される仕組みです。
III. Nagios監視サーバー側で行う設定ステップ
1. NRPEアドオンのダウンロード
Nagios.orgからnrpe-2.12.tar.gzをダウンロードし、/home/downloadsに配置します。
2. Nagios監視サーバーへのcheck_nrpeのインストール
[nagios-server]# tar xvfz nrpe-2.12.tar.gz [nagios-server]# cd nrpe-2.12 [nagios-server]# ./configure [nagios-server]# make all [nagios-server]# make install-plugin
./configureを実行すると、以下のような設定サマリーが表示されます。
*** Configuration summary for nrpe 2.12 05-31-2008 ***: General Options: ————————- NRPE port: 5666 NRPE user: nagios NRPE group: nagios Nagios user: nagios Nagios group: nagios
注意: ./configureの実行中に「checking for SSL headers… configure: error: Cannot find ssl headers」というエラーが発生することがあります。その場合は、以下のようにopenssl-develをインストールしてから./configureを再実行すれば解決できます。
[nagios-server]# rpm -ivh openssl-devel-0.9.7a-43.16.i386.rpm krb5-devel-1.3.4-47.i386.rpm zlib-devel-1.2.1.2-1.2.i386.rpm e2fsprogs-devel-1.35-12.5.el4.i386.rpm warning: openssl-devel-0.9.7a-43.16.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e Preparing… ########################################### [100%] 1:e2fsprogs-devel ########################################### [ 25%] 2:krb5-devel ########################################### [ 50%] 3:zlib-devel ########################################### [ 75%] 4:openssl-devel ########################################### [100%]
Nagios監視サーバーからリモートホストと通信できるかどうかを確認します。
[nagios-server]#/usr/local/nagios/libexec/check_nrpe -H 192.168.1.3 NRPE v2.12
注意: 192.168.1.3は、上記セクションIIの手順に従ってNRPEとNagiosプラグインをインストール済みのリモートホストのIPアドレスです。
3. リモートホスト用のホスト定義とサービス定義の作成
対象のリモートホストに対するホスト定義とサービス定義を行うため、新しい設定ファイル/usr/local/nagios/etc/objects/remotehost.cfgを作成します。既存のlocalhost.cfgをremotehost.cfgとしてコピーし、必要に応じて編集していくのが効率的でおすすめです。
ホスト定義サンプル:
define host{
use linux-server
host_name remotehost
alias Remote Host
address 192.168.1.3
contact_groups admins
}サービス定義サンプル:
define service{
use generic-service
service_description Root Partition
contact_groups admins
check_command check_nrpe!check_disk
}注意: 上記の例では、remotehostの部分をご自身の環境のリモートホスト名に置き換えてください。
4. nagiosサービスの再起動
以下のコマンドでNagiosを再読み込みし、NagiosのWeb管理画面(https://nagios-server/nagios/)にログインして、監視対象として追加したリモートLinuxサーバーのステータスが正しく表示されていることを確認しましょう。
[nagios-server]# service nagios reload
おすすめのNagios書籍
Nagios Core 3電子書籍 – 私は長年Nagiosを活用していますが、Nagiosがすべてのシステムを監視し、問題が深刻化する前に警告してくれるおかげで、夜も安心して眠れています。Nagiosについて深く理解したい方には、Nagios Core 3の電子書籍を読むことを強くお勧めします。Nagios自体は無料ソフトウェアですので、書籍に少し投資するのは非常に価値のある出費となるはずです。
役立つNagios関連記事
以下のNagios関連記事も参考になるでしょう。
- Nagiosでネットワークスイッチとポートを監視する方法
- Linux上のNagiosでリモートWindowsマシンを監視する方法
- Nagios 3ジャンプスタートガイド(Linux向け) – 概要、インストールと設定
-
Linuxシェルスクリプトで学ぶ数学処理 – 第4回:四則演算から素数判定まで
今回は、数学と数値計算の視点からシェルスクリプトを学んでいきます。前回の記事ではやや複雑なスクリプト(簡易電卓)を紹介しましたが、読者にとっては少し理解しづらかったかもしれません。そこで今回は、内容を小さな単位に分割し、シェルスクリプトのもうひとつの実用的な側面を段階的に習得できるよう構成しました。 これまでの連載記事 この記事までに公開されているシェルスクリプト入門シリーズは以下の3本です。まだお読みでない方は、先に目を通しておくと理解がより深まります。 Linuxシェルと基本のシェルスクリプトを理解する – 第1回 シェルプログラミングが学べる5つのシェルスクリプト – 第2回 Linu
-
【bash入門】シェルスクリプトでuntilループを使う方法
bashにはfor、while、untilという3つのループ構文が用意されています。それぞれ構文や動作は異なりますが、いずれも特定の条件式を評価しながらコードブロックを繰り返し実行するための仕組みです。 untilループは、条件式が「偽(false)」と評価されている間、コードブロックを実行し続けます。これはwhileループとは正反対の動作です。whileループは条件式が「真(true)」である間にコードブロックを実行するのに対し、untilループはその逆の挙動を取ります。 untilループの基本構文 until [ expression ] do code block ... ...