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
コンフィグファイル
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
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
コンフィグファイル
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化してしまえばいいんではないでしょうか?