Docs » アラートを管理する » エスカレーションポリシーでのWebhookの使用

エスカレーションポリシーでのWebhookの使用 🔗

Webhookは、Splunk On-Callから独自のアプリケーションへのコールバックを指定する方法であり、チームのエスカレーションポリシーに追加することで、インシデントの詳細を受信し、希望する方法で処理することができます。エスカレーションポリシーの詳細については、エスカレーションポリシーをセットアップする を参照してください。

これらの使い方の例をいくつか挙げます:

  • サーバープロセスに関連するインシデントが発生すると、自動的にバウンスします。

  • Splunk On-Callインシデントを独自のサービスダッシュボードに統合します。

  • 最新の停止状況ページを維持します。

Webhookのコンテンツタイプ:application/x-www-form-urlencoded

はじめに 🔗

開始するには、Splunk On-Callタイムラインから Integrations に移動し、Webhooksを選択します。

インテグレーションページで、Webhookを選択します。 インテグレーションページで、Webhookを選択します。

Webhookの名前とURLの入力を求められます。 送信すると、認証コードが生成されます。

Webhookリクエストの認証 🔗

Webhookを作成すると、安全でランダムな認証トークンが生成されます。POSTリクエストはこの鍵で署名されるため、Splunk On-Callからのリクエストであることを確認できます。

Splunk On-CallからアプリケーションにPOSTリクエストが届いていることを認証するには、以下の手順を実行します:

  1. WebhookのURLを、Splunk On-Callで表示されるのと同じ文字列で作成します。これには、末尾のスラッシュも含まれます。

  2. リクエストのPOST変数をキーでアルファベット順に並べ替えます。

  3. 各POST変数のキーと値を、区切り文字なしでURL文字列に追加します。

  4. Webhookの認証キーを使用して、結果の文字列のバイナリハッシュをMAC-SHA1で作成します。

  5. バイナリ署名をBase64エンコードします。

  6. リクエスト内のX-VictorOps-Signatureキーと出力を比較し、一致すれば、リクエストの発信元はSplunk On-Call (旧VictorOps)です。


SSL証明書チェーンの検証 🔗

Webhookが安全な接続を使用する場合(すなわち、URLが 」 https:// 「で始まる場合)、受信側のエンドポイントは、公認の認証局によって署名された有効なSSL証明書を使用する必要があります。

この推奨は、SSL Labs Best Practices に基づいて実施されました。

Webhookエスカレーションステップ 🔗

Webhookがチームのエスカレーションポリシーの一部である場合、インシデントがエスカレーションされると、サービスはHTTP POSTリクエストを受信します。リクエストには以下の情報が含まれます:

POST本文:

  • インシデント: Splunk On-Callでのインシデントの識別子。

  • 概要:インシデントの簡単な説明。

  • メッセージ:インシデントに関するメッセージ。

HTTPヘッダー

  • X-Victorops-Signature: Splunk On-Call (旧VictorOps)のWebhookの認証キーに基づく署名。

Webhookがあれば、それをエスカレーションポリシーに追加することができます。

Webshookをエスカレーションポリシーに追加します。

エスカレーションとカスタム発信Webhookの違い 🔗

カスタム発信Webhookの詳細については、Splunk On-CallのカスタムアウトバウンドWebhook を参照してください。

参照用サンプルScalaコード 🔗

import javax.crypto.Mac
import javax.crypto.spec.SecretKeySpec import javax.xml.bind.DatatypeConverter
def generateSignature(key: String, url:String, postData: Map[String, String]) = {
   val contents =postData.toList.sorted.foldLeft(url) { case (s, (key, value)) =>s”\ :math:`s`\ key$value” }
   val mac = Mac.getInstance(“HmacSHA1”)
   mac.init(new SecretKeySpec(key.getBytes, “HmacSHA1”))
   DatatypeConverter.printBase64Binary(mac.doFinal(contents.getBytes(“utf-8”)))
}

このページは 2024年08月01日 に最終更新されました。