概要
Docker Compose を使い、Zabbix Server を実行します。
前提知識
Docker Compose の基本操作(応用チュートリアル:WordPress)の理解が必要です。
チュートリアル内容について
Zabbix SIA から公式 Docker イメージや docker-compose.yml が配布されています。しかし、標準のイメージでは Zabbix Server の UI を日本語にすると画像のフォントが文字化けする問題があります。また、エージェントは自分自身を監視できません。
これらの問題を解決すべく、Dockerfile
と docker-compose.yml
を書き直し、すぐに日本語で Zabbix Server を使えることを目的とします。
1. ディレクトリの作成と移動
作業用ディレクトリを作成し、移動します。
$ mkdir zabbix
$ cd zabbix
2. 関連ファイルの作成
Dockerfile を作成します。
$ vi Dockerfile
中身は次の通りです。
FROM zabbix/zabbix-web-apache-mysql:ubuntu-3.2-latest
RUN apt-get update && \
apt-get -y install fonts-ipafont && \
update-alternatives --install /usr/share/zabbix/fonts/graphfont.ttf zabbix-frontend-font /usr/share/fonts/opentype/ipafont-gothic/ipagp.ttf 50 && \
update-alternatives --set zabbix-frontend-font /usr/share/fonts/opentype/ipafont-gothic/ipagp.ttf
- IPA フォントをインストール
- zabbix-frontend-font のフォント指定を IPA フォントに切り替え
それから docker-compose.yml を作成します。
$ vi docker-compose.yml
中身は次の通りです。
version: '2'
services:
zabbix-server:
image: zabbix/zabbix-server-mysql:ubuntu-3.2-latest
ports:
- "10051:10051"
volumes:
- /etc/localtime:/etc/localtime:ro
env_file:
- .env_db_mysql
- .env_srv
user: root
networks:
- zbx_net
zabbix-web-apache-mysql:
image: zabbix/zabbix-web-apache-mysql:ubuntu-3.2-latest
build: .
ports:
- "80:80"
volumes:
- /etc/localtime:/etc/localtime:ro
env_file:
- .env_db_mysql
- .env_web
user: root
networks:
- zbx_net
zabbix-agent:
image: zabbix/zabbix-agent:ubuntu-3.2-latest
ports:
- "10050:10050"
volumes:
- /etc/localtime:/etc/localtime:ro
env_file:
- .env_agent
user: root
privileged: true
pid: "host"
networks:
zbx_net:
ipv4_address: 172.16.238.5
mysql-server:
image: mysql:5.7
volumes:
- /etc/localtime:/etc/localtime:ro
- ./zbx_env/var/lib/mysql:/var/lib/mysql
env_file:
- .env_db_mysql
user: root
networks:
- zbx_net
networks:
zbx_net:
driver: bridge
driver_opts:
com.docker.network.enable_ipv6: "false"
ipam:
driver: default
config:
- subnet: 172.16.238.0/24
gateway: 172.16.238.1
また、いくつかの関連ファイルを作成します。
# ZBX_SERVER_HOST=zabbix-server
# ZBX_SERVER_PORT=10051
ZBX_SERVER_NAME=Composed installation
# ZBX_MAXEXECUTIONTIME=600
# ZBX_MEMORYLIMIT=128M
# ZBX_POSTMAXSIZE=16M
# ZBX_UPLOADMAXFILESIZE=2M
# ZBX_MAXINPUTTIME=300
# Timezone one of: http://php.net/manual/en/timezones.php
TZ=Asia/Tokyo
$ touch .env_srv
# DB_SERVER_HOST=mysql-server
# DB_SERVER_PORT=3306
# MYSQL_USER=zabbix
MYSQL_USER=zabbix
# MYSQL_PASSWORD=zabbix
MYSQL_PASSWORD=zabbix
# MYSQL_ROOT_PASSWORD=
MYSQL_ROOT_PASSWORD=root_pwd
# MYSQL_ALLOW_EMPTY_PASSWORD=false
# MYSQL_DATABASE=zabbix
MYSQL_DATABASE=zabbix
ZBX_SERVER_HOST=zabbix-server,zabbix-agent
3. ビルドと実行
Dockerfile でイメージを作成するため、docker-compose build
コマンドを実行します。また、必要なイメージを取得します。
$ docker-compose build
$ docker-compose pull
最後に起動します。
$ docker-compose up -d
ブラウザから http://<IP>/
にアクセスします。id: admin , Pass: zabbix です。ログイン直後にパスワードを変更しておきます。