ウェブサイト検索

CentOS 8 に Icinga 2 監視ツールをインストールする方法


このページでは

  1. 前提条件
  2. リポジトリのセットアップ
  3. LAMP スタックのインストールと構成
  4. Icinga2 のインストールと構成
  5. Icingaweb2 のインストールと構成
  6. Web インターフェイスを介して Icinga Web 2 を構成する
  7. Icinga 2 と Icinga Web 2 のインストールを確認する
  8. 結論

監視は、サーバー インフラストラクチャとデータ センターの最も重要なコンポーネントの 1 つです。サーバーで発生する問題や問題を検出するのに役立ち、その問題をより迅速に解決できます。オープンソースの監視ツールがいくつかありますが、最も人気のあるツールの 1 つは Icinga 2 です。

Icinga は人気のある Nagios 監視ツールのフォークとして作成され、現在は C++ でゼロから書き直されています。 Nagios プロジェクトからのフォークである Icinga には、icinga ディレクター、icinga モジュール、icinga プラグインなどの追加のツールと機能が付属しています。また、1 つのダッシュボードから複数の Icinga インスタンスを管理できる分散監視もサポートしています。

このチュートリアルでは、CentOS 8 サーバーに Apache2 および MariaDB を使用して Icinga2 をインストールおよび構成する方法を段階的に示します。

前提条件

  • CentOS 8 サーバー。最新バージョンに更新されていることを確認してください。
  • 少なくとも 2GB の RAM と 2 つのコア。あなたがもっとあれば、それはより良いでしょう。
  • Sudo 権限を持つユーザー。

リポジトリのセットアップ

まず、epel、remi、icinga リポジトリを centos 8 システムに追加する必要があります。次に、dnf \config-manager\ ツールをインストールし、そのツールを使用して \PowerTools\ リポジトリを有効にする必要があります。

1. 次のコマンドを実行して、centos 8 サーバーの epel および remi リポジトリを追加します。

sudo dnf install -y epel-release
sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm

2. 以下のコマンドを実行して、centos 8 システム用の Icinga リポジトリをダウンロードして追加します。

sudo dnf install -y https://packages.icinga.com/epel/icinga-rpm-release-8-latest.noarch.rpm

3. その後、次のコマンドを実行して dnf config-manager ツールをインストールし、PowerTools リポジトリを有効にします。

sudo dnf install -y 'dnf-command(config-manager)'
sudo dnf config-manager --set-enabled powertools

4. すべてのプロセスが完了したら、以下のコマンドを使用して、システムで有効になっているすべてのリポジトリを確認します。

sudo dnf repolist

以下のような出力が表示され、epel、remi、icinga-*、および powertools リポジトリがリストにあることを確認します。

repo id                                                                                              repo name
appstream                                                                                            CentOS Linux 8 - AppStream
baseos                                                                                               CentOS Linux 8 - BaseOS
epel                                                                                                 Extra Packages for Enterprise Linux 8 - x86_64
epel-modular                                                                                         Extra Packages for Enterprise Linux Modular 8 - x86_64
extras                                                                                               CentOS Linux 8 - Extras
icinga-stable-release                                                                                ICINGA (stable release for epel)
powertools                                                                                           CentOS Linux 8 - PowerTools
remi-modular                                                                                         Remi's Modular repository for Enterprise Linux 8 - x86_64
remi-safe                                                                                            Safe Remi's RPM repository for Enterprise Linux 8 - x86_64

LAMP スタックのインストールと構成

Icinga 監視ツールには 2 つの主要なコンポーネントがあります。すべての監視ジョブを処理する \icinga2\ と、Icinga スタックを次から管理できるようにする PHP ベースの強力でクリーンで高速な Web アプリケーションである \icingaweb2\ です。ウェブブラウザ。次に、基本的な LAMP スタックを centos 8 システムにインストールして構成します。

1. 以下のコマンドを使用して、PHP 7.4 の remi モジュールを有効にします。

sudo dnf module enable -y php:remi-7.4

次に、次のコマンドを実行して、基本的な LAMP スタック パッケージをインストールします。

sudo dnf install -y httpd mariadb-server mariadb php php-cli php-devel php-pear make php-mysqlnd php-pecl-imagick php-pecl-imagick-devel

ここで、apache (centos の httpd) と mariadb サービスの両方を開始し、システムの起動時に両方を開始できるようにします。

sudo systemctl enable --now httpd
sudo systemctl enable --now mariadb

次のような同様の出力が表示されます。Apache サービスと MariaDB サービスが開始され、有効になっています。

# Apache started and enabled
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.

# MariaDB started and enabled
Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.

2. その後、以下のコマンドを実行して mariadb root パスワードを設定します。セキュリティ上の理由から、デフォルトのデータベース test と匿名ユーザーを削除し、root ユーザーのリモート ログインも無効にします。

sudo mysql_secure_installation

以下は同様の出力です。mariadb root ユーザーの新しい強力なパスワードを入力し、Y を入力してすべてのアクションを確認してください。

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

To log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): PRESS ENTER
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] Y
New password: TYPE STRONG PASSWORD
Re-enter new password: TYPE STRONG PASSWORD
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Icinga2 のインストールと構成

次に、Icinga 自体のメイン コンポーネントをインストールして構成します。このステージでは、icinga2 パッケージのインストール、新しいデータベースとユーザーの作成、データベース スキーマのインポート、および Icinga REST API のセットアップについて説明します。

1. 以下のコマンドを実行して、Icinga 監視ツール パッケージをインストールします。

sudo dnf install -y icinga2 nagios-plugins-all

その後、icinga2 サービスを起動して有効化し、Icinga サービスの状態を確認します。

sudo systemctl enable --now icinga2
sudo systemctl status icinga2

次のような同様の出力が表示された場合、Icinga サービスは稼働しています。

# Icinga2 started and enabled
Created symlink /etc/systemd/system/multi-user.target.wants/icinga2.service → /usr/lib/systemd/system/icinga2.service.

# Icinga2 status running
? icinga2.service - Icinga host/service/network monitoring system
   Loaded: loaded (/usr/lib/systemd/system/icinga2.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2021-07-18 02:38:19 UTC; 6s ago
  Process: 31290 ExecStartPre=/usr/lib/icinga2/prepare-dirs /etc/sysconfig/icinga2 (code=exited, status=0/SUCCESS)
 Main PID: 31298 (icinga2)
    Tasks: 13 (limit: 4964)
   Memory: 20.9M
   CGroup: /system.slice/icinga2.service
           ??31298 /usr/lib64/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
           ??31319 /usr/lib64/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
           ??31324 /usr/lib64/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log

2. 次に、centos 8 システムで SELinux を稼働させている場合は、icinga2-selinux パッケージをインストールする必要があります。ただし、SELinux が無効になっている場合は、この部分をスキップしてください。

以下のコマンドを実行して、SELinux のステータスを確認します。

sudo sestatus

次のような出力が得られた場合は、SELinux が有効になっています。そうしないと、出力が無効になります。つまり、SELinux の部分をスキップできます。

SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   permissive
Mode from config file:          permissive
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     actual (secure)
Max kernel policy version:      32

以下のコマンドを使用して、icinga2-selinux パッケージをインストールします。

sudo dnf install -y icinga2-selinux

その後、icinga2 サービスを再起動して新しい構成を適用し、Icinga が SELinux コンテキストで稼働していることを確認します。

sudo systemctl restart icinga2
ps -eZ | grep icinga2

以下は、得られる同様の出力です。

system_u:system_r:icinga2_t:s0    33479 ?        00:00:00 icinga2
system_u:system_r:icinga2_t:s0    33499 ?        00:00:00 icinga2
system_u:system_r:icinga2_t:s0    33504 ?        00:00:00 icinga2

3. 次に、次のコマンドを使用して、icinga2 の IDO MySQL バックエンドをインストールします。

sudo dnf install -y icinga2-ido-mysql

以下のコマンドを実行して MySQL シェルにログインし、root パスワードを入力します。

sudo mysql -u root -p

以下の mysql クエリを使用して、icinga2 サービス用の新しいデータベースとユーザーを作成します。

MariaDB [(none)]> CREATE DATABASE icinga;
MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga.* TO 'icinga'@'localhost' IDENTIFIED BY 'icingapassdb';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> quit

以下の mysql コマンドを実行して、icinga2-ido-mysql データベース スキーマを icinga データベースにインポートし、mariadb root パスワードのパスワードを入力します。

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

その後、icinga2-ido-mysql 機能を有効にし、icinga2 サービスを再起動して、以下のコマンドを使用して新しい構成を適用します。

sudo icinga2 feature enable ido-mysql
sudo systemctl restart icinga2

そして、下の図と同様の出力が表示されます。

4. 次に、icinga2 REST API 構成と証明書を生成する必要があります。 icingaweb2 では、チェックの再スケジュール、オブジェクトの詳細のクエリなど、監視ジョブに関連するアクションを送信するために REST API が必要です。

以下の icinga2 コマンドを実行して、新しい API ユーザー、構成、および TLS 証明書を生成します。

sudo icinga2 api setup

次のような同様の出力が表示されます。パスワード付きの新しいユーザー root は /etc/icinga2/conf.d/api-users.conf 構成ファイルで使用でき、TLS 証明書は /var/lib/icinga2 で使用できます。 /certs/ ディレクトリ。

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 '/var/lib/icinga2/certs//centos8.csr'.
information/base: Writing private key to '/var/lib/icinga2/certs//centos8.key'.
information/base: Writing certificate signing request to '/var/lib/icinga2/certs//centos8.csr'.
information/cli: Signing CSR with CA and writing certificate to '/var/lib/icinga2/certs//centos8.crt'.
information/pki: Writing certificate to file '/var/lib/icinga2/certs//centos8.crt'.
information/cli: Copying CA certificate to '/var/lib/icinga2/certs//ca.crt'.
information/cli: Adding new ApiUser 'root' in '/etc/icinga2/conf.d/api-users.conf'.
information/cli: Reading '/etc/icinga2/icinga2.conf'.
information/cli: Enabling the 'api' feature.
Enabling feature api. Make sure to restart Icinga 2 for these changes to take effect.
information/cli: Updating 'NodeName' constant in '/etc/icinga2/constants.conf'.
information/cli: Created backup file '/etc/icinga2/constants.conf.orig'.
information/cli: Updating 'ZoneName' constant in '/etc/icinga2/constants.conf'.
information/cli: Backup file '/etc/icinga2/constants.conf.orig' already exists. Skipping backup.
Done.

Now restart your Icinga 2 daemon to finish the installation!

オプションで、新しい API ユーザーを手動で追加するには、以下のように nano エディター コマンドを使用して構成 /etc/icinga2/conf.d/api-users.conf を編集します。

sudo nano /etc/icinga2/conf.d/api-users.conf

次のサンプル構成を以下のように貼り付け、必要に応じて API ユーザー、パスワード、および権限を定義してください。

object ApiUser "icingaweb2" {
  password = "Wijsn8Z9eRs5E25d"
  permissions = [ "status/query", "actions/*", "objects/modify/*", "objects/query/*" ]
}

最後に、次のコマンドで icinga2 サービスを再起動して、新しい構成を適用します。

sudo systemctl restart icinga2

Icingaweb2 のインストールと構成

この段階では、データベースのセットアップやインストール トークンの生成など、icingaweb2 Web アプリケーションのインストールと構成を行います。

1. 次のコマンドを実行して、icingaweb2 パッケージをインストールします。

sudo dnf install -y icingaweb2 icingacli

インストール中に、icingaweb2 の新しい Apache 構成が生成されます。次のコマンドを使用して、新しい構成を確認します。

cat /etc/httpd/conf.d/icingaweb2.conf

以下は、表示される構成です。

Alias /icingaweb2 "/usr/share/icingaweb2/public"

# Remove comments if you want to use PHP FPM and your Apache version is older than 2.4
#<IfVersion < 2.4>
#    # Forward PHP requests to FPM
#    SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
#    <LocationMatch "^{urlPath}/(.*\.php)$">
#        ProxyPassMatch "fcgi://127.0.0.1:9000/{documentRoot}/$1"
#    </LocationMatch>
#</IfVersion>

<Directory "/usr/share/icingaweb2/public">
    Options SymLinksIfOwnerMatch
    AllowOverride None
.......

新しい構成を適用するには、次のコマンドを使用して apache/httpd サービスを再起動します。

sudo systemctl restart httpd

2. 次に、次のコマンドを入力して mysql シェルにログインします。

sudo mysql -u root -p

以下のいくつかの mysql クエリを実行して、icingaweb2 用の新しいデータベースとユーザーを作成します。

MariaDB [(none)]> CREATE DATABASE icingaweb2;
MariaDB [(none)]> GRANT ALL ON icingaweb2.* TO IDENTIFIED BY 'icingaweb2passdb';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> quit

3. その後、次のコマンドを使用して、次の段階でインストールするための icingaweb2 セットアップ トークンを生成します。

sudo icingacli setup token create
sudo icingacli setup token show

次の出力が表示されます。 icinga2 インストール トークンをメモにコピーしてください。

# Generated setup token
The newly generated setup token is: 41e33db4cf0c5617

# Show generated token
The current setup token is: 41e33db4cf0c5617

Web インターフェイスを介して Icinga Web 2 を構成する

ここで、Web ブラウザと URL http://SERVER-IP/icingaweb2/setup を開くと、icinga2 インストール ページが表示されます。

1. icingaweb2 セットアップ トークンをボックスに貼り付け、[次へ] をクリックします。

2. ここでは、Icinga モジュールをデフォルトのままにして、[次へ] をクリックします。

3. icingaweb2 のすべてのシステム要件が「緑」の色になっていることを確認し、[次へ] ボタンをクリックします。

4. バックエンド認証をデフォルトのデータベースのままにして、[次へ] をクリックします。

5. icingaweb2 のデータベース名、ユーザー名、およびパスワードを入力し、[次へ] を再度クリックします。

6. 認証バックエンド名をデフォルトの icingaweb2 のままにして、[次へ] をクリックします。

7. ここで、新しいユーザーとパスワード管理を入力し、[次へ] をクリックします。

8. アプリケーションとログの構成をデフォルトのままにして、[次へ] をクリックします。

9. すべての構成を再確認し、[次へ] をクリックして続行します。

10. [次へ] をクリックして、icinga2 監視モジュールを構成します。

11.icinga2-ido-mysql のデータベース名、ユーザー名、およびパスワードを入力し、[構成の検証] ボタンをクリックします。

次のようなエラーが発生した場合 現在、IDO に書き込む icinga インスタンスはありません。 icinga インスタンスが構成されていて、IDO への書き込みが可能であることを確認して、ターミナルに戻り、構成を手動で編集します。

次のコマンドを実行して、IDO 構成を編集します。

sudo nano /etc/icinga2/features-available/ido-mysql.conf

以下のように、ido mysql 構成をコピーして貼り付けます。

object IdoMysqlConnection "ido-mysql" {
user = "icinga", password = "icingapassdb", host = "localhost", database = "icinga" }

ここで Ctrl+x を押してから y を押し、Enter を押してファイルを保存します。

次に、次のコマンドを使用して Icinga2 サービスを再起動します。

sudo systemctl restart icinga2

Web ブラウザに戻り、[検証をスキップ] オプションを有効にしてから、[次へ] をもう一度クリックします。

12. ここで、トランスポート タイプ [ローカル コマンド ファイル] を選択し、[次へ] をクリックします。

13. 監視セキュリティ構成をデフォルトのままにして、[次へ] をクリックします。

14. Icinga のインストール構成を再確認し、[完了] をクリックして続行します。

15. インストールが成功すると、下の図のような出力が得られます。次に、[Icinga Web 2 にログイン] ボタンをクリックします。

Icinga 2 と Icinga Web 2 のインストールを確認する

1. Icinga 管理者のユーザーとパスワードを入力し、[ログイン] ボタンをクリックします。

2. 以下のようなページが表示されます。

ダッシュボードでわかるように、icinga2 監視ツールによって自動的に検出されるサービスがいくつかあります。緑色のサービスは正常性を意味し、黄色のサービスはチェックが必要な警告を意味します。また、エラー サービスは赤色になります。

結論

チュートリアルが完了すると、LAMP スタックを使用した最新の CentOS 8 サーバーでの icinga2 監視ツールのインストールと構成について学習したことになります。 icinga2 のインストールでは、各段階に集中する必要があります。最も重要なことは、やみくもにコマンドを実行するのではなく、自分が何をしているのかを理解することです。