AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。

Webhook テンプレートの構成

Ops Manager は、FreeMarker テンプレート構文を使用した Webhook テンプレートをサポートしています。Webhook エンドポイントとなる接続されたデバイスに送信されるHTTP headersとリクエスト本文内容の両方をカスタマイズできます。どちらのテンプレートも有効なJSON出力を生成する必要があります。

ヘッダーとボディ テンプレートの両方でさまざまな変数を使用できます。詳細については、アラート モデルのドキュメントを確認し、post test message ボタンをクリックするか(ランダム データ)、アラートを保存して Webhook ペイロードを調べます(変数名がJSONキーと一致する)。

注意

すべての変数がすべての Webhook 呼び出しに含まれるわけではありません。使用可能なフィールドは、アラートの種類とステータスによって異なります。レンダリング エラーを回避するために、テンプレートが null 値を取り扱っていることを確認してください。

Webhook テンプレートでは、次の変数を使用できます。

変数
説明

${acknowledgedUntil}

アラートが確認されたまでの ISO 8601の日付と時刻形式(UTC)のタイムスタンプ。

${acknowledgementComment}

アラートを確認したユーザーが残すコメント。

${acknowledgingUsername}

アラートを確認したユーザーのユーザー名。

${alertConfigId}

このアラートをトリガーしたアラート構成の一意の識別子。

${clusterId}

このアラートが適用されるクラスターの一意の識別子。

${clusterName}

このアラートが適用されるクラスターの名前。

${created}

アラートが開かれたときの ISO 8601の日付と時刻形式(UTC)のタイムスタンプ。

${currentValue}

(オブジェクト)アラートをトリガーしたメトリクスの現在の値。

${currentValue.number}

メトリクスの値。

${currentValue.units}

値の単位。 値は、メトリクスの型によって異なります。

${event}

このアラート通知のアクションまたは状態の変更(デフォルトの X-Mms-Event ヘッダー - alert.opened、alert.closed、alert.update、alert.acknowledge、alert.cancel、alert.inform)。

${eventTypeName}

アラートをトリガーしたイベントの名前。

${groupId}

このアラートが開かれたグループ(プロジェクト)の一意の識別子。

${hostId}

メトリクスが含まれるホストの一意の識別子。

${hostnameAndPort}

アラートが適用される各ホストのホスト名とポート。これは、ホスト名、FQDN、IPv4 アドレス、または IPv6 アドレスにすることができます。

${humanReadable}

アラートの人間が判読可能な説明。

${id}

アラートの一意の識別子です。

${lastNotified}

このアラートの最後の通知が送信されたときの ISO 8601の日付と時刻形式(UTC)のタイムスタンプ。

${links}

(オブジェクトの配列) サブリソースまたは関連リソースへの 1 つ以上のリンク。

${links[i].rel}

リンクされたリソースの関係タイプを記述します(例: 現在のリソースの self)。

${links[i].href}

リソースにリンクします。

${metricName}

値がしきい値を超えた測定値の名前。

${oauthToken}

Webhookリクエストの OAuth 2.0 Bearer トークン。カスタム ヘッダー テンプレート内と、OAuth 2.0クライアント認証情報を構成した場合にのみ使用できます。

${orgId}

このアラートが開かれた組織の一意の識別子。

${orgName}

このアラートが開かれた組織の名前。

${projectName}

このアラートが開かれたプロジェクト(グループ)の名前。

${replicaSetName}

レプリカセットの名前。

${requestId}

リクエストの一意の識別子。(デフォルトの X-Mms-Request-Id ヘッダー)。

${resolved}

アラートが閉じられたときの ISO 8601の日付と時刻形式の UTC のタイムスタンプ。

${signature}

リクエスト署名。 ヘッダー テンプレートでのみ利用可能です。(デフォルトの X-Mms-Signature ヘッダー)。

${status}

アラートの現在の状態(TRACKING|OPEN|CLOSED|CANCELLED|INFORMATIONAL)

${sourceTypeName}

eventTypeName : BACKUP の場合にバックアップされるホストするタイプ

${tags}

このアラートに設定された識別ラベル。

${updated}

アラートが最後に更新されたときの ISO 8601の日付と時刻形式の UTC のタイムスタンプ。

注意

カスタム ヘッダー テンプレートは、デフォルトのWebhook ヘッダーを置き換えます。 OAuth2.0 クライアント認証情報を構成し、カスタム ヘッダー テンプレートを使用する場合は、テンプレートに"Authorization": "Bearer ${oauthToken}" を追加して Bearer トークンを送信します。詳細については、「 Webhook リクエストの認証 」を参照してください。

さらに、正規表現を使用してテンプレート内のテキストからデータを抽出できるカスタムヘルパーであるreヘルパーが利用できます。

  • re.group(input, regex, group)

    最初の一致から指定されたキャプチャ グループを返します。一致しない場合は、空の string が返されます。

    例: ${re.group("abc-123", "([a-z]+)-(\\d+)", 2)} → 123

  • re.findAllGroup(input, regex, group)

    すべてのグループ一致のリストを返します。

    例:

    <#list re.findAllGroup("error1:12;error2:98;error3:33", "error\\d+:(\\d+)", 1) as val>${val} </#list>

    出力: 12 98 33

注意

グループインデックスは 1 ベースです。一致するものが見つからない場合は、空の string または空のリストが返されます。

{ "X-Static": "static-value", "X-Secret": "${signature}", "X-Request-Id": "${requestId}", "X-Event": "${event}", "X-Org-Name": "${orgName!''}", "X-Test-Regex-Helper": "${re.group(\"abc-123\", \"([a-z]+)-(\\d+)\", 2)}"}
{ "staticValue": "This value is static", "testRegexHelper": [ <#list re.findAllGroup("error1:12;error2:98;error3:33", "error\\d+:(\\d+)", 1) as val> "${val}"<#if val_has_next>,</#if></#list> ], "replicaSetName": "${replicaSetName!''}", "metricName": "${metricName!''}", "orgName": "${orgName!''}", "created": "${created!''}", "groupId": "${groupId!''}", "hostId": "${hostId!''}", "hostnameAndPort": "${hostnameAndPort!''}", "humanReadable": "${humanReadable?js_string}", "orgId": "${orgId!''}", "alertConfigId": "${alertConfigId!''}", "eventTypeName": "${eventTypeName!''}", "links": [ <#list links![] as link> { "rel": "${link.rel!''}", "href": "${link.href!''}" }<#if link_has_next>,</#if> </#list> ], "id": "${id!''}", "projectName": "${projectName!''}", "updated": "${updated!''}", "currentValue": { "number": ${(currentValue.number)!0}, "units": "${(currentValue.units)!''}" }, "status": "${status!''}"}

Webhook テンプレートを構成したら、アラート構成インターフェースの [Test Alert] ボタンを使用してテストできます。これにより、テンプレートが正しくレンダーされることを検証するためにサンプルデータを含むテスト通知が送信されます。