You need to enable JavaScript to run this app.
文档中心
全栈可观测平台

全栈可观测平台

复制全文
下载 pdf
通知模板
托管 Prometheus 扩展函数与变量
复制全文
下载 pdf
托管 Prometheus 扩展函数与变量
通知内容模板中允许使用预置的告警变量,本文为您介绍托管 Prometheus 预置的告警变量结构和参数含义。​
扩展函数​
托管 Prometheus 通知内容模版中,支持 Go Template 内置函数和扩展函数。详情如下表所示:​
​
函数​
说明​
Go Template 内置函数​
通知内容模版支持使用 range、if、with、len 等 Go Template 内置函数,详情请参见 官方文档。​
translate(typ, lang, val)​
将变量值转成自然语言,VMP 场景里最常用于 Region。示例:{{ translate "Region" "zh" .Region }}。​
时间格式化​
time.Time 字段可直接使用 .Format。示例:{{ .StartsAt.Format "2006-01-02 15:04:05" }}。​
集合遍历​
map[string]string、[]NotifyTemplateAlert 等集合使用 range 遍历。​
vkeClusterName​
基于 VKE 集群的clusterID 获取集群名称。通过 VKE 集群中的采集组件写入的 VKE 指标都会携带cluster标签,其值为集群 ID。您也可以使用扩展函数在告警通知中获取集群名称,配置方法如下:​
  1. 保证在告警时,产生的告警事件包含cluster标签,例如:可以使用sum(up)by(job,cluster)在配置告警时实现cluster维度上的聚合。此时,告警事件的 Label 列表中就会包含cluster标签。​
  1. 配置告警消息模版时,使用vkeClusterName函数获取集群名称。示例为如下代码的第 4 行。​
​
{{ range $i, $alert := .Alerts -}}​
{{ if lt $i 5 -}}​
Resource No.{{ add1 $i }} {{ if $alert.Annotations }}:​
ClusterName: {{ $alert.Labels.cluster | vkeClusterName }}​
{{- range $key, $value := $alert.Labels }}​
{{ $key }}: {{ $value }}​
{{- end }}​
Current Value:{{ $alert.Value }}​
Alert Event ID: {{ $alert.Id }}​
Alert Start Time:{{ date "2006-01-02T15:04:05Z07:00" $alert.StartsAt }}​
​
---​
​
{{ else if eq $i 5 -}}​
Only the first 5 faulty resource details are displayed. Click [Alert Event Details] ({{ $.AlertListConsoleURL }}) to view more​
{{- end }}​
{{- end }}​
​
​
arkEndpointName​
基于endpointID获取 endpoint 名称。火山方舟平台写入的指标都会携带ark_endpoint标签,其值为接入点 ID,您也可以使用扩展函数在告警通知中获取接入点的名称,配置方法如下:​
  1. 保证在告警时,产生的告警事件含ark_endpoint标签,例如:如可以使用sum by(ark_endpoint,api)(rate(ark_api_proxy_request_total{}[2m]))在配置告警时实现ark_endpoint维度上的聚合,此时,告警事件的 Label 列表中会包含ark_endpoint标签。​
  1. 配置告警消息模版时,使用arkEndpointName函数获取接入点名称。示例为如下代码的第 4 行。​
​
{{ range $i, $alert := .Alerts -}}​
{{ if lt $i 5 -}}​
Resource No.{{ add1 $i }}{{ if $alert.Annotations }}:​
EndpointName: {{ $alert.Labels.ark_endpoint | arkEndpointName }}​
{{- range $key, $value := $alert.Labels }}​
{{ $key }}: {{ $value }}​
{{- end }}​
Current Value:{{ $alert.Value }}​
AlertID: {{ $alert.Id }}​
Alert Start Time:{{ date "2006-01-02T15:04:05Z07:00" $alert.StartsAt }}​
​
---​
​
{{ else if eq $i 5 -}}​
Only the first 5 faulty resource details are displayed. Click [Alert Event Details]({{ $.AlertListConsoleURL }}) to view more​
{{- end }}​
{{- end }}​
​
​
last30minAlertDetailImageLarkKey​
获取最近 30 分钟告警流转图片在飞书服务端的 image key。该扩展函数仅飞书应用机器人通知模版可用。​
​
{{- $larkImageKey := last30minAlertDetailImageLarkKey }} {{if $larkImageKey }}​
Alert Details in the Last 30 Minutes​
![larkImage]({{$larkImageKey}}) {{end}}​
​
注意​
请保证飞书应用机器人更新到最新版本。​
last30minAlertDetailImageBase64​
获取最近 30 分钟告警流转图片的 Base64 值。该扩展函数仅邮件通知模版可用。​
​
<img src="{{last30minAlertDetailImageBase64}}" alt="Image Description">​
​
​
​
数据结构​
本文通过以下 JSON 示例代码,展示了托管 Prometheus 告警信息所包含的变量、参数和数据结构。方便您理解 Go Template 的常用语法和使用方式。​
​
{​
"Region": "cn-beijing",​
"AlertingRuleName": "CPU usage is greater than 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=***"​
}​
]​
}​
​
变量说明​
说明​
  • 对于非嵌套变量,可以使用 Go Template 标准方式,获取变量的值。例如{{ .Region }}。​
  • 对于嵌套变量,需要通过自定义变量的方式获取所有的资源。例如定义$resource变量,然后通过遍历的方式获取所有的资源{{ range $idx, $resource := .Resources }}。对于内部变量,则需使用$resource.字段名的方式获取变量的值,例如{{ $resource.Id }}。​
通知内容模板中,可以使用的预置变量和说明,如下表所示。​
​
变量名​
类型​
说明​
示例​
用法示例​
SiteName​
string​
站点名称。​
火山引擎​
{{ .SiteName }}​
Region​
string​
地域标识。​
cn-beijing​
{{ translate "Region" "zh" .Region }}​
AlertingStatus​
string​
告警状态。​
firing​
{{ .AlertingStatus }}​
AlertingRuleName​
string​
告警规则名称。​
test_template​
{{ .AlertingRuleName }}​
AlertingRuleDescription​
string​
告警规则描述。​
test custom template​
{{ .AlertingRuleDescription }}​
AlertingRuleDetailURL​
string​
告警规则详情页链接。​
https://.../alert/rule/.../detail​
[查看规则]({{ .AlertingRuleDetailURL }})​
AlertListConsoleURL​
string​
告警列表页链接。​
https://.../alert/alerting?...​
[查看告警列表]({{ .AlertListConsoleURL }})​
SilencePolicyConsoleURL​
string​
静默策略列表页链接。​
https://.../alert/silence​
[查看静默策略]({{ .SilencePolicyConsoleURL }})​
GroupLabels​
map[string]string​
当前告警组的聚合标签。​
{ "test": "1" }​
{{ range $k, $v := .GroupLabels }}{{ $k }}={{ $v }} {{ end }}​
CommonLabels​
map[string]string​
多条告警共同拥有的 labels。​
{ "test": "1" }​
{{ range $k, $v := .CommonLabels }}{{ $k }}={{ $v }} {{ end }}​
CommonAnnotations​
map[string]string​
多条告警共同拥有的 annotations。​
{ "test": "1" }​
{{ range $k, $v := .CommonAnnotations }}{{ $k }}={{ $v }} {{ end }}​
Level​
string​
告警级别。​
P0​
{{ .Level }}​
PromQL​
string​
触发当前规则的 PromQL。​
up{}​
{{ .PromQL }}​
Comparator​
string​
比较符。​
>​
{{ .Comparator }}​
Threshold​
float64​
告警阈值。​
0​
{{ .Threshold }}​
For​
string​
持续时间条件。​
0s​
{{ .For }}​
Silence1hURL​
string​
1 小时静默链接。​
https://...silence_hours=1...​
[屏蔽 1 小时]({{ .Silence1hURL }})​
Alerts​
[]Alert​
当前通知中的告警明细列表。​
7 条 firing 告警​
{{ range $alert := .Alerts }}{{ $alert.Id }}{{ end }}​
​
Alert​
​
变量名​
类型​
说明​
示例​
用法示例​
Id​
string​
告警详情 ID。​
6842........6443........​
{{ range $alert := .Alerts }}{{ $alert.Id }}{{ end }}​
Status​
string​
单条告警状态。​
firing​
{{ range $alert := .Alerts }}{{ $alert.Status }}{{ end }}​
Labels​
map[string]string​
单条告警 labels。​
{ "instance": "192.168...." }​
{{ range $k, $v := $alert.Labels }}{{ $k }}={{ $v }} {{ end }}​
Annotations​
map[string]string​
单条告警 annotations。​
{ "test": "1" }​
{{ range $k, $v := $alert.Annotations }}{{ $k }}={{ $v }} {{ end }}​
Value​
float64​
当前值。​
1​
{{ $alert.Value }}​
StartsAt​
time.Time​
告警开始时间。​
2025-12-01T00:00:00+08:00​
{{ $alert.StartsAt.Format "2006-01-02 15:04:05" }}​
EndsAt​
time.Time​
告警结束时间;未恢复时常为零值。​
0001-01-01T00:00:00Z​
{{ $alert.EndsAt.Format "2006-01-02 15:04:05" }}​
DetailURL​
string​
告警详情页链接。​
https://.../alert/alerting?detail_id=...​
[查看详情]({{ $alert.DetailURL }})​
Fingerprint​
string​
告警指纹。​
................​
{{ $alert.Fingerprint }}​
​
配置示例​
除系统预置的告警模板外,您可以基于告警变量的数据结构、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 }}​
​
​
最近更新时间:2026.07.01 17:46:30
这个页面对您有帮助吗?
有用
有用
无用
无用