Icinga2/Icinga Web 2/Icinga2 Director を fedora 41 にインストールしてみる

Icinga2

Icinga2/Icinga Web2/Icinga2 Director の使い方が少しずつわかってきた。fedora 42 が出たのでこの機会に icinga2 もアップデートしてみる。ただし、icinga2 のリポジトリが fedora 41 までしか用意されていないようなので (2025年5月現在) 一旦 fedora 41 で構築してみる。その後、OS だけアップグレードしてみよう。

インストール後 Director での設定方法もメモしておく。

  1. LAMP のインストール・設定
  2. Icinga2 のインストール
    1. Fedora Repository
    2. Icinga 2 のインストール
    3. Icinga 2 の IDO MySQL バックエンドをインストール
    4. DataBase の設定
    5. API 機能の有効化
  3. Icinga Web 2 のインストールと設定
    1. Icinga Web 2 のインストール
    2. Icinga Web 2 の設定
      1. SELinux 関連の話
      2. Icinga Web 2 用のデータベース作成
      3. Web ブラウザでの接続
      4. セットアップトークンの作成
      5. モジュール画面
      6. 構成要件画面
      7. コンフィグレーション/認証画面
      8. コンフィグレーション/データベースリソース
      9. コンフィグレーション/データベースセットアップ
      10. コンフィグレーション/バックエンド
      11. コンフィグレーション/管理
      12. コンフィグレーション/アプリケーション設定
      13. 設定完了画面
      14. Icinga Web 2 の monitoring モジュールの設定
      15. 監視 IDO リソース
      16. コマンド転送方法
      17. 監視セキュリティ
      18. 設定完了画面
      19. ログイン画面
      20. command を有効にする
      21. Icinga Web 2 へのログイン
        1. icinga2 サーバの http のエラーの対処方法
  4. Icinga2 Director のインストールと設定
    1. Icinga Director のインストール
    2. Icinga Director の設定
      1. Icinga Web 2 へのログイン
      2. リソースの登録
      3. 「キックスタートウィザード」画面…その前に icinga api ユーザのパスワード設定
      4. 「データベースバックエンド」の設定
      5. キックスタートウィザード画面
  5. Icinga Director での監視対象設定
    1. 条件
    2. Icinga Director での設定
      1. ホストグループの定義(その1)
      2. ホストグループの定義(その2)
      3. ホストテンプレートの設定(その1)
      4. ホストテンプレートの設定(その2)
      5. ホストの定義(1台目)
      6. ホストの定義(2台目/3台目)
  6. 登録した機器の監視画面
    1. ダッシュボード
    2. 概要・概要
    3. 概要・ホスト
    4. 概要・ホストグループ
  7. Icinga Director での通知設定
    1. 条件
    2. 残作業

LAMP のインストール・設定

L は今回 fedora 41 とする。fedora インストール時に日本語ロケールを選択しておくと、のちに icniga2 の設定をブラウザで行うときに日本語で設定を行うことができた。

以下のコマンドで apache/mariadb/php をインストールする。

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

インストールが終わったら、systemctl コマンドで有効化しておく。

# systemctl enable httpd
# systemctl enable mariadb
# systemctl start httpd
# systemctl start mariadb

mariadb の初期設定をいつものように実施する。
mysql_secure_installation コマンドを実行する前に、/etc/my.cnf.d/charset.cnf を以下の内容で新規作成しておく。

[mysqld]
character-set-server = utf8mb4

[client]
default-character-set = utf8mb4

初期化コマンドを実行する。

mysql_secure_installation

firewalldの設定も。

Icinga2 のインストール

Icinga2 の fedora へのインストールは公式がおおいに役立つ。また、公式の fedora の手順では足りないところがあると思われるので、こちらも参考にしている。

Fedora Repository

icinga2 用のリポジトリの設定。下記の内容をシェルスクリプトにして実行する。

# rpm --import https://packages.icinga.com/icinga.key
# dnf install -y 'dnf-command(config-manager)' 
# dnf config-manager --add-repo https://packages.icinga.com/fedora/$(. /etc/os-release; echo  $VERSION_ID")/release

ところが、3行目が fedora 41 ではエラーとなる。以下のコマンドでリポジトリの追加ができた。

# dnf config-manager addrepo --set=baseurl=https://packages.icinga.com/fedora/41/release

以下のコマンドでリポジトリを確認する。

# dnf repolist
repo id                                                                                   repo name
fedora                                                                                    Fedora 41 - x86_64
fedora-cisco-openh264                                                                     Fedora 41 openh264 (From Cisco) - x86_64
packages.icinga.com_fedora_41_release                                                     packages.icinga.com_fedora_41_release - Created by dnf5 config-manager
updates                                                                                   Fedora 41 - x86_64 - Updates
#

Icinga 2 のインストール

Icinga 2 をインストールする。

# dnf -y install icinga2 nagios-plugins-all
# systemctl enable icinga2
# systemctl start icinga2

SELinuxが有効になっている場合は、以下のコマンドを実行し追加のパッケージをインストールする。

# dnf -y install icinga2-selinux

Icinga が SELinux コンテキストで稼働していることの確認。

# ps -eZ | grep icinga2
system_u:system_r:icinga2_t:s0     4846 ?        00:00:01 icinga2
system_u:system_r:icinga2_t:s0     4869 ?        00:00:05 icinga2
system_u:system_r:icinga2_t:s0     4874 ?        00:00:00 icinga2
#

Icinga 2 の IDO MySQL バックエンドをインストール

# dnf install -y icinga2-ido-mysql

DataBase の設定

mariadb への接続。

# mysql -u root -p

データベースとユーザの作成。

CREATE DATABASE icinga;
GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga.* TO 'icinga'@'localhost' IDENTIFIED BY 'icingapassword';
FLUSH PRIVILEGES;

icinga2-ido-mysql データベース スキーマを icinga データベースにインポートする。

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

つづいて以下のコマンドを使用して新しい機能 (icinga2-ido-mysql) を有効にする。

# icinga2 feature enable ido-mysql
Enabling feature ido-mysql. Make sure to restart Icinga 2 for these changes to take effect.
#

icinga2 feature list コマンドの出力に ido-mysql が追加されれば OK。

# icinga2 feature list
Disabled features: api command compatlog debuglog elasticsearch gelf graphite icingadb influxdb influxdb2 journald livestatus opentsdb perfdata syslog
Enabled features: checker ido-mysql mainlog notification
#

API 機能の有効化

API 機能を有効にする。同時に証明書のセットアップ、自動生成されたパスワードを持つ API ユーザー(root) の作成、およびその利用者を構成ファイル (/etc/icinga2/conf.d/api-users.conf) に追加する。
以下のコマンドを実行するだけ。

# icinga2 api setup

上記のコマンドを実行した結果。

# icinga2 api setup
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//fc41.yo7612.com.csr'.
information/base: Writing private key to '/var/lib/icinga2/certs//fc41.yo7612.com.key'.
information/base: Writing certificate signing request to '/var/lib/icinga2/certs//fc41.yo7612.com.csr'.
information/cli: Signing CSR with CA and writing certificate to '/var/lib/icinga2/certs//fc41.yo7612.com.crt'.
information/pki: Writing certificate to file '/var/lib/icinga2/certs//fc41.yo7612.com.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 が追加されていることを確認する。

# icinga2 feature list
Disabled features: command compatlog debuglog elasticsearch gelf graphite icingadb influxdb influxdb2 journald livestatus opentsdb perfdata syslog
Enabled features: api checker ido-mysql mainlog notification
#

つづいて以下のコマンドを実行し icinga2 を再起動しておく。

# systemctl restart icinga2

Icinga Web 2 のインストールと設定

Icinga Web 2 のインストール

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

# dnf install -y icingaweb2 icingacli icingaweb2-selinux

/etc/httpd/conf.d/icingaweb2.conf ができていることを確認する。

# cat /etc/httpd/conf.d/icingaweb2.conf
Alias /icingaweb2 "/usr/share/icingaweb2/public"

<Directory "/usr/share/icingaweb2/public">
    Options SymLinksIfOwnerMatch
    AllowOverride None
    Require all granted

    SetEnv ICINGAWEB_CONFIGDIR "/etc/icingaweb2"

    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteBase /icingaweb2/
        RewriteCond %{REQUEST_FILENAME} -s [OR]
        RewriteCond %{REQUEST_FILENAME} -l [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^.*$ - [NC,L]
        RewriteRule ^.*$ index.php [NC,L]
    </IfModule>

    <IfModule !mod_rewrite.c>
        DirectoryIndex error_norewrite.html
        ErrorDocument 404 /icingaweb2/error_norewrite.html
    </IfModule>

    DirectoryIndex index.php
</Directory>
#

apache の再起動を行う。

# systemctl restart httpd

Icinga Web 2 の設定

SELinux 関連の話

ちょっと先の話になるが「構成要件画面」の「読み書き可能な設定ディレクトリ」の項目が「ディレクトリ /etc/icingaweb2 は書き込み不可です」となる場合がある。

これは、icingaweb2 のインストール時に icingaweb2-selinux をインストールしていなかったからである。

# dnf install -y icingaweb2-selinux

インストールが終わったら、icinga2 および httpd を再起動しておく。

Icinga Web 2 用のデータベース作成

以下のコマンドで Icinga Web 2 で利用するデータベースを作成しておく。

CREATE DATABASE icingaweb2;
GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icingaweb2.* TO 'icingaweb2'@'localhost' IDENTIFIED BY 'icingaweb2passdb';
FLUSH PRIVILEGES;

Web ブラウザでの接続

Web ブラウザで以下の URL に接続する。

http://IPアドレス/icingaweb2/setup

セットアップトークンの作成

ブラウザで上記の URL に接続すると以下の「Icinga Web 2 のセットアップにようこそ!」画面になる。ここではセットアップトークンを作成し入力を行う。がその前に…

まず、画面中に記載されているが、icingaweb2 というグループが存在すること、および apache というユーザが icingaweb2 グループに属していることを確認する。これは、別途 teraterm 等でサーバに接続して確認する。

つづいて、以下のコマンドを実行してセットアップトークンを作成する。

# icingacli setup config directory --group icingaweb2
Successfully created configuration directory /etc/icingaweb2
# icingacli setup token create
The newly generated setup token is: ffffffffffffffff
#

つづいて、作成したトークンを上記の画面に入力して「次へ」をクリックする。

モジュール画面

全画面でトークンを入力すると以下のモジュール画面になる。ここではそのまま「次へ」をクリックする。

構成要件画面

構成要件画面が表示される。前述のように「ディレクトリ /etc/icingaweb2 は書き込み不可です」となっている場合は、「SELinux 関連の話」の対処方法を実施しておく。

各項目がすべて背景緑であれば「次へ」をクリックする。

コンフィグレーション/認証画面

認証タイプを「データベース」にして「次へ」をクリックする。

コンフィグレーション/データベースリソース

以下の画面が表示されるので、icingaweb2 用のデータベース名、ユーザ名、パスワードを入力する。

入力が終わったら…

「設定の検証」をクリックして、「構成は正常に検証されました」が表示されたら「次へ」をクリックする。

コンフィグレーション/データベースセットアップ

ユーザ名に管理者 ID およびパスワードを入力し「次へ」をクリックする。

コンフィグレーション/バックエンド

以下の画面が表示される。バックエンド名に icingaweb2 が設定されていることを確認し、「次へ」をクリックする。

コンフィグレーション/管理

以下の画面になるので、ユーザ名、パスワードを入力して「次へ」をクリックする。

コンフィグレーション/アプリケーション設定

以下の画面が表示される。変更がなければ「次へ」をクリックする。

設定完了画面

以下の画面が表示される。設定が正しければ「次へ」をクリックする。

Icinga Web 2 の monitoring モジュールの設定

「Icinga Web 2 の monitoring モジュールの設定へようこそ!」画面になる。

上記で「次へ」をクリックする。

監視 IDO リソース

以下の画面になる。

ここで、icinga 用のデータベース名・ユーザ名・パスワードを入力する。入力が終わったら「設定の検証」をクリックして検証する。

次のエラーが出たら、/etc/icinga2/features-available/ido-mysql.conf を編集する。

現在IDOに書き込んでいるicingaインスタンスはありません。icingaインスタンスが構成されており、IDOに書き込むことができることを確認してください。

以下の内容を追加する。

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

編集が終わったら icinga2 を再起動する。

# systemctl restart icinga2

Web ブラウザに戻り、「設定の検証」をクリックして再度検証する。「構成は正常に検証されました。」と表示されたら、「次へ」をクリックする。

コマンド転送方法

以下の画面になる。

「転送方法の種類」で「ローカルにあるコマンドファイル」を選択し「次へ」をクリックする。

監視セキュリティ

「監視セキュリティ」画面ではそのまま「次へ」をクリックする。

設定完了画面

設定確認画面がでるので、内容を確認して「完了」をクリックする。

次の画面が表示される。

画面右側の「Icinga Web 2 にログイン」をクリックするとログイン画面が表示される。

ログイン画面

command を有効にする

以下のコマンドを実行して command が Enabled features にあるか確認する。

# icinga2 feature list

Disabled になってたら

# icinga2 feature enable command

を実行する。

Icinga Web 2 へのログイン

ログインするとダッシュボードが表示される。初期設定では icinga2 サーバ自体の監視設定がされており、その状況が表示される。

icinga2 サーバの http のエラーの対処方法

icinga2 サーバの http サービスがエラーとなっている。これは監視対象が / になっているためである。このエラーを回避するには、監視先を変更すればよい。

具体的には、/etc/icinga2/conf.d/hosts.conf の

  vars.http_vhosts["http"] = {
    http_uri = "/"
  }

  vars.http_vhosts["http"] = {
    http_uri = "/icingaweb2"
  }

のように変更すればよい。

icniga2 を再起動してしばらくすると、以下の画面のようにこのエラーはなくなる。

Icinga2 Director のインストールと設定

前頁までの設定で、Icinga2 および Icinga Web 2 の設定が完了し、Icinga2 サーバ自体の監視ができている状況から始める。

Icinga Director のインストール

Icinga Director のインストールを以下のコマンドで行う。

# dnf install -y icinga-director vim-icinga2

つづいて director 用のデータベースの作成を行う。

# mysql -u root -p
CREATE DATABASE director CHARACTER SET 'utf8';
GRANT ALL ON director.* TO 'director'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
QUIT
#

データベースの設定。以下のコマンドを実行する。※ここで指定するデータベースは “icinga” である。

# mysql -u root -p icinga < /usr/share/icingaweb2/modules/director/schema/mysql.sql

director が有効になっているかどうかの確認。有効になっていなければ有効化する。

# icingacli module list
# icingacli module enable director
# icingacli module list

最後に systemctl コマンドで icinga-director.service を有効化しておく。

# systemctl enable icinga-director

これで Icinga Director のインストールは完了である。

Icinga Director の設定

Icinga Director の設定は Icinga Web 2 へログインして作業を行う。

Icinga Web 2 へのログイン

Icinga Web 2 にログインする。すると以下のように画面左に「Icinga director」が追加されている。

リソースの登録

画面左ペインの右下の鍵マークをクリックし、「構成」の「アプリケーション」を選択する。

ここで、「リソース一覧」タブをクリックする。

この画面の「新しいリソースの作成」をクリックする。

「リソースの種類」で “SQL Database” を選択、「リソース名」に “director_db”、「データベースタイプ」に “MySQL” を指定、「データベース名」、「ユーザ名」、「パスワード」に先ほど director 用に作成したデータベースのものを入力、「文字コード」には “utf8” を指定する。

「設定の検証」をクリックして問題なければ「設定を保存」をクリックする。

「キックスタートウィザード」画面…その前に icinga api ユーザのパスワード設定

この後、Director の設定を進めていくのだが、その前に icinga api ユーザ (root) のパスワード設定を行っておく。Icinga Web 2 画面から一旦ログアウトしておく。

api ユーザのパスワード設定は、/etc/icinga2/conf.d/api-users.conf の password = “abcdefgh” の部分を変更することによって行う。保存したら icinga2 を再起動しておく。

# systemctl restart icinga2

icinga2 の再起動が終わったら、以下のコマンドで接続確認を行っておく。

# curl -k -s -S -i -u root:上記で設定したパスワード https://localhost:5665/v1

200 OK が帰ってくればいいのかな。
この後は、再度 Icinga Web 2 画面にログインして作業を行っていく。

「データベースバックエンド」の設定

ログイン直後の画面左ペインの「Icinga Director」をクリックする。まず最初に行うことは「データベースバックエンド」の設定である。

上記の画面の「DB リソース」で “director_db” を選択する。すると次の画面に自動的に切り替わる。

上記画面で「スキーマの作成」をクリックするとしばらく時間が経過したのち以下の「キックスタートウィザード」画面になる。

キックスタートウィザード画面

「エンドポイント名」にサーバの FQDN を入力、「Icinga ホスト」にサーバの IP アドレスを入力、「API ユーザ」と「パスワード」に icinga api ユーザのユーザ名とパスワードを入れる。

入力が終わったら「インポートを実行」をクリックする。

これで、Icinga Director の設定は完了である。

Icinga Director での監視対象設定

Icinga Director で監視対象を設定してみる。

条件

以下の条件で設定を行う。

監視対象ホスト名および IP アドレス
ix2207.yo7612.com 192.168.192.254
nvr700w.yo7612.com 192.168.192.252
fc42.yo7612.com 192.168.193.42

上記の機器が属するホストグループ
Routers –> ix2207,nvr700w
Servers –> fc42

上記の機器で利用するテンプレート
Router
Standard Linux Server

監視するサービス
ping4

Icinga Director での設定

ログインして、画面左ペインの「Icinga Director」をクリックすると以下の画面になる。

ホストグループの定義(その1)

ホストグループの設定は必須ではないが、後々便利になることがあるかもしれないので定義しておく(監視対象が多くなったときにそのホストグループだけ表示するとか…)。

上記の画面で「ホストオブジェクト」をクリックする。

つづいて、画面右の「ホストグループ」をクリックする。

画面右上の「追加」をクリックする。

上記の「ホストグループ」と「表示名」に “Routers” を入力し「追加」をクリックする。

次の画面になったら、「保存」をクリックする。

つづいて「設定反映」をクリックする。

ホストグループの定義(その2)

もうひとつのホストグループを上記の要領で作成する。

ホストテンプレートの設定(その1)

ホストテンプレートを選択すると以下の画面になる。

上記の画面右側の「追加」をクリックする。

「名前」に “Router” 、「グループ」に “Router” 、「監視コマンド」に “ping4” を設定し、「追加」をクリックする。

「保存」「設定反映」を行っておく。

ホストテンプレートの設定(その2)

もうひとつのホストテンプレートを上記の要領で定義する。

ホストの定義(1台目)

つづいて、ホストの定義を行う。

上記の画面右の「追加」をクリックする。

上記の画面で「ホストテンプレート」で “Router” を選択すると、以下の画面になる。

「ホスト名」および「表示名」に “ix2207.yo7612.com” を入力する。また、「ホストアドレス」に “192.168.192.252” を入力し、「グループ」に “Routers” を設定する。

「保存」「設定反映」を行っておく。

ホストの定義(2台目/3台目)

つづいて、上記の要領で2台目および3台目のホストの定義を行う。

登録した機器の監視画面

ダッシュボード

概要・概要

概要・ホスト

概要・ホストグループ

Icinga Director での通知設定

Icinga Director で通知の設定を行う。

条件

fc42.yo7612.com への ping 応答がなかった場合、foo.bar@example.com に1回だけメールを飛ばす。復旧したら1回だけメールを飛ばす。

残作業

icinga2 はメール送信 (/etc/icinga2/scripts/mail-{host,service}-notification.sh) に mailx(s-nail) を使っているようだ。この s-nail のお勉強/設定が必要。

とりあえずここまで。

以上。

コメント

タイトルとURLをコピーしました