第3章 Nagios を使用したモニタリング
3.1. Nagios サービスのインストール
Nagios モニタリングシステムは、OpenStack ネットワークとインフラストラクチャーのモニタリングおよび警告の提供に使用することができます。本インストール手順では、以下のパッケージをインストールします。
- nagios
- ネットワーク上のホストとサービスをモニタリングして、問題が発生した場合や解決した場合にメールの送信や警告の通知ができる Nagios プログラム
- nagios-devel
- Nagios 関連のアプリケーションで使用可能なファイルが含まれます。
- nagios-plugins*
- (ping および nrpe など) Nagios 関連のアプリケーションの Nagios プラグイン
- gd
- 動的にイメージを作成するためのグラフィックライブラリー
- gd-devel
- グラフィックライブラリーの開発ライブラリー (gd)
- php
- Web インターフェース向けに Nagios が使用する HTML 埋め込みスクリプト言語
- gcc、glibc、glibc-common
- GNU コンパイラーコレクション、標準プログラミングライブラリー、およびバイナリー (ロケールサポートを含む)
- openssl
- マシン間のセキュアな通信のサポートを提供する OpenSSL ツールキット
yum コマンドで root ユーザーとして必要なパッケージをインストールします。
# yum install nagios nagios-devel nagios-plugins\* gd gd-devel php gcc glibc glibc-common openssl
これらのいずれかのパッケージが即時に利用できない場合には (例: gd-devel や gcc など)、subscription-manager を使用してオプションの Red Hat チャンネルを有効にする必要がある可能性があります。
# subscription-manager repos --enable rhel-7-server-optional-rpms
3.1.1. Nagios サービスの配置
OpenStack 環境の外部にあるサーバーへ Nagios をデプロイするように検討してみてください。システムに問題が発生した場合に診断情報を受信することができます。さらに、Nagios を最適な状態に設定するには、複数の点を検討する必要があります。
- SSH を使用する場合には、Nagios サービスの CPU オーバーヘッドは高くなる可能性があります。
- Nagios は、セキュリティーイベントを監視する場合は特に、セキュアにロックダウンされたサーバーでホストする必要があります。Nagios サーバーは、幅広い範囲のシステムからトラフィックを受信します。セキュリティーの分離が必要な場合には、特権システムと見なされ、OpenStack ノードに適用するルール以外に、ファイアウォールルールを追加する必要があります。
- Nagios サーバーは、大量のネットワークトラフィックを受信するため、リソースの競合が発生する可能性があります。
3.1.2. NRPE アドオンのインストール
NRPE (Nagios Remote Plugin Executor) プラグインは、ホストのサービスのステータスをチェックして、Nagios サービスにレポートを送り返すのに使用する、コンパイル済みの実行可能ファイルまたはスクリプトです。OpenStack クラウドが複数のマシン間で分散されている場合には、NPRE アドオンを使用して、それらのリモートマシン上のプラグイン情報にアクセスすることができます。
NRPE と Nagios プラグインは、モニタリングの対象となる各リモートマシンにインストールしておく必要があります。各リモートマシンで、root ユーザーとして次のコマンドを実行します。
# yum install -y nrpe nagios-plugins\* openssl
インストールの終了後には、/usr/lib64/nagios/plugins/
ディレクトリーで使用可能なすべてのプラグインを確認することができます。
リモートの Nagios プラグインへのアクセスには、SSH を使用することも可能ですが、この操作を行うと、Nagios ホストとリモートマシンの両方で、CPU 負荷が過度に高くなるため、お勧めできません。
3.2. Nagios の設定
Nagios はサーバー、ローカルおよびリモートマシンからサーバーにオブジェクト/ホストの情報のレポートを送り返すプラグイン、Web インターフェース、およびそれらすべてを結びつける設定によって構成されます。
少なくとも以下の操作を完了しておく必要があります。
- Web インターフェースのユーザー名とパスワードを確認し、基本設定をチェックします。
- ローカルサーバーに OpenStack モニタリングを追加します。
OpenStack クラウドに分散ホストが含まれている場合には、次の作業を行います。
- 各リモートマシン (監視対象のサービスが実行される) に NRPE をインストールし、設定します。
- 監視対象のホストを Nagios に指示します。
- 各ホストの監視対象のサービスを Nagios に指示します。
表3.1 Nagios の設定ファイル
ファイル名 | 説明 |
---|---|
/etc/nagios/nagios.cfg | Nagios のメインの設定ファイル |
/etc/nagios/cgi.cfg | CGI 設定ファイル |
/etc/httpd/conf.d/nagios.conf | Nagios の httpd 用設定 |
/etc/nagios/passwd | Nagios ユーザーのパスワードファイル |
/usr/local/nagios/etc/ResourceName.cfg | ユーザー固有情報を格納 |
/etc/nagios/objects/ObjectsDir/ObjectsFile.cfg | サービスやコンタクトグループなどの項目についての情報を保管するために使用されるオブジェクト定義ファイル |
/etc/nagios/nrpe.cfg | NRPE 設定ファイル |
3.2.1. Nagios 用の HTTPD の設定
デフォルトで Nagios のインストール時に設定されるデフォルトの httpd ユーザーとパスワードは nagiosadmin / nagiosadmin です。この値は、/etc/nagios/cgi.cfg
ファイルで確認することができます。
nagios の HTTPD を設定するには、以下のステップに従います。
- root ユーザーとしてログインします。
ユーザー nagiosadmin のデフォルトパスワードを変更するには、以下のコマンドを実行します。
# htpasswd -c /etc/nagios/passwd nagiosadmin
注記新規ユーザーを作成するには、新規ユーザー名で以下のコマンドを使用します。
# htpasswd /etc/nagios/passwd newUserName
/etc/nagios/objects/contacts.cfg
で nagiosadmin のメールアドレスを更新します。define contact{ contact_name nagiosadmin ; Short name of user [...snip...] email yourName@example.com ; << CHANGE THIS }
基本設定が機能しているかどうかを確認します。
# nagios -v /etc/nagios/nagios.cfg
エラーが発生した場合には、
/etc/nagios/nagios.cfg
に設定されているパラメーターをチェックします。システムのブート時に Nagios が自動的に起動するようにします。
# chkconfig --add nagios # chkconfig nagios on
Nagios を起動し、httpd を再起動します。
# service httpd restart # service nagios start
ブラウザーで以下の URL を使用して Nagios のアクセスをチェックします。nagiosadmi ユーザーとステップ 2 で設定したパスワードを使用してください。
http://nagiosHostURL/nagios
図3.1 Nagios のログイン
Nagios URL にアクセスできない場合には、ファイアウォールルールが正しく設定されているかどうか確認してください。
3.2.2. Nagios が OpenStack サービスを監視するようにするための設定
デフォルトでは、Nagios サーバー上の /etc/nagios/objects/localhost.cfg
ファイルを使用して、基本ローカル統計 (例: スワップの使用率や現在のユーザー数など) のためのサービスを定義します。これらのサービスが必要なくなった場合には、各行頭に「#」の文字を入れることによって、随時コメントアウトすることが可能です。またこれと同じファイルを使用して、新規 OpenStack モニタリングサービスを追加することができます。
追加のサービスファイルを使用することが可能ですが、それらのファイルは、/etc/nagios/nagios.cfg
ファイルで cfg_file パラメーターとして指定する必要があります。
- root ユーザーとしてログインします。
監視対象の項目用に短いスクリプトを記述して (例: サービスが実行中か否かなど)、
/usr/lib64/nagios/plugins
ディレクトリーに配置します。たとえば、以下のスクリプトは、コンピュートインスタンスの数をチェックし、
nova-list
という名前のファイルに保管されます。#!/bin/env bash export OS_USERNAME=userName export OS_TENANT_NAME=tenantName export OS_PASSWORD=password export OS_AUTH_URL=http://identityURL:35357/v2.0/ data=$(nova list 2>&1) rv=$? if [ "$rv" != "0" ] ; then echo $data exit $rv fi echo "$data" | grep -v -e '--------' -e '| Status |' -e '^$' | wc -l
スクリプトを実行可能にします。
# chmod a+x nova-list
/etc/nagios/objects/commands.cfg
ファイルで、各新規スクリプトにコマンドセクションを指定します。define command { command_line /usr/lib64/nagios/plugins/nova-list command_name nova-list }
/etc/nagios/objects/localhost.cfg
ファイルで、以下の例にように、定義済みのコマンドを使用して、各新規項目に対してサービスを定義します。define service { check_command nova-list host_name localURL name nova-list normal_check_interval 5 service_description Number of nova vm instances use generic-service }
以下のコマンドで nagios を再起動します。
# service nagios restart
3.2.3. NRPE の設定
各リモートマシンで監視の設定をするには、以下の手順を root ユーザーとして実行します。
/etc/nagios/nrpe.cfg
ファイルで、allowed_hosts
の行に中央 Nagios サーバーの IP アドレスを追加します。allowed_hosts=127.0.0.1, NagiosServerIP
/etc/nagios/nrpe.cfg
ファイルで、OpenStack サービスの監視に使用するコマンドを以下の例のように追加します。command[keystone]=/usr/lib64/nagios/plugins/check_procs -c 1: -w 3: -C keystone-all
次に、Nagios 監視サーバーの
services.cfg
ファイルに、定義済みの各コマンドを指定することができます。注記複雑な監視はスクリプトに配置して、コマンドの定義で参照することができます。
- 次に、ファイアウォールを設定して
nrpe
トラフィックを許可します。 NRPE サービスを起動します。
# service nrpe start
3.2.4. ホストの定義の作成
Nagios がインストールされているホストに加えて、クラウドで追加のマシンを使用する場合には、Nagios が認識するようにオブジェクトファイルで設定する必要があります。
- root ユーザーとしてログインします。
/etc/nagios/objects/
ディレクトリーにhosts.cfg
ファイルを作成します。このファイルで、OpenStack サービスを実行している、モニタリングする必要のある各マシンの host セクションを指定します。
define host{ use linux-server host_name remoteHostName alias remoteHostAlias address remoteAddress }
ここで、
host_name
には、モニタリングするリモートマシンを指定します (通常は、ローカルの/etc/hosts
ファイルに記載されています)。この名前は、サービスおよびホストグループの定義でホストを参照するのに使用されます。alias
には、ホストを容易に特定するために使用する名前を指定します (通常は、host_name
と同じです)。address
には、ホストアドレスを指定します (通常は IP アドレスですが、FQDN を使用することも可能です。DNS サービスが使用可能であることを確認してください)。
例:
define host{ host_name Server-ABC alias OS-ImageServices address 192.168.1.254 }
/etc/nagios/nagios.cfg
ファイルのOBJECT CONFIGURATION FILES
セクションの下に以下の行を記載します。cfg_file=/etc/nagios/objects/hosts.cfg
3.2.5. リモートサービスのサービス定義の作成
リモートサービスをモニタリングするには、新規ファイル (本手順では /etc/nagios/objects/services.cfg
) でそれらのサービスを定義する必要があります。
- root ユーザーとしてログインします。
/etc/nagios/objects/commands.cfg
ファイルに以下の内容を記載して、リモートのスクリプトまたはプラグインでcheck_nrpe
プラグインの使用を処理するように指定します。define command{ command_name check_nrpe command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ }
/etc/nagios/objects/
ディレクトリーにservices.cfg
ファイルを作成します。作成したファイルで、モニタリングするリモートの OpenStack ホストごとに以下の
services.cfg
セクションを記載します。##Basic remote checks############# ##Remember that remoteHostName is defined in the hosts.cfg file. define service{ use generic-service host_name remoteHostName service_description PING check_command check_ping!100.0,20%!500.0,60% } define service{ use generic-service host_name remoteHostName service_description Load Average check_command check_nrpe!check_load } ##OpenStack Service Checks####### define service{ use generic-service host_name remoteHostName service_description Identity Service check_command check_nrpe!keystone }
上記のセクションにより、サーバーのハートビート、負荷チェック、OpenStack Identity サービスのステータスレポートが、Nagios サーバーに返送されます。すべての OpenStack サービスがレポート可能です。リモートサーバーの
nrpe.cfg
ファイルに、一致するコマンドが記載されていることを確認してください。/etc/nagios/nagios.cfg
ファイルのOBJECT CONFIGURATION FILES
セクションの下に以下の行を記載します。cfg_file=/etc/nagios/objects/services.cfg
3.2.6. Nagios 設定の検証
- root ユーザーとしてログインします。
更新した設定ファイルが機能しているかどうかを確認します。
# nagios -v /etc/nagios/nagios.cfg
エラーが発生した場合には、
/etc/nagios/nagios.cfg
、/etc/nagios/services.cfg
、/etc/nagios/hosts.cfg
で指定されているパラメーターを確認してください。Nagios を再起動します。
# service nagios restart
ブラウザーで以下の URL にアクセスして、Nagios ダッシュボードに再度ログインします。nagiosadmin ユーザーとステップ 1 で設定したパスワードを使用します。
http://nagiosHostURL/nagios
Comments