本記事は、FOLIOアドベントカレンダーの13日目の記事になります。
ことの始め
なるほど。
つまりALBにぶら下がってるコンテナが、現在のコンテナがなくなって、新しいコンテナだけになったときに通知があれば嬉しいってことですね。
棄却した案: cloudwatchのevent * lambda
ECSからcloudwatch eventにtask変動のトリガー送信して、lambdaでslackに通知させることを考えました。
が、タスクが作成、削除されただけの通知で、どのタイミングで切り替わったかわかりづらかったです。
ecs-update-notify
ロジックは
- 起動後、
/tmp/ecs-update-notify.pid
を生成(終了時に削除される) - intervalで設定してる秒数、ECSサービスで保持してるタスクを取得
- 現在のタスクバージョンと、新しいバージョンのデータを保持
- 新しいバージョンだけになったタイミングでSlackにPOST
- 新しいバージョンは現在のバージョンとして保持される
古い(現在の)タスクがECSサービスから存在しなくなれば、ALBからも確実に外されてるので、これで解決します。
このようなconfig.tomlを設定して
$ vim config.toml interval = 30 [[monitor]] name = "FooCluster" aws_profile = "foo" aws_region = "ap-northeast-1" incoming_webhook = "https://hooks.slack.com/services/....." [[monitor]] name = "BarCluster" aws_profile = "bar" aws_region = "ap-northeast-1" incoming_webhook = "https://hooks.slack.com/services/....."
クラスタ名やawsのprofile, regionを入れます。
incoming_webhookはslack apiなどで生成してください。
./ecs-update-notify -c config.toml
とすると、下記のような通知がされます。
導入した後
解決した!
ps: datadogでこういうの通知してくれると最高なんですけどね