通知消息模板中允许使用预置的告警变量,本文为您介绍预置的告警变量的结构和参数的含义。
本文通过以下 JSON 示例代码,展示了托管 Prometheus 告警信息所包含的变量、参数和数据结构。方便您理解 Go Template 的常用语法和使用方式。
{ "Region": "cn-beijing", "AlertingRuleName": "CPU 利用率大于 80%", "AlertingRuleDescription": "alarm description", "AlertingRuleDetailURL": "https://console.volcanicengine.com/prometheus/***3503d49e/detail", "Level": "P0", "PromQL": "rate(cpu_total[1m])", "Comparator": ">", "Threshold": "0.8", "For": "3m", "Alerts": [ { "Id": "cdwaihonj434390ad", "Labels": { "cluster": "ccmp26s0bjh01jhk860f0", "namespace": "default", "service": "nginx", "pod": "nginx-85996***" }, "Value": "0.84", "StartsAt": "2024-02-02 17:13:32.065 +0800 CST", "EndsAt": "2024-02-02 17:13:32.065 +0800 CST", "DetailURL": "https://console.volcanicengine.com/prometheus/***/alert/alerting?detail_id=***" } ] }
消息模板中,可以使用的预置变量参数和说明,如下表所示。
变量 | 类型 | 示例值 | 说明 |
---|---|---|---|
Region | String | cn-beijing | 告警产生的地域。取值:
说明 更多地域信息,请参见 地域和可用区。 |
AlertingRuleName | String | CPU 利用率大于 80% | 告警规则的名称。 |
AlertingRuleDescription | String | alarm description | 告警规则的描述信息。 |
AlertingRuleDetailURL | String | https://console.volcanicengine.com/prometheus/***3503d49e/detail | 告警规则的 URL 链接。使用该链接可以直接跳转到对应的告警规则。 |
Level | String | P0 | 告警等级。取值为 P0、P1 和 P2。 |
PromQL | String | rate(cpu_total[1m]) | 告警规则中用于触发告警的 PromQL 语句。 |
Comparator | String | > | 告警比较条件,取值:
|
Threshold | String | 0.8 | 告警阈值。 |
For | String | 3m | 告警持续时间。 |
Alerts | Object Alerts | - | 嵌套结构,展示告警资源详情。 |
变量 | 类型 | 示例值 | 说明 |
---|---|---|---|
Id | String | cdwaihonj434390ad | 告警事件 ID。 |
Labels | map[string]string |
| 告警事件中的故障资源详情。 |
Value | Float64 | 0.84 | 告警事件值。 说明 该参数仅适用于 告警通知 模板,不适用于 告警恢复通知 模板。 |
StartsAt | time.Time | 2024-02-02 17:13:32.065 +0800 CST | 告警事件开始时间。 |
EndsAt | time.Time | 2024-02-02 17:13:32.065 +0800 CST | 告警事件结束时间。 说明 该参数仅适用于 告警恢复通知 模板,不适用于 告警通知 模板。 |
DetailURL | String | https://console.volcanicengine.com/prometheus/***/alert/alerting?detail_id=*** | 告警事件在控制台上的链接。使用该链接可以直接跳转到对应的告警事件。 |
除系统预置的告警模板外,您可以基于告警变量的数据结构、Go Template 语法和 Markdown 语法,配置自定义消息模板的内容,示例如下。
注意
.Alerts.Labels
变量获取,不同资源的Labels
可能不同。本示例中的Labels.*
(例如$alert.Labels.instance
)仅为举例。实际配置时,您需要配置为资源存在的Labels
变量。Label
变量,直接遍历每个故障资源的详情。配置方式请参见 模板示例说明。**告警信息**: --- 告警地域:{{ .Region }} 告警规则名称:{{ .AlertingRuleName }} 告警规则描述:{{ .AlertingRuleDescription }} 告警规则 URL:{{ .AlertingRuleDetailURL }} 告警等级:{{ .Level }} 告警规则中的 PromQL 语句:{{ .PromQL }} 告警比较条件:{{ .Comparator }} 告警阈值:{{ .Threshold }} 告警持续时间:{{ .For }} --- {{- $alertCount := len .Alerts }} {{- $maxAlerts := 10 }} **故障资源详情 ({{ $alertCount }} 个)**: {{- range $idx, $alert := .Alerts }} {{- if lt $idx 10 }} {{- $labels := "" -}} <br> 故障资源 ID:{{- $alert.Id }} 故障资源集群:{{- $alert.Labels.cluster }} 故障资源实例:{{- $alert.Labels.instance }} 故障资源 job:{{- $alert.Labels.job }} 故障资源指标当前值:{{- $alert.Value }} 故障开始时间:{{- $alert.StartsAt }} 告警事件 URL:{{- $alert.DetailURL}} {{- end }} {{- end }} --- {{- if gt $alertCount $maxAlerts }} **资源数量已超过 {{ $maxAlerts }} 个,完整告警请跳转控制台**。 {{- end }}
上述示例的实际生效效果如下图所示。