前書き

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

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

前提条件

このチュートリアルを完了するには、Ubuntu 14.04 VPSへのルートアクセスが必要です。 これを設定する手順は、こちら(手順3および4)で確認できます:https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-14-04[Ubuntu 14.04での初期サーバーセットアップ]。

また、メール通知機能をセットアップする場合は、Postfixを適切に構成する必要があります。 それを行うための手順はここで見つけることができます:https://www.digitalocean.com/community/tutorials/how-to-install-and-setup-postfix-on-ubuntu-14-04[Postfixをインストールしてセットアップする方法Ubuntu 14.04]。 PostfixはIcingaパッケージと一緒にインストールされますが、Icingaのセットアップ後に構成できます。

Icingaをインストールする

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

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

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構成:新しいMySQLルートユーザーパスワードを入力します

  • 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がインストールされましたが、開始する前にいくつかの設定を行う必要があります。 Apache HTTPサーバーと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つのサービスを監視していることがわかります。

image:https://assets.digitalocean.com/articles/icinga/icinga-1-overview.png [Icinga Initial Overview]

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

_localhost_のステータスが「Down」の場合、pingコマンドの権限を変更する必要がある場合があります。 次のコマンドを実行して、_nagios_ユーザーがpingコマンドを使用できるようにします。

sudo chmod u+s `which ping`

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

Icingaで監視する方法

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

  1. 「公開されているサービス」の監視

  2. データを収集してIcingaに送信するために、リモートホストにインストールされているエージェントを介した監視

image:https://assets.digitalocean.com/articles/icinga/icinga_monitoring_methods.png [Icinga Monitoring Methods]

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

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:エージェントを介した監視

前述のように、エージェントとしてNRPEを使用して、Icingaのリモートホストデータを収集します。 つまり、この方法で監視されるすべてのホストに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アドレスに設定します

  • * command [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_であることを示しています。

image:https://assets.digitalocean.com/articles/icinga/icinga_services.png [Icingaユーザーインターフェイスの例]

Icingaには多くの機能があるため、ホストやサービスについて発見できることを確認するために、インターフェースを自由に閲覧してください。

結論

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

がんばろう!