Overview
Ops Manager は、 freeMarker テンプレート構文を使用した Webhook テンプレートをサポートしています。 Webhook エンドポイントに送信されるHTTPヘッダーとリクエスト本文内容の両方をカスタマイズできます。どちらのテンプレートも有効なJSON出力を生成する必要があります。
テンプレート変数
ヘッダーとボディ テンプレートの両方でさまざまな変数を使用できます。詳細については、 アラート モデルのドキュメントを確認するか、 post test messageボタンをクリックするか(ランダム データ)、アラートを保存して Webhook ペイロードを調べます(変数名はJSONキーと一致します)。
注意
すべての変数がすべての Webhook 呼び出しに含まれるわけではありません。使用可能なフィールドは、アラートの種類とステータスによって異なります。レンダリング エラーを回避するために、テンプレートが null 値を処理していることを確認してください。
Webhook テンプレートでは、次の変数を使用できます。
変数 | 説明 |
|---|---|
| アラートが確認されたまでの ISO 8601の日付と時刻形式(UTC)のタイムスタンプ。 |
| アラートを確認したユーザーが残すコメント。 |
| アラートを確認したユーザーのユーザー名。 |
| このアラートをトリガーしたアラート構成の一意の識別子。 |
| このアラートが適用されるクラスターの一意の識別子。 |
| このアラートが適用されるクラスターの名前。 |
| アラートが開かれたときの ISO 8601の日付と時刻形式(UTC)のタイムスタンプ。 |
| (オブジェクト)アラートをトリガーしたメトリクスの現在の値。 |
| メトリクスの値。 |
| 値の単位。 値は、メトリクスの型によって異なります。 |
| このアラート通知のアクションまたは状態の変更(デフォルトの |
| アラートをトリガーしたイベントの名前。 |
| このアラートが開かれたグループ(プロジェクト)の一意の識別子。 |
| メトリクスが含まれるホストの一意の識別子。 |
| アラートが適用される各ホストのホスト名とポート。これは、ホスト名、FQDN、IPv4 アドレス、または IPv6 アドレスにすることができます。 |
| アラートの人間が判読可能な説明。 |
| アラートの一意の識別子です。 |
| このアラートの最後の通知が送信されたときの ISO 8601の日付と時刻形式(UTC)のタイムスタンプ。 |
| (オブジェクトの配列) サブリソースや関連リソースへの 1 つ以上のリンク。 |
| リンクされたリソースの関係タイプを記述します(例: 現在のリソースの |
| リソースにリンクします。 |
| 値がしきい値を超えた測定値の名前。 |
| このアラートが開かれた組織の一意の識別子。 |
| このアラートが開かれた組織の名前。 |
| このアラートが開かれたプロジェクト(グループ)の名前。 |
| レプリカセットの名前。 |
| リクエストの一意の識別子。 (デフォルトの |
| アラートが閉じられたときの ISO 8601の日付と時刻形式の UTC のタイムスタンプ。 |
| リクエスト署名。 ヘッダー テンプレートでのみ利用可能です。 (デフォルトの |
| アラートの現在の状態( |
|
|
| このアラートに設定された識別ラベル。 |
| アラートが最後にアップデートされたときの ISO 8601の日付と時刻形式の UTC のタイムスタンプ。 |
正規表現ヘルパー
さらに、正規表現を使用してテンプレート内のテキストからデータを抽出できるカスタムヘルパーである reヘルパー利用できます。
re.group(input, regex, group)最初の一致から指定されたキャプチャ グループを返します。一致しない場合は、空の文字列が返されます。
例:
${re.group("abc-123", "([a-z]+)-(\\d+)", 2)}→123re.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 テンプレートのテスト
Webhook テンプレートを構成したら、アラート構成インターフェースの [Test Alert] ボタンを使用してテストできます。これにより、テンプレートが正しくレンダリングされることを検証するためにサンプルデータを含むテスト通知が送信されます。