前書き

Icingaは、ネットワーク化されたホストとサービスの状態を監視するために使用されるオープンソースの監視システムです。 このチュートリアルでは、Icingaを使用して2種類の監視構成を設定します。 1つは、ウェブサイトへの定期的なHTTPリクエストの作成など、ホストの外部サービスの単純なネットワークチェックに基づいています。 もう1つの構成では、ホストで実行されているソフトウェアエージェントを使用して、負荷や実行中のプロセス数などのより詳細なシステム情報を収集します。

前提条件

このチュートリアルを開始する前に、このシリーズの前のチュートリアルhttps://www.digitalocean.com/community/tutorials/how-to-install-icinga-and-icinga-web-on-ubuntu-16-を完了している必要があります。 04 [Ucing 16.04にIcingaとIcinga Webをインストールする方法]。 これにより、1つのホスト上で実行されるIcingaコアとIcinga Webインターフェースが残ります。これを全体で* icinga-master *ノードと呼びます。

監視するサーバーも必要です。 この例では、Apacheがインストールされた2つのUbuntu 16.04サーバーを使用します。 LAMPのApache部分のみを使用できます上記のチュートリアルこれらを設定します。

ステップ1 –単純なホスト監視の設定

Icingaでサーバーを監視する簡単な方法の1つは、外部で利用可能なサービスの定期的なチェックを設定することです。 そのため、Webホストの場合、サーバーのIPアドレスに定期的にpingを実行し、Webページへのアクセスも試みます。 これにより、ホストが稼働しているかどうか、およびWebサーバーが正しく機能しているかどうかがわかります。

Webサーバーの監視を設定しましょう。 前提条件として記載されているApacheサーバーの1つを選択し、デフォルトのApacheプレースホルダーページが適切に提供されていることを確認します。 このサーバーを「++」と呼びます。 ログインする必要はありません。すべてのヘルスチェックがマスターノードで設定および実行されます。

マスターノードにログインします。 新しいホストを追加するには、Icingaの `+ hosts.conf`ファイルを編集する必要があります。 テキストエディターで開きます。

sudo nano /etc/icinga2/conf.d/hosts.conf

これにより、いくつかの説明コメントと単一のホスト_block_が定義されたファイルが開きます。 既存の `+ object Host NodeName +`構成ブロックは、* icinga-master *ホストを定義します。これは、IcingaおよびIcinga Webをインストールしたホストです。 ファイルの下部にカーソルを置き、新しいホストを追加します。

/etc/icinga2/conf.d/hosts.conf

. . .
object Host "" {
 import "generic-host"
 address = ""
 vars.http_vhosts["http"] = {
   http_uri = "/"
 }
 vars.notification["mail"] = {
   groups = [ "icingaadmins" ]
 }
}

これは、「+」というホストを定義し、「 generic-host 」というテンプレートからデフォルトのホスト設定をインポートし、Icingaに正しいIPアドレスを指定し、IcingaにHTTP応答をチェックするよう指示する変数をいくつか定義しますルート( ` / `)URLにアクセスし、問題が発生したときにメールで ` icingaadmins +`グループに通知します。

ファイルを保存して閉じ、Icingaを再起動します。

sudo systemctl restart icinga2

ブラウザーでIcinga Webインターフェースに戻ります。 インターフェースはかなり高速で更新されるため、ページを更新する必要はありません。 新しいホスト情報はすぐに入力され、Icingaが十分な情報を収集すると、ヘルスチェックが* Pending から Ok *に変わります。

これは、ホスト上の外部サービスを監視する優れた方法であり、SSHサーバー、SMTPなどで利用できる他のチェックがあります。 しかし、監視しているサーバーの内部状態に関する詳細を知っておくといいでしょう。

次に、Icingaエージェントを介して監視を設定し、より詳細なシステム情報を監視できるようにします。

ステップ2 –エージェントベースの監視の設定

Icingaは、より広範なリモートヘルスチェックを実行するために、マスターノードとクライアントノード間で安全に通信するためのメカニズムを提供します。 Webサーバーがページを正常に処理していることを知るだけでなく、CPU負荷、プロセス数、ディスク容量などを監視することもできます。

監視する2番目のサーバーを設定します。 これを「++」と呼びます。 Icingaソフトウェアをリモートマシンにインストールし、いくつかのセットアップウィザードを実行して接続を確立し、Icingaマスターノードでいくつかの構成ファイルを更新する必要があります。

マスターノードをセットアップする

最初に、クライアント接続を行うためにマスターノードを設定する必要があります。 これを行うには、マスターノードでノードセットアップ_wizard_を実行します。

sudo icinga2 node wizard

これにより、いくつかの質問をするスクリプトが開始され、設定が行われます。 以下では、ほとんどのデフォルトを受け入れるために `+ ENTER +`を押します。 デフォルト以外の回答が強調表示されます。 わかりやすくするために、いくつかの情報出力が削除されています。

OutputPlease specify if this is a satellite setup ('n' installs a master setup) [Y/n]:
Starting the Master setup routine...
Please specify the common name (CN) [icinga-master.example.com]:
Checking for existing certificates for common name 'icinga-master.example.com'...
Certificates not yet generated. Running 'api setup' now.
Enabling feature api. Make sure to restart Icinga 2 for these changes to take effect.
Please specify the API bind host/port (optional):
Bind Host []:
Bind Port []:
Done.

Now restart your Icinga 2 daemon to finish the installation!

Icingaを再起動して、構成の更新を完了します。

sudo systemctl restart icinga2

ファイアウォールポートを開いて、Icingaへの外部接続を許可します。

sudo ufw allow 5665

クライアントノードに切り替えて、Icingaをインストールし、同じウィザードを実行します。

クライアントノードをセットアップする

呼び出しているサーバーにログインします**。 Icingaリポジトリを再度インストールしてから、Icinga自体をインストールする必要があります。 これは、マスターノードで使用した手順と同じです。 最初にキーをインストールします。

curl -sSL https://packages.icinga.com/icinga.key | sudo apt-key add -

`+ icinga.list +`ファイルを開きます:

sudo nano /etc/apt/sources.list.d/icinga.list

リポジトリの詳細に貼り付けます:

/etc/apt/sources.list.d/icinga.list

deb https://packages.icinga.com/ubuntu icinga-xenial main

ファイルを保存して閉じ、パッケージキャッシュを更新します。

sudo apt-get update

次に、 `+ icinga2 `をインストールします。 _weはマスターノードにインストールした ` icinga2-ido-mysql`パッケージを必要としないことに注意してください:

sudo apt-get install icinga2

このサーバーでノードウィザードを実行しますが、master_の代わりに_satellite configを実行します。

sudo icinga2 node wizard
OutputPlease specify if this is a satellite setup ('n' installs a master setup) [Y/n]:
Starting the Node setup routine...
Please specify the common name (CN) []:
Please specify the master endpoint(s) this node should connect to:
Master Common Name (CN from your master setup):
Do you want to establish a connection to the master from this node? [Y/n]:
Please fill out the master connection information:
Master endpoint host (Your master's IP address or FQDN):
Master endpoint port [5665]:
Add more master endpoints? [y/N]:
Please specify the master connection for CSR auto-signing (defaults to master endpoint host):
Host []:
Port [5665]:

ウィザードは、マスターノードからパブリック証明書を取得し、詳細を表示します。 情報を確認してから続行します。

Output. . .
Is this information correct? [y/N]:
information/cli: Received trusted master certificate.

Please specify the request ticket generated on your Icinga 2 master.
(Hint: # icinga2 pki ticket --cn ''):

この時点で、 `+ master `サーバーに戻り、ウィザードが要求するコマンドを実行します。 その前にある「 sudo +」を忘れないでください:

sudo icinga2 pki ticket --cn ''

コマンドはキーを出力します。 それをクリップボードにコピーし、クライアントノードに切り替えて貼り付け、ウィザードを続行するために「+ ENTER +」を押します。

Output. . .
information/cli: Requesting certificate with ticket ''.

Please specify the API bind host/port (optional):
Bind Host []:
Bind Port []:
Accept config from master? [y/N]:
Accept commands from master? [y/N]:
Done.

Now restart your Icinga 2 daemon to finish the installation!

次に、ファイアウォールのIcingaポートを開きます。

sudo ufw allow 5665

Icingaを再起動して、構成を完全に更新します。

sudo systemctl restart icinga2

`+ netstat +`を使用して、2つのサーバー間に接続があることを確認できます。

netstat | grep :5665

接続が確立されるまで少し時間がかかる場合があります。 最終的に、「+ netstat 」は正しいポートで「 ESTABLISHED +」接続を示す行を出力します。

Outputtcp        0      0 :     :5665     ESTABLISHED

これは、サーバーが接続され、クライアントチェックを構成する準備ができたことを示しています。

エージェント監視の構成

マスターとクライアントが接続されたとしても、監視を有効にするためにマスターで行う設定がまだあります。 新しいホストファイルを設定する必要があります。 マスターノードに切り替えます。

Icingaインストールにおける組織の重要なレベルの1つは、_zone_の概念です。 すべてのクライアントノードは独自のゾーンを作成し、親ゾーン(この場合はマスターノード)に報告する必要があります。 デフォルトでは、マスターノードのゾーンの名前はFQDNに基づいています。 Icingaの `+ zones.d +`ディレクトリ内にマスターゾーンにちなんで名付けられたディレクトリを作成します。 これにより、すべてのマスターゾーンのクライアントの情報が保持されます。

ゾーンディレクトリを作成します。

sudo mkdir /etc/icinga2/zones.d/

サービス構成ファイルを作成します。 これにより、リモートクライアントノードで実行するサービスチェックが定義されます。 今すぐファイルを開きます。

sudo nano /etc/icinga2/zones.d//services.conf

以下を貼り付け、保存して閉じます。

services.conf

apply Service "load" {
 import "generic-service"
 check_command = "load"
 command_endpoint = host.vars.client_endpoint
 assign where host.vars.client_endpoint
}

apply Service "procs" {
 import "generic-service"
 check_command = "procs"
 command_endpoint = host.vars.client_endpoint
 assign where host.vars.client_endpoint
}

これにより、2つのサービスチェックが定義されます。 1つ目はCPU負荷について報告し、2つ目はサーバー上のプロセス数を確認します。 各サービス定義の最後の2行は重要です。 `+ command_endpoint `は、このサービスチェックをリモートコマンドエンドポイントに送信する必要があることをIcingaに伝えます。 ` assign where `行は、 ` client_endpoint +`変数が定義されているホストにサービスチェックを自動的に割り当てます。

それでは、このようなホストを作成しましょう。 以前に作成したゾーンディレクトリで新しいファイルを開きます。 ここでは、リモートホストにちなんでファイルに名前を付けました。

sudo nano /etc/icinga2/zones.d/web-2.example.com<^>.conf

次の構成に貼り付けてから、ファイルを保存して閉じます。

web-2.example.com.conf

object Zone "" {
 endpoints = [ "" ]
 parent = ""
}

object Endpoint "" {
 host = ""
}

object Host "" {
 import "generic-host"
 address = ""
 vars.http_vhosts["http"] = {
   http_uri = "/"
 }
 vars.notification["mail"] = {
   groups = [ "icingaadmins" ]
 }
 vars.client_endpoint = name
}

このファイルは、リモートホストのゾーンを定義し、親ゾーンに結び付けます。 また、ホストをエンドポイントとして定義し、ホスト自体を定義して、 `+ generic-host `テンプレートからいくつかのデフォルトルールをインポートします。 また、いくつかの ` vars `を設定してHTTPチェックを作成し、電子メール通知を有効にします。 このホストには ` vars.client_endpoint = name `が定義されているため、 ` services.conf +`で定義したサービスチェックも割り当てられます。

Icingaを再起動して構成を更新します。

sudo systemctl restart icinga2

Icinga Webインターフェースに戻ると、新しいホストが* Pending のチェックで表示されます。 しばらくすると、それらのチェックは OK *に変わります。 これは、クライアントノードがマスターノードのチェックを正常に実行していることを意味します。

結論

このチュートリアルでは、Icingaを使用して、外部サービスチェックとエージェントベースのホストチェックの2種類の監視を設定します。 Icingaの設定と操作について学ぶことはまだまだありますので、https://docs.icinga.com/icinga2/ [Icingaの詳細なドキュメント]を詳しく調べてください。

カスタム_check_コマンドが必要なポイントに到達した場合、_global configuration zone_を使用してこれらをマスターノードからクライアントノードに同期する必要があることに注意してください。 この特定の機能の詳細については、https://docs.icinga.com/icinga2/latest/doc/module/icinga2/chapter/distributed-monitoring#distributed-monitoring-global-zone-config-sync [こちら]をご覧ください。

最後に、監視するサーバーが多数ある場合は、構成管理ソフトウェアを使用してIcinga構成の更新を自動化することを検討してください。 チュートリアルシリーズhttps://www.digitalocean.com/community/tutorial_series/getting-started-with-configuration-management [構成管理入門]は、関連する概念とソフトウェアの包括的な概要を提供します。