Webhooks

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_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
$ALERT_TITLE
アラートのタイトル。
$ALERT_TRANSITION
アラート通知のタイプ。
: RecoveredTriggered/Re-TriggeredNo Data/Re-No DataWarn/Re-WarnRenotify
$ALERT_TYPE
アラートのタイプ。
$DATE
イベントが発生した日付 (epoch)
: 1406662672000
$EMAIL
Webhook をトリガーしたイベントをポストしたユーザーの電子メール。
$EVENT_MSG
イベントのテキスト。
: @webhook-url Sending to the webhook
$EVENT_TITLE
イベントのタイトル。
: [Triggered] [Memory Alert]
$EVENT_TYPE
イベントのタイプ。
: metric_alert_monitorevent_alert、または service_check.
$HOSTNAME
イベントに関連付けられたサーバーのホスト名 (ある場合)。
$ID
イベントの ID。
: 1234567
$INCIDENT_ATTACHMENTS
インシデントの添付 (事後分析やドキュメントなど) のある JSON オブジェクトのリスト。
: [{"attachment_type": "postmortem", "attachment": {"url": "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_PUBLIC_ID
関連するインシデントのパブリック ID。
: 123
$INCIDENT_TITLE
インシデントのタイトル。
$INCIDENT_URL
インシデントの URL。
: https://app.datadoghq.com/incidents/1
$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
$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"}}}
$SECURITY_RULE_ID
セキュリティルール ID。
: aaa-aaa-aaa
$SECURITY_RULE_QUERY
セキュリティルールに関連付けられた 1 つまたは複数のクエリ。
: ["@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 テストの最初の失敗したステップの名前。
$TAGS
イベントタグのカンマ区切りリスト。
: monitor, name:myService, role:computing-node
$TEXT_ONLY_MSG
マークダウン書式設定なしのイベントのテキスト。
$USER
Webhook をトリガーしたイベントをポストしたユーザー。
: rudy
$USERNAME
Webhook をトリガーしたイベントをポストしたユーザーのユーザー名。

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