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」にすることで解消できます。

スクリーンショット 2019-06-15 21.50.16.png


終わり

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





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