Webhooks
Dash が新機能を発表!インシデントマネジメント、Continuous Profiler など多数の機能が追加されました! Dash イベントで発表された新機能!

Webhooks

Crawler Crawler

概要

Webhook を使用して、以下のことができます。

  • ご使用のサービスに接続できます。
  • メトリクスアラートがトリガーされたときにサービスにアラートを送信できます。

セットアップ

Webhooks インテグレーションタイルに移動して、使用する Webhook の URL と名前を入力します。

使用方法

Webhook を使用するには、Webhook をトリガーするメトリクスアラートのテキストに @webhook-<WEBHOOK_NAME> を追加します。これにより、以下の内容を JSON 形式で含む POST リクエストが、設定した URL に向けてトリガーされます。各リクエストのタイムアウトは 15 秒です。Datadog は、内部エラー (不正な形式の通知メッセージなど) が発生した場合、または Webhook エンドポイントから 5XX 応答を受け取った場合にのみ、再試行を発行します。失敗した接続は 5 回再試行されます。

: カスタムヘッダーは JSON フォーマットである必要があります。

ペイロードフィールドに独自のペイロードを指定して、リクエストに独自のカスタムフィールドを追加することもできます。ペイロードを URL エンコードする場合は、Encode as form をオンにし、JSON 形式でペイロードを指定します。以下の変数を使用できます。

変数意味
$AGGREG_KEY所属が同じイベントを集約するための ID _(例: 9bd4ac313a4d1e8fae2482df7b77628)_。
$ALERT_CYCLE_KEYアラートがトリガーした時点から解決するまでイベントにリンクする ID
$ALERT_IDアラートの ID (例: 1234)
$ALERT_METRICメトリクスがアラートの場合は、メトリクスの名前 (例: system.load.1)
$ALERT_QUERYWebhook をトリガーしたモニターのクエリ
$ALERT_SCOPEアラートをトリガーしたタグのカンマ区切りリスト (例: availability-zone:us-east-1a, role:computing-node)
$ALERT_STATUSアラートステータスのサマリー (例: system.load.1 over host:my-host was > 0 at least once during the last 1m)
$ALERT_TITLEアラートのタイトル
$ALERT_TRANSITIONアラート通知のタイプ (値: Recovered, Triggered/Re-Triggered, No Data/Re-No Data, Warn/Re-Warn, Null, Renotify)
$ALERT_TYPEアラートのタイプ
$DATEイベントが発生した日付 (epoch)(例: 1406662672000)_
$EMAILWebhook をトリガーしたイベントをポストしたユーザーの電子メール
$EVENT_MSGイベントのテキスト (例: @webhook-url Sending to the webhook)
$EVENT_TITLEイベントのタイトル (例: [Triggered] [Memory Alert])
$EVENT_TYPEイベントのタイプ (値: metric_alert_monitor, event_alert, または service_check)
$HOSTNAMEイベントに関連付けられたサーバーのホスト名 (ある場合)
$IDイベントの ID (例: 1234567)
$LAST_UPDATEDイベントが最後に更新された日付
$LINKイベントの URL (例: https://app.datadoghq.com/event/jump_to?event_id=123456)
$LOGS_SAMPLEログモニターアラートからのログサンプル
$METRIC_NAMESPACEメトリクスがアラートの場合は、メトリクスのネームスペース
$ORG_IDオーガニゼーションの ID (例: 11023)
$ORG_NAMEオーガニゼーションの名前 (例: Datadog)
$PRIORITYイベントの優先度 (値:normal または low)
$SNAPSHOTイベントにスナップショットが含まれている場合は、そのイメージの URL (例: https://url.to.snpashot.com/)
$TAGSイベントタグのカンマ区切りリスト (例: monitor, name:myService, role:computing-node)
$TEXT_ONLY_MSGマークダウン書式設定なしのイベントのテキスト
$USERWebhook をトリガーしたイベントをポストしたユーザー (例: rudy)
$USERNAMEWebhook をトリガーしたイベントをポストしたユーザーのユーザー名

Authentication

認証を必要とするサービスに Webhook をポストする場合は、URL を https://my.service.example.com から https://<USERNAME>:<PASSWORD>@my.service.example.com に変更することで、Basic HTTP 認証を使用できます。

複数の Webhook

モニターアラートで、2 つ以上の Webhook エンドポイントが通知を受けた場合、サービスレベルごとに 1 つの Webhook キューが作成されます。たとえば、PagerDuty と Slack にアクセスする場合、Slack Webhook での再試行は PagerDuty の Webhook に影響しません。

ただし、PagerDuty のスコープ内では、いくつかイベントは常に他のイベントより前に送信されます。たとえば、”Acknowledge” ペイロードは必ず “Resolution” の前に送信されます。”Acknowledge” の ping が失敗すると、”Resolution” の ping は、再試行ロジックによってキューに入れられます。

Twilio を使用した SMS の送信

使用する URL: https://<ACCOUNT_ID>:<AUTH_TOKENT>@api.twilio.com/2010-04-01/Accounts/<ACCOUNT_ID>/Messages.json

ペイロードの例:

{
    "To": "+1347XXXXXXX",
    "From": "+1347XXXXXX",
    "Body": "$EVENT_TITLE \n Related Graph: $SNAPSHOT"
}

To は自分の電話番号、From は Twilio から割り当てられた番号に置き換えます。Encode as form チェックボックスは、オンにします。

Jira での課題の作成

使用する URL: https://<JIRA_USER_NAME>:<JIRA_PASSWORD>@<YOUR_DOMAIN>.atlassian.net/rest/api/2/issue

ペイロードの例:

{
    "fields": {
        "project": {
            "key": "YOUR-PROJECT-KEY"
        },
        "issuetype": {
            "name": "Task"
        },
        "description": "問題が発生しました。グラフ: $SNAPSHOT およびイベント: $LINK"を参照してください,
        "summary": "$EVENT_TITLE"
    }
}

“Encode as form” チェックボックスはオンにしないでください。