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

后退

系统警报

在此页面上