背景
コンテナ間の接続検証としていずれEC2からECSへ予定のzabbixを対象にした。
ECSはdocker-compose.ymlのlinksが使えない。
ECSのデフォルト値や細かい設定は省略する。
EC2
ロードバランサーを作成
- ロードバランサー名: infra-test-web
- AWS Certificate Managerに証明書作成済みならSSL 証明書に追加する。
- DNS名はRoute53でCNAMEして短くする
- infra-test-web-2099560009.ap-northeast-1.elb.amazonaws.com → ecs-zabbix.domain.com
- ターゲットグループ: infra-test-web-tg
ECS
1. タスク定義: zabbix-server&agent
- タスク定義名: infra-test-zabbix-server
- 互換性が必要: FARGATE
1-1. コンテナー: zabbix-server
- コンテナ名: infra-test-zabbix-server
- イメージ: zabbix/zabbix-server-mysql:centos-4.4.1
- ポートマッピング: 10051 tcp
- 環境変数
- DB_SERVER_HOST = mysql.domain.com
- MYSQL_DATABASE = zabbix
- MYSQL_USER = zabbix
- MYSQL_PASSWORD = zabbix_pwd
1-2 コンテナ: zabbix-agent
- コンテナ名: infra-test-zabbix-agent
- イメージ: zabbix/zabbix-agent:centos-4.4.1
- ポートマッピング: 10050 tcp
- 環境変数
- ZBX_SERVER_HOST = infra-test-zabbix-server.local
サービスの作成: zabbix-server
- サービス名: infra-test-zabbix-server
- サービスの検出のエンドポイント infra-test-zabbix-server.local <- これが大事!ウェブコンテナから指定するエンドポイントになる
2. タスク定義: zabbix-web
-
タスク定義名: infra-test-zabbix-web
-
互換性が必要: FARGATE
-
コンテナー
-
コンテナ名: infra-test-zabbix-web
-
イメージ: zabbix/zabbix-web-apache-mysql:centos-4.4.1
-
ポートマッピング: 80 tcp
-
環境変数
-
DB_SERVER_HOST = mysql.domain.com <- RDSが使えて便利
-
MYSQL_DATABASE = zabbix
-
MYSQL_USER = zabbix
-
MYSQL_PASSWORD = zabbix_pwd
-
TZ = Asia/Tokyo
-
ZBX_SERVER_HOST = infra-test-zabbix-server.local
サービスの作成
- サービス名: infra-test-zabbix-web
- ネットワーク構成: 事前に作成したロードバランサーのinfra-test-webを選択
確認
-
初期設定ではZabbix ServerのAgentは自身になっているのでzabbix_agentコンテナ名に変更。
-
Zabbixホストのエージェントインターフェース
-
DNS名: zabbix_agent
-
接続方法: DNS
参考にしたスクリプト
- 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
- .env
OS=centos
VERSION=4.4.1
#VERSION=5.0.0
DB_NAME=zabbix
DB_USER=zabbix
DB_USER_PASSWORD=zabbix
DB_ROOT_PASSWORD=zabbix
HTTP_PORT=38080
TIME_ZONE=Asia/Tokyo
LOG_LEVEL=3
#参考