minato128 blog

minato128の公開メモ帳です。

GKE Upgrade Event を Datadog Monitor で Slack に通知する

はじめに

本投稿は、Datadog Advent Calendar 2023 の12/6の記事となります。

概要

Google Kubernetes Engine(GKE)を使っていると、クラスタのイベントをSlackに飛ばしたいことがあると思います。 以下のGoogle Cloud公式の例はCloud Functionsを利用していますが、Datadogを使っている場合はDatadog Monitorで通知させるのがおすすめです。

cloud.google.com

こちらがDatadogを利用する場合の概要図です。

Overview

前提

  • GKEを使っていること
  • Datadogを使っていること
    • DatadogのSlack連携が終わっていること

手順

1) GKEのクラスタ通知を有効にします

2) Pub/Subを作成し、Push EndpointにDatadog Logsを指定します

  • Endpoint

3) Datadog Monitorで、type_urlUpgradeEventでトリガーさせるようにLog Alertを作成します

  • 通知先をSlackに指定する
  • Conditional variables でRecover通知をしないようにしておく
    • 検知したら1度だけ通知させるように
// Terraformのmessage部分
{{#is_warning}}
${slack_sample_warning_ch}
{{/is_warning}}

UpgradeEvent Format
クラスタ通知  |  Google Kubernetes Engine(GKE)  |  Google Cloud

設定後の通知はこんな感じです。

Slack通知の例

Pros/Cons

Cloud Functionsの場合との相対的な比較です。

Pros

  • Cloud Functionsの作成・維持コストがない
    • Datadog Monitorの作成・維持のほうが簡単(IaCされてるかどうかに関わらず)
    • 維持コストとは
      • インフラ費用 + 管理コスト
  • IaCしない場合、ノーコードで設定できる
  • クラスタのイベントがログとして残り、履歴を遡って参照できる
    • SecurityBulletinEvent
    • UpgradeAvailableEvent
    • UpgradeEvent

Cons

  • 多少のディレイがある
    • Datadog Monitorは最小1min間隔での検知なので、Cloud Functions方式より多少通知が遅いかもしれない
      • 計測したわけではないです
  • 通知メッセージの表現力が低い
    • Event payloadを使ってカスタマイズしたい場合は不向き

おわりに

以上、DatadogでGKE Upgrade Eventを通知する場合の手順やPros/Consの説明でした。 持続可能な運用をしていくために、省力化・省コスト化を意識していきたいですね。