監視はインフラストラクチャの最も重要な側面の 1 つであり、Icinga 監視ツールにはさまざまなオプションがあります。 Icinga を使用すると、構成に基づいてインフラストラクチャ全体を柔軟に監視できます。
この記事では、Icinga2 監視スタックを使用してサーバーを監視する方法を学びます。スタックをインストールし、分散モニタリングをセットアップします。
準備?すぐに飛び込め!
前提条件
このチュートリアルは実践的なデモンストレーションです。先に進むには、次のものがあることを確認してください:
- 2 台の Linux マシン – このチュートリアルでは、両方のマスター (master) で Ubuntu 20.04 サーバーを使用します。 ) とクライアント (client01 ) サーバー。
- 両方のデバイスで root 権限を持つユーザー
- MariaDB がマスター サーバーにインストールされ、実行されている
すべてのサーバーで FQDN を設定する
Icinga2 は、多くの場所でサーバー インフラストラクチャとアプリケーションを監視できるエンタープライズ対応の監視ソリューションです。
すべてのサーバーに完全修飾ドメイン名 (FQDN) を設定すると、大規模な環境でのサーバー管理が容易になります。このチュートリアルのドメインは、example.lan という名前です。 ただし、既存のローカル ドメインを使用できます。
両方のサーバーで次のコマンドを実行する必要があることに注意してください。それに応じて値を変更してください。
1. 端末を開いてサーバーに接続します。
2. 次に、以下の各コマンドを実行して、マスター マシンとクライアント マシンで FQDN を設定します。サーバーの FQDN は master.example.lan
です (マスター ) と client01.example.lan
(client01 )。
# Set FQDN on master server
sudo hostnamectl set-hostname master.example.lan
# Set FQDN on client01 server
sudo hostnamectl set-hostname client01.example.lan
3. /etc/hosts を編集します 任意のテキスト エディターでファイルを作成し、以下のエントリを入力します。 IP アドレスを実際のサーバー アドレスに置き換えます。
# /etc/hosts for master
172.16.1.10 master.example.lan master
# /etc/hosts for client01
172.16.1.30 client01.example.lan client01
4. 最後に、以下のコマンドを実行して FQDN を確認します。
hostname --fqdn
Icinga2 と監視プラグインのインストール
FQDN を構成したら、Icinga2 をインストールします。 icinga2 と監視プラグインの両方に apt パッケージをインストールします。これらのパッケージは、Icinga2 の主要コンポーネントであり、システム監視用のスクリプトを提供するプラグインです。
Icinga2 とモニタリング プラグインのインストールは、master サーバーと client01 サーバーで行う必要があります。
1. 以下の apt install
を実行します HTTPS 経由でパッケージの依存関係を安全にインストールするコマンド (apt-transport-https
)、GPG キーを確認します。
sudo apt install -y apt-transport-https wget gnupg
2. 次に、wget
を実行します。 Icinga2 の GPG キーをダウンロードするコマンド。パイプされた apt-key
コマンドは、GPG キーを追加して、Icinga2 パッケージの整合性を検証します。
wget -O - https://packages.icinga.com/icinga.key | apt-key add -
3. 以下の各コマンドを実行して、マシンに Icinga2 apt リポジトリを追加します。
# Adding repository for icinga2
. /etc/os-release; if [ ! -z ${UBUNTU_CODENAME+x} ]; then DIST="${UBUNTU_CODENAME}"; else DIST="$(lsb_release -c| awk '{print $2}')"; fi; \
echo "deb https://packages.icinga.com/ubuntu icinga-${DIST} main" > \
/etc/apt/sources.list.d/${DIST}-icinga.list
echo "deb-src https://packages.icinga.com/ubuntu icinga-${DIST} main" >> \
/etc/apt/sources.list.d/${DIST}-icinga.list
# Verify the Icinga2 apt repository is added
cat /etc/apt/sources.list.d/focal-icinga.list
4. 最後に、apt
を実行します 以下のコマンドを実行して、パッケージ インデックスを更新し、パッケージをインストールします。
# Refresh package index
sudo apt update
# Installing package
sudo apt install icinga2 monitoring-plugins -y
IDO MySQL ドライバをマスター サーバーにインストールする
Icinga2 がインストールされ、ほぼ動作する準備が整いました。しかし、Icinga2 が適切に機能するには、データベースが必要です。そのため、IDO MySQL ドライバーをインストールし、マスター サーバーにデータベース接続をセットアップします。
Icinga2 リポジトリは
icinga2-ido-mysql
を提供します パッケージ。このパッケージは、MySQL および MariaDB サーバーで動作するデータベース ドライバーです。
1. 以下のコマンドを実行して icinga2-ido-mysql
をインストールします パッケージ。
sudo apt install -y icinga2-ido-mysql
2. [はい] を選択します 以下に示すように、ドライバーをセットアップしてデータベースを作成するように求められたら。この構成では、icinga2 をデータベース ユーザーとして設定し、新しいファイル /etc/icinga2/features-available/ido-mysql.conf を生成します。 .
3. [はい] を選択します ido-mysql を有効にする Icinga2 の新しいデータベースとユーザーを自動的に作成します。
4. MariaDB ユーザー icinga2 のパスワードを入力し、[OK] を選択します。 icinga2-ido-mysql のインストールを完了します。
5. 次に、cat
を実行します 以下のコマンドで /etc/icinga2/features-available/ido-mysql.conf の内容を確認します ファイル。
cat /etc/icinga2/features-available/ido-mysql.conf
入力したものと一致する MariaDB データベースの詳細が以下に表示されます。
6. icinga2
を実行します 以下のコマンドを enable
に ido-mysql
特徴。
sudo icinga2 feature enable ido-mysql
7. 最後に、次のコマンドを実行して再起動し、icinga2
を確認します。 サービス status
.
# restart service
sudo systemctl restart icinga2
# verifying service
sudo systemctl status icinga2
以下同様に、ido-mysql 機能が有効になっており、icinga2 サービスがアクティブ(実行中)になっていることがわかります。
Icinga2 API の設定
Icinga2 IDO MySQL ドライバーをインストールし、データベース接続を構成しました。ただし、HTTP リクエストを介して Icinga2 監視スタックを管理および構成するには、Icinga2 API を構成します。
Icinga2 モニタリング スタックも分散型モニタリング システムです。
1. マスター サーバーで以下のコマンドを実行して、Icinga2 API を有効にし、Icinga2 の TLS 証明書を生成し、Icinga2 構成を更新します。
sudo icinga2 api setup
2. 次に、/etc/icinga2/conf.d/api-users.conf を編集します。 ファイル をテキスト エディタで開き、次の構成を入力します。後で必要になるため、提供する API ユーザー資格情報をメモしておいてください。
必要に応じてパスワードを適切に強力なものに置き換えます。
/** api for icingaweb2 */
object ApiUser "icingaweb2" {
password = "passwordapiicngaweb2"
permissions = [ "status/query", "actions/*", "objects/modify/*", "objects/query/*" ]
}
3. 最後に、以下のコマンドを restart
に対して実行します。 icinga2
サービスを開始し、新しい構成を適用します。
sudo systemctl restart icinga2
マスターサーバーへのicingaweb2のインストールと設定
Icinga2 API を有効にして新しい API ユーザーを構成した後、ホストをより適切に監視するには、ダッシュボードが必要です。どのように?マスターサーバーに Icingaweb2 をインストールして構成します。
Icingaweb2 は、PHP で記述された Icinga2 監視スタックの Web フロントエンドであり、応答性が高く拡張可能な監視ダッシュボードを提供します。
1. 以下のコマンドを実行して、Icingaweb2 Web アプリケーションの処理に必要なコンポーネントとともに Icingaweb2 をインストールします。
sudo apt install icingaweb2 libapache2-mod-php icingacli -y
2. 次に、icingacli
を実行します 以下のコマンドを実行して、Icingaweb2 をセットアップするためのトークンを生成します。このトークンは、後で Icingaweb2 のインストールに必要になるため、書き留めておいてください。
sudo icingacli setup token create
3. mysql
を実行します 以下のコマンドを実行して、MySQL シェルにログインし、新しいユーザーを作成します (root
) Icingaweb2 の場合。
mysql -u root -p
4. 次のクエリを実行して、新しいデータベースとユーザー icingaweb2
を作成します。 パスワード付き。ユーザー名とパスワードは好きなように設定できます。
CREATE DATABASE icingaweb2;
GRANT ALL ON icingaweb2.* TO [email protected] IDENTIFIED BY 'strongpasswordicingaweb2';
FLUSH PRIVILEGES;
5. 最後に exit
を実行します MySQL シェルからログアウトします。
exit
Icingaweb2 インストールのセットアップ
マスター サーバーに Icingaweb2 をインストールし、新しいユーザーのセットアップ トークンを生成しました。ただし、icingaweb2 ダッシュボードにアクセスするには、Web ブラウザー経由で icingaweb2 インストールをセットアップします。
1. Web ブラウザを開き、マスター サーバーの IP アドレスに移動し、続いて URL パス /icingaweb2/setup に移動します。 (つまり、http://172.16.1.10/icingaweb2/setup) .
2. 次に、「マスターサーバーへの icingaweb2 のインストールと構成」セクション (ステップ 2) で生成した Icingaweb2 セットアップトークンを入力し、[次へ] をクリックします。 .
3. デフォルトを受け入れます (モニタリング )モジュール ページを開き、[次へ] をクリックします .
4. [データベース] を選択します 認証タイプ ドロップダウン ボックスをクリックして、[次へ] をクリックします。 .この認証タイプは、Icingaweb2 管理ダッシュボードを保護します。
この時点で、Icingaweb2 はインストールのシステム要件のチェックを開始します。
5. PostgreSQL 以外のすべてのステータス要件が緑色であることを確認し、[次へ] をクリックします。 .
PostgreSQL エラー メッセージを無視します。データベース バックエンドとして MariaDB を使用しています。
6. ここで、「マスター サーバーへの icingaweb2 のインストールと構成」セクション (手順 4) で設定した値と同じ値を データベース リソース に指定します。 以下のフォーム。
[構成の検証] をクリックして構成が機能することを確認し、[構成が正常に検証されました] というメッセージが表示されたら [次へ] をクリックします。
7. 認証バックエンドを離れる デフォルト値(icingaweb2) バックエンド名として入力し、[次へ] をクリックします。
8. Icingaweb2 の最初の管理者アカウントの資格情報を入力し、[次へ] をクリックします。 .後で Icingaweb2 ダッシュボードにログインする際に必要になるため、資格情報をメモしておいてください。
9. Application Configuration のデフォルトのロギング値をそのままにしておきます Icingaweb2 の場合は、[次へ] をクリックします。 .
10. 次に、構成設定を確認し、[次へ] をクリックします。 icingaweb2 のインストールを確認します。
11. [次へ] をクリックします。 Icingaweb2 の監視モジュールの設定を続行します。
12. 以下に示すように、それに応じて Icinga2 のデータベース名とユーザーを指定します。 Icinga2 のデータベースの詳細は、/etc/icinga2/features-available/ido-mysql.conf にあります。 ファイル。
[構成の検証] をクリックし、データベース接続が成功していることを確認してから、[次へ] をクリックします。
13. /etc/icinga2/conf.d/api-users.conf に保存されている Icinga2 API ユーザーとパスワードを入力します。 以下のフィールドにファイルします。
[構成の検証] ボタンをクリックし、[構成が正常に検証されました] というメッセージが表示されることを確認して、[次へ] をクリックします。
14. Monitoring Security でデフォルトのカスタム変数を受け入れます 設定して [次へ] をクリックします .これらの変数は、監視環境を詮索好きな目から保護するのに役立ちます。
15. 監視モジュールの構成を調べて、[完了] をクリックします。 をクリックしてインストールを完了します。
16. icingaweb2 のインストールが完了すると、おめでとうございます! Icinga Web 2 が正常にセットアップされました 下図のようなメッセージ。
[Icinga Web 2 にログイン] をクリックすると、ブラウザが icingaweb2 ログイン ページにリダイレクトされます(ステップ 17)。
17. icingaweb2 の管理者ユーザーとパスワードを入力し、[ログイン] をクリックします。 Icinga ダッシュボードにアクセスします。
18. 最後に、[概要] をクリックします。 —> サービス 、マスターのステータスが表示されます 以下のようなサーバー。
Icinga2 マスター サーバーの初期化
Icinga2監視スタックを正常にインストールして、マスターサーバーのステータスを監視しました.次に、マスター サーバーを Icinga2 モニタリング スタックのマスター ノードとして初期化します。マスター ノードは、Icinga2 分散監視スタックのメイン コントローラーです。
1. マスター サーバーのターミナルで次のコマンドを実行して、icinga2
を初期化します。 マスター node
.
sudo icinga2 node wizard
2. n を押します エージェント/サテライト ノード (Icinga2 マスター ノード) をセットアップします。
3. 共通名 (CN) で ENTER を押します 構成。 Icinga2 はサーバーの FQDN を自動的に検出します。
4. 次に、マスター ゾーン名を master.example.lan として指定します。 を押し、N を押します 大域ゾーンの追加をスキップします。デフォルトの大域ゾーンは、icinga2 のすべての構成オブジェクトを同期します。
5. API バインド ホストとポートをデフォルトのままにして、ENTER を押します。 API は、TLS 暗号化接続を使用して Icinga2 ノード間で通信します。
6. Y と入力します /etc/icinga2/conf.d/ 内のすべての構成を無効にするには 後で作成する Icinga2 ゾーン構成を使用するためです。
7. systemctl
を実行します 以下のコマンドを実行して、icinga2 サービスを再起動し、構成を適用します。
sudo systemctl restart icinga2
8. 最後に、以下のコマンドを実行して、client01
を登録するためのチケットを生成します。 Icinga2で。
sudo icinga2 pki ticket --cn 'client01.example.lan'
後で client01 を Icinga2 エージェントとして登録するために使用する、生成されたチケットをコピーします。
クライアント サーバーで Icinga2 エージェントを初期化しています
マスター サーバーをマスター ノードとして初期化したら、client01 に Icinga2 エージェントをセットアップして、Icinga2 を使用して client01 マシンを監視します。
1. client01 にログインし、「Icinga2 マスター サーバーの初期化」セクションで実行した手順 (手順 1 ~ 3) に従って、Icinga2 エージェントを初期化します。
2. 次に、親エンドポイントを master.example.lan として指定します 、Y と入力します 親/マスターノードとの接続を確立します。
3. マスター サーバーの IP アドレスを入力します (172.16.1.10 )、エンドポイント ポートはデフォルトのままにします。
4. N と入力します さらにエンドポイントを追加するように求められたとき。
5. Y と入力します 情報を確認し、Icinga2 マスター サーバーの証明書を追加します。
6. 「Icinga2 マスター サーバーの初期化」セクションの最後の手順で生成したチケット を入力して、エージェント ノードを登録します (client01.example.lan)。
7. ENTER を押して、API バインド ホストとポートのデフォルト値を受け入れます。
8. 次に、Y を入力します 親/マスターノードから構成とコマンドを受け入れるために2回。
9. ENTER を押して、ローカル ゾーン名のデフォルトを受け入れますが、ゾーン名と一致する親ゾーン名を入力します (master.example.lan)。 )マスターサーバー上。
10. 次に、N と入力します グローバル ゾーンの追加をスキップするには、「Y」と入力します /etc/icinga2/conf.d の設定を無効にする ディレクトリ。
11. 最後に、次のコマンドを実行して Icinga2 サービスを再起動し、構成の変更を適用します。 sudo systemctl restart icinga2
sudo systemctl restart icinga2
マスター サーバーでのゾーン構成の作成
分散モニタリングが終わったら、新しいゾーン ディレクトリを作成し、クライアント エージェントのモニタリング構成を定義します。
1. mkdir
を実行します 以下のコマンドを実行して、デフォルト ゾーンとして新しいディレクトリを作成します (master.example.lan
) Icinga2 で。
sudo mkdir -p /etc/icinga2/zones.d/master.example.lan/
2. 次に、構成ファイルを作成します (client01.example.lan.conf ) /etc/icinga2/zones.d/master.example.lan/ ディレクトリ。次の構成でファイルを作成します。
以下のコードは、サーバーを監視するためのエンドポイント、ゾーン、およびホスト オブジェクトを定義します。
// Endpoints
object Endpoint "client01.example.lan" {
}
// Zones
object Zone "client01.example.lan" {
endpoints = [ "client01.example.lan" ]
parent = "master.example.lan"
}
// Host Objects
object Host "client01.example.lan" {
check_command = "hostalive"
address = "172.16.1.30"
vars.client_endpoint = name
}
3. 別の構成ファイルを作成し、以下のコードをコピーしてそのファイルに貼り付け、/etc/icinga2/zones.d/master.example.lan/services.conf. として保存します。
以下の構成は、client01 マシン上のいくつかの基本的なサービスを監視します。
// Ping
apply Service "Ping" {
check_command = "ping4"
assign where host.address // check executed on master
}
// System Load
apply Service "System Load" {
check_command = "load"
command_endpoint = host.vars.client_endpoint // Check executed on client01
assign where host.vars.client_endpoint
}
// SSH Service
apply Service "SSH Service" {
check_command = "ssh"
command_endpoint = host.vars.client_endpoint
assign where host.vars.client_endpoint
}
// Icinga 2 Service
apply Service "Icinga2 Service" {
check_command = "icinga"
command_endpoint = host.vars.client_endpoint
assign where host.vars.client_endpoint
}
4. icinga2
を実行します 以下のコマンドで Icinga2 の設定を確認してください。
sudo icinga2 daemon -C
すべてがうまくいけば、以下のような出力が表示されます。
5. 最後に、以下のコマンドを実行して Icinga2 サービスを再起動し、構成の変更を適用します。
sudo systemctl restart icinga2
Icinga2 ダッシュボードでの確認
すべてのリソースを構成しましたが、すべてが機能するかどうかをテストする必要があります。 Icinga2 ダッシュボードをチェックして、作業の結果を確認します。
Icinga2 ダッシュボードに戻り、[概要] をクリックします。 —> ホスト 、以下に示すように、client01 が表示されます。 稼働中です .
[サービス] をクリックします。
結論
このチュートリアルは、Ubuntu サーバーで Icinga2 監視スタックをセットアップするプロセスを支援することを目的としています。また、Icinga2 エージェントを使用して分散監視をセットアップし、大規模なインフラストラクチャを監視する方法も学びました。
さて、次は何ですか?おそらく、監視を簡素化するために Icinga Director をセットアップする方法を学びませんか?