Raspberry Pi3 + Ubuntu Server 19.10にicinga2を入れて監視サーバを構築する

Raspberry Pi3 に入れたUbuntu Server 19.10にicinga2をインストールして監視サーバを構築

MySQLのセットアップ

icinga2でMySQLを使用するため、aptでインストール
インストール済みであればスキップして問題なし。

# apt-get install mysql-server mysql-client

インストール後、mysqlが起動するので初期セットアップ

# mysql_secure_installation

rootのパスワード、パスワードポリシー等の設定を適時行ってMySQLの初期設定は完了。

icinga2のインストール

Raspberry Pi3用のUbuntu Server 19.10の標準リポジトリにicinga2があるので、aptでインストール。

# apt-get install icinga2 icingaweb2 icinga2-ido-mysql

icinga2-ido-mysqlの初期設定が実行されるので以下の通り設定。

後ほどmonitoring用DBのschemaは別途適用する。

MySQLにicingaweb2で使うDBを作成

# mysqladmin -u root -p create icingaweb2

MySQLユーザ作成

ユーザ作成の前に、認証方法をmysql_native_passwordに変更してMySQLをrestartする。

# vi /etc/mysql/my.cnf
[mysqld]
default_authentication_plugin=mysql_native_password

MySQLリスタート

# systemctl restart mysql

icinga2用のmysql ユーザ作成

# mysql -u root -p
mysql> CREATE USER 'icinga2'@'localhost' IDENTIFIED BY 'PASSWORD';
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga2.* TO 'icinga2'@'localhost' WITH GRANT OPTION;
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga2.* TO 'icinga_ido'@'localhost' WITH GRANT OPTION;

icinga2のWeb UI設定

http://[server_ip]/icingaweb2/ に初回アクセスすると以下の画面がでる。
※アクセス出来ない場合はapacheやicingaweb2の起動を確認

web-based setup-wizard.をクリック。

Setup Tokenの設定画面に移行する。

Setup Tokenの発行

発行方法は書いてある通りだが、Raspberry Pi3 + Ubuntu Server 19.10でaptからインストールした場合、icingacliがインストール済みなのでicingacliを使って発行する。

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

発行されたTokenを入力し、Nextをクリック。

Modules設定

Monitoringを有効にしてNextをクリック。

必要moduleの確認

PostgreSQL関係のがいくつかmissingになっているが、DBはMySQLを使うので問題なし。Nextをクリック。

Authentication設定

DatabaseのままNextをクリック

Database接続設定

各項目を入力し、Validate Configurationを実行。問題なければNext

ユーザに権限が足りないような事が書いてあるがDBは作成済みなので一旦スキップ。(Usernameだけ入力してNextクリックしたらSkip Validationが出てきた)

Authentication Backend

Administration

icingaweb2で使用する管理者アカウント。適時入力してNext。

Application Configuration

主にログ出力まわりの設定?そのままにした。

設定確認

問題なければNext

Monitoring module設定

Monitoring Module設定の開始。Nextをクリック。

Monitoring Backend

特に選択肢はないので、このままNext

Monitoring IDO Resource

ここでエラー。

There is currently no icinga instance writing to the IDO. Make sure that a icinga instance is configured and able to write to the IDO

どうやらido-mysqlがenableになっていなかった為、エラーになっていた模様。

現状の確認

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

ido-mysqlがDisabledなのでEnableに変更してicinga2を再起動

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

IDO用DBの作成と、schemaの流し込みを行う。

# mysqladmin -u root -p create icinga_ido
# mysql -u icinga2 -p -D icinga_ido < /usr/share/icinga2-ido-mysql/schema/mysql.sql

これでエラーがでなくなったのでNext

Command Transport

APIやremote commandがあるが、Local Command Fileで設定。

Monitoring Security

ちょっとよくわからず、そのままNext

Monitoring Module設定確認

確認し、問題なければFinishをクリック

※自分の環境だと、最後に/etc/icingaweb2/以下に書き込みが出来ないエラーがでたので、www-data:icinga2に変更を行った。

正常終了したらログイン画面に移動して、管理画面用のユーザでログイン

無事ログインできました。

Raspberry Pi3 + Ubuntu Server 19.10だとswap領域がないみたいで、swapの空き容量が無いと判定されてProblemsにひっかかってるけど、一旦放置。

まとめ

標準リポジトリに一通り揃ってるから細かなmoduleの追加で手間取る事はないけど、各種機能がまだあまりよく分かってないので初期セットアップは結構迷うところが多かった。

ハマった箇所はido-mysqlの有効化の箇所。ブラウザのウィザードからは操作できない箇所だし、エラーで触れられていない箇所なので解決するまで時間かかってしまった。

nagiosのpluginが流用できるようなので、いくつか監視設定をいれて動作をみてみよう。

以上