

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 模板参考
<a name="v9-alerting-template-reference"></a>

****  
本文档主题专为支持 **Grafana 9.x 版本**的 Grafana 工作区而设计。  
有关支持 Grafana 版本 12.x 的 Grafana 工作空间，请参阅。[在 Grafana 版本 12 中工作](using-grafana-v12.md)  
对于支持 Grafana 10.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 10](using-grafana-v10.md)。  
对于支持 Grafana 8.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 8](using-grafana-v8.md)。

本节提供了创建模板的参考信息。

## 模板数据
<a name="v9-alerting-template-data"></a>

以下数据将传递给消息模板。


| Name | Type | 注意 | 
| --- | --- | --- | 
| `Receiver` | 字符串 | 要向其发送通知的联系点的名称。 | 
| `Status` | 字符串 | 如果至少有一个警报已触发，则为“触发”，否则为“已解决”。 | 
| `Alerts` | 警报 | 此通知中包含的警报对象列表（见下文）。 | 
| `GroupLabels` | KeyValue | 这些警报的分组标签。 | 
| `CommonLabels` | KeyValue | 此通知中包含的所有警报的通用标签。 | 
| `CommonAnnotations` | KeyValue | 此通知中包含的所有警报的通用注释。 | 
| `ExternalURL` | 字符串 | 指向发送通知的 Grafana 的返回链接。如果使用外部 Alertmanager，则是指向此 Alertmanager 的返回链接。 | 

`Alerts` 类型公开了两个函数，用于筛选返回的警报。
+ `Alerts.Firing`：返回已触发警报的列表。
+ `Alerts.Resolved`：返回已解决警报的列表。

**警报（类型）**

警报类型包含以下数据。


| Name | Type | 注意 | 
| --- | --- | --- | 
| Status | 字符串 | `firing` 或 `resolved`。 | 
| 标签 | KeyValue | 附加到警报的一组标签。 | 
| Annotations | KeyValue | 附加到警报的一组注释。 | 
| 值 | KeyValue | 所有表达式的值，包括经典条件 | 
| StartsAt | time.Time | 警报开始触发的时间。 | 
| EndsAt | time.Time | 仅在知道警报结束时间时设置。否则，设置为从收到最后一次警报的时间起算的可配置的超时周期。 | 
| GeneratorURL | 字符串 | 指向 Grafana 或外部 Alertmanager 的返回链接。 | 
| SilenceURL | 字符串 | 指向静默警报的链接（其中预填了此警报的标签）。仅适用于 Grafana 管理的警报。 | 
| DashboardURL | 字符串 | 指向 Grafana 控制面板的链接（适用于警报规则属于 Grafana 控制面板的情况）。仅适用于 Grafana 管理的警报。 | 
| PanelURL | 字符串 | 指向 Grafana 控制面板中面板的链接（适用于警报规则属于 Grafana 控制面板中面板的情况）。仅适用于 Grafana 管理的警报。 | 
| 指纹 | 字符串 | 可用于识别警报的指纹。 | 
| ValueString | 字符串 | 该字符串包含警报中每个简化表达式的标签和值。 | 

 **ExtendedData**

该 ExtendedData 对象包含以下属性。


| Name | 类型 | 说明 | 示例 | 
| --- | --- | --- | --- | 
| 接收方 | `string` | 发送通知的联系点名称。 | `{{ .Receiver }}` | 
| Status | `string` | 状态为 `firing if at least one alert is firing, otherwise resolved.`。 | `{{ .Status }}` | 
| 警报 | `[]Alert` | 此通知中所有触发警报和已解决警报的列表。 | `There are {{ len .Alerts }} alerts` | 
| 触发警报 | `[]Alert` | 此通知中所有触发警报的列表。 | `There are {{ len .Alerts.Firing }} firing alerts` | 
| 已解决警报 | `[]Alert` | 此通知中所有已解决警报的列表。 | `There are {{ len .Alerts.Resolved }} resolved alerts` | 
| GroupLabels | `KeyValue` | 此通知中对这些警报进行分组的标签。 | `{{ .GroupLabels }}` | 
| CommonLabels | `KeyValue` | 此通知中所有警报的通用标签。 | `{{ .CommonLabels }}` | 
| CommonAnnotations | `KeyValue` | 此通知中所有警报的通用注释。 | `{{ .CommonAnnotations }}` | 
| ExternalURL | `string` | 指向发送此通知的 Grafana 工作区或 Alertmanager 的链接。 | `{{ .ExternalURL }}` | 

**KeyValue type**

`KeyValue`类型是一组表示标签和注释的 key/value 字符串对。

除了直接访问存储为 `KeyValue` 的数据外，还有方法可以对这些数据进行排序、删除和转换。


| Name | 参数 | 返回值 | 注意 | 示例 | 
| --- | --- | --- | --- | --- | 
| SortedPairs |  | 键值字符串对的排序列表 |  | `{{ .Annotations.SortedPairs }}` | 
| 删除 | []string | KeyValue | 返回不带给定键 Key/Value 的地图副本。 | `{{ .Annotations.Remove "summary" }}` | 
| 名称 |  | []string | 标签名称列表 | `{{ .Names }}` | 
| 值 |  | []string | 标签值列表 | `{{ .Values }}` | 

**时间**

时间来自 Go [https://pkg.go.dev/time#Time](https://pkg.go.dev/time#Time) 包。您可以用多种不同的格式打印时间。例如，要以 `Monday, 1st January 2022 at 10:00AM` 格式打印警报触发的时间，请编写以下模板：

```
{{ .StartsAt.Format "Monday, 2 January 2006 at 3:04PM" }}
```

您可以在[此处](https://pkg.go.dev/time#pkg-constants)找到 Go 的时间格式参考。

## 模板函数
<a name="v9-alerting-template-functions"></a>

使用模板函数，您可以处理标签和注释，以生成动态通知。可使用以下函数。


| Name | 参数类型 | 返回类型 | 说明 | 
| --- | --- | --- | --- | 
| `humanize` | 数字或字符串 | 字符串 | 使用公制前缀将数字转换为更易读的格式。 | 
| `humanize1024` | 数字或字符串 | 字符串 | 与 humanize 类似，但使用 1024 作为基数，而不是 1000。 | 
| `humanizeDuration` | 数字或字符串 | 字符串 | 将以秒为单位的持续时间转换为更易读的格式。 | 
| `humanizePercentage` | 数字或字符串 | 字符串 | 将比率值转换为百分比。 | 
| `humanizeTimestamp` | 数字或字符串 | 字符串 | 将以秒为单位的 Unix 时间戳转换为更易读的格式。 | 
| `title` | 字符串 | 字符串 | strings.Title，将每个单词的第一个字符大写。 | 
| `toUpper` | 字符串 | 字符串 | 字符串。 ToUpper，将所有字符转换为大写。 | 
| `toLower` | 字符串 | 字符串 | 字符串。 ToLower，将所有字符转换为小写。 | 
| `match` | 模式、文本 | 布尔值 | regexp。 MatchString 测试未锚定的 regexp 匹配项。 | 
| `reReplaceAll` | 模式、置换、文本 | 字符串 | Regexp.ReplaceAllString 正则表达式替换，未锚定。 | 
| `graphLink` | 字符串：包含 `expr` 和 `datasource` 字段的 JSON 对象 | 字符串 | 返回给定表达式和数据来源在 Explore 中图形视图的路径。 | 
| `tableLink` | 字符串：包含 `expr` 和 `datasource` 字段的 JSON 对象 | 字符串 | 返回给定表达式和数据来源在 Explore 中表格视图的路径。 | 
| `args` | []interface{} | map[string]interface{} | 将对象列表转换为带键的映射，例如 arg0、arg1。使用此函数可将多个参数传递给模板。 | 
| `externalURL` | nothing | 字符串 | 返回代表外部 URL 的字符串。 | 
| `pathPrefix` | nothing | 字符串 | 返回外部 URL 的路径。 | 

下表列出了每个函数的使用示例。


| 函数 | TemplateString | Input | 预期 | 
| --- | --- | --- | --- | 
| humanize | { humanize $value } | 1234567.0 | 1.235M | 
| humanize1024 | { humanize1024 $value } | 1048576.0 | 1Mi | 
| humanizeDuration | { humanizeDuration $value } | 899.99 | 14m 59s | 
| humanizePercentage | { humanizePercentage $value } | 0.1234567 | 12.35% | 
| humanizeTimestamp | { humanizeTimestamp $value } | 1435065584.128 | 2015-06-23 13:19:44.128 \+0000 UTC | 
| 删除实例快照 | { $value \| title } | aa bB CC | Aa Bb Cc | 
| toUpper | { $value \| toUpper } | aa bB CC | AA BB CC | 
| toLower | { $value \| toLower } | aa bB CC | aa bb cc | 
| match | { match "a\+" $labels.instance } | aa | true | 
| 回复 ReplaceAll | {{re ReplaceAll “localhost :( .\*)” “my.domain：$1" $labels.instance}} | localhost:3000 | my.domain:3000 | 
| graphLink | {{ graphLink "{\\"expr\\": \\"up\\", \\"datasource\\": \\"gdev-prometheus\\"}" }} |  | /explore?left=["now-1h","now","gdev-prometheus",{"datasource":"gdev-prometheus","expr":"up","instant":false,"range":true}] | 
| tableLink | {{ tableLink "{\\"expr\\":\\"up\\", \\"datasource\\":\\"gdev-prometheus\\"}" }} |  | /explore?left=["now-1h","now","gdev-prometheus",{"datasource":"gdev-prometheus","expr":"up","instant":true,"range":false}] | 
| args | {{define "x"}}{{.arg0}} {{.arg1}}{{end}}{{template "x" (args 1 "2")}} |  | 1 2 | 
| externalURL | { externalURL } |  | http://localhost/path/prefix | 
| pathPrefix | { pathPrefix } |  | /path/prefix | 