Zabbix 6.4をソースからインストールする手順(RockyLinux9+Azure Database for PostgreSQL Flexible Server)
Azureマネージドデータベースを利用したZabbix6(6.4)をソースからインストールする場合の手順纏めです。
Rocky Linux 9の仮想マシン(Azure VM)とAzure Database for PostgreSQL フレキシブル サーバー(Flexible Server)の組み合わせで構築しています。
-
- Zabbixソースダウンロード
- 関連パッケージインストール
- ユーザー作成
- PostgreSQL設定
- Timescaledb設定
- Zabbixインストール
- Zabbix設定ファイル作成
- SELinux設定
- 動作確認
パッケージを利用した手順についてはこちらに纏めています。
こちらの例ではAzure Database for MySQL フレキシブル サーバー(Flexible Server)を利用しています。
※Azure Database for MariaDBが廃止になるためPostgreSQL フレキシブル サーバー(Flexible Server)を利用した手順に更新しました。
※今回はソースからインストールしてますがパッケージを利用しても同じ構成で構築できます。
- 1. リソース準備
- 2. Zabbixインストール
- 2.1. 日本語ロケールをインストール
- 2.2. Zabbixパッケージダウンロード
- 2.3. PostgreSQLクライアントインストール
- 2.4. httpdパッケージインストール
- 2.5. phpパッケージインストール
- 2.6. 関連パッケージインストール
- 2.7. OSユーザー作成
- 2.8. PostgreSQLユーザーを作成
- 2.9. 初期スキーマとデータをインポート
- 2.10. Timescaledbを有効化
- 2.11. Timescaledbの設定
- 2.12. configureからmake install
- 2.13. ディレクトリ作成
- 2.14. zabbix_server.conf設定
- 2.15. zabbix_agentd.conf設定
- 2.16. zabbix.conf(php-fpm)作成
- 2.17. zabbix.conf(httpd)作成
- 2.18. SELinux設定
- 2.19. zabbix-server.service設定
- 2.20. zabbix-agent.service設定
- 2.21. 起動設定
- 2.22. 手順確認時にエラーになった事象
- 3. Zabbix Webインタフェースのインストール
- 4. 最後に
リソース準備
環境
同じ仮想ネットワーク内に仮想マシン(Azure VM)とAzure Database for PostgreSQL フレキシブル サーバーを作成し利用しています。
使用したバージョンです。
-
- Web ServerはApacheを利用しています
- Zabbixのバージョンは6.4を利用しています
- Rocky Linuxは9.3を利用しています。
- Azure Database for PostgreSQL フレキシブル サーバーは15.4を利用しています
リソースの設定内容です。
仮想マシン (Azure VM) |
名前 | vm-zabbix-02 |
IPアドレス | 10.0.1.7 | |
OS | Rocky Linux 9(9.3) | |
Azure Database for PostgreSQL フレキシブル サーバー |
名前 | psql-zabbix-01 (psql-zabbix-01.postgres.database.azure.com) |
ネットワーク | VNET統合 (test-vnet-01/psql-snet-01) |
仮想マシン(Azure VM)を準備
Zabbixサーバーとなる仮想マシン(Azure VM)を準備します。
MarketplaceにあるRocky Linux 9のイメージを利用して作成してます。
B1sなどの小さすぎる仮想マシンサイズを選択するとデプロイに失敗します。
今回はStandard B2sを利用しています。
Azure Database for PostgreSQL フレキシブル サーバーを準備
こちらの参考を手順に作成します。
ネットワークはVNET統合を利用しローカルからのアクセスのみとしています。
今回は検証目的なのでB1msを利用してます。
Zabbixインストール
公式サイトのインストール手順を参考に進めます。
日本語ロケールをインストール
仮想マシン(Azure VM)に日本語ロケールをインストールします。
英語のロケールも一緒にインストールしています。
[root@vm-zabbix-02 ~]# dnf -y install glibc-langpack-en.x86_64 glibc-langpack-ja.x86_64 |
※dnf search locale jaのコマンドを実行すると日本語パッケージ名が表示されます。
※英語のロケールが存在しない時にZabbixのGUIでエラーになる事があったので一緒にインストールしています。
Zabbixパッケージダウンロード
公式サイトからZabbixのソースをダウンロードします。
Download ready-to use Zabbix distributives
ダウンロードしたソース(アーカイブファイル)を/usr/local/src/(任意のディレクトリ)に解凍します。
[root@vm-zabbix-02 ~]#
curl -O https://cdn.zabbix.com/zabbix/sources/stable/6.4/zabbix-6.4.10.tar.gz |
PostgreSQLクライアントインストール
PostgreSQLクライアント関連のパッケージをインストールします。
今回はマネージドデータベースを利用する為クライアントのみをインストールします。
ZabbixサーバーからAzure Database for PostgreSQLフレキシブル サーバーに接続時に利用します。
[root@vm-zabbix-02 ~]#
dnf -y install postgresql postgresql-devel |
httpdパッケージインストール
httpd関連のパッケージをインストールします。
[root@vm-zabbix-02 ~]# dnf -y install httpd |
phpパッケージインストール
php関連のパッケージをインストールします。
[root@vm-zabbix-02 ~]# dnf -y install php-common php-pdo php-pgsql php-ldap php-bcmath php-mbstring php-xml php-gd php-fpm |
関連パッケージインストール
関連パッケージをインストールします。
パッケージが足りてないとconfigure実行時にエラーになります。
エラー内容に合わせて必要なパッケージをインストールします。
[root@vm-zabbix-02 ~]#
dnf -y install gcc gcc-c++ |
OSユーザー作成
OS上にzabbixのグループとユーザーを作成します。
[root@vm-zabbix-02 ~]#
groupadd –system zabbix |
PostgreSQLユーザーを作成
PostgreSQL上にZabbixユーザーとZabbixのデータベースを作成します。
データベース名はzabbixとしています。
[root@vm-zabbix-02 ~]# psql -h psql-zabbix-01.postgres.database.azure.com -p 5432 -U 管理者ユーザー名 -d postgres postgres=> CREATE USER zabbix WITH PASSWORD 'PostgreSQL上に作成するzabbixユーザーのパスワード’; |
※公式サイトの記述にはありませんがGRANTコマンドで権限を付与しています。
初期スキーマとデータをインポート
作成したZabbixのデータベースに初期スキーマとデータをインポートします。
zabbixユーザーでPostgreSQLにログインしSQLファイルを実行しています。
[root@vm-zabbix-02 ~]#
psql -h psql-zabbix-01.postgres.database.azure.com -p 5432 -U zabbix -d zabbix zabbix=> CREATE SCHEMA AUTHORIZATION zabbix; zabbix=> \i /usr/local/src/zabbix-6.4.10/database/postgresql/schema.sql |
※公式サイトの記述にはありませんがCREATE SCHEMAでzabbixのデータベースにzabbixのスキーマを作成しています。
Timescaledbを有効化
Azure Database for PostgreSQL フレキシブル サーバーはTimescaledbがサポートしています。
デフォルトでは無効になっているのでAzure CLIコマンドで有効にします。
コマンド実行後Azure Database for PostgreSQL フレキシブル サーバーを再起動します。
PS C:> az postgres flexible-server parameter set –resource-group test-rg-01 –server-name psql-zabbix-01 –name shared_preload_libraries –value timescaledb |
Azure Portal上で設定する場合です。
サーバーパラメーターを確認 | |
左側のメニューでサーバーパラメーターを選択します。 shared_preload_librariesと入力し検索します。 選択肢の中にTIMESCALEDBがあるのでチェックを入れて保存します。 |
|
サーバーを再起動します。 |
Timescaledbの設定
ZabbixのデータベースでTimescaledbを有効にします。
[root@vm-zabbix-02 ~]# psql -h psql-zabbix-01.postgres.database.azure.com -p 5432 -U zabbix -d zabbix |
※公式サイトの記述ではtimescaledb.sqlとなっていますがソースからインストールする場合はファイル名が異なります。解凍したソース内のファイルを確認した所同じものはschema.sqlである事が確認出来ました。
configureからmake install
zabbixをソースからインストールしていきます。
英語版のマニュアルにexportコマンドの記載があります。
[root@vm-zabbix-02 ~]#
export CFLAGS="-std=gnu99″ ~メッセージが表示される~ [root@vm-zabbix-02 zabbix-6.4.10]# make install ~メッセージが表示される~ |
ディレクトリ作成
これはパッケージインストールの設定ファイルを利用する為に関連するディレクトリを作成します。
併せて権限付与やファイルコピーも実施しています。
###ディレクトリ作成### [root@vm-zabbix-02 ~]# mkdir -m u=rwx,g=rx,o= -p /var/log/zabbix ###ファイルコピー### [root@vm-zabbix-02 ~]# cp -rfp /usr/local/sbin/zabbix_* /usr/sbin/ ###権限付与### [root@vm-zabbix-02 ~]#
chown -R root:root /usr/share/zabbix |
この手順は必須ではありません。
Zabbixをソースからインストールして動作させる事は可能です。
その場合は後続手順のパスが異なりますので適時修正して利用下さい。
zabbix_server.conf設定
zabbix_server.confを設定します。
書き換え前後の設定値です。
PostgreSQLを利用する場合にはDBSchemaの設定が必要になります。
書き換え前 | 書き換え後 |
LogFile=/tmp/zabbix_server.log | LogFile=/var/log/zabbix/zabbix_server.log |
# DBHost=localhost | DBHost=psql-zabbix-01.postgres.database.azure.com |
# DBPassword= | DBPassword=Zabbix(PostgreSQL)ユーザーのパスワード |
# DBSchema= | DBSchema=zabbix |
LogFile=/tmp/zabbix_server.log | LogFile=/var/log/zabbix/zabbix_server.log |
LogFileSize=1 | LogFileSize=0 |
PidFile=/tmp/zabbix_server.pid | PidFile=/var/run/zabbix/zabbix_server.pid |
SocketDir=/tmp | SocketDir=/run/zabbix |
(記述無し) | DBTLSConnect= required |
sedコマンドを利用して設定します。
DBTLSConnectはechoコマンドを利用して追記しています。
[root@vm-zabbix-02 ~]#sed -i -e “s/^LogFile=\/tmp\/zabbix_server.log/LogFile=\/var\/log\/zabbix\/zabbix_server.log/g" /etc/zabbix/zabbix_server.conf [root@vm-zabbix-02 ~]#sed -i -e “s/^LogFile=\/tmp\/zabbix_server.log/LogFile=\/var\/log\/zabbix\/zabbix_server.log/g" /etc/zabbix/zabbix_server.conf |
zabbix_agentd.conf設定
zabbix_agentd.confを設定します。
書き換え前後の設定値です。
書き換え前 | 書き換え後 |
PidFile=/tmp/zabbix_agentd.pid | PidFile=/var/run/zabbix/zabbix_agentd.pid |
# LogFileSize=1 | LogFileSize=0 |
LogFile=/tmp/zabbix_agentd.log | LogFile=/var/log/zabbix/zabbix_agentd.log |
sedコマンドを利用して設定します。
[root@vm-zabbix-02 ~]#sed -i -e “s/^# PidFile=\/tmp\/zabbix_agentd.pid/PidFile=\/var\/run\/zabbix\/zabbix_agentd.pid/g" /etc/zabbix/zabbix_agentd.conf |
zabbix.conf(php-fpm)作成
/etc/php-fpm.d/zabbix.confのファイルを作成します。
パッケージインストールした際の設定内容を流用しています。
[root@vm-zabbix-02 ~]# vi /etc/php-fpm.d/zabbix.conf [zabbix] listen = /run/php-fpm/zabbix.sock pm = dynamic php_value[session.save_handler] = files php_value[max_execution_time] = 300 |
※memory_limit等の設定値は環境に合わせて適時増やします。
zabbix.conf(httpd)作成
/etc/httpd/conf.d/zabbix.confを作成します。
パッケージインストールした際の設定内容を流用しています。
[root@vm-zabbix-02 ~]# vi /etc/httpd/conf.d/zabbix.conf # Alias /zabbix /usr/share/zabbix ProxyTimeout 300 <Directory “/usr/share/zabbix"> <IfModule dir_module> <FilesMatch \.(php|phar)$> <Directory “/usr/share/zabbix/conf"> <Directory “/usr/share/zabbix/app"> <Directory “/usr/share/zabbix/include"> <Directory “/usr/share/zabbix/local"> <Directory “/usr/share/zabbix/vendor"> |
SELinux設定
SELinuxを設定します。
[root@vm-zabbix-02 ~]# setsebool -P httpd_can_connect_zabbix on |
※RockyLinux9でのSELinux無効化はこちらに纏めています。SELinux無効化は推奨されませんのでご注意ください。
zabbix-server.service設定
zabbix-serverのサービスファイルを作成します。
パッケージインストールした際の設定内容を流用しています。
[root@vm-zabbix-02 ~]# vi /usr/lib/systemd/system/zabbix-server.service [Unit] [Service] [Install] |
zabbix-agent.service設定
zabbix-agentのサービスファイルを作成します。
パッケージインストールした際の設定内容を流用しています。
[root@vm-zabbix-02 ~]# vi /usr/lib/systemd/system/zabbix-agent.service [Unit] [Service] [Install] |
起動設定
Zabbix関連のサービス起動設定です。
サービスを自動起動するように設定しています。
[root@vm-zabbix-02 ~]# systemctl restart zabbix-agent zabbix-server php-fpm httpd |
手順確認時にエラーになった事象
公式サイトの手順を確認しながら実施したのですが何度か躓く事がありました。
色々あったのですが主に躓いた部分纏めてみるとこのような形でした。
-
- ./configureのエラー
- 必要なパッケージ不足が原因
- パッケージ追加インストールで対応
- 必要なパッケージ不足が原因
- DB type “MYSQL" is not supported by current setup. Possible values POSTGRESQLのエラーメッセージ表示される
- 設定ミスが原因
-
- ディレクトリへの権限設定が足りてなかった
- zabbix_server.conでDBSchemaの設定が出来てなかった
- zabbix.conf.phpが初期化されていた
- SELinuxの設定漏れ(setsebool -P zabbix_can_network on)
-
- 設定ミスが原因
- PostgreSQLのコマンド違い
- PostgreSQLのバージョン差異が原因
- TimescaledbがAzure Database for PostgreSQLフレキシブル サーバーの16ではサポートされていなかった
- 権限付与が追加で必要だった
- PostgreSQLのバージョン差異が原因
- ./configureのエラー
—広告—
Zabbix Webインタフェースのインストール
初期設定
http://ZabbixサーバーのIPアドレス/zabbixへアクセスしてセットアップを再開します。
Database hostにはAzure Database for PostgreSQLフレキシブル サーバーのサーバ名を設定します。
-
- DBの設定情報
- データベースタイプ:PostgreSQL
- データベースホスト:psql-zabbix-01.postgres.database.azure.com
- データベース名:zabbix
- データベーススキーマ:zabbix
- ユーザー:zabbix
- パスワード:Zabbixユーザー(PostgreSQL)のパスワード
- データベース接続のTLS暗号化:チェックを入れる
- DBの設定情報
ログイン
Zabbixサーバーへログインします。
-
- 初期ユーザー名とパスワード
- ユーザー名:Admin
- パスワード:zabbix
- 初期ユーザー名とパスワード
ログイン | |
初期ユーザー名とパスワードを使ってログインします。 | |
Zabbiサーバーの起動の値がはいになっています。Zabbixサーバーの稼働を確認出来ます。 |
※Zabbixサーバーのインストールに失敗している場合はZabbiサーバの起動の値がいいえになっています。
—広告—
最後に
Zabbix6をソースからインストールする場合の手順を纏めてみました。
Azure Database for PostgreSQL フレキシブル サーバー(Flexible Server)を利用しています。
設定手順の中で色々躓く事も多かったですが一緒に纏めています。
今後も引き続き色々試してみたいと思います。
パッケージを利用した手順についてはこちらに纏めています。
こちらの例ではAzure Database for MySQL フレキシブル サーバー(Flexible Server)を利用しています。
Zabbixでのメール送信設定はこちらに纏めています。
Zabbixを利用したAzureのリソース監視設定方法ついてはこちらで紹介しています。