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

  • 0
    いいね
  • 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 です。ログイン直後にパスワードを変更しておきます。