GKE Upgrade Event を Datadog Monitor で Slack に通知する
はじめに
本投稿は、Datadog Advent Calendar 2023 の12/6の記事となります。
概要
Google Kubernetes Engine(GKE)を使っていると、クラスタのイベントをSlackに飛ばしたいことがあると思います。 以下のGoogle Cloud公式の例はCloud Functionsを利用していますが、Datadogを使っている場合はDatadog Monitorで通知させるのがおすすめです。
こちらがDatadogを利用する場合の概要図です。
前提
- GKEを使っていること
- Datadogを使っていること
- DatadogのSlack連携が終わっていること
手順
1) GKEのクラスタ通知を有効にします
2) Pub/Subを作成し、Push EndpointにDatadog Logsを指定します
- Endpoint
https://http-intake.logs.datadoghq.com/api/v2/logs?dd-api-key=YOUR-KEY&dd-protocol=gcp&ddtags=project_id:minato128-sandbox
- EventにはProject Numberしか入ってないので、
project_id
を指定しておきましょう
- EventにはProject Numberしか入ってないので、
3) Datadog Monitorで、type_url
のUpgradeEvent
でトリガーさせるようにLog Alertを作成します
- 通知先をSlackに指定する
- Conditional variables でRecover通知をしないようにしておく
- 検知したら1度だけ通知させるように
// Terraformのmessage部分 {{#is_warning}} ${slack_sample_warning_ch} {{/is_warning}}
設定後の通知はこんな感じです。
Pros/Cons
Cloud Functionsの場合との相対的な比較です。
Pros
- Cloud Functionsの作成・維持コストがない
- Datadog Monitorの作成・維持のほうが簡単(IaCされてるかどうかに関わらず)
- 維持コストとは
- インフラ費用 + 管理コスト
- IaCしない場合、ノーコードで設定できる
- クラスタのイベントがログとして残り、履歴を遡って参照できる
SecurityBulletinEvent
UpgradeAvailableEvent
UpgradeEvent
Cons
- 多少のディレイがある
- Datadog Monitorは最小1min間隔での検知なので、Cloud Functions方式より多少通知が遅いかもしれない
- 計測したわけではないです
- Datadog Monitorは最小1min間隔での検知なので、Cloud Functions方式より多少通知が遅いかもしれない
- 通知メッセージの表現力が低い
- Event payloadを使ってカスタマイズしたい場合は不向き
おわりに
以上、DatadogでGKE Upgrade Eventを通知する場合の手順やPros/Consの説明でした。 持続可能な運用をしていくために、省力化・省コスト化を意識していきたいですね。