第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 を最適な状態に設定するには、複数の点を検討する必要があります。

  1. SSH を使用する場合には、Nagios サービスの CPU オーバーヘッドは高くなる可能性があります。
  2. Nagios は、セキュリティーイベントを監視する場合は特に、セキュアにロックダウンされたサーバーでホストする必要があります。Nagios サーバーは、幅広い範囲のシステムからトラフィックを受信します。セキュリティーの分離が必要な場合には、特権システムと見なされ、OpenStack ノードに適用するルール以外に、ファイアウォールルールを追加する必要があります。
  3. 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 インターフェース、およびそれらすべてを結びつける設定によって構成されます。

少なくとも以下の操作を完了しておく必要があります。

  1. Web インターフェースのユーザー名とパスワードを確認し、基本設定をチェックします。
  2. ローカルサーバーに OpenStack モニタリングを追加します。
  3. OpenStack クラウドに分散ホストが含まれている場合には、次の作業を行います。

    1. 各リモートマシン (監視対象のサービスが実行される) に NRPE をインストールし、設定します。
    2. 監視対象のホストを Nagios に指示します。
    3. 各ホストの監視対象のサービスを 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 を設定するには、以下のステップに従います。

  1. root ユーザーとしてログインします。
  2. ユーザー nagiosadmin のデフォルトパスワードを変更するには、以下のコマンドを実行します。

    # htpasswd -c /etc/nagios/passwd nagiosadmin
    注記

    新規ユーザーを作成するには、新規ユーザー名で以下のコマンドを使用します。

    # htpasswd /etc/nagios/passwd newUserName
  3. /etc/nagios/objects/contacts.cfgnagiosadmin のメールアドレスを更新します。

    define contact{
        contact_name   nagiosadmin            ; Short name of user
        [...snip...]
        email          yourName@example.com   ; << CHANGE THIS
        }
  4. 基本設定が機能しているかどうかを確認します。

    # nagios -v /etc/nagios/nagios.cfg

    エラーが発生した場合には、/etc/nagios/nagios.cfg に設定されているパラメーターをチェックします。

  5. システムのブート時に Nagios が自動的に起動するようにします。

    # chkconfig --add nagios
    # chkconfig nagios on
  6. Nagios を起動し、httpd を再起動します。

    # service httpd restart
    # service nagios start
  7. ブラウザーで以下の URL を使用して Nagios のアクセスをチェックします。nagiosadmi ユーザーとステップ 2 で設定したパスワードを使用してください。

    http://nagiosHostURL/nagios

図3.1 Nagios のログイン

Nagios Login
注記

Nagios URL にアクセスできない場合には、ファイアウォールルールが正しく設定されているかどうか確認してください。

3.2.2. Nagios が OpenStack サービスを監視するようにするための設定

デフォルトでは、Nagios サーバー上の /etc/nagios/objects/localhost.cfg ファイルを使用して、基本ローカル統計 (例: スワップの使用率や現在のユーザー数など) のためのサービスを定義します。これらのサービスが必要なくなった場合には、各行頭に「#」の文字を入れることによって、随時コメントアウトすることが可能です。またこれと同じファイルを使用して、新規 OpenStack モニタリングサービスを追加することができます。

注記

追加のサービスファイルを使用することが可能ですが、それらのファイルは、/etc/nagios/nagios.cfg ファイルで cfg_file パラメーターとして指定する必要があります。

  1. root ユーザーとしてログインします。
  2. 監視対象の項目用に短いスクリプトを記述して (例: サービスが実行中か否かなど)、/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
  3. スクリプトを実行可能にします。

    # chmod a+x nova-list
  4. /etc/nagios/objects/commands.cfg ファイルで、各新規スクリプトにコマンドセクションを指定します。

    define command {
            command_line                   /usr/lib64/nagios/plugins/nova-list
            command_name                   nova-list
    }
  5. /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
            }
  6. 以下のコマンドで nagios を再起動します。

    # service nagios restart

3.2.3. NRPE の設定

各リモートマシンで監視の設定をするには、以下の手順を root ユーザーとして実行します。

  1. /etc/nagios/nrpe.cfg ファイルで、allowed_hosts の行に中央 Nagios サーバーの IP アドレスを追加します。

    allowed_hosts=127.0.0.1, NagiosServerIP
  2. /etc/nagios/nrpe.cfg ファイルで、OpenStack サービスの監視に使用するコマンドを以下の例のように追加します。

    command[keystone]=/usr/lib64/nagios/plugins/check_procs -c 1: -w 3: -C keystone-all

    次に、Nagios 監視サーバーの services.cfg ファイルに、定義済みの各コマンドを指定することができます。

    注記

    複雑な監視はスクリプトに配置して、コマンドの定義で参照することができます。

  3. 次に、ファイアウォールを設定して nrpe トラフィックを許可します。
  4. NRPE サービスを起動します。

    # service nrpe start

3.2.4. ホストの定義の作成

Nagios がインストールされているホストに加えて、クラウドで追加のマシンを使用する場合には、Nagios が認識するようにオブジェクトファイルで設定する必要があります。

  1. root ユーザーとしてログインします。
  2. /etc/nagios/objects/ ディレクトリーに hosts.cfg ファイルを作成します。
  3. このファイルで、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
    }
  4. /etc/nagios/nagios.cfg ファイルの OBJECT CONFIGURATION FILES セクションの下に以下の行を記載します。

    cfg_file=/etc/nagios/objects/hosts.cfg

3.2.5. リモートサービスのサービス定義の作成

リモートサービスをモニタリングするには、新規ファイル (本手順では /etc/nagios/objects/services.cfg) でそれらのサービスを定義する必要があります。

  1. root ユーザーとしてログインします。
  2. /etc/nagios/objects/commands.cfg ファイルに以下の内容を記載して、リモートのスクリプトまたはプラグインで check_nrpe プラグインの使用を処理するように指定します。

    define command{
            command_name    check_nrpe
            command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
     }
  3. /etc/nagios/objects/ ディレクトリーに services.cfg ファイルを作成します。
  4. 作成したファイルで、モニタリングするリモートの 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 ファイルに、一致するコマンドが記載されていることを確認してください。

  5. /etc/nagios/nagios.cfg ファイルの OBJECT CONFIGURATION FILES セクションの下に以下の行を記載します。

    cfg_file=/etc/nagios/objects/services.cfg

3.2.6. Nagios 設定の検証

  1. root ユーザーとしてログインします。
  2. 更新した設定ファイルが機能しているかどうかを確認します。

    # nagios -v /etc/nagios/nagios.cfg

    エラーが発生した場合には、/etc/nagios/nagios.cfg/etc/nagios/services.cfg/etc/nagios/hosts.cfg で指定されているパラメーターを確認してください。

  3. Nagios を再起動します。

    # service nagios restart
  4. ブラウザーで以下の URL にアクセスして、Nagios ダッシュボードに再度ログインします。nagiosadmin ユーザーとステップ 1 で設定したパスワードを使用します。

    http://nagiosHostURL/nagios