Datadog notification rule GA
Datadog で notification rule がリリースされました。
Route your monitor alerts with Datadog monitor notification rules | Datadog

Notification rule
公式ドキュメントはこちらです。
GA(generally available)したとありますが、確認時点ではまだ preview の文字が残っていました。
- “Monitors” → “Settings” → “Notification Rules”

monitor の設定からも作成画面に遷移できます。

設定項目

- Tag (key, value)
- 設定した全てのタグに一致する場合(AND条件)にルールが実行されます。
- 存在する(monitorに付与済みの)モニタータグが対象となるようです。
- タグは
key:valueの形式である必要があります。 値のみのタグvalueは使用できません。 - 公式ブログにも記載がありますが、基本的には Team タグでの利用を想定した機能となるようです。
- タグは
- Recipients
- 受信設定です。 Slack や PagerDuty など、事前に設定してある通知先を指定します。
適切なタグを指定し、有効な設定となると、条件に合致する monitor の一覧が出力され、 “Create Rule” が行えるようになります。

一覧
notification rule 一覧では以下の項目が確認できます。

- Name: 通知ルール名
- Scope: このルールが適用されるタイミングを定義するタグの組み合わせを表示します。
- Team: この通知ルールが関連付けられているチームを一覧表示します (スコープにチーム タグが追加されている場合にのみ使用可能)
- Coverage: このルールのスコープに一致するモニターの数を表示します。これを使用して、ルールのカバレッジを確認し、調整が必要なルールを特定します。
- Notifies: このルールが一致したときにアラートを受信する通知チャネル (Slack や電子メールなど) を一覧表示します。
良い点
これまでは monitor 毎に message に通知先を記述していました。
例: @slack-incident-response @ops-team@company.com
notification rule により、monitor に付与されている tag によるルーティングが一箇所で管理できるようになる点はメリットになると思います。
また、notification rule と monitor に同じ通知先が設定してある場合でも重複して通知されることはありません。
• Multiple rules can match a single monitor notification, and all recipients are added to the monitor alert without duplication.
残念な点
現時点では条件分岐に対応していません。
Conditional variables で通知先の振り分けルールを記述していく形は複雑になりがちなのですが、これらを notification rule で置き換えることはできません。
例:
{{#is_alert}}
@slack-incident-response
{{/is_alert}}
@ops-team@company.com
通知時の違い
notification rule に合致(赤枠)し、 monitor 自体に別の通知先を定義(橙枠)している状態で通知テストを実施してみます。

Notified に、monitor に定義した通知先は出力されますが、 notification rule での通知は出力されません。

まとめ
特定のmonitor群は特定のteam・通知先へ通知するという単純な通知ルールであれば、設定を一元化でき、monitor の設定が簡略化できるようになります。
発砲時のタグや monitor の状態などでの細かな条件による振り分けには対応していませんが、今後に期待です。