Zabbix6.4をMySQL Flexible Server使って構築(Rocky Linux9)

2020-06-19Azure,Database For MySQL,Others,Zabbix

Azure環境上でのZabbix6パッケージインストール手順纏めです。
Rocky Linux 9の仮想マシン(Azure VM)とAzure Database for MySQL フレキシブル サーバー(Flexible Server)の組み合わせで構築しています。

    • Zabbixパッケージインストール
    • MySQLクライアントインストールから設定
    • zabbix_server.conf設定
    • SELinux設定
    • エラー対応
    • Zabbix frontend設定

※Azure Database for MariaDBが廃止になるためMySQL フレキシブル サーバー(Flexible Server)を利用した手順に更新しました。

スポンサーリンク

リソース準備

環境

同じ仮想ネットワーク内に仮想マシン(Azure VM)とAzure Database for MySQL フレキシブル サーバーを作成し利用しています。

使用したバージョンです。

    • Web ServerはApacheを利用しています
    • Zabbixのバージョンは6.4を利用しています
    • Rocky Linuxは9.3を利用しています。
    • Azure Database for MySQL フレキシブル サーバーは8.0を利用しています

リソースの設定内容です。

     
仮想マシン
(Azure VM)
名前 vm-zabbix-01
IPアドレス 10.0.1.6
OS Rocky Linux 9
Azure Database for MySQL
フレキシブル サーバー
名前 mysql-zabbix-01
(mysql-zabbix-01.mysql.database.azure.com)
ネットワーク VNET統合
(test-vnet-01/mysql-snet-01)

仮想マシン(Azure VM)を準備

Zabbix Serverとなる仮想マシン(Azure VM)を準備します。
MarketplaceにあるRocky Linux 9のイメージを利用して作成してます。

B1sなどの小さすぎる仮想マシンサイズを選択するとデプロイに失敗します。
今回はStandard B2sを利用しています。

Azure Database for MySQLフレキシブル サーバーを準備

こちらの参考を手順に作成します。
ネットワークはVNET統合を利用しローカルからのアクセスのみとしています。

今回は検証目的なのでB1msを利用してます。

Zabbixインストール

公式サイトのインストール手順を参考に進めます。

Zabbixパッケージインストール

日本語ロケールをインストール

仮想マシン(Azure VM)に日本語ロケールをインストールします。
英語のロケールも一緒にインストールしています。
英語のロケールが存在しない時にZabbixのGUIでエラーになる事があったので一緒にインストールしています。
locale -aでインストールされているロケールを確認しています。
ja_jp.utf8などZabbixで利用するロケールがインストールされている事が確認出来ます。

[root@vm-zabbix-01 ~]# locale -a
C
C.utf8
POSIX

[root@vm-zabbix-01 ~]# dnf -y install glibc-langpack-en.x86_64 glibc-langpack-ja.x86_64
~インストールの内容が表示される~
[root@vm-zabbix-01 ~]#
locale -a

~結果抜粋~
en_US.utf8

ja_JP.utf8

dnf search locale jaのコマンドを実行すると日本語パッケージ名が表示されます。

Zabbixリポジトリをインストールする

Zabbixのリポジトリをインストールします。
インストール後はキャッシュクリアします。

[root@vm-zabbix-01 ~]# rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-6.4-1.el9.noarch.rpm
[root@vm-zabbix-01 ~]# dnf clean all
25 files removed

Zabbixパッケージインストール

Zabbix関連のパッケージをインストールします。

[root@vm-zabbix-01 ~]# dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent

※利用するプラットフォームによってインストールするパッケージが異なります。公式サイトのインストール手順を確認します。

MySQL Clientをインストール

Zabbix ServerからAzure Database for MySQLフレキシブル サーバーに接続するためにMySQL Clientをインストールします。

MySQL Yum リポジトリを使用して MySQL を Linux にインストールする
MySQL Community Downloads

[root@vm-zabbix-01 ~]# dnf localinstall https://dev.mysql.com/get/mysql80-community-release-el9-5.noarch.rpm
[root@vm-zabbix-01 ~]# dnf install mysql-community-client

リポジトリのバージョン確認方法です。

MySQL Communityリポジトリのバージョン確認

コマンド実行時にはサイトで確認したバージョンを指定します。

MySQL Community Downloads

 

Zabbixユーザーと初期データベース作成

MySQL上でZabbix用のデータベースとユーザーを作成します。
今回はMySQL上に作成したユーザー名はzabbixとしています。
アクセス元はZabbix Server(10.0.1.6)からのみに制限しています。

ユーザー名やデータベース名をzabbixとしていますが任意の値で設定する事が出来ます。
変更した場合は初期スキーマとデータをインポートの指定やzabbix_server.confの設定時に変更を忘れないように注意が必要です。

[root@vm-zabbix-01 ~]# mysql -h mysql-zabbix-01.mysql.database.azure.com -u 管理者ユーザー名 -p –ssl-mode=REQUIRED
Enter password:管理者ユーザーのパスワード

mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user 'zabbix’@’10.0.1.6’ identified by 'zabbixユーザー(MySQL)のパスワード’;
mysql> grant all privileges on zabbix.* to 'zabbix’@’10.0.1.6’;
mysql> quit

#アクセス元を制限しない場合
mysql>
create user zabbix identified by 'zabbixユーザー(MySQL)のパスワード’;
mysql> grant all privileges on zabbix.* to zabbix;

※管理者ユーザーとパスワードはAzure Database for MySQLフレキシブル サーバー作成時に設定したユーザー名とパスワードです。
※公式サイトの手順にあるglobal log_bin_trust_function_creatorsは変更できなかったため実行せずに進めています。
※Azure Database for MySQLフレキシブル サーバーではrequire_secure_transportがONになっています。–ssl-mode=REQUIREDを指定して暗号化接続しています。

Azure Database for MySQLフレキシブル サーバー側でもサーバパラメータを修正しています。

サーバパラメータ修正

Azure Database for MySQLフレキシブル サーバーの左側のメニューでサーバパラメータを選択します。
パラメータを修正し保存します。

character_set_server:utf8mb4
collation_server:utf8mb4_bin

 

初期スキーマとデータをインポート

Zabbixの初期スキーマとデータをインポートします。

 [root@vm-zabbix-01 ~]# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -h mysql-zabbix-01.mysql.database.azure.com –default-character-set=utf8mb4 -u zabbix -p zabbix
Enter password:MySQL上のzabbixユーザーのパスワード

zabbix_server.confの設定

zabbix_server.confでDBPasswordとDBHostの設定をします。

[root@vm-zabbix-01 ~]# sed -i -e “s/^# DBPassword=/DBPassword=MySQL上のzabbixユーザーのパスワード/g" /etc/zabbix/zabbix_server.conf
[root@vm-zabbix-01 ~]# sed -i -e “s/^# DBHost=localhost/DBHost=mysql-zabbix-01.mysql.database.azure.com/g" /etc/zabbix/zabbix_server.conf

#設定内容(/etc/zabbix/zabbix_server.conf)
DBHost=Azure Database for MySQLフレキシブル サーバーのサーバー名
DBPassword=設定したMySQL上のzabbixユーザーのパスワード

※DBへの接続情報はzabbix_server.conf(Zabbix Server)とzabbix.conf.php(Web UI)に持ちます。

SELinuxの設定

SELinuxを設定します。
ZabbixのWebインターフェースとサーバー間の通信を有効にします。
ネットワーク経由でデータベースにアクセスするためhttpd_can_network_connect_dbもONにします。

SELinuxの設定

[root@vm-zabbix-01 ~]# setsebool -P httpd_can_connect_zabbix on
[root@vm-zabbix-01 ~]# setsebool -P httpd_can_network_connect_db on
[root@vm-zabbix-01 ~]# getsebool -a |grep -e httpd_can_connect_zabbix -e httpd_can_network_connect_db
httpd_can_connect_zabbix –> on
httpd_can_network_connect_db –> on

※RockyLinux9でのSELinux無効化はこちらに纏めています。SELinux無効化は推奨されませんのでご注意ください。

起動設定

Zabbix Serverやエージェント関連のプロセスを開始設定をします。
httpdやphp-fpmも設定します。

[root@vm-zabbix-01 ~]# systemctl restart zabbix-server zabbix-agent httpd php-fpm
[root@vm-zabbix-01 ~]# systemctl enable zabbix-server zabbix-agent httpd php-fpm

エラーが発生

この状態ではZabbix Serverが起動エラーになります。
設定を進める事は出来るのですが、設定完了後の画面でZabbix server is runningがNoになります。

zabbix_server.logにはconnection to database 'zabbix’ failedのログが出ておりデータベースとの接続に失敗している事が確認出来ます。
audit.logにdeniedのログが出ておりSELinuxのエラーが発生している事が確認出来ます。

5.5. Audit ログの SELinux 拒否

#Zabbix Serverログ(/var/log/zabbix/zabbix_server.log)
75063:20231224:063935.779 Starting Zabbix Server. Zabbix 6.4.10 (revision 4da16fb82f5).
~省略~
75063:20231224:063935.779 using configuration file: /etc/zabbix/zabbix_server.conf
75063:20231224:063935.790 [Z3001] connection to database 'zabbix’ failed: [2002] Can’t connect to server on 'mysql-zabbix-01.mysql.database.azure.com’ (13)

#audit.logログ(/var/log/zabbix/zabbix_server.log)
[root@vm-zabbix-01 ~]# cat /var/log/audit/audit.log |grep zabbix_server
type=AVC msg=audit(): avc: denied { name_connect } for pid=75063 comm="zabbix_server" dest=3306 scontext=system_u:system_r:zabbix_t:s0 tcontext=system_u:object_r:mysqld_port_t:s0 tclass=tcp_socket permissive=0
type=SYSCALL msg=audit(): arch=c000003e syscall=42 success=no exit=-13 a0=9 a1=558ad9c0bc70 a2=10 a3=0 items=0 ppid=1 pid=75063 auid=4294967295 uid=989 gid=989 euid=989 suid=989 fsuid=989 egid=989 sgid=989 fsgid=989 tty=(none) ses=4294967295 comm="zabbix_server" exe="/usr/sbin/zabbix_server_mysql" subj=system_u:system_r:zabbix_t:s0 key=(null)ARCH=x86_64 SYSCALL=connect AUID="unset" UID="zabbix" GID="zabbix" EUID="zabbix" SUID="zabbix" FSUID="zabbix" EGID="zabbix" SGID="zabbix" FSGID="zabbix"

追加設定

Azure Database for MySQLフレキシブル サーバーではrequire_secure_transportがONになっています。
MySQL encryption configurationやSELinuxに追加設定が必要になります。
DBTLSConnect=requiredをzabbix_server.confに追記します。
併せてSELinuxで追加の許可設定をします。

MySQL encryption configuration

[root@vm-zabbix-01 ~]# setsebool -P zabbix_can_network on
[root@vm-zabbix-01 ~]# echo DBTLSConnect=required >> /etc/zabbix/zabbix_server.conf

※require_secure_transportをoffに変更する事でも対応可能です。

—広告—

Zabbix frontendをセットアップ

初期設定

ブラウザでhttp://Zabbix ServerのIPアドレス/zabbixへアクセスしてセットアップを再開します。
Database hostにはAzure Database for MySQLフレキシブル サーバーのサーバ名を設定します。

    • DBの設定情報
      • Database type:MySQL
      • Database host:mysql-zabbix-01.mysql.database.azure.com
      • Database name:zabbix
      • User:zabbix
      • Password:Zabbixユーザー(MySQL)のパスワード
      • Database TLS encryption:チェックを入れる
セットアップ手順

セットアップ画面が表示されます。
文字コードを選択します。

セットアップのチェック画面です。
OKである事を確認します。

DBへの接続設定です。
各項目を設定します。

※Database hostを設定するとDatabase TLS encryptionのチェックが表示されます。

Zabbixサーバやタイムゾーンの設定です。
日本時間に設定しています。
確認画面が表示されます。
Next stepでインストールが開始されます。
インストール完了です。

※DBへの接続設定内容は/etc/zabbix/web/zabbix.conf.phpに反映されます。

ログイン

Zabbix Serverへログインします。

    • 初期ユーザー名とパスワード
      • Username(ユーザー名):Admin
      • Password(パスワード):zabbix
ログイン確認
初期ユーザー名とパスワードを使ってログインします。

Zabbix server is runningのValueがYesになっており、Zabbix Serverも稼働している事が確認出来ます。

※ログイン出来ても、Zabbix Serverのインストールに失敗している場合はZabbix server is runningのValueがNoになっています。

GUIを日本語化

User settingsのProfileに言語設定があります。

 
User settingsのProfileを選択します。
LanguageでJapanese(ja_JP)を選択します。

—広告—

最後に

Azure Database for MySQLフレキシブル サーバーを利用したZabbixのインストール手順について纏めてみました。
SELinuxの設定などに注意が必要でしたが、基本的には公式サイトの手順を参考に進める事が出来ました。
マネージドのデータベースを使って監視環境が作るとバックアップなども自動化できるので便利かなと思いました。

今後も色々試してみたいと思います。

メール送信は下記の方で試してみております。

スポンサーリンク