docker-composeを使ってZabbixの環境を作成する


docker-composeを使ってZabbixの環境を作成する

忘備録です。
むずかしいことや詳しいことは苦手なのでシンプルにかきます。

思いついた時に、色々書き加えます。

参考サイト1:Zabbix公式コンテナとdocker-compose使って検証環境を簡単に作成削除
参考サイト2:zabbix/DockerHub
参考サイト3:Zabbixドキュメント3.0

0.簡単に、3つの前提知識

「docker-composeを使ってZabbixの環境を作成する」前に、簡単に、3つの基礎事項をしるします。

1. Dockerとは/Qiita
 -> コンテナ型の仮想環境を、作成・配布・実行するためのプラットフォーム。
2. docker-compose とは/Qiita
 -> 複数のコンテナからなるサービスを構築・実行する手順を自動的にし、管理を容易にする機能。
3. Zabbixとは/Qiita
 -> 無料のオープンソースで、複数のアプリケーションを監視できる統合監視システム。

0.+@ 環境を構成する前に、プラスアルファ

1.Zabbix/Qiitaの構成

2.今回の環境構成

なんとなく頭に入れておくと、いいと思います。

1.変数ファイル(.env)を作成する

docker-compose.ymlと同じディレクトリに、
.env という名前のファイルを新規作成します。

▼▼.envの中身

OS=alpine
VERSION=3.0.15
DB_NAME=zabbix
DB_USER=zabbix
DB_USER_PASSWORD=zabbix
DB_ROOT_PASSWORD=zabbix
HTTP_PORT=8080
TIME_ZONE=Asia/Tokyo

# 0 - basic information about starting and stopping of Zabbix processes;
# 1 - critical information
# 2 - error information
# 3 - warnings
# 4 - for debugging (produces lots of information)
# 5 - extended debugging (produces even more information)
LOG_LEVEL=3

※設定値は適宜変更可能。
※バージョンは、こちらのdocker公式サイトを参考にしてください。

2.docker-compose.ymlファイルを作成する

.env ファイルで定義した変数を利用する形、だそう。

▼▼docker-compose.ymlの中身

version: "3"
services:
  zabbix_db:
    image: mysql:5.7
    environment:
      - MYSQL_DATABASE=${DB_NAME}
      - MYSQL_USER=${DB_USER}
      - MYSQL_PASSWORD=${DB_USER_PASSWORD}
      - MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
  zabbix_server:
    image: zabbix/zabbix-server-mysql:${OS}-${VERSION}
    environment:
      - DB_SERVER_HOST=zabbix_db
      - MYSQL_DATABASE=${DB_NAME}
      - MYSQL_USER=${DB_USER}
      - MYSQL_PASSWORD=${DB_USER_PASSWORD}
      - MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
      - ZBX_DEBUGLEVEL=${LOG_LEVEL}
    ports:
      - "10051:10051"
    links:
      - zabbix_db
  zabbix_web:
    image: zabbix/zabbix-web-apache-mysql:${OS}-${VERSION}
    environment:
      - ZBX_SERVER_HOST=zabbix_server
      - DB_SERVER_HOST=zabbix_db
      - MYSQL_DATABASE=${DB_NAME}
      - MYSQL_USER=${DB_USER}
      - MYSQL_PASSWORD=${DB_USER_PASSWORD}
      - MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
      - PHP_TZ=${TIME_ZONE}
    ports:
      - ${HTTP_PORT}:80
    links:
      - zabbix_server
      - zabbix_db
  zabbix_agent:
    image: zabbix/zabbix-agent:${OS}-${VERSION}
    privileged: true
    environment:
      - ZBX_SERVER_HOST=zabbix_server
    expose:
      - "10050"
    links:
      - zabbix_server

3.いざ初期構築

▼▼コマンドで、以下のコマンドを打ち込みます。
-dをつけないとフォアグラウンドで実行されてログが流れる、とのこと。

docker-compose up -d

# ログ確認
docker-compose logs -f

※ポート番号(ここでは8080)が被っているよ、とエラーが出たので、
 8000なり8001なり、好きなポート番号に変えました。

無事にコマンドが通ると、
http://:8080(私の場合はhttp://localhost:8080/)
に繋なぐと、以下の画面が出ます!

やったね!
初期ユーザ admin / zabbix でログインできます。

4.日本語化

右上の①をクリックし、
言語を②Japaneseに選択します。

5.簡単なZabbixの設定

Zabbix Server自身にはAgentがいないので、
以下のようにAgentのNICをDNSで zabbix_agent を見るように変更します。

後は有効化して使います。

5.主なdocker-composeコマンド

フォアグラウンドで起動したものをCtrl-Cで落としたり、
stopしただけの場合は、DB等のデータが残ります。

▼▼起動と停止のコマンド

docker-compose stop
docker-compose start

▼▼バージョンを切り替えたい場合など、データ削除したい場合はdbのコンテナを削除してupし直したり、downで全環境削除してupし直します。

docker-compose rm zabbix_db
docker-compose down