对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

配置 Webhook 模板

Ops Manager支持使用FreeMarker模板语法进行Webhook模板化。您可以自定义发送到 Webhook 终结点的HTTP 头部和请求正文内容。两个模板都必须生成有效的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.openedalert.closedalert.updatealert.acknowledgealert.cancelalert.inform)。

${eventTypeName}

触发警报的事件的名称。

${groupId}

为其打开此警报的群组(项目)的唯一标识符。

${hostId}

指标所属托管的唯一标识符。

${hostnameAndPort}

警报应用于每个托管主机名和端口。这可以是主机名、FQDN、IPv4解决或 IPv6解决。

${humanReadable}

人类可读的警报说明。

${id}

警报的唯一标识符。

${lastNotified}

为该警报发送最后一次通知时采用 ISO 8601 日期和时间格式(UTC 时间)的时间戳。

${links}

(对象数组)指向子资源和/或相关资源的一个或多个链接。

${links[i].rel}

描述链接资源的关系类型(例如,self 表示当前资源)。

${links[i].href}

资源链接。

${metricName}

Go阈值的测量名称。

${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 时间)的时间戳。

此外,还提供了一个自定义辅助工具,即 re 辅助工具,它允许您使用正则表达式从模板内的文本中提取数据。

  • re.group(input, regex, group)

    从第一个匹配中返回指定的捕获群组。如果没有匹配项,则返回空字符串。

    示例: ${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。如果未找到匹配项,则返回空字符串或空列表。

{
"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 按钮进行测试。这会发送包含示例数据的测试通知,以验证模板是否正确渲染。