【環境】PodmanでZabbix+MySQLを起動まで構築する
前回のRedmine に引き続き、Zabbix を構築します。
目次
概要
作業環境・バージョン
- CentOS v8.4.2105
- Podman v3.2.3 (※1)
- Zabbix Server v5.0
- MySQL v8.0.26 (※2)
・公式ページ:Download and install Zabbix
・公式ドキュメント:Zabbix Documentation 5.0
(※1) 本記事ではrootfull構成でコンテナを構築します。Podman はroot以外の一般ユーザでもコンテナ環境が使えますが、今回はrootによる構築(rootfull)を選択しました
(※2) Redmine で散々ハマった MySQL v8.0 による認証問題の解決手法が、Zabbix公式で紹介されていました。。。後日、Redmine の追加検証して、記事も更新します。
全体的な流れ
大まかな流れです。前回のRedmine と似た流れを汲みます。今回もPodmanコンテナを使います。
- ベースイメージを取得する(podman pull)
- Pod を作成する(podman pod create)
- MySQLコンテナを作成する (podman run)
- Zabbix-Serverコンテナを作成する (podman run)
- Java-Gatewayコンテナを作成する (podman run)
- Webコンテナを作成する (podman run)
- Webブラウザでアクセスしてみる
CentOSへのPodman のインストールについては割愛します。下記のページを参考にしてみてください。
参考:Podman Installation Instructions – Linux Distributions (Podman.IO)
作業手順
ベースイメージを取得する (podman pull)
今回の Zabbix環境構築 では、次のイメージを取得します。公式では、MySQL 以外のDBやnginxによるフロントなどいくつかパターンが公開されています。ubuntu にしている理由は特にありません。好きなプラットフォーム版を選択して良いものです。
podman pull docker.io/library/mysql:8.0
podman pull docker.io/zabbix/zabbix-server-mysql:ubuntu-5.0-latest
podman pull docker.io/zabbix/zabbix-java-gateway:ubuntu-5.0-latest
podman pull docker.io/zabbix/zabbix-web-apache-mysql:ubuntu-5.0-latest
私の環境だと、たまにDownload が止まったりもしました。Ctrl + C でキャンセルして、再度 pullし直すと成功したりするので、諦めずに何度か pull してみてください。
結果を確認する (podman images)
podman pull が成功すると下記のようにイメージが確認できます。
[root@zabbix-vm ~]# podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/zabbix/zabbix-web-apache-mysql ubuntu-5.0-latest e89244ad830c 3 days ago 352 MB
docker.io/zabbix/zabbix-server-mysql ubuntu-5.0-latest 0300a4cce1ff 3 days ago 292 MB
docker.io/zabbix/zabbix-java-gateway ubuntu-5.0-latest f7e8413e824f 3 days ago 267 MB
docker.io/library/mysql 8.0 2fe463762680 11 days ago 519 MB
Pod を作成する (podman pod create)
起動停止をセットにしたり、localhost で通信を確立するため、Podを作成します。
podman pod create -p 80:8080,10051:10051 --name zabbix-pod
8080番はZabbix の フロントエンド、10051番がZabbixエージェントが利用するLISTENポート番号です。
結果を確認する (podman pod ls)
rootfull でPodを作成すると、1つのコンテナがPodに含まれます。
[root@zabbix-vm ~]# podman pod ps
POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS
342f0e22d0ca zabbix-pod Created 2 seconds ago e4f582a440f2 1
MySQLコンテナを作成する (podman run)
コンテナはバックエンド側から作成します。まずはMySQLからです。
コンテナを作成する
v8.0 でコンテナを作成します(※)
podman run -itd --name mysql-server \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
--restart always \
--pod zabbix-pod \
mysql:8.0 \
--character-set-server=utf8 --collation-server=utf8_bin \
--default-authentication-plugin=mysql_native_password
結果を確認する① (podman ps & podman logs)
「infraコンテナ」と「MySQLコンテナ」が起動しています。(前回のRedmineと同様です)
[root@zabbix-vm ~]# podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e4f582a440f2 registry.access.redhat.com/ubi8/pause:latest 2 minutes ago Up 17 seconds ago 0.0.0.0:80->8080/tcp, 0.0.0.0:10051->10051/tcp 342f0e22d0ca-infra
690afde7e55c docker.io/library/mysql:8.0 --character-set-s... 17 seconds ago Up 17 seconds ago 0.0.0.0:80->8080/tcp, 0.0.0.0:10051->10051/tcp mysql-server
ログも確認してみます。きちんとDB起動していることが分かります。
[root@zabbix-vm ~]# podman logs mysql-server
~~~~~~~~~~~~~~~~~~~~~~長いため、省略します~~~~~~~~~~~~~~~~~~~~~~~~~
2021-10-09T09:14:57.354304Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2021-10-09T09:14:57.359905Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
2021-10-09T09:14:57.455857Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock
2021-10-09T09:14:57.455932Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.26' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server - GPL.
[root@zabbix-vm ~]#
Zabbix-Serverコンテナを作成する (podman run)
メインサーバであるZabbix-Serverコンテナを作成します。
環境変数の指定は6つです。Podによるコンテナ間通信で「127.0.0.1」を指定します。
podman run -itd --name zabbix-server-mysql \
-e DB_SERVER_HOST="127.0.0.1" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
-e ZBX_JAVAGATEWAY="127.0.0.1" \
--restart always \
--pod zabbix-pod \
zabbix-server-mysql:ubuntu-5.0-latest
結果を確認する (podman logs)
起動ログを確認してみます。初回のマイグレーション(データモデルの展開処理)が走っていることが分かります。
[root@zabbix-vm ~]# podman logs zabbix-server-mysql
** Preparing Zabbix server
** Using MYSQL_USER variable from ENV
** Using MYSQL_PASSWORD variable from ENV
** Using MYSQL_ROOT_PASSWORD variable from ENV
********************
* DB_SERVER_HOST: 127.0.0.1
* DB_SERVER_PORT: 3306
* DB_SERVER_DBNAME: zabbix
********************
** Creating 'zabbix' user in MySQL database
** Database 'zabbix' already exists. Please be careful with database COLLATE!
** Creating 'zabbix' schema in MySQL
** Preparing Zabbix server configuration file
** Updating '/etc/zabbix/zabbix_server.conf' parameter "ListenIP": ''...removed
** Updating '/etc/zabbix/zabbix_server.conf' parameter "ListenPort": ''...removed
~~~~~~~~~~~~~~~~~長いため、割愛します。データモデルの展開処理が流れています~~~~~~~~~~~~
190:20211009:092947.153 item "Zabbix server:zabbix[process,snmp trapper,avg,busy]" became not supported: No "snmp trapper" processes started.
190:20211009:092947.153 item "Zabbix server:zabbix[process,ipmi manager,avg,busy]" became not supported: No "ipmi manager" processes started.
192:20211009:092948.159 item "Zabbix server:zabbix[process,vmware collector,avg,busy]" became not supported: No "vmware collector" processes started.
192:20211009:092955.198 item "Zabbix server:zabbix[vmware,buffer,pused]" became not supported: No "vmware collector" processes started.
202:20211009:093002.062 temporarily disabling Zabbix agent checks on host "Zabbix server": host unavailable
[root@zabbix-vm ~]#
Java-Gatewayコンテナを作成する (podman run)
podman run -itd --name zabbix-java-gateway \
--restart always \
--pod zabbix-pod \
zabbix-java-gateway:ubuntu-5.0-latest
結果を確認する (podman logs)
起動ログを確認してみます。10052番でLISTENしてます。外部から接続する必要はないため、podでは開けていません。
[root@zabbix-vm ~]# podman logs zabbix-java-gateway
** Preparing Zabbix Java Gateway
** Preparing Zabbix Java Gateway log configuration file
Updating /etc/zabbix/zabbix_java_gateway_logback.xml 'DebugLevel' parameter: 'info'... updated
2021-10-09 09:57:31.121 [main] INFO com.zabbix.gateway.JavaGateway - Zabbix Java Gateway 5.0.16 (revision 422e00c) has started
2021-10-09 09:57:31.139 [main] INFO com.zabbix.gateway.JavaGateway - listening on 0.0.0.0/0.0.0.0:10052
Webコンテナを作成する (podman run)
今回は使い慣れた Apache HTTP Server です。
podman run -itd --name zabbix-web-mysql \
-e ZBX_SERVER_HOST="127.0.0.1" \
-e DB_SERVER_HOST="127.0.0.1" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
--restart always \
--pod zabbix-pod \
zabbix-web-apache-mysql:ubuntu-5.0-latest
結果を確認する (podman ps & podman logs)
[root@zabbix-vm ~]# podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e4f582a440f2 registry.access.redhat.com/ubi8/pause:latest 50 minutes ago Up 48 minutes ago 0.0.0.0:80->8080/tcp, 0.0.0.0:10051->10051/tcp 342f0e22d0ca-infra
690afde7e55c docker.io/library/mysql:8.0 --character-set-s... 48 minutes ago Up 48 minutes ago 0.0.0.0:80->8080/tcp, 0.0.0.0:10051->10051/tcp mysql-server
e1243df06a02 docker.io/zabbix/zabbix-server-mysql:ubuntu-5.0-latest /usr/sbin/zabbix_... 34 minutes ago Up 34 minutes ago 0.0.0.0:80->8080/tcp, 0.0.0.0:10051->10051/tcp zabbix-server-mysql
ab3100f586cb docker.io/zabbix/zabbix-java-gateway:ubuntu-5.0-latest /usr/sbin/zabbix_... 5 minutes ago Up 5 minutes ago 0.0.0.0:80->8080/tcp, 0.0.0.0:10051->10051/tcp zabbix-java-gateway
ca18e163773f docker.io/zabbix/zabbix-web-apache-mysql:ubuntu-5.0-latest /usr/sbin/apache2... 18 seconds ago Up 19 seconds ago 0.0.0.0:80->8080/tcp, 0.0.0.0:10051->10051/tcp zabbix-web-mysql
Webブラウザでアクセスしてみる
「http://localhost」にアクセスしてみます。Zabbix 5.0版の初期画面が起動しました。
初期ID(ID:Admin、Password:zabbix) でログオンできます。
初期状態は英語です。左ペイン下の「User Setting」から日本語に変更できます。
ここから先は Zabbix の世界です。下記から、クイックスタートが開始できます。
参考:Zabbix Documentation 5.0 – Quickstart (公式ドキュメント)
以上