業務用エアコン関連の技術情報、エラーコード、環境問題対策に関する別サイト「エアコンの安全な修理・適切なフロン回収」

ArchLinux : Icinga2 インストール

Icinga(アイシンガ)は「Nagios」から派生して開発され、CPU、メモリ、ディスク使用量や、Ping、HTTP、DNSなどのネットワークサービスを監視するためのオープンソースのITインフラストラクチャ監視ツールです

今回はArchLinuxにインストールしております

1. 前提条件

Icinga2 をインストールするための要件として、LAMP がインストールされている必要があります。またPHP 7.3 以降のバージョンが必要です。
今回は下記が構築されていることを前提とします
mariadb from 12.3.3-MariaDB
PHP    8.5.10
Apache(HTTPD)  2.4.68

2. Icinga2 、モニタリングプラグインパッケージをインストール

2.1 Icingaグルーブ、ユーザー作成

# groupadd -g 667 icinga
# useradd -u 667 -g icinga -G http -d /dev/null -s /bin/false icinga

2.2 Icinga2 、モニタリングプラグインパッケージをインストール

$ yay -S icinga2 monitoring-plugins

プラグインは/usr/lib/monitoring-plugins/  に保存され、プラグインが正常にインストールされたかどうかは、ディレクトリの内容を一覧

# ls /usr/lib/monitoring-plugins/
check_apt       check_dummy         check_ircd         check_nagios    check_rpc      check_ups
check_breeze    check_file_age      check_jabber       check_nntp      check_sensors  check_uptime
check_by_ssh    check_flexlm        check_ldap         check_nntps     check_simap    check_users
check_clamd     check_fping         check_ldaps        check_nscp_api  check_smtp     check_wave
check_cluster   check_ftp           check_load         check_ntp_peer  check_snmp     negate
check_curl      check_hpjd          check_log          check_ntp_time  check_spop     urlize
check_dbi       check_http          check_mailq        check_oracle    check_ssh      utils.pm
check_dhcp      check_icmp          check_mrtg         check_pgsql     check_ssmtp    utils.sh
check_dig       check_ide_smart     check_mrtgtraf     check_ping      check_swap
check_disk      check_ifoperstatus  check_mssql        check_pop       check_tcp
check_disk_smb  check_ifstatus      check_mysql        check_procs     check_time
check_dns       check_imap          check_mysql_query  check_real      check_udp

2.3 Icinga 2の起動と有効化

# systemctl start icinga2
# systemctl enable --now icinga2
Created symlink '/etc/systemd/system/multi-user.target.wants/icinga2.service' → '/usr/lib/systemd/system/icinga2.service'.

2.4 インストール済みのバージョンを確認

# icinga2 --version
icinga2 - The Icinga 2 network monitoring daemon (version: r2.16.5-1)

Copyright (c) 2012-2026 Icinga GmbH (https://icinga.com/)
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl-3.0.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

System information:
  Platform: Arch Linux
  Platform version: Unknown
  Kernel: Linux
  Kernel version: 7.2.2-arch1-1
  Architecture: x86_64

Build information:
  Compiler: GNU 16.2.1
  Build host: unknown
  OpenSSL version: OpenSSL 3.6.4 25 Aug 2026

Application information:

General paths:
  Config directory: /etc/icinga2
  Data directory: /var/lib/icinga2
  Log directory: /var/log/icinga2
  Cache directory: /var/cache/icinga2
  Spool directory: /var/spool/icinga2
  Run directory: /run/icinga2

Old paths (deprecated):
  Installation root: /usr
  Sysconf directory: /etc
  Run directory (base): /run
  Local state directory: /var

Internal paths:
  Package data directory: /usr/share/icinga2
  State path: /var/lib/icinga2/icinga2.state
  Modified attributes path: /var/lib/icinga2/modified-attributes.conf
  Objects path: /var/cache/icinga2/icinga2.debug
  Vars path: /var/cache/icinga2/icinga2.vars
  PID path: /run/icinga2/icinga2.pid

3. Icinga 2 APIを有効にする

# 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//lepard.csr'.
information/base: Writing private key to '/var/lib/icinga2/certs//lepard.key'.
information/base: Writing certificate signing request to '/var/lib/icinga2/certs//lepard.csr'.
information/cli: Signing CSR with CA and writing certificate to '/var/lib/icinga2/certs//lepard.crt'.
information/pki: Writing certificate to file '/var/lib/icinga2/certs//lepard.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!

Icinga 2デーモンを再起動

#  systemctl restart icinga2

Icinga 2  APIはTCPポート5665で受信しているので、サービスが接続を受け入れているか確認

# ss -tlnp | grep 5665
LISTEN 0      4096               *:5665            *:*    users:(("icinga2",pid=18316,fd=18))

firewalld を運用している場合、ポート5665での着信接続を許可する

# ufw allow 5665/tcp 
# ufw reload

4. MySQL/MariaDB の設定

Icinga2はデータバックエンドとしてIcingaDBを使用しており、IcingaDBにはMySQLまたはMariaDBが必要です。
今回はMySQL として進めます。
次の2つのデータベースとユーザーを作成する

IcingaDBデータベースとユーザー:

データベース名 : icingadb
ユーザ名 : icingauser
パスワード : ?Ww123456

Icingaweb2データベースとユーザー:

データベース名 : icingaweb2db
ユーザ名 : icingaweb2user
パスワード : ?Yy123456

# mysql -u root -p 

> CREATE DATABASE icingadb;
> CREATE USER 'icingauser'@'localhost' IDENTIFIED BY '?Ww123456';
> GRANT ALL ON icingadb.* TO 'icingauser'@'localhost';

> CREATE DATABASE icingaweb2db;
> CREATE USER 'icingaweb2user'@'localhost' IDENTIFIED BY '?Yy123456';
> GRANT ALL ON icingaweb2db.* TO 'icingaweb2user'@'localhost';

> FLUSH PRIVILEGES;
> exit;

5. IcingaDBとValkeyをインストール

IcingaDBは、従来のIDOデータベースモジュールに代わる最新のソリューションです。Icinga2とデータベースバックエンド間の高性能トランスポート層としてRedisを使用していましたが、archlinuxではRedis パッケージをオープンソースのフォークである Valkey に置き換えました。
IcingaDBとValkeyをインストールし、データベーススキーマをインポートします。

# pacman -S valkey
# su - huong
$ yay -S icingadb
# vim  /etc/valkey/valkey.conf
bind 127.0.0.1 -::1
port 6379

IcingaDB 用の Valkey を有効にして起動

# systemctl enable --now valkey
# systemctl start valkey

先ほど作成したデータベースに、IcingaDBデータベーススキーマをインポートする

# mysql -u root -p icingadb < /usr/share/icingadb/schema/mysql/schema.sql

IcingaDBの設定を編集して、データベースの認証情報を設定する

# vim /etc/icingadb/config.yml

6行目以降database:項目の内容を次のようにする
database:
  type: mysql
  host: localhost
  port: 3306
  database: icingadb
  user: icingauser
  password: ?Ww123456

Redis接続設定項目を編集
redis:
  host: "localhost"       # Valkeyが動いているホスト
  port: 6379 
# vim /etc/icinga2/features-enabled/icingadb.conf
下記の通り設定
object IcingaDB "icingadb" {
  host = "127.0.0.1"
  port = 6379
  //password = "xxx"
}

Icinga2でIcingaDB機能を有効にし、APIを設定する

# icinga2 feature enable icingadb

Icinga 2の構文チェック

# icinga2 daemon -C

変更を適用する

# systemctl enable --now icingadb
# systemctl restart icinga2

6. Icinga Web 2をインストール

Icinga Webは、監視データの表示、設定の管理、アラートの処理を行うためのWebベースのフロントエンドです。IcingaDB WebモジュールとApacheと一緒にインストールしてください。

$ yay -S icingaweb2 icingadb-web icingacli  php-cli php-common

7. Icinga Web 2セットアップウィザードを実行

7.1 php.iniの編集

# vim /etc/php/php.ini
912行目当たりからのextension項目で次を有効にする
curl
gd
gettext
intl
ldap
pdo_mysql
pdo_pgsql
pfsql
sockets

7.2 Webサーバー設定

# icingacli setup config webserver apache --document-root /usr/share/webapps/icingaweb2/public > /etc/httpd/conf/conf.d/icingaweb2.conf

rewriteモジュール有効化

# vim /etc/httpd/conf/httpd.conf
下記モジュールのコメントを外す
LoadModule rewrite_module modules/mod_rewrite.so

# systemctl restart httpd

7.3 ウェブセットアップウィザード用の認証トークンを生成する

# icingacli setup config directory --group icingaweb2
# icingacli setup token create
The newly generated setup token is: 4ea825b1e0a100b0

7.4 ブラウザを開き、以下のセットアップウィザードにアクセスする
http://[server IP]/icingaweb2/setup

①作成したトークンを入力して「Next」をクリック

➁IcingadbがONになっていることを確認し、「Next」をクリック

➂PHP構成要件画面が表示される
下図のようにThe PHP module Imagick is missing.が表示される場合は下記をインストールしてApacheを再起動する

# pacman -S php-imagick

php.iniに追記

# vim /etc/php/php.ini

下記を追記する
extension=imagick

ApacheとPHPを再起動

# systemctl restart httpd
# systemctl restart php-fpm.service

PHP モジュール、ライブラリ、ディレクトリなどの PHP 前提条件がすべて満たされていることを確認します。すべて問題がなければ、下にスクロールして [Next] をクリック

④認証タイプを「Database」にして「Next」をクリック

⑤データベースリソース
以下の画面が表示されるので、icingaweb2 用のデータベース名、ユーザ名、パスワードを入力する。
確認のため、"Validate Configuration"をクリック

間違いがなければ下図のように"The configuration has been successfuly validated."と表示されのでNextをクリック

⑥バックエンド
Nextをクリック

⑦Icinga Web2用の管理者アカウントの作成
Icinga Web2にアクセスするためのユーザおよびパスワードを設定し「Next」をクリック
今回はユーザー名をadminとしている

⑧アプリケーション設定
以下の画面が表示される。変更がなければ「Next」をクリック

⑨設定完了画面
以下の画面が表示される。設定が正しければ「Next」をクリック

⑩Icinga DB Webの設定
「Next」をクリック

icinga 用のデータベース名・ユーザ名・パスワードを入力する。入力が終わったら"Validate Configuration"をクリックして検証する。

間違いがなければ下図のように"The configuration has been successfuly validated."と表示されのでNextをクリック

⑪Redisの設定
Redisのセットアップページが表示されます。
Redis Host : localhost
Redis Port : 6379
にして、"Validate Configuration"をクリックして検証する。

正常に検証されれば、「Next」をクリック

⑫Icinga2 APi の設定
Host => localhost
Port => 5665

Api Username  及び Api Passwordは下記ファイル中を確認する

# vi /etc/icinga2/conf.d/api-users.conf

object ApiUser "root" {
  password = "629ee19fa6f0fbee"

入力後Nextをクリックすると概要ページに入りますので、Finishをクリック

設定がすべて正常に完了しましたので"Login to Icinga Web 2"をクリック

icingadbを再起動

# systemctl restart icingadb

⑬IcingaDB-Web ログイン画面
先ほど作成したIcinga Web にログインするためアカウント情報を入力し、ログインする

8. Icinga Directorをインストール

Icinga Directorは、Webベースの設定モジュールであり、設定ファイルを手動で編集する代わりに、Icinga Webインターフェースを通じてホスト、サービス、テンプレートを管理できます

8.1 Directorパッケージをインストール

# su - huong
$ yay -S icingaweb2-module-director
$ yay -S icingaweb2-module-incubator

8.2 Director専用のデータベースを作成
Directorデータベース : directordb
Directorユーザー : directoruser
パスワード : ?Xx123456

# mysql -u root -p

> CREATE DATABASE directordb ;
> CREATE USER 'directoruser'@'localhost' IDENTIFIED BY '?Xx123456';
> GRANT ALL ON directordb.* TO 'directoruser'@'localhost';
> FLUSH PRIVILEGES;
> EXIT;

データベースに、Icingadirectorデータベーススキーマをインポートする

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

 icinga-director.service を有効化

# systemctl enable icinga-director

8.3 Icinga Web 2画面で設定

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

リソースの登録
画面左ペインの右下の鍵マークをクリックし、「Configration」の「Application」を選択する。

ここで、「Resources」タブをクリックする。

この画面の「Create a New Resource 」をクリックする。

「リソースの種類」で “SQL Database” を選択、「Resource Nmae」に “director”、「Database Type」に “MySQL” を指定、「Database Name」、「Username」、「Password」に先ほど director 用に作成したデータベースのものを入力、「文字コード」には “utf8” を指定する。

「Validate Configuration」をクリックして問題なければ「Save Changes」をクリックする。

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

画面左ペインの「Icinga Director」をクリック
なぜかIcinga directorだけ日本語になっている

「DB リソース」で “director” を選択

すると次の画面に自動的に切り替わる。

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

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

エンドポイント名 : # hostnamectl で確認
Icinga ホスト : サーバの IP アドレス
API ユーザー , パスワード : icinga api ユーザのユーザ名とパスワード

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

9. Icinga Directorで監視サービスの追加

9.1 Service Templateの作成
Icinga Director を使用して、今回はSSH、HTTP、PINGを監視するためのテンプレートを作成します。
「サービス」をクリックし、ページ上の「サービステンプレート」をクリック。

新しいサービステンプレートを作成するには、「+追加A」ボタンをクリックします。

SSH サービスの監視に関する詳細を下記の通り入力し、「追加」ボタンをクリック

同様にPING,HTTPサービスの監視に関する詳細を入力し追加する

9.2 サービスセットを作成し、サービステンプレートを追加する
作成したサービステンプレートをを1つのサービスセットにまとめます。
「サービス」ページで、「サービスセット」をクリック

「+追加」ボタンをクリック

「サービスセット名」と「説明」に独自の名前と内容を入力し、「追加」ボタンをクリック

「basic service Linux」という名前のサービスセットが作成されました。

次に、サービステンプレートを「basic service Linux」サービスセットに追加します。サービスセットの名前をクリックし、右側の画面にある「Services」タブをクリック

「+サービスを追加」ボタンをクリック

[Check_ssh]を追加する
「追加」ボタンをクリック

同様に[Check_ping][Check_http]を追加する

最終的に"3 人のメンバー"になっている

9.3 ホストテンプレートを作成し、サービスセットを追加する
Director を通じて Icinga2 に新しいホストを追加するには、ホストテンプレートを作成する必要があります

Icinga Director のメニューで、「ホスト」と「ホストテンプレート」の順にクリック

「+追加」ボタンをクリック

「ホストテンプレート」に関する詳細を、以下のように入力してください。
監視コマンド : hostalive

もう一度「追加」ボタンをクリックすると、「basic Linux」という名前のホストテンプレートが作成されます。

次に、ホストテンプレートに「basic services Linux」という名前のサービスセットを追加します。

ホストテンプレート名をクリックし、右側の画面にある「サービス」タブをクリックします。

「サービスセットを追加」ボタンをクリックします。

「basic service Linux」という名前のサービスセットを選択し、「追加」をクリックします。

サービスセットが追加されたホストテンプレートが作成されました。これで、Icinga2に新しいホストを追加する準備が整いました。

10. Icinga Directorで監視ホストの追加

ホスト名「Lion」(hostnamectlで確認)、IPアドレス「192.168.11.85」を持つArchLinuxを追加します。

Icinga2のダッシュボードで、「Icinga Director」メニューをクリックし、「ホスト」→「ホスト」をクリック

画面右側の「追加」ボタンをクリック

「basic Linux」ホストテンプレートを選択し、下記の通り詳細なホスト設定を入力し、「追加」ボタンをクリック

左側の「アクティビティログ」メニューをクリックし、「xxx 個の保留された変更を反映」をクリックして設定を適用します。

「Lion」ホストがIcinga2に追加されました。

11. 監視対象サーバー(エージェント)側の設定手順

監視対象サーバーArchLinux(IP : 192.168.11.85)で作業する

11.1 Icinga2 、モニタリングプラグインパッケージをインストール

$ yay -S icinga2 monitoring-plugins

プラグインは/usr/lib/monitoring-plugins/  に保存され、プラグインが正常にインストールされたかどうかは、ディレクトリの内容を一覧

# ls /usr/lib/monitoring-plugins/
check_apt       check_dummy         check_ircd         check_nagios    check_rpc      check_ups
check_breeze    check_file_age      check_jabber       check_nntp      check_sensors  check_uptime
check_by_ssh    check_flexlm        check_ldap         check_nntps     check_simap    check_users
check_clamd     check_fping         check_ldaps        check_nscp_api  check_smtp     check_wave
check_cluster   check_ftp           check_load         check_ntp_peer  check_snmp     negate
check_curl      check_hpjd          check_log          check_ntp_time  check_spop     urlize
check_dbi       check_http          check_mailq        check_oracle    check_ssh      utils.pm
check_dhcp      check_icmp          check_mrtg         check_pgsql     check_ssmtp    utils.sh
check_dig       check_ide_smart     check_mrtgtraf     check_ping      check_swap
check_disk      check_ifoperstatus  check_mssql        check_pop       check_tcp
check_disk_smb  check_ifstatus      check_mysql        check_procs     check_time
check_dns       check_imap          check_mysql_query  check_real      check_udp

11.2 Icinga 2の起動と有効化

# systemctl start icinga2
# systemctl enable --now icinga2
Created symlink '/etc/systemd/system/multi-user.target.wants/icinga2.service' → '/usr/lib/systemd/system/icinga2.service'.

11.3 hostsファイルの編集

# vim /etc/hosts
192.168.11.83   lepard
192.168.11.85   Lion.korodes.com

11.4 監視ホストの初期化

事前にIcingaサーバー側、エージェント側で5665ポートを開放していることを確認する

①Agentを追加するためのPKIチケットの発行(Master側で実行)

# icinga2 pki ticket --cn 'Lion'
0cf1682f55272481d5634acf9b2b188ecdcebdb5

➁Agent (監視対象)での設定

# icinga2 node wizard
Welcome to the Icinga 2 Setup Wizard!

We will guide you through all required configuration details.

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

Starting the Agent/Satellite setup routine...

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

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): lepard

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.11.83
Master/Satellite endpoint port [5665]:

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

 Version:             3
 Subject:             CN = lepard
 Issuer:              CN = Icinga CA
 Valid From:          Sep  3 02:08:12 2026 GMT
 Valid Until:         Oct  5 02:08:12 2027 GMT
 Serial:              D3581F60932658A22F9698CA51D318E39F7D434C

 Signature Algorithm: sha256WithRSAEncryption
 Subject Alt Names:   lepard
 Fingerprint:         7A 4E 27 92 8A 88 38 D3 2F 29 A2 A0 7A 96 27 C0 E4 A6 84 2E 6E A4 83 18 D7 CB 82 B9 9E 9F DC 32

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

Please specify the request ticket generated on your Icinga 2 master (optional).
 (Hint: # icinga2 pki ticket --cn 'Lion'): 0cf1682f55272481d5634acf9b2b188ecdcebdb5
Please specify the API bind host/port (optional):
Bind Host []: 0.0.0.0
Bind Port []: 5665

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

Reconfiguring Icinga...

Local zone name [Lion]:
Parent zone name [master]:

Default global zones: global-templates director-global
Do you want to specify additional global zones? [y/N]: N

Do you want to disable the inclusion of the conf.d directory [Y/n]: Y
Disabling the inclusion of the conf.d directory...

Done.

Now restart your Icinga 2 daemon to finish the installation!

Icingaを再起動

# systemctl restart icinga2

12. Icingaweb2画面で確認

Icinga2 Dashboard メニューの, 'Overview' 'Hosts'. をクリックすると「Lion」というホストが表示され、クライアントが起動して実行されていることが確認できます。

「Lion」サーバーをクリックして詳細を表示

Lion ホストの監視対象サービスを確認するには、「サービス」タブをクリックしてください。

WordPressが利用できる代表的なレンタルサーバー