跳转到主要内容

概述

通过引用告警标签、属性的变量,实现对故障的严重程度、标题和描述等信息的修改与定制。主要应用在两种场景:

Event API 上报

通过告警 [Event API](/zh/on-call/integration/alert-integration/alert-sources/standard alert) 上报自定义告警事件时,可以使用 title_rule 字段自定义告警的标题。

告警 Pipeline

在告警 Pipeline 中引用变量,实现对告警的严重程度、标题和描述等信息的修改。

Event API 示例

title_rule
{
  "title_rule": "[TPL]${resource} / ${check}"
}
指定 resourcecheck 标签作为告警标题。

告警 Pipeline 示例

在告警 Pipeline 中引用变量

变量引用方式

通过 ${var} 引用标签

[TPL] 作为前缀,使用 ${} 来引用变量,变量内容将从标签中提取,提取不到使用 <no value> 替代。
规则标签值生成内容
[TPL]${resource} / ${check}{"resource": "127.0.0.1", "check": "cpu idle low"}127.0.0.1 / cpu idle low
[TPL]${resource} / ${check}{"resource": "127.0.0.1"}127.0.0.1 / <no value>
[TPL]${resource} / 主机宕机{"resource": "127.0.0.1"}127.0.0.1 / 主机宕机

通过 Golang 模版语法引用

[TPL] 作为前缀,使用 {{}} 来引用变量(可以引用标签和属性),标签不存在时返回空字符串。
规则变量值生成内容
[TPL]{{.Labels.resource}} / {{.Labels.check}}{"resource": "127.0.0.1", "check": "cpu idle low"}127.0.0.1 / cpu idle low
[TPL]{{.Labels.resource}} / {{.Labels.check}}{"resource": "127.0.0.1"}127.0.0.1 /
[TPL]{{.EventSeverity}} / 主机宕机{"EventSeverity": "Warning"}Warning / 主机宕机
${} 语法和 {{}} 语法存在两个关键差异:
  • 取值范围不同${name} Labels 中取值,无法引用属性字段;{{}}*AlertEvent 整体作为数据源,可访问全部导出属性与 Labels
  • 缺失行为不同:标签不存在时 ${} 返回 <no value>{{}} 返回空字符串。

支持引用的属性列表

使用 {{}} 语法时,模板的数据对象即告警事件(AlertEvent)本身,可引用的主要字段如下:
字段类型说明
Titlestring告警标题
Descriptionstring告警描述
EventSeveritystring严重程度(Critical / Warning / Info)
EventStatusstring事件状态(Critical / Warning / Info / Ok,Ok 表示恢复)
AlertKeystring告警的唯一 Key,用于将同一条曲线的事件合并到同一个告警
TitleRulestring上报时指定的标题生成规则
IntegrationTypestring集成类型(如 prometheuszabbix.v5
IntegrationNamestring集成名称
Labelsmap标签键值集合,可通过 {{.Labels.xxx}} 访问具体标签
除标题外,告警描述和任意标签值本身也支持引用变量:在告警 Pipeline 中使用 重置描述(resetDescription)或 重置标签(resetLabels)动作时,填入的内容只要以 [TPL] 作为前缀,就会按同样的语法执行变量替换。

常见问题

取决于您使用哪一种变量获取方式,标题可能会保留原始的变量信息或使用 <no value> 替代。
即使获取不到变量,也不影响告警的生成,您可放心调试。