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)
にアクセスするとWeb管理画面にログインできます。
ダッシュボードでのステータスも正常です
エージェントで指定する Server
はNLBのFQDNになります。
まとめ
Zabbixは単純にスケールアウトできるものでもないですので、あまりFargateに適したものではないですが、サーバのメンテは誰がやる?って話が進まないようなときは、とりあえずFargate化してしまえばいいんではないでしょうか?