ウェブサイト検索

CentOS 8|RHEL 8 上の Icinga Director を使用して Icinga2 構成を自動化する |


前回の記事では、Icinga2 を CentOS 8/RHEL 8 にインストールする方法について説明しました。この記事では、Icinga Director と呼ばれるツールを使用して Icinga2 の構成を自動化する方法について説明します。 Icinga Director は、Icinga2 の Web 設定をより簡単かつ迅速に行うために設計されたモジュールです。

Icinga Director は、高度な知識のないユーザーが、単純なポイント アンド クリックを必要とする Web インターフェイスを通じてホストとサービスを追加、監視、削除するのに役立ちます。

Icinga Director は、マスター サーバーへの root アクセス権がない場合に使用するのに最適なツールでもあります。 Icinga Director を使用すると、オブジェクトを Director にインポートして同期できるという利点があります。

インポートされたオブジェクトは、ID の同期が完了した後に編集できます。 Icinga Director がサポートするインポート ソースには、CSV、XML、JSON、PuppetDB、AWS、YAML などがあります。

CentOS 8 に Icinga Director をインストールする | RHEL8

以下の手順では、Icinga Director を CentOS 8/RHEL 8 にインストールする方法を説明します。Icinga web2 のインスタンスが実行中であることを前提としています。まだの場合は、以下のリンクをクリックしてください。

  • CentOS 8/RHEL 8 に Icinga 2 をインストールして構成する

次の Icinga モジュールをインストールして有効にする必要があります。

  • リアクトバンドル
  • IPL
  • インキュベータ
  • PHPモジュール
  1. git および PHP モジュールをインストールする
sudo dnf -y install dnf-utils git
sudo dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
sudo dnf module -qy reset php
sudo dnf module install php:remi-8.0 -y
sudo dnf install php  php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-json php-opcache -y

バージョンを確認して、PHP が正常にインストールされたかどうかを確認します。

$ php --version
PHP 8.0.12 (cli) (built: Oct 19 2021 10:34:32) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.12, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.12, Copyright (c), by Zend Technologies

2. Icinga Director 用の空のデータベースを作成します。

MySQL

$ mysql -u root -p
CREATE DATABASE director CHARACTER SET 'utf8';
CREATE USER director@localhost IDENTIFIED BY 'director';
GRANT ALL ON director.* TO director@localhost;
EXIT;

ポストグレSQL

$ sudo su - postgres
$ psql
CREATE DATABASE director WITH ENCODING 'UTF8';
CREATE USER director WITH PASSWORD 'director';
GRANT ALL PRIVILEGES ON DATABASE director TO director;
CREATE EXTENSION pgcrypto;

3.IPLをインストールする

MODULE_NAME=ipl
MODULE_VERSION=$(curl -s https://api.github.com/repos/Icinga/icinga-php-library/releases/latest  | grep tag_name | cut -d '"' -f 4)
REPO="https://github.com/Icinga/icinga-php-library"
MODULES_PATH="/usr/share/icingaweb2/modules"
git clone ${REPO} "${MODULES_PATH}/${MODULE_NAME}" --branch "${MODULE_VERSION}"
icingacli module enable "${MODULE_NAME}"

4. インキュベーターの設置

MODULE_NAME=incubator
MODULE_VERSION=$(curl -s https://api.github.com/repos/Icinga/icingaweb2-module-incubator/releases/latest  | grep tag_name | cut -d '"' -f 4)
REPO="https://github.com/Icinga/icingaweb2-module-${MODULE_NAME}"
MODULES_PATH="/usr/share/icingaweb2/modules"
git clone ${REPO} "${MODULES_PATH}/${MODULE_NAME}" --branch "${MODULE_VERSION}"
icingacli module enable "${MODULE_NAME}"

5. リアクトバンドルをインストールする

MODULE_NAME=reactbundle
MODULE_VERSION=$(curl -s https://api.github.com/repos/Icinga/icingaweb2-module-reactbundle/releases/latest  | grep tag_name | cut -d '"' -f 4)
REPO="https://github.com/Icinga/icingaweb2-module-${MODULE_NAME}"
MODULES_PATH="/usr/share/icingaweb2/modules"
git clone ${REPO} "${MODULES_PATH}/${MODULE_NAME}" --branch "${MODULE_VERSION}"
icingacli module enable "${MODULE_NAME}"

6. ディレクターモジュールをインストールする

Director モジュールは、次の 2 つの方法を使用してインストールできます。

  1. tarball ファイルからのインストール
  2. gitリポジトリからのインストール

リリース tarball からのインストール

次のスクリプトを使用して、tarball から Icinga Director モジュールをインストールします。

ICINGAWEB_MODULEPATH="/usr/share/icingaweb2/modules"
REPO_URL="https://github.com/icinga/icingaweb2-module-director"
TARGET_DIR="${ICINGAWEB_MODULEPATH}/director"
MODULE_VERSION=$(curl -s https://api.github.com/repos/Icinga/icingaweb2-module-director/releases/latest  | grep tag_name | cut -d '"' -f 4)
URL="${REPO_URL}/archive/v${MODULE_VERSION}.tar.gz"
install -d -m 0755 "${TARGET_DIR}"
wget -q -O - "$URL" | tar xfz - -C "${TARGET_DIR}" --strip-components 1

GIT リポジトリからのインストール

ICINGAWEB_MODULEPATH="/usr/share/icingaweb2/modules"
REPO_URL="https://github.com/icinga/icingaweb2-module-director"
TARGET_DIR="${ICINGAWEB_MODULEPATH}/director"
MODULE_VERSION=$(curl -s https://api.github.com/repos/Icinga/icingaweb2-module-director/releases/latest  | grep tag_name | cut -d '"' -f 4)
git clone "${REPO_URL}" "${TARGET_DIR}" --branch v${MODULE_VERSION}
cd "${TARGET_DIR}" && git checkout "v${MODULE_VERSION}"

インストールが正常に完了したら、次のステップはそれを有効にすることです。これは、シェルで icingacli を使用するか、Web インターフェイスを使用して実行できます。

コマンドラインで:

icingacli module enable director

Web インターフェイスで、Configuration/Modules を選択し、director モジュールを選択して、State: enable を選択します。

Icinga Director 構成管理

/etc/icinga2/zones.conf ファイルにグローバル オブジェクトを作成します。

object Zone "director-global" {
  global = true
}

Icinga Director はリレーショナル データベース (MySQL、MariaDB、または PostgreSQL) を使用します。 Director インスタンスのデータベース リソースを作成する必要があります。

ファイル /etc/icingaweb2/resources.ini を編集し、次の情報を追加します。

データベース ユーザーの作成時に使用したパスワードと、使用しているデータベースの種類を忘れずに使用してください。

文字セットには "utf8" も使用します

[Director DB]
type = "db"
db = "mysql"
host = "localhost"
dbname = "director"
username = "director"
password = "director"
charset = "utf8"

上で作成したデータベース リソースを使用するように Director を構成します。

次の情報を /etc/icingaweb2/modules/director/config.ini ファイルに追加します。

[db]
resource = "Director DB"

/etc/icinga2/conf.d/api-users.conf で ApiUser ファイルを構成します。

object ApiUser "director" {
        password = "director"
        permissions = [ "*" ]
}

/etc/icingaweb2/modules/director/kickstart.ini でkickstart.ini ファイルを設定します。

このファイルには、エンドポイント (マスターホスト名)、/etc/icinga2/conf.d/api-users.conf で設定された APIUser のユーザー名とパスワード、解決可能なホストとポートが含まれています。

[config]
endpoint = icinga-master
; host = 127.0.0.1
; port = 5665
username = director
password = director

スキーマの作成とデータベースのキックスタート

次のコマンドを実行してスキーマを作成し、空のデータベースを起動します。

icingacli director kickstart run
icingacli director migration run --verbose
icingacli director migration pending --verbose

Icinga Director が正常に構成され、タスクと監視を自動化するために使用できるようになりました。

Icinga Director を使用して Icinga2 にホストを追加する方法

次の手順では、上で構成した Icinga Director を使用して Icinga2 にホストを追加する方法を説明します。

1.サービステンプレートを作成する

システムとサービスを監視するために使用されるサービス テンプレートを構成する必要があります。

テンプレートでは、監視されるサービスとシステムの一部を定義します。

この投稿では、システム負荷とディスク使用量を監視するテンプレートを作成します。

これを設定するには、Icinga Web ダッシュボードにログインし、 左側のパネルの「Icinga Director」 に移動します。 [サービス] を選択し、[サービス テンプレート ] オプションを選択します。新しいサービス テンプレートを作成するには、[追加] ボタンをクリックします。

以下の画像に示すようにテンプレートを追加します。

名前: わかりやすい名前を付けます。

チェック コマンド: モニタリングをチェックするために使用されるコマンド (例: ssh、ping)

エージェントでの実行を許可します

[追加] をクリックしてサービス テンプレートを追加します。

ディスク使用量についても同じことを繰り返します。

2. ServiceSetの作成とサービステンプレートの追加

上記で作成したテンプレートから ServiceSet を作成します。

サービスセットをクリックし、サービスメニューの追加をクリックします。

サービス セットに、わかりやすい一意の名前と説明を付けます。

次に、作成したserviceSetにサービステンプレートを追加します。この例では、standard-linux-serverserviceSet に追加します。

左側のペインでサービス セット名をクリックし、右上のタブで [サービス] オプションを選択します。

[サービスの追加] タブをクリックしてサービスを追加します

サービスを追加し、インポート ドロップダウンからサービスの名前を選択し、追加 をクリックします。

作成したすべてのサービスに対して同じことを繰り返します。

3. ホスト テンプレートを作成し、ServiceSet を追加します。

次のステップでは、ホストを作成し、上で作成した ServiceSet をアタッチします。これは、新しいホストをマスター ノードに割り当てるために使用されます。

Icinga Director メニューで、[ホスト] をクリックし、[ホスト テンプレート] をクリックします。

次に、[追加] をクリックして新しいホスト テンプレートを作成します。

次のフィールドに必ず入力してください。

  • 名前: テンプレートのわかりやすい名前
  • チェックコマンド: hostalive
  • Icinga2 エージェント: はい
  • 接続の確立: はい
  • 設定を受け入れる: はい

次のステップでは、serviceSet をテンプレートに追加します。作成したテンプレートをクリックし、上部メニューの [サービス] をクリックします。

「サービス セットの追加」タブをクリックしてサービスセットを追加します。

作成したサービス セットを選択します。この例では標準 Linux サーバーです。

この時点で、ホスト テンプレートが作成され、それに serviceSet が追加されています。これは、ホストを Icinga2 に追加するためのセットアップの準備ができたことを意味します。

4. Icinga Director を使用してホストを Icinga2 に追加します

次のステップでは、構成した Icinga ディレクターを使用して Icinga2 にホストを追加してみます。

ホスト名が client02.icinga.computingforgeeks で、IP 172.16.10.4 を持つクライアントを追加します。

Icinga Director メニューでホストをクリックし、表示されるメニューでホストを選択します。

右側の [追加] をクリックし、作成したホスト テンプレートを選択します。この例では標準 Linux サーバーです。

ホスト名、表示名、ホスト IP を指定します。

ホスト名はクライアント サーバーのホスト名である必要があります。

これまでに行った変更をデプロイするときが来ました。 Icinga Director メニューで [Deployments] をクリックすると、まだデプロイされていない多数の変更が表示されます。 「xx 個の保留中の変更をデプロイ」タブをクリックします。「xx」は保留中のデプロイメントの数です。

これにより、ホスト テンプレートを使用して client02.icinga.computingforgeeks が Icinga に追加されます。

5.Icinga2クライアントを初期化する

監視のために必要な Icinga2 パッケージを client02 にインストールする必要があります。

クライアント ホストに接続し、パッケージをダウンロードします。リポジトリ設定の詳細な手順については、公式を確認してください。

  • Linux での Icinga2 リポジトリ構成

RHEL/CentOS 8:

# CentOS 8 / Rocky Linux 8
sudo dnf -y install https://packages.icinga.com/epel/icinga-rpm-release-8-latest.noarch.rpm
sudo dnf -y install epel-release
sudo dnf config-manager --set-enabled powertools
sudo dnf install icinga2 monitoring-plugins

# RHEL 8
sudo dnf -y install https://packages.icinga.com/epel/icinga-rpm-release-8-latest.noarch.rpm
sudo dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
ARCH=$( /bin/arch )
sudo subscription-manager repos --enable "codeready-builder-for-rhel-8-${ARCH}-rpms"
sudo dnf install icinga2 monitoring-plugins

RHEL/CentOS 7:

# CentOS 7
sudo yum -y install https://packages.icinga.com/epel/icinga-rpm-release-7-latest.noarch.rpm
sudo yum -y install epel-release
sudo yum install icinga2 monitoring-plugins

# RHEL 7
sudo yum -y install https://packages.icinga.com/epel/icinga-rpm-release-7-latest.noarch.rpm
sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo subscription-manager repos --enable rhel-7-server-optional-rpms

Ubuntu:

sudo apt update
sudo apt -y install apt-transport-https wget gnupg
wget -O - https://packages.icinga.com/icinga.key |  sudo apt-key add -
. /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" | sudo tee /etc/apt/sources.list.d/${DIST}-icinga.list
 echo "deb-src https://packages.icinga.com/ubuntu icinga-${DIST} main" | sudo tee /etc/apt/sources.list.d/${DIST}-icinga.list
sudo apt  update

デビアン :

sudo apt update
sudo apt -y install apt-transport-https wget gnupg
wget -O - https://packages.icinga.com/icinga.key | sudo apt-key add -
DIST=$(awk -F"[)(]+" '/VERSION=/ {print $2}' /etc/os-release);
echo "deb https://packages.icinga.com/debian icinga-${DIST} main" | sudo tee /etc/apt/sources.list.d/${DIST}-icinga.list
echo "deb-src https://packages.icinga.com/debian icinga-${DIST} main" | sudo tee /etc/apt/sources.list.d/${DIST}-icinga.list
sudo apt update
sudo apt install icinga2 monitoring-plugins

icinga2 をクライアントに正常にインストールしたら、次のステップは Icinga ディレクター ダッシュボードから展開スクリプトをダウンロードすることです。

Icinga ディレクター メニューで、[ホスト] を選択し、[Icinga ホストの管理] メニューの [ホスト] オプションを選択します。

ホスト (この場合は client02.icinga.computingforgeeks) を選択し、右上のパネルで [エージェント] を選択します。

システム用のエージェント展開スクリプトをダウンロードします。この場合は Linux です。 Linux コマンドライン タイトルのすぐ下にあるダウンロード ボタンを使用します。

これは、展開を有効にするためにクライアント サーバーで実行するために使用するスクリプトです。

マスター Icinga ホストのホスト名をクライアントの /etc/hosts ファイルに設定する必要があります。

echo "IP-OF-MASTER master-hostname" >> /etc/hosts
e.g:
echo "172.16.10.2 master-icinga" >> /etc/hosts

上の例では、172.16.10.2 がマスターの IP で、「master-icinga」がマスターのホスト名です。

クライアント上で実行可能なスクリプトを作成し、ダウンロードしたファイルのコンテンツをそれに貼り付けます。

cp icinga2-agent-kickstart.bash deployment-script.sh

スクリプトを実行可能にします。

chmod a+x deployment-script.sh

スクリプトを実行します。

./deployment-script.sh

実行が成功すると、スクリプトが終了し、クライアントで Icinga2 サービスを再起動する必要があります。

systemctl restart icinga2

Icinga2 Director のテスト

サービスが初期化され、Icinga2 Web ダッシュボードにホストが起動していることが表示されます。

ダッシュボードで [概要] をクリックし、次に [ホスト] をクリックすると、リストされたホストの中に新しく追加されたホストが表示されます。

ホスト名をクリックすると、クライアントに関する詳細情報が表示されます。追加したサービスのサービス統計を確認することもできます。

結論

Icinga Director を使用して Icinga2 にクライアントを正常に追加しました。 Icinga Director を使用して、クライアントを好きなだけ Icinga に追加できるようになりました。

これは、Icinga2 を使用して監視するすべてのクライアント ホストを構成する必要がある手動作業を軽減するのに役立つツールです。

Icinga 2 のこのモジュールをデプロイする際に問題が発生した場合は、お気軽にコメントまたはご連絡ください。

関連記事: