はじめに
完成形のcomposeファイルを置いておくと何を変えたかわからなくなったり、アップデートについていけないので筆を執りました。k8sやswarmなど流行ってますが、1ノードでインストールだけで使えるcomposeも便利ですね。
全体的な流れとしては以下になります。
- 公式のzabbix/zabbix-dockerをクローン
- composeファイル、envファイル、secretファイルの編集
- composeで起動
- zabbix-server自体の監視
バージョン
以下の環境で記事を書いています。OSは勿論なんでもかまいませんが、dockerのバージョンが古いと動かない可能性があります。執筆時点でcomposeファイルのv3.5を使用するため、Docker engineは17.12.0以上となります。
- Ubuntu 18.04
- Docker version 19.03.6
- docker-compose version 1.17.1
確認するコマンド
$ docker -v
Docker version 19.03.6, build 369ce74a3c
$ docker-compose -v
docker-compose version 1.17.1, build unknown
composeのバージョンとの対応表
Ubuntuでのdocker-composeインストール
$ sudo apt install docker-compose
1.デプロイの準備
本記事では以下の構成で説明してます。
-
コンテナ: ubuntu
-
データベース: mysql
-
WEBサーバ: nginx
公式をクローンします。
$ git clone https://github.com/zabbix/zabbix-docker
使用するファイルを確認していきます。
$ cd zabbix-docker/
$ ls -la
全部は使用しないので使うファイルだけのフォルダを作ります。composeファイル、環境変数用の.env_*ファイル、パスワードなどの機密情報用の.MYSQLファイルです。
mkdir my-zabbix
cp ./docker-compose_v3_ubuntu_mysql_latest.yaml ./my-zabbix/docker-compose.yml
cp ./.env_agent ./my-zabbix/
cp ./.env_db_mysql ./my-zabbix/
cp ./.env_java ./my-zabbix/
cp ./.env_srv ./my-zabbix/
cp ./.env_web ./my-zabbix/
cp ./.MYSQL_PASSWORD ./my-zabbix/
cp ./.MYSQL_ROOT_PASSWORD ./my-zabbix/
cp ./.MYSQL_USER ./my-zabbix/
2.composeファイルの編集
composeファイルの全体を把握します。省略すると執筆時点はこんな構成でした。コメントアウト部分は今回関係ないので削除しても問題ないです。
version: '3.5'
services:
zabbix-server:
zabbix-proxy-sqlite3:
zabbix-proxy-mysql:
zabbix-web-apache-mysql:
zabbix-web-nginx-mysql:
zabbix-agent:
zabbix-java-gateway:
zabbix-snmptraps:
mysql-server:
db_data_mysql:
networks:
secrets:
今回はzabbix-proxyを使用しないので以下のサービス以下の記述をすべて削除します。
zabbix-proxy-sqlite3:
************************
zabbix-proxy-mysql:
************************
db_data_mysqlサービスはBusyBoxコンテナとなっています。BusyBoxとは基本的なUnixコマンドがインストール済みのコンテナイメージです。コンテナ作業中の10徳ナイフ的存在です。おそらくmysqlサーバにデータを流したり、バックアップを取るために入っていますが利用しなければ削除します。
db_data_mysql:
***********************
WEBサーバがapacheとnginxから選べるようになっています。nginxを利用するため、apacheの方を削除し、nginxのポートを編集します。
# 削除
zabbix-web-apache-mysql:
*************************
# 編集
zabbix-web-nginx-mysql:
image: zabbix/zabbix-web-nginx-mysql:ubuntu-4.4-latest
ports:
- "80:80"
- "443:443"
docker stack用のオプションが記述されているため削除します。全サービスのdeployディレクティブを削除してください。deployで検索すると楽です。
version: '3.5'
services:
zabbix-server:
~
deploy:
************************
ヘルスチェック用のオプションが自分の環境では機能しなかったため削除します。コンテナ起動から、アプリケーションの起動が終わるまでの待機時間を指定していますが、検証のため一時的にコメントアウトしました。
version: '3.5'
services:
zabbix-web-nginx-mysql:
healthcheck:
#start_period: 30s
MySQLの認証設定を編集します。composeファイルはsecretsディレクティブで以下のファイルを読み込み、機密な設定を取得します。
.MYSQL_PASSWORD
.MYSQL_ROOT_PASSWORD
.MYSQL_USER
環境変数ファイルを編集します。カスタマイズは各環境にもよりますが以下を編集しました。
.env_web
## ブラウザのタブに表示されるタイトルになります。
ZBX_SERVER_NAME=Zabbix compose
## タイムゾーン
PHP_TZ=Asia/Tokyo
3.デプロイと起動
設定は終わったので起動してみます。必要なイメージは自動でダウンロードされます。
$ sudo docker-compose up -d
暫く待つとzabbix-web-nginx-mysql_1コンテナのステータスが変わり起動完了したことがわかります。
$ sudo docker ps -a
STATUS
Up 43 seconds (healthy)
4.ログインと自身の監視
WEBダッシュボードへアクセスします。ユーザはAdmin、パスワードはzabbixになります。
http://<IP or Domain>
User:Admin
Password:zabbix
Adminユーザのパスワード変更を以下のページから行います。
Administration >Users >Admin
Zabbixサーバ自身の監視先がlocalhostになっているので変更します。更新にはしばらくかかるため、Discovery rulesのCheckを行うと比較的早く更新されます。
Configuration >Hosts >Zabbix Server
Agent interfaces >DNS name => zabbix-agent
Agent interfaces >Connect to => DNS
Comments
Let's comment your feelings that are more than good