序章

このチュートリアルでは、Ubuntu14.04へのオープンソース監視システムであるIcingaのインストールについて説明します。 いくつかの基本的な構成について説明するので、Webインターフェイスを介してネットワークサービスとホストリソースを監視できます。 また、リモートシステムにエージェントとしてインストールされるNagios Remote Plugin Executor(NRPE)を利用して、ローカルリソース(ディスク使用量、ログインユーザー数など)を監視します。

Icingaは、ホストとサービスをチェックし、それらのステータスを通知する、人気のあるオープンソースの監視システムです。 IcingaはNagiosのフォークであるため、互換性があり、多くの類似点を共有しています。Nagiosと比較すると、開発サイクルがより機敏であるため、人気が高まっています。

前提条件

このチュートリアルを完了するには、Ubuntu14.04VPSへのルートアクセスが必要です。 これを設定する手順は、ここにあります(手順3および4): Ubuntu14.04を使用したサーバーの初期設定。

また、メール通知機能を設定したい場合は、Postfixを適切に設定する必要があります。 そのための手順はここにあります: Ubuntu14.04にPostfixをインストールしてセットアップする方法。 PostfixはIcingaパッケージと一緒にインストールされますが、Icingaのセットアップ後に構成できます。

Icingaをインストールする

パッケージを使用してIcingaをインストールします。 また、DBMSとしてMySQLを使用します。PostgreSQL、SQLite、およびOracleは、その他のサポートされているオプションです。

次のコマンドを実行して、IcingaPPAをパッケージマネージャーに追加します。

sudo add-apt-repository ppa:formorer/icinga

次に、aptパッケージデータベースを更新します。

sudo apt update

次に、aptを使用してIcingaとMySQLをインストールします。

sudo apt install icinga icinga-doc icinga-idoutils mysql-server libdbd-mysql mysql-client

これで、Icingaのインストールに関する一連のプロンプトが表示されます。 プロンプトのリストと、それらにどのように答えるべきかを次に示します。

  • MySQL構成:新しいMySQLrootユーザーパスワードを入力します
  • PostFix設定:「インターネットサイト」を選択します
  • PostFix設定:完全修飾ドメイン名を入力します( example.com など)
  • icinga-cgiの構成:「icingaadmin」ユーザーのパスワードを入力します(ログインしてIcingaにアクセスします)。
  • icinga-commonの構成:外部コマンドを有効にするには「いいえ」と入力します
  • icinga-idoutilsの構成:dbconfig-commonを使用してicinga-idoutilsのデータベースを構成するには、「はい」と入力します
  • icinga-idoutilsの構成:データベースタイプとして「mysql」を選択します
  • icinga-idoutilsの構成:MySQLルートパスワード(上記で割り当てたもの)を入力します
  • icinga-idoutilsの構成:新しいicinga-idoutilsデータベースのユーザーパスワードを入力します

これでIcingaがインストールされましたが、開始する前にいくつかの設定を行う必要があります。 そのプロセスの一部としてApacheHTTPサーバーとPostfixがインストールされていることに注意してください。

Apacheユーザー(www-data)をnagiosグループに追加します。

sudo usermod -a -G nagios www-data

起動時にido2dbデーモンを起動できるようにします。これにより、Icingaイベントと構成がデータベースに保存されます。 Icingaのデフォルト構成を編集します。

sudo vi /etc/default/icinga

IDO2DBの値をyesに変更すると、次のようになります。

IDO2DB=yes

保存して終了します。 次に、ido2dbサービスを開始します。

sudo service ido2db start

サンプルのidoutils.cfgファイルをIcingaのアクティブな構成にコピーして、idomodモジュールを有効にします。

sudo cp /usr/share/doc/icinga-idoutils/examples/idoutils.cfg-sample /etc/icinga/modules/idoutils.cfg

これでIcingaが構成され、開始する準備が整いました。

sudo service icinga restart

Icingaのユーザーインターフェイスを試してみましょう。

Icingaユーザーインターフェイスへのアクセス

http:// yourhost / icinga に移動し、Icingaのインストール中に設定したicingaadminログインを使用してログインします。

Icingaが1つのホスト、 localhost (Icingaサーバー)、および次のような7つのサービスを監視していることがわかります。

上の行は、単一の監視対象ホストが「稼働中」であることを示し、下の行は、7つの「OK」監視対象サービスがあることを示しています。

localhost のステータスが「ダウン」の場合は、pingコマンドのアクセス許可を変更する必要がある場合があります。 次のコマンドを実行して、nagiosユーザーがpingコマンドを使用できるようにします。

sudo chmod u+s `which ping`

監視するホストとサービスをさらに追加しましょう!

Icingaで監視する方法

Icingaでホストとサービスを監視する主な方法は2つあります。

  1. 「公的に利用可能なサービス」の監視
  2. リモートホストにインストールされているエージェントを介して監視し、データを収集してIcingaに送信します

最初の方法では、公開されているサービスとは、ローカルネットワークまたはインターネットを介してアクセスできるサービスを指します。 一般的な例には、HTTP、メール、SSH、およびICMPpingが含まれます。 この方法は、エージェントをインストールできない(またはインストールしたくない)システムを監視する場合や、ユーザー向けのネットワークインターフェイスを監視する場合に役立ちます。

2番目の方法を実装するために、リモートホストにエージェントとしてNRPEをインストールし、ローカルリソースを監視します。 これにより、Icingaは、ディスク使用量、実行中のプロセス、および最初の方法では達成できないその他のシステム統計などを監視できるようになります。

方法1:公開されているサービスを監視する

最初の方法は単にリスニングサービスを監視するため、この方法の構成はすべてIcingaサーバーで行われます。 この方法ではいくつかのことを監視できるため、Webサーバーのパブリックインターフェイスを監視する方法を示します。

次のコマンドを使用して、ホストの名前でファイルを作成します(yourhostを独自のホスト名に置き換えます)。

sudo vi /etc/icinga/objects/yourhost.cfg

次に、host_nameの値を独自のホスト名(両方の場所)に置き換え、aliasをホストの説明に置き換え、addressを自分の値に置き換えて以下を追加します。ホストのパブリックIPアドレス:

define host {
        use                     generic-host
        host_name               web-1
        alias                   A Web Server
        address                 107.170.xxx.xxx
}

define service {
        use                     generic-service
        host_name               web-1
        service_description     HTTP
        check_command           check_http
}

保存して終了します。 Icinga構成をリロードして、変更を有効にします。

sudo service icinga reload

方法2:エージェントを介した監視

前述のように、Icingaのリモートホストデータを収集するエージェントとしてNRPEを使用します。 つまり、NRPEは、この方法で監視されるすべてのホストにインストールする必要があり、Icingaサーバーも各ホストのデータを受信するように構成する必要があります。

NRPEのインストールについて見ていきましょう。

リモートホストへのNRPEのインストール

監視するホストで、aptを更新します。

sudo apt update

次に、NRPEおよびNagiosプラグインをインストールします。

sudo apt install nagios-plugins nagios-nrpe-server

ルートファイルシステムの名前を検索します(これは、監視するアイテムの1つであるため)。

df -h /

NRPE構成のファイルシステム名を使用して、ディスクの使用状況を監視します(おそらく/dev/vdaです)。 次に、編集のためにnrpe.cfgを開きます。

sudo vi /etc/nagios/nrpe.cfg

NRPE構成ファイルは非常に長く、コメントでいっぱいです。 見つけて変更する必要がある行がいくつかあります。

  • server_address :このホストのプライベートIPアドレスに設定します
  • allowed_hosts :IcingaサーバーのプライベートIPアドレスに設定します
  • コマンド[check_hda1]/dev/hda1をルートファイルシステムと呼ばれるものに変更します

前述の3行は次のようになります(適切な値に置き換えてください)。

server_address=client_private_IP
allowed_hosts=nagios_server_private_IP
command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/vda

このファイルには、Icingaサーバーがそれらを使用するように構成されている場合に実行される他のいくつかの「コマンド」があることに注意してください。 また、server_port=5666が設定されているため、NRPEはポート5666でリッスンすることに注意してください。 そのポートをブロックしているファイアウォールがある場合は、必ずIcingaサーバーに対して開いてください。

保存して終了します。 次に、NRPEを再起動して、変更を有効にします。

sudo service nagios-nrpe-server restart

監視するホストへのNRPEのインストールと構成が完了したら、監視を開始する前に、これらのホストをIcingaサーバー構成に追加する必要があります。

Icingaサーバー構成にリモートホストを追加する

Icingaサーバーで、/etc/icinga/objectsで監視するリモートホストごとに新しい構成ファイルを作成します。 yourhostをホストの名前に置き換えます。

sudo vi /etc/icinga/objects/yourhost.cfg

次のホスト定義を追加し、host_name値をリモートホスト名(この例では「wordpress-1」を使用)に置き換え、alias値をホストの説明に置き換え、 address値とリモートホストのプライベートIPアドレス:

define host {
        use                     generic-host
        host_name               wordpress-1
        alias                   My first wordpress server
        address                 10.128.xxx.xxx
        }

次に、監視するサービスのこれらのサービスブロックのいずれかを追加します。 check_commandの値は、ステータスのしきい値を含め、監視対象を決定することに注意してください。 ホストの構成ファイルに追加できるいくつかの例を次に示します。

ping:

define service {
        use                             generic-service
        host_name                       wordpress-1
        service_description             PING
        check_command                   check_ping!100.0,20%!500.0,60%
        }

SSH(notifications_enabledを0に設定すると、サービスの通知が無効になります):

define service {
        use                             generic-service
        host_name                       wordpress-1
        service_description             SSH
        check_command                   check_ssh
        notifications_enabled           0
        }

ロード:

define service {
        use                             generic-service
        host_name                       wordpress-1
        service_description             Current Load
        check_command                   check_load!5.0!4.0!3.0!10.0!6.0!4.0
        }

現在のユーザー:

define service {
        use                             generic-service
        host_name                       wordpress-1
        service_description             Current Users
        check_command                   check_users!20!50
        }

ディスクスペース:

define service {
        use                             generic-service
        host_name                       wordpress-1
        service_description             Disk Space
        check_command                   check_all_disks!20%!10%
        }

use generic-serviceの意味がわからない場合は、デフォルトで定義されている「generic-service」と呼ばれるサービステンプレートの値を継承しているだけです。

保存して終了します。 Icinga構成をリロードして、変更を有効にします。

sudo service icinga reload

すべてのリモートホストを監視するようにIcingaを構成したら、ユーザーインターフェイスを確認しましょう。

ユーザーインターフェイスの例

いずれかの監視方法を使用していくつかのホストで監視を設定した後、Icingaユーザーインターフェイス( http://youricingaserver.com/icinga 、acingaadminログイン)に移動し、[サービスの詳細]リンクをクリックします。 監視を設定したすべてのサービスのリストが表示されます。

例として、上記の構成ファイルを使用して監視されている2つのホストを次に示します。 web-1 HTTPサービスは通常のHTTPポートを介して監視されており、そのWebサーバーが OK ステータスで応答しており、wordpress-1が表示されていることを示しています監視対象のサービスはすべてOKです。

Icingaには多数の機能があるため、インターフェイスを参照して、ホストとサービスについて何を発見できるかを確認してください。

結論

ホストとそのサービスの一部を監視しているので、時間をかけてどのサービスが自分にとって重要であるかを把握し、それらの監視を開始できるようにすることができます。 また、通知を設定して、たとえば、ディスク使用率が警告または重大なしきい値に達したとき、またはメインのWebサイトがダウンしたときに電子メールを受信するようにして、状況を迅速に、または問題が発生する前に解決できるようにすることもできます。

幸運を!