【環境】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コンテナを使います。

  1. ベースイメージを取得する(podman pull)
  2. Pod を作成する(podman pod create)
  3. MySQLコンテナを作成する (podman run)
  4. Zabbix-Serverコンテナを作成する (podman run)
  5. Java-Gatewayコンテナを作成する (podman run)
  6. Webコンテナを作成する (podman run)
  7. 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 (公式ドキュメント)

以上