AWS Fargate의 서버리스 Zabbix

cloudpack 오사카의 사사키입니다.

개요



Zabbix를 사용하면 서버의 번거로움은 어떻게합니까? 라는 이야기에 절대적이기 때문에 AWS Fargate에서 움직여서 서버리스화해 버리자는 것입니다.
(실제는 서버리스라고 말할 수 있을지 어떨지 모릅니다만···)
실용에 견딜 수 있는지는 고려하지 않습니다.

구성 이미지





IP가 바뀌는 것도 어떨까-라는 것으로, NLB, ALB를 사용해 호스트명으로 액세스 할 수 있도록 합니다.
Zabbix 서버는 NLB로, ZabbixWeb은 ALB에서 받기 때문에 서비스를 나누고 있습니다.

절차



VPC 주변, 클러스터, RDS, NLB, ALB 절차는 생략합니다.
CloudWatch Logs 로그 그룹도 먼저 만들어야 합니다.

파일 구성


. ─┬─ server ─┬─ docker-compose.yml
   │          └─ ecs-params.yml
   │
   └─ web ────┬─ docker-compose.yml
              └─ ecs-params.yml

zabbix-server



구성 파일



server/docker-compose.yml
version: '2'
services:
  zabbix-server:
    image: zabbix/zabbix-server-mysql
    ports:
      - "10051:10051"
    environment:
      DB_SERVER_HOST: <RDSのエンドポイント>
      MYSQL_DATABASE: <RDSに設定したDB名>
      MYSQL_USER: <RDSに設定したユーザー名>
      MYSQL_PASSWORD: <RDSに設定したパスワード>
    logging:
      driver: awslogs
      options:
        awslogs-group: <ロググループ名>
        awslogs-region: us-east-1
        awslogs-stream-prefix: zabbix

server/ecs-params.yml
version: 1
task_definition:
  ecs_network_mode: awsvpc
  task_execution_role: ecsTaskExecutionRole
  task_size:
    cpu_limit: 256
    mem_limit: 0.5GB
  services:
    zabbix-server:
      essential: true

run_params:
  network_configuration:
    awsvpc_configuration:
      subnets:
        - <サブネットID>
        - <サブネットID>
      security_groups:
        - <セキュリティグループ>
      assign_public_ip: ENABLED

시작


$ cd server
$ ecs-cli compose service up --launch-type FARGATE \
 --target-group-arn <NLBのターゲットグループのARN> \
 --container-name zabbix-server \
 --container-port 10051

zabbix-web



구성 파일



web/docker-compose.yml
version: '2'
services:
  zabbix-web:
    image: zabbix/zabbix-web-apache-mysql
    ports:
      - "80:80"
    environment:
      DB_SERVER_HOST: <RDSのエンドポイント>
      MYSQL_DATABASE: <RDSに設定したDB名>
      MYSQL_USER: <RDSに設定したユーザー名>
      MYSQL_PASSWORD: <RDSに設定したパスワード>
      PHP_TZ: Asia/Tokyo
      ZBX_SERVER_HOST: <zabbix-serverのホスト名(NLBのFQDN)>
      ZBX_SERVER_NAME: <zabbixの管理画面に表示される名前>
      ZBX_SERVER_PORT: 10051
    logging:
      driver: awslogs
      options:
        awslogs-group: <ロググループ名>
        awslogs-region: us-east-1
        awslogs-stream-prefix: zabbix

시작


$ cd web
$ ecs-cli compose service up --launch-type FARGATE \
 --target-group-arn <ALBのターゲットグループのARN> \
 --container-name zabbix-web \
 --container-port 80

연결



브라우저에서 http://(ALBのFQDN)에 액세스하면 웹 관리 화면에 로그인할 수 있습니다.



대시보드의 상태도 정상입니다.



에이전트가 지정하는 Server는 NLB의 FQDN입니다.

요약



Zabbix는 단순히 스케일 아웃 할 수있는 것도 아니기 때문에 너무 Fargate에 적합한 것은 아니지만 서버의 유지 보수는 누가 할 것인가? 라고 이야기가 진행되지 않을 때는, 우선 Fargate화해 버리면 좋지 않을까요?

좋은 웹페이지 즐겨찾기