概要

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_PRIORITY
アラートモニターの優先度。
: P1P2
$ALERT_QUERY
Webhook をトリガーしたモニターのクエリ。
$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 : Logs Monitor アラートからの Webhook ペイロードでこの変数を入力するには、Webhook インテグレーションタイルで $ALERT_STATUS を手動で追加する必要があります。
$ALERT_TITLE
アラートのタイトル。
: [Triggered on {host:ip-012345}] Host is Down
$ALERT_TRANSITION
アラート通知のタイプ。
: RecoveredTriggered/Re-TriggeredNo Data/Re-No DataWarn/Re-WarnRenotify
$ALERT_TYPE
アラートのタイプ。
: errorwarningsuccessinfo
$DATE
イベントが発生した日付 (epoch)
: 1406662672000
$EMAIL
Webhook をトリガーしたイベントをポストしたユーザーの電子メール。
$EVENT_MSG
イベントのテキスト。
: @webhook-url Sending to the webhook
$EVENT_TITLE
イベントのタイトル。
: [Triggered] [Memory Alert]
$EVENT_TYPE
イベントのタイプ。
イベントタイプの一覧は、をご覧ください。
$HOSTNAME
イベントに関連付けられたサーバーのホスト名 (ある場合)。
$ID
イベントの ID。
: 1234567
$INCIDENT_ATTACHMENTS
インシデントの添付 (事後分析やドキュメントなど) のある JSON オブジェクトのリスト。
: [{"attachment_type": "postmortem", "attachment": {"documentUrl": "https://app.datadoghq.com/notebook/123","title": "Postmortem IR-1"}}]
$INCIDENT_COMMANDER
JSON オブジェクトとインシデントコマンダーのハンドル、uuid、名前、メール、およびアイコン
$INCIDENT_CUSTOMER_IMPACT
インシデントの顧客への影響のステータス、期間、スコープを含む JSON オブジェクト。
: {"customer_impacted": true, "customer_impact_duration": 300 ,"customer_impact_scope": "scope here"}
$INCIDENT_FIELDS
各インシデントのフィールドを値にマッピングする JSON オブジェクト。
: {"state": "active", "datacenter": ["eu1", "us1"]}
$INCIDENT_INTEGRATIONS
Slack や Jira など、インシデントのインテグレーションを持つ JSON オブジェクトのリスト。
: [{"uuid": "11a15def-eb08-52c8-84cd-714e6651829b", "integration_type": 1, "status": 2, "metadata": {"channels": [{"channel_name": "#incident-1", "channel_id": "<channel_id>", "team_id": "<team_id>", "redirect_url": "<redirect_url>"}]}}]
$INCIDENT_MSG
インシデント通知のメッセージ。
$INCIDENT_PUBLIC_ID
関連するインシデントのパブリック ID。
: 123
$INCIDENT_SEVERITY
インシデントの重大度。
$INCIDENT_STATUS
インシデントのステータス。
$INCIDENT_TITLE
インシデントのタイトル。
$INCIDENT_TODOS
インシデントの修復タスクを持つ JSON オブジェクトのリスト。
: [{"uuid": "01c03111-172a-50c7-8df3-d61e64b0e74b", "content": "task description", "due_date": "2022-12-02T05:00:00+00:00", "completed": "2022-12-01T20:15:00.112207+00:00", "assignees": []}]
$INCIDENT_URL
インシデントの URL。
: https://app.datadoghq.com/incidents/1
$INCIDENT_UUID
関連するインシデントの UUID。
: 01c03111-172a-50c7-8df3-d61e64b0e74b
$LAST_UPDATED
イベントが最後に更新された日付。
$LINK
イベントの URL。
: https://app.datadoghq.com/event/jump_to?event_id=123456
$LOGS_SAMPLE
ログモニターアラートからのログサンプルを含む JSON オブジェクト。サンプルメッセージの最大長は 500 文字です。
:
{
  "columns": [
    "Time",
    "Host"
  ],
  "label": "Sample Logs",
  "rows": [
    {
      "items": [
        "15:21:18 UTC",
        "web"
      ],
      "message": "[14/Feb/2023:15:21:18 +0000] \"GET / HTTP/1.1\" 200"
    },
    {
      "items": [
        "15:21:13 UTC",
        "web00"
      ],
      "message": "[14/Feb/2023:15:21:13 +0000] \"GET / HTTP/1.1\" 200"
    }
  ]
}
$METRIC_NAMESPACE
メトリクスがアラートの場合は、メトリクスのネームスペース
$ORG_ID
オーガニゼーションの ID。
: 11023
$ORG_NAME
オーガニゼーションの名前。
: Datadog
$PRIORITY
イベントの優先度。
: normal または low
$SECURITY_RULE_NAME
セキュリティルールの名前。
$SECURITY_SIGNAL_ID
シグナルの一意の識別子。
: AAAAA-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
$SECURITY_SIGNAL_SEVERITY
セキュリティシグナルの重大度。
: medium
$SECURITY_SIGNAL_TITLE
セキュリティシグナルのタイトル。
$SECURITY_SIGNAL_MSG
セキュリティシグナルのメッセージ。
$SECURITY_SIGNAL_ATTRIBUTES
セキュリティシグナルの属性。
: {"network":{"client":{"ip":"1.2.3.4"}}, "service": ["agent"]}
$SECURITY_RULE_ID
セキュリティルール ID。
: aaa-aaa-aaa
$SECURITY_RULE_MATCHED_QUERIES
セキュリティルールに関連するクエリ。
: ["@evt.name:authentication"]
$SECURITY_RULE_GROUP_BY_FIELDS
キーと値のペアによるセキュリティグループ。
: {"@usr.name":"john.doe@your_domain.com"}
$SECURITY_RULE_TYPE
セキュリティルールの種類。
: log_detection
$SNAPSHOT
イベントにスナップショットが含まれている場合の画像の URL。
: https://p.datadoghq.com/path-to-snapshot
$SYNTHETICS_TEST_NAME
Synthetics テストの名前。
$SYNTHETICS_FIRST_FAILING_STEP_NAME
Synthetics テストの最初の失敗したステップの名前。
$SYNTHETICS_SUMMARY
Summary of Synthetic test details.
Example:
{
  "result_id": "1871796423670117676",
  "test_type": "browser",
  "test_name": "Test name",
  "date": "Nov 05, 2021, 09:49AM UTC",
  "test_url": "https://app.datadoghq.com/synthetics/edit/apc-ki3-jwx",
  "result_url": "https://app.datadoghq.com/synthetics/details/anc-ki2-jwx?resultId=1871796423670117676",
  "location": "Frankfurt (AWS)",
  "browser": "Chrome",
  "device": "Laptop Large",
  "failing_steps": [
    {
      "error_message": "Error: Element's content should contain given value.",
      "name": "Test span #title content",
      "is_critical": true,
      "number": "3.1"
    }
  ]
}
$TAGS
イベントタグのカンマ区切りリスト。
: monitor, name:myService, role:computing-node
$TAGS[key]
key タグの値。もし key タグがない場合、あるいは key タグに値がない場合、この式は空の文字列に評価されます。 : もし $TAGSrole:computing-node を含むなら、$TAGS[role]computing-node と評価されます。
$TEXT_ONLY_MSG
マークダウン書式設定なしのイベントのテキスト。
$USER
Webhook をトリガーしたイベントをポストしたユーザー。
: rudy
$USERNAME
Webhook をトリガーしたイベントをポストしたユーザーのユーザー名。

カスタム変数

組み込み変数のリストに加えて、インテグレーションタイルで独自のカスタム変数を作成することができます。これらの変数は、Webhook URL、ペイロード、カスタムヘッダーで使用することができます。一般的な使用例は、ユーザー名やパスワードのような資格情報の保存です。

また、セキュリティを高めるために、カスタム変数の値を非表示にすることもできます。値を非表示にするには、カスタム変数を編集または追加する際に、hide from view チェックボックスを選択します。

Hide from view チェックボックスでカスタム変数の値をマスキング

認証

HTTP Basic 認証

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

OAuth 2.0 認証

OAuth 2.0 認証を必要とするサービスに Webhook をポストしたい場合は、認証方式を設定します。認証方式には、サービスから OAuth トークンを取得するために必要なすべての情報が含まれます。認証方式が設定され、Webhook に関連付けられると、Datadog が OAuth トークンの取得、必要に応じたトークンの更新、Bearer トークンとしての Webhook リクエストへの追加を処理します。

認証方式を追加するには、Auth Methods タブ をクリックし、New Auth Method ボタンをクリックします。認証方式にに分かりやすい名前を付け、以下の情報を入力します。

  • アクセストークン URL
  • Client ID
  • Client Secret
  • スコープ (オプション)
  • オーディエンス (オプション)

Save をクリックして認証方式を作成します。この認証方式を Webhook に適用するには、Configuration タブに戻り、既存の Webhook 構成を選択して Edit ボタンをクリックします。作成した認証方式が認証方式選択リストに表示されます。

複数の 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_TOKEN>@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” チェックボックスはオンにしないでください。

Webhook ペイロードのイベントタイプ一覧

イベントタイプ関連するモニター
ci_pipelines_alertCI パイプライン
ci_tests_alertCI テスト
composite_monitorコンポジット
error_tracking_alertError Tracking
event_alertV1 エンドポイントを使用したイベント
event_v2_alertV2 エンドポイントを持つイベント
log_alertLogs
monitor_slo_alertモニターベース SLO
metric_slo_alertメトリクスベース SLO
outlier_monitor外れ値
process_alertプロセス
query_alert_monitorメトリクス、異常値、予測
rum_alertRUM
service_checkホスト、サービスチェック
synthetics_alertSynthetics
trace_analytics_alertトレース分析

参考資料

お役に立つドキュメント、リンクや記事: