Docker応用チュートリアル:Zabbix Server

  • 2
    いいね
  • 0
    コメント

概要

Docker Compose を使い、Zabbix Server を実行します。

前提知識

Docker Compose の基本操作(応用チュートリアル:WordPress)の理解が必要です。

チュートリアル内容について

Zabbix SIA から公式 Docker イメージや docker-compose.yml が配布されています。しかし、標準のイメージでは Zabbix Server の UI を日本語にすると画像のフォントが文字化けする問題があります。また、エージェントは自分自身を監視できません。

これらの問題を解決すべく、Dockerfiledocker-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

また、いくつかの関連ファイルを作成します。

.env_web
# 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
.env_db_mysql
# 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
.env_agent
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 です。ログイン直後にパスワードを変更しておきます。