LoginSignup
1
3

More than 3 years have passed since last update.

ECS Fargate でZabbixを構築

Last updated at Posted at 2020-05-22

背景

コンテナ間の接続検証としていずれEC2からECSへ予定のzabbixを対象にした。
ECSはdocker-compose.ymlのlinksが使えない。
ECSのデフォルト値や細かい設定は省略する。

EC2

ロードバランサーを作成

ecs-zabbix_1.PNG

  • ロードバランサー名: infra-test-web
    • AWS Certificate Managerに証明書作成済みならSSL 証明書に追加する。
    • DNS名はRoute53でCNAMEして短くする
    • infra-test-web-2099560009.ap-northeast-1.elb.amazonaws.com → ecs-zabbix.domain.com

ecs-zabbix_2.PNG

  • ターゲットグループ: 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

サービスの作成

ecs-zabbix_4.PNG

  • サービス名: infra-test-zabbix-web
  • ネットワーク構成: 事前に作成したロードバランサーのinfra-test-webを選択

クラスター完成

ecs-zabbix_3.PNG

確認

  • https://ecs-zabbix.domain.com/

  • 初期設定ではZabbix ServerのAgentは自身になっているのでzabbix_agentコンテナ名に変更。

  • Zabbixホストのエージェントインターフェース

    • DNS名: zabbix_agent
    • 接続方法: DNS

ecs-zabbix_5.PNG

参考にしたスクリプト

  • 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

参考

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3