LoginSignup
1
1

More than 3 years have passed since last update.

Ubuntu 16.04へのIcinga2監視ツールのインストールと設定

Posted at

Ubuntu 16.04にIcinga2監視ツールをインストールして設定する方法を探り、またAlibaba CloudDockerをインストールして、いくつかの重要なDockについて学んでいきます。

本ブログは英語版からの翻訳です。オリジナルはこちらからご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。

序章

Icinga 2 はフリーでオープンソースの強力なネットワークリソース監視ソフトウェアアプリケーションで、ネットワークからのリソースの可用性をチェックし、停止をユーザーに通知し、レポート用のパフォーマンスデータを生成します。Icinga 2を使用して、ネットワークサービス(SMTP、POP3、HTTP、NNTP、ping)、ホストリソース(CPU負荷、ディスク使用量)、ネットワークコンポーネント(スイッチ、ルーター、温度・湿度センサー)を監視することができます。これはNagiosシステム監視アプリケーションに非常に似ています。Icinga 2をNagiosプラグインと簡単に統合することができます。Icinga 2には、複数の場所にまたがる大規模で複雑な環境を監視するための、美しくユーザーフレンドリーなウェブインターフェースが付属しています。

Icinga 2には様々な機能が搭載されていますが、以下にその一部をご紹介します。

  • GraphiteとInfluxDBをネイティブにサポートしています。
  • 問題が発生した場合、電子メールやテキストメッセージで通知を送信します。
  • カスタマイズ可能なプラグインにより、独自のサービスチェックを簡単に開発することができます。
  • ホストとサービスの状態、ネットワークマップ、レポート、ログなどを可視化するためのIcinga Classic UIとIcinga Webインターフェイスを提供します。
  • パフォーマンスグラフ化のためのPNP4Nagios、NagiosGrapher、InGraphなどの追加アドオンをサポートします。

このチュートリアルでは、Ubuntu 16.04サーバにIcinga 2とIcinga web 2をインストールして設定する方法を学びます。また、リモートホストサービスを監視するためにicinga2を設定する方法も学びます。

前提条件

  • Alibaba Cloud Instance for Icinga ServerとUbuntu 16.04がインストールされています。
  • Alibaba Cloud Instance for Icinga Client with Ubuntu 16.04がインストールされています。
  • 静的IPアドレス192.168.0.103がIcinga Server Instanceに設定されています。
  • 静的IPアドレス192.168.0.104がIcingaクライアントインスタンスに設定されています。
  • ドメイン名に適切なDNSレコードが設定されています。
  • SSHサービス経由でルートアカウントにアクセスできます。

はじめに

始める前に、以下のコマンドでシステムリポジトリとソフトウェアパッケージを最新バージョンに更新してください。

apt-get update -y
apt-get upgrade -y

次に、システムのホスト名を設定する必要があります。これは以下のコマンドで行うことができます。

hostnamectl set-hostname icingaserver

次に、以下のコマンドでシステムのホスト名を確認します。

hostnamectl

次に、サーバーインスタンスを再起動して、以下のコマンドですべてのアップデートを適用します。

reboot

必要なパッケージのインストール

Icinga 2はウェブサーバー上で動作するので、Apacheサーバー、MariaDB、PHP言語、必要なPHPモジュールをシステムにインストールする必要があります。以下のコマンドを実行するだけで、すべてのパッケージをインストールすることができます。

apt-get install apache2 libapache2-mod-php7.0 mariadb-server mariadb-client php7.0 php7.0-xml php7.0-pgsql php7.0-opcache php7.0-xml php7.0-ldap php7.0-cli php7.0-gd php7.0-intl php7.0-readline php7.0-mbstring php7.0-json php7.0-curl php7.0-mysql -y

必要なパッケージがすべてインストールされたら、以下のコマンドを使ってApacheとMariaDBサービスを起動し、起動時に起動できるようにします。

systemctl start apache2
systemctl enable apache2
systemctl start mysql
systemctl enable mysql

次に、以下のコマンドを使用して、Apache rewrite モジュールを有効にして、HTTP 接続を HTTPS にリダイレクトします。

a2enmod rewrite

次に、システムの地理的な位置と一致するタイムゾーンを設定する必要があります。これはphp.iniファイルを編集することによって行うことができます。

nano /etc/php/7.0/apache2/php.ini

次の行を変更します。

date.timezone = Asia/Kolkata

保存して終了したらファイルを閉じ、Apache サービスを再起動して変更を適用します。

systemctl restart apache2

Icinga2とIcinga Web 2のインストール

デフォルトでは、Ubuntu 16.04のデフォルトリポジトリでは、最新版のIcingaは利用できません。そのため、Icinga用のソフトウェアリポジトリを追加する必要があります。

まず、以下のコマンドでIcingaのパッケージ署名キーをダウンロードして追加します。

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

次に、APT設定ファイルにIcingaリポジトリを追加します。

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

ファイルの最後に以下の行を追加します。

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

保存してファイルを閉じ、以下のコマンドでリポジトリを更新します。

apt-get update -y

リポジトリが更新されたら、以下のコマンドでIcinga2とIcinga web 2をインストールします。

apt-get install icinga2 icingaweb2 icinga2-ido-mysql -y

インストール中に、アプリケーションを設定するための一連の質問を受けます。以下に示すように、それぞれの質問に答えてください。

Enable Icinga 2's ido-mysql feature? YES
Configure database for icinga2-ido-mysql with dbconfig-common? NO

次に、Icinga 2のido-mysqlとコマンド機能を有効にする必要があります。これは以下のコマンドを使って行うことができます。

icinga2 feature enable ido-mysql
icinga2 feature enable command

最後に、以下のコマンドでIcinga2サービスを再起動し、起動時に起動できるようにします。

systemctl restart icinga2
systemctl enable icinga2

データベースの設定

開始前に、MariaDB データベースのセキュリティを確保する必要があります。これは、mysql_secure_installationスクリプトを実行することで行うことができます。

mysql_secure_installation

このスクリプトは、以下のようにMySQLのルートパスワードの変更、匿名ユーザーの削除、リモートルートログインの無効化、テストデータベースの削除を行います。

Change the root password? [Y/n] n
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y

MariaDBのセキュリティが確保されたら、MariaDBシェルにログインし、以下のコマンドでIcinga2 IDO用の強力なパスワードを持つデータベース、データベースユーザーを作成します。

mysql -u root -p

MariaDB [(none)]> CREATE DATABASE icinga2;
MariaDB [(none)]> GRANT ALL PRIVILEGES on icinga2.* to 'icinga2'@'localhost' identified by 'strongpassword';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit;

次に、データベース、Icinga web 2用の強力なパスワードを持つデータベースユーザーを作成する必要があります。 これは、以下のコマンドを使用して行うことができます。

MariaDB [(none)]> CREATE DATABASE icingaweb2db;
MariaDB [(none)]> GRANT ALL PRIVILEGES on icingaweb2db.* to 'icingaweb2'@'localhost' identified by 'strongpassword';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit;

次に、Icinga2 IDOスキーマをIcinga2データベースにインポートする必要があります。これは以下のコマンドを使用して行うことができます。

mysql -u root icinga2 -p < /usr/share/icinga2-ido-mysql/schema/mysql.sql

次に、Icinga2 MySQL IDO設定ファイルを編集して、データベースの資格情報を手動で更新する必要があります。これは、/etc/icinga2/features-enabled/ido-mysql.confファイルを編集することで行うことができます。

nano /etc/icinga2/features-enabled/ido-mysql.conf

以下のようにファイルを変更します。

user = "icinga2",
password = "strongpassword",
host = "localhost",
database = "icinga2"

ファイルを保存して閉じ、変更を適用するためにIcinga2サービスを再起動します。

systemctl restart icinga2

ファイアウォールを介してIcinga2を許可する

デフォルトでは、新しくインストールされたUbuntu 16.04サーバインスタンスでは、UFWファイアウォールは無効になっています。UFWファイアウォールを有効にするには、以下のコマンドを使用します。

ufw enable 

次に、以下のコマンドでApacheのポート80、443、5665を許可します。

ufw allow 80
ufw allow 443
ufw allow 5665
ufw reload

Webインタフェースを使ってIcinga2を設定する

Icinga Web 2は、インフラストラクチャの問題を監視したり、ホストやサービスの健全性を確認したりするために使用できるIcinga 2のWebインターフェースです。

Icinga Web 2 インターフェイスにアクセスする前に、ウェブセットアップツールの使用を許可するセットアップトークンを作成する必要があります。これは以下のコマンドで作成できます。

icingacli setup token create

以下のような出力が表示されるはずです。

The newly generated setup token is: 4630c2921fca4da8

上記のトークンをコピーし、ウェブブラウザを開いてURL http://your-domain.com/icingaweb2 または http://your-server-ip/icingaweb2 を入力すると、以下のようなIcinga web 2のセットアップウィザードにリダイレクトされます。

image.png

さて、先ほどコピーしたトークンをSetup Tokenフィールドに貼り付け、Nextボタンをクリックして処理を開始します。

image.png

ここでは、有効にしたいモジュールを選択する必要があります。DocとMonitoringモジュールを有効にして、次へボタンをクリックすると、次のようなページが表示されるはずです。

image.png

ここで、Icinga2はあなたのシステム要件をチェックします。必要なPHPモジュールがすべてインストールされていることを確認し、「次へ」ボタンをクリックすると、次のようなページが表示されます。

image.png

ここでは、Icinga webにアクセスするための認証メカニズムを選択する必要があります。 Authentication Type = Databaseを選択し、Nextボタンをクリックすると、以下のようなページが表示されるはずです。

image.png

ここでは、Icinga web 2のデータベース認証情報を入力して、データベース名、ユーザー名、パスワードを入力し、次へボタンをクリックすると、次のページが表示されます。

image.png

次に、データベース認証の名前を定義して「次へ」ボタンをクリックすると、以下のようなページが表示されるはずです。

image.png

ここで、管理者アカウントのクレデンシャルを入力して、Icinga2のWebインターフェースにログインし、「次へ」ボタンをクリックすると、次のようなページが表示されます。

image.png

ここで、Icinga2のアプリケーションとログ情報を提供し、次へボタンをクリックすると、次のページが表示されるはずです。

image.png

さて、すべての設定を確認して「次へ」ボタンをクリックすると、次のようなページが表示されるはずです。

image.png

ここで、[次へ]ボタンをクリックして設定処理を開始します。

image.png

ここでは、Icinga web 2 Backendの名前とBackendの種類を入力し、Nextボタンをクリックすると、次のようなページが表示されるはずです。

image.png

ここで、Icinga2 IDOデータベースの認証情報を入力し、「次へ」ボタンをクリックすると、次のようなページが表示されます。

image.png

[次へ]ボタンをクリックして、セットアッププロセスを続行します。次のようなページが表示されるはずです。

image.png

ここでは、Icinga2が提供するデフォルト値のままで、次へボタンをクリックすると、以下のようなページが表示されるはずです。

image.png

ここで、これまでに行ったすべての設定を確認し、「完了」ボタンをクリックしてインストールを完了させます。インストールが正常に設定されると、以下のページが表示されるはずです。

image.png

ここで、「Login to icinga web 2」ボタンをクリックすると、以下のようなページが表示されるはずです。

image.png

ここで、以前に作成した管理者アカウントの認証情報を入力し、ログインボタンをクリックすると、以下のようなIcinga web 2のダッシュボードが表示されます。

image.png

リモートホストの監視のためにIcinga2マスターノードを設定する

これでIcinga web 2の設定が完了したので、Icinga2サーバーノードを設定して監視用のマスターにしましょう。これは以下のコマンドを実行することで行うことができます。

icinga2 node wizard

セットアップの過程で、いくつかの質問がありますので、以下に示すようにすべての質問に答えてください。

Welcome to the Icinga 2 Setup Wizard!

We'll guide you through all required configuration details.

Please specify if this is a satellite setup ('n' installs a master setup) [Y/n]: n
Starting the Master setup routine...
Please specify the common name (CN) [icingaserver]: 
Checking for existing certificates for common name 'icingaserver'...
Certificates not yet generated. Running 'api setup' now.
information/cli: Generating new CA.
information/base: Writing private key to '/var/lib/icinga2/ca/ca.key'.
information/base: Writing X509 certificate to '/var/lib/icinga2/ca/ca.crt'.
information/cli: Generating new CSR in '/etc/icinga2/pki/icingaserver.csr'.
information/base: Writing private key to '/etc/icinga2/pki/icingaserver.key'.
information/base: Writing certificate signing request to '/etc/icinga2/pki/icingaserver.csr'.
information/cli: Signing CSR with CA and writing certificate to '/etc/icinga2/pki/icingaserver.crt'.
information/pki: Writing certificate to file '/etc/icinga2/pki/icingaserver.crt'.
information/cli: Copying CA certificate to '/etc/icinga2/pki/ca.crt'.
Generating master configuration for Icinga 2.
information/cli: Adding new ApiUser 'root' in '/etc/icinga2/conf.d/api-users.conf'.
information/cli: Enabling the 'api' feature.
Enabling feature api. Make sure to restart Icinga 2 for these changes to take effect.
information/cli: Dumping config items to file '/etc/icinga2/zones.conf'.
information/cli: Created backup file '/etc/icinga2/zones.conf.orig'.
Please specify the API bind host/port (optional):
Bind Host []: 
Bind Port []: 
information/cli: Created backup file '/etc/icinga2/features-available/api.conf.orig'.
information/cli: Updating constants.conf.
information/cli: Created backup file '/etc/icinga2/constants.conf.orig'.
information/cli: Updating constants file '/etc/icinga2/constants.conf'.
information/cli: Updating constants file '/etc/icinga2/constants.conf'.
information/cli: Updating constants file '/etc/icinga2/constants.conf'.
Done.

Now restart your Icinga 2 daemon to finish the installation!

次に、Icinga2サービスを再起動し、マスターノードの設定を適用します。

systemctl icinga2 restart

次に、Icinga 2マスターノードもクライアントから有効なチケットが必要なので、Icinga 2クライアントノード用のチケットを生成する必要があります。

以下のコマンドを使って同じものを生成します。

icinga2 pki ticket --cn 'icingaclient'

以下のような出力が表示されるはずです。

582f9fda5c5823440e63ea0f083d105b81237b37

監視用のリモートクライアントノードを設定する

始める前に、クライアントノードにIcinga 2とNagiosプラグインをインストールする必要があります。まず、以下のコマンドを使ってIcingaパッケージ署名キーをダウンロードして追加します。

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

次に、APT設定ファイルにIcingaリポジトリを追加します。

nano /etc/apt/sources.list

ファイルの最後に以下の行を追加します。

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

保存してファイルを閉じ、以下のコマンドでリポジトリを更新します。

apt-get update -y

リポジトリが更新されたら、以下のコマンドでIcinga2とNagiosプラグインをインストールします。

apt-get install icinga2 nagios-plugins -y

次に、以下のコマンドでIcinga 2サービスを起動し、起動時に起動できるようにします。

systemctl start icinga2
systemctl enable icinga2

次に、以下のようにクライアントノード上でIcinga 2ノードウィザードを実行します。

icinga2 node wizard

以下のように、すべての質問に答えてください。

Welcome to the Icinga 2 Setup Wizard!

We will guide you through all required configuration details.

Please specify if this is a satellite/client setup ('n' installs a master setup) [Y/n]: Y

Starting the Client/Satellite setup routine...

Please specify the common name (CN) [icingaclient]: 

Please specify the parent endpoint(s) (master or satellite) where this node should connect to:
Master/Satellite Common Name (CN from your master/satellite node): icingaserver

Do you want to establish a connection to the parent node from this node? [Y/n]: Y
Please specify the master/satellite connection information:
Master/Satellite endpoint host (IP address or FQDN): 192.168.0.103
Master/Satellite endpoint port [5665]: 5665

Add more master/satellite endpoints? [y/N]: N
Parent certificate information:

 Subject:     CN = icingaserver
 Issuer:      CN = Icinga CA
 Valid From:  Dec 29 15:13:35 2017 GMT
 Valid Until: Dec 25 15:13:35 2032 GMT
 Fingerprint: 53 5A BC BE 57 D3 1B F7 D0 A4 D7 F2 F4 2A 44 2F 64 53 D7 A0 

Is this information correct? [y/N]: y

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

Please specify the API bind host/port (optional):
Bind Host []: 
Bind Port []: 

Accept config from parent node? [y/N]: y
Accept commands from parent node? [y/N]: y

Reconfiguring Icinga...
Disabling feature notification. Make sure to restart Icinga 2 for these changes to take effect.
Enabling feature api. Make sure to restart Icinga 2 for these changes to take effect.

Done.

Now restart your Icinga 2 daemon to finish the installation!

ここで、すべての設定を適用するために、Icinga2サーバーを再起動します。

systemctl restart icinga2

これで、Icinga 2のマスターノードとクライアントノードが接続されました。また、監視したいクライアントを定義するために、Icinga 2のマスターノードにゾーンファイルを設定する必要があります。

マスターノードに戻り、ゾーンディレクトリを作成します。

nano mkdir /etc/icinga2/zones.d/icingaclient

次に、以下のコマンドでサービスファイルとホストファイルを作成します。

nano /etc/icinga2/zones.d/icingaclient/service.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
}

保存してからホストファイルを作成します。

nano /etc/icinga2/zones.d/icingaclient/icingaclient.conf

以下の行を追加します。

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

object Endpoint "icingaclient" {
  host = "192.168.0.104"
}

object Host "icingaclient" {
  import "generic-host"
  address = "192.168.0.104"
  vars.os = "Linux"
  vars.notification["mail"] = {
    groups = [ "icingaadmins" ]
  }
  vars.client_endpoint = name
}

ホスト名とIPアドレスがクライアントノードと一致していることを確認してください。ファイルを保存し、以下のコマンドでIcinga 2サービスを再起動します。

systemctl restart icinga2

ここで、Icinga web 2のインターフェイスを開き、Overview > Hostsタブをクリックすると、新しく追加されたクライアントノードが表示されるはずです。

結論

おめでとうございます!これで、Ubuntu 16.04サーバーにIcinga2サーバーとIcinga web 2をインストールして設定することができました。これで、IcingaのWebインターフェースを使って、中央の場所から簡単にインフラ全体を監視することができます。詳細については、https://www.icinga.com/docs/ の Icinga ドキュメントページを参照してください。

アリババクラウドは日本に2つのデータセンターを有し、世界で60を超えるアベラビリティーゾーンを有するアジア太平洋地域No.1(2019ガートナー)のクラウドインフラ事業者です。
アリババクラウドの詳細は、こちらからご覧ください。
アリババクラウドジャパン公式ページ

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1