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 时间)的时间戳。 |
| (对象数组)指向子资源和/或相关资源的一个或多个链接。 |
| 描述链接资源的关系类型(例如, |
| 资源链接。 |
| Go阈值的测量名称。 |
| 为其打开此警报的组织的唯一标识符。 |
| 为其打开此警报的组织名称。 |
| 为其打开此警报的项目(群组)的名称。 |
| 副本集名称。 |
| 请求的唯一标识符。 (默认 |
| 警报关闭时采用 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。如果未找到匹配项,则返回空字符串或空列表。
模板示例
自定义标头模板
{ "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 按钮进行测试。这会发送包含示例数据的测试通知,以验证模板是否正确呈现。