Zabbix 4.2 を Docker Compose でサクッと動かす


概要

Zabbix 4.2 をサクッと動かすには、公式 docker-compose を使うのが簡単早いんですが、やってみると下記問題があったため、対処方法をまとめておきます。

  • 日本語表示にするとグラフの日本語部分が豆腐に文字化けする
  • GUIで表示される時刻がラトビア時間になっている
  • 起動後、Zabbix Server 内 Zabbix Agent との通信ができずエラーになる
  • proxy 関連部分のエラーが出続ける
  • frontend が apache 版と nginx 版の両方があるが、片方で十分

前提条件

  • docker および docker-compose はインストール済み
  • Zabbix バージョンは 4.2 で確認
  • Zabbix は CentOS + PostgreSQL + NGINX 版を使用

手順

1. git clone 等で公式 docker-compose 一式をローカルに展開

$ git clone https://github.com/zabbix/zabbix-docker.git

各種 docker-compose ファイル、各コンテナ向け環境定義ファイル(.env_*)が必要になります。

2. 日本語表示用 Docker Image 作成のための Docker File を作成

$ cd zabbix-docker
$ vim Dockerfile
Dockerfile
FROM zabbix/zabbix-web-nginx-pgsql:centos-4.2-latest
RUN yum -y install ipa-pgothic-fonts && \
    cd /usr/share/zabbix/assets/fonts && \
    mv DejaVuSans.ttf DejaVuSans.ttf.org && \
    ln -s /usr/share/fonts/ipa-pgothic/ipagp.ttf DejaVuSans.ttf

多少乱暴ですが、標準の DejaVuSans.ttf を「IPA Pゴシック」フォントに置き換えてしまいます。

3. Docker-compose ファイルを編集する

不要箇所のコメントアウト、Docker Image 作成など。

docker-compose_v3_centos_pgsql_latest.yaml
version: '3.5'
services:
 zabbix-server:
(略)
# ** Zabbix-proxy関連をコメントアウト **
#  zabbix-proxy-sqlite3:
#   image: zabbix/zabbix-proxy-sqlite3:centos-4.2-latest
(略)
#   labels:
#    com.zabbix.description: "Zabbix proxy with SQLite3 database support"
#    com.zabbix.company: "Zabbix SIA"
#    com.zabbix.component: "zabbix-proxy"
#    com.zabbix.dbtype: "sqlite3"
#    com.zabbix.os: "centos"
#
#  zabbix-proxy-mysql:
#   image: zabbix/zabbix-proxy-mysql:centos-4.2-latest
(略)
#   labels:
#    com.zabbix.description: "Zabbix proxy with MySQL database support"
#    com.zabbix.company: "Zabbix SIA"
#    com.zabbix.component: "zabbix-proxy"
#    com.zabbix.dbtype: "mysql"
#    com.zabbix.os: "centos"

# ** Apache版フロントエンドをコメントアウト **
#  zabbix-web-apache-pgsql:
#   image: zabbix/zabbix-web-apache-pgsql:centos-4.2-latest
(略)
#    com.zabbix.dbtype: "pgsql"
#    com.zabbix.os: "centos"

 zabbix-web-nginx-pgsql:
  #image: zabbix/zabbix-web-nginx-pgsql:centos-4.2-latest  ** コメントアウト **
  build: .   # ** 専用Dockerfileを使用するため追記 **
  ports:
   - "80:80"    # ** export port を 80 に変更 **
   - "443:443"  # ** export port を 443 に変更 **
(略)

4. Zabbix時間を日本時間に変更

Web GUI に表示される時間は、デフォルトでは Zabbix 本社があるラトビア時間が使われるので、日本時間に変更します。WEB用環境設定ファイルである .env_web で設定します。

./env_web
(略)
# PHP_TZ=Europe/Riga
PHP_TZ=Asia/Tokyo
(略)

5. 起動する

上記で事前準備は完了。起動します。

$ docker-compose -f docker-compose_v3_centos_pgsql_latest.yaml up

6. Zabbix Agent との通信エラーを解消する

GUI アクセスすると、Zabbix Agent との通信がエラーになっているはずです。

原因は、デフォルトでは、Zabbix Server のエージェントのインタフェースが 127.0.0.1 となっていて、別コンテナである Zabbix agent と通信できないためです。1

Docker-compose では DNS で名前解決できるので、以下のように、「DNS名」に「zabbix-agent」と入れ、接続方法を「DNS」にすることで解消できます。

終わり

以上でエラーなく普通に使えるようになりました。


  1. Zabbix Server から 127.0.0.1:10050 に通信しようとするが、Zabbix Server コンテナでは :10050 を listen していないため、Connection refused になる。Zabbix Agent コンテナでは :10050 を listen してるんだけどね。。