

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 自訂通知
<a name="v9-alerting-notifications"></a>

****  
本文件主題專為支援 Grafana **9.x 版的 Grafana** 工作區而設計。  
如需支援 Grafana 10.x 版的 Grafana 工作區，請參閱 [使用 Grafana 第 10 版](using-grafana-v10.md)。  
如需支援 Grafana 8.x 版的 Grafana 工作區，請參閱 [使用 Grafana 第 8 版](using-grafana-v8.md)。

使用通知範本自訂您的通知。

您可以使用通知範本來變更通知中訊息的標題、訊息和格式。

通知範本不會與特定聯絡點整合繫結，例如電子郵件或 Slack。不過，您可以選擇為不同的聯絡點整合建立個別的通知範本。

您可以使用通知範本來：
+ 在通知中新增、移除或重新排序資訊，包括摘要、描述、標籤和註釋、值和連結
+ 以粗體和斜體格式設定文字，並新增或移除換行符號

您無法使用通知範本來：
+ 變更 Slack 和 Microsoft Teams 等即時傳訊服務中通知的設計

**Topics**
+ [使用 Go 的範本語言](v9-alerting-notifications-go-templating.md)
+ [建立通知範本](v9-alerting-create-templates.md)
+ [範本參考](v9-alerting-template-reference.md)

# 使用 Go 的範本語言
<a name="v9-alerting-notifications-go-templating"></a>

****  
本文件主題專為支援 Grafana **9.x 版的 Grafana** 工作區而設計。  
如需支援 Grafana 10.x 版的 Grafana 工作區，請參閱 [使用 Grafana 第 10 版](using-grafana-v10.md)。  
如需支援 Grafana 8.x 版的 Grafana 工作區，請參閱 [使用 Grafana 第 8 版](using-grafana-v8.md)。

您使用 Go 的範本語言[文字/範本撰寫通知範本](https://pkg.go.dev/text/template)。

本節提供 Go 的範本語言和以文字/範本撰寫範本的概觀。

## 點
<a name="v9-go-dot"></a>

在文字/範本中，有一個稱為點的特殊游標，並寫入為 `.`。您可以將此游標視為變數，其值會根據使用的範本中的位置而變更。例如，在通知範本的開頭`.`是指 `ExtendedData` 物件，其中包含多個欄位，包括 `Alerts`、`Status`、`GroupLabels`、 `CommonLabels``CommonAnnotations`和 `ExternalURL`。不過，當在`range`清單上使用 時、在 內使用時，或寫入要用於其他範本的功能範本時`with`，點可能會參照其他項目。您可以在 中看到此範例[建立通知範本](v9-alerting-create-templates.md)，以及 中的所有資料和函數[範本參考](v9-alerting-template-reference.md)。

## 開啟和關閉標籤
<a name="v9-go-openclosetags"></a>

在文字/範本中，無論範本`}}`是否列印變數或執行控制結構，例如 if 陳述式，範本都會以 開頭`{{`和結尾。這與其他範本語言不同，例如 Jinja，其中列印變數使用 `{{`和 `}}`，控制結構使用 `{%`和 `%}`。

## Print (列印)
<a name="v9-go-print"></a>

若要列印某個項目的值，請使用 `{{`和 `}}`。您可以列印點的值、點的欄位、函數的結果，以及[變數](#v9-go-variables)的值。例如，若要列印 點所指`Alerts`的欄位`ExtendedData`，您需要撰寫以下內容：

```
{{ .Alerts }}
```

## 重複提醒
<a name="v9-go-iterate-alerts"></a>

若要只列印每個提醒的標籤，而不是有關提醒的所有資訊，您可以使用 `range`來重複 中的提醒`ExtendedData`：

```
{{ range .Alerts }}
{{ .Labels }}
{{ end }}
```

範圍內的點不再是指 `ExtendedData`，而是 `Alert`。您可以使用 `{{ .Labels }}`來列印每個提醒的標籤。這是因為`{{ range .Alerts }}`變更點指向提醒清單中的目前提醒。當範圍完成時，點會重設為範圍開始之前的值，在此範例中為 `ExtendedData`：

```
{{ range .Alerts }}
{{ .Labels }}
{{ end }}
{{/* does not work, .Labels does not exist here */}}
{{ .Labels }}
{{/* works, cursor was reset */}}
{{ .Status }}
```

## 逐一查看註釋和標籤
<a name="v9-go-iterate-labels"></a>

讓我們編寫範本，以 格式列印每個提醒的標籤`The name of the label is $name, and the value is $value`，其中 `$name`和 `$value`包含每個標籤的名稱和值。

如同上一個範例，使用範圍來逐一查看提醒，`.Alerts`讓點參照提醒清單中的目前提醒，然後在排序的標籤上使用第二個範圍，讓點再次更新以參照目前的標籤。在第二個範圍內，使用 `.Name` 和 `.Value`來列印每個標籤的名稱和值：

```
{{ range .Alerts }}
{{ range .Labels.SortedPairs }}
The name of the label is {{ .Name }}, and the value is {{ .Value }}
{{ end }}
{{ range .Annotations.SortedPairs }}
The name of the annotation is {{ .Name }}, and the value is {{ .Value }}
{{ end }}
{{ end }}
```

## 如果陳述式
<a name="v9-go-if"></a>

您可以在範本中使用 if 陳述式。例如，`There are no alerts`若要在 中沒有提醒時列印`.Alerts`，您會撰寫下列項目：

```
{{ if .Alerts }}
There are alerts
{{ else }}
There are no alerts
{{ end }}
```

## 使用
<a name="v9-go-with"></a>

使用 與 if 陳述式類似，但與使用 陳述式不同， 會以下列方式`with`更新點來參考 的值：

```
{{ with .Alerts }}
There are {{ len . }} alert(s)
{{ else }}
There are no alerts
{{ end }}
```

## Variables
<a name="v9-go-variables"></a>

文字/範本中的變數必須在範本中建立。例如，若要建立名為 `$variable`且目前值為點的變數，您需要撰寫下列項目：

```
{{ $variable := . }}
```

您可以在範圍 或 `$variable`內使用 ，`with`它會在定義變數時參考點的值，而不是點的目前值。

例如，您無法撰寫`{{ .Labels }}`在第二個範圍內使用的範本，因為這裡的點是指目前的標籤，而不是目前的提醒：

```
{{ range .Alerts }}
{{ range .Labels.SortedPairs }}
{{ .Name }} = {{ .Value }}
{{/* does not work because in the second range . is a label not an alert */}}
There are {{ len .Labels }}
{{ end }}
{{ end }}
```

您可以透過在第一個範圍`$alert`和第二個範圍之前定義名為 的變數來修正此問題：

```
{{ range .Alerts }}
{{ $alert := . }}
{{ range .Labels.SortedPairs }}
{{ .Name }} = {{ .Value }}
{{/* works because $alert refers to the value of dot inside the first range */}}
There are {{ len $alert.Labels }}
{{ end }}
{{ end }}
```

## 具有索引的範圍
<a name="v9-go-rangeindex"></a>

您可以在範圍的開頭定義索引和值變數，以取得範圍內每個提醒的索引：

```
{{ $num_alerts := len .Alerts }}
{{ range $index, $alert := .Alerts }}
This is alert {{ $index }} out of {{ $num_alerts }}
{{ end }}
```

## 定義範本
<a name="v9-go-define"></a>

您可以使用 `define`和雙引號中的範本名稱，定義可在其他範本中使用的範本。您不應定義與其他範本同名的範本，包括預設範本，例如 `__subject`、`__text_alert_list`、 `__text_values_list``default.title`和 `default.message`。如果已建立與預設範本同名的範本，或另一個通知範本中的範本，Grafana 可能會使用任一個範本。當有兩個或多個具有相同名稱的範本時，Grafana 不會阻止或顯示錯誤訊息。

```
{{ define "print_labels" }}
{{ end }}
```

## 內嵌範本
<a name="v9-go-embed"></a>

您可以使用 `template`、雙引號中的範本名稱，以及應該傳遞給範本的游標，在範本中嵌入定義的範本：

```
{{ template "print_labels" . }}
```

## 將資料傳遞至 範本
<a name="v9-go-passdata"></a>

在範本點中， 是指傳遞給範本的值。

例如，如果範本通過射擊提醒清單，則點是指射擊提醒清單：

```
{{ template "print_alerts" .Alerts }}
```

如果範本已傳遞警示的排序標籤，則點會參照排序標籤的清單：

```
{{ template "print_labels" .SortedLabels }}
```

這在撰寫可重複使用的範本時非常有用。例如，若要列印所有提醒，您可以撰寫下列項目：

```
{{ template "print_alerts" .Alerts }}
```

然後，若要只列印射擊提醒，您可以編寫以下內容：

```
{{ template "print_alerts" .Alerts.Firing }}
```

這可以運作，因為 `.Alerts`和 `.Alerts.Firing` 都是提醒清單。

```
{{ define "print_alerts" }}
{{ range . }}
{{ template "print_labels" .SortedLabels }}
{{ end }}
{{ end }}
```

## 說明
<a name="v9-go-comments"></a>

您可以使用 `{{/*`和 新增註解`*/}}`：

```
{{/* This is a comment */}}
```

若要防止註解新增換行符號，請使用：

```
{{- /* This is a comment with no leading or trailing line breaks */ -}}
```

## 縮排
<a name="v9-go-indentation"></a>

您可以使用縮排、標籤和空格，以及換行，讓範本更易讀：

```
{{ range .Alerts }}
  {{ range .Labels.SortedPairs }}
    {{ .Name }} = {{ .Value }}
  {{ end }}
{{ end }}
```

不過，範本中的縮排也會出現在文字中。接下來，我們將了解如何移除它。

## 移除空格和換行符號
<a name="v9-go-removespace"></a>

在文字/範本中，使用 `{{-`和 `-}}` 來移除前後空格和換行符號。

例如，使用縮排和換行讓範本更易讀：

```
{{ range .Alerts }}
  {{ range .Labels.SortedPairs }}
    {{ .Name }} = {{ .Value }}
  {{ end }}
{{ end }}
```

縮排和換行也會出現在文字中：

```
    alertname = "Test"

    grafana_folder = "Test alerts"
```

您可以從在每個範圍`}}``-}}`開始時變更為 的文字中移除縮排和換行：

```
{{ range .Alerts -}}
  {{ range .Labels.SortedPairs -}}
    {{ .Name }} = {{ .Value }}
  {{ end }}
{{ end }}
```

範本中的縮排和換行現在不存在於文字中：

```
alertname = "Test"
grafana_folder = "Test alerts"
```

# 建立通知範本
<a name="v9-alerting-create-templates"></a>

****  
本文件主題專為支援 Grafana **9.x 版的 Grafana** 工作區而設計。  
如需支援 Grafana 10.x 版的 Grafana 工作區，請參閱[使用 Grafana 第 10 版](using-grafana-v10.md)。  
如需支援 Grafana 8.x 版的 Grafana 工作區，請參閱 [使用 Grafana 第 8 版](using-grafana-v8.md)。

建立可重複使用的通知範本以傳送至您的聯絡點。

您可以將一或多個範本新增至通知範本。

您的通知範本名稱必須是唯一的。您不能在相同的通知範本或不同的通知範本中有兩個同名的範本。避免使用與預設範本相同的名稱來定義範本，例如：`__subject`、`__text_alert_list`、 `__text_values_list``default.title`和 `default.message`。

在聯絡點索引標籤中，您可以看到通知範本的清單。

## 建立通知範本
<a name="v9-alerting-creating-templates"></a>

**建立通知範本**

1. 按一下**新增範本**。

1. 選擇通知範本的名稱，例如 `email.subject`。

1. 在內容欄位中輸入範本的內容。

   例如：

   ```
   {{ if .Alerts.Firing -}}
      {{ len .Alerts.Firing }} firing alerts
      {{ end }}
      {{ if .Alerts.Resolved -}}
      {{ len .Alerts.Resolved }} resolved alerts
      {{ end }}
   ```

1. 按一下 Save (儲存)。

   `{{ define "email.subject" }}` （其中 `email.subject`是您範本的名稱）， `{{ end }}`會自動新增至內容的開頭和結尾。

**若要建立包含多個範本的通知範本：**

1. 按一下**新增範本**。

1. 輸入整體通知範本的名稱。例如 `email`。

1. 在內容欄位中寫入每個範本，包括每個範本`{{ end }}`的開頭和結尾的 `{{ define "name-of-template" }}`和 。您可以對通知範本中的每個範本使用描述性名稱，例如 `email.subject`或 `email.message`。在此情況下，請勿重複使用您在上方輸入的通知範本名稱。

   下列各節顯示您可能建立之範本的詳細範例。

1. 按一下 Save (儲存)。

## 為電子郵件主旨建立範本
<a name="v9-alerting-create-template-subject"></a>

為電子郵件主旨建立範本，其中包含觸發和已解決提醒的數量，如本範例所示：

```
1 firing alerts, 0 resolved alerts
```

**為電子郵件主旨建立範本**

1. 使用下列內容建立名為 `email.subject`的範本：

   ```
   {{ define "email.subject" }}
   {{ len .Alerts.Firing }} firing alerts, {{ len .Alerts.Resolved }} resolved alerts
   {{ end }}
   ```

1. 在建立聯絡點整合時使用 範本，方法是將範本放入具有 `template`關鍵字的**主旨**欄位中。

   ```
   {{ template "email.subject" . }}
   ```

## 建立電子郵件訊息的範本
<a name="v9-alerting-create-template-message"></a>

為電子郵件的訊息建立範本，其中包含所有觸發和已解決提醒的摘要，如本範例所示：

```
There are 2 firing alerts, and 1 resolved alerts

Firing alerts:

- alertname=Test 1 grafana_folder=GrafanaCloud has value(s) B=1
- alertname=Test 2 grafana_folder=GrafanaCloud has value(s) B=2

Resolved alerts:

- alertname=Test 3 grafana_folder=GrafanaCloud has value(s) B=0
```

**建立電子郵件訊息的範本**

1. 在內容中建立名為 的通知範本`email`，其中包含兩個範本： `email.message_alert`和 `email.message`。

   `email.message_alert` 範本用於列印每個射擊和已解決提醒的標籤和值，而`email.message`範本包含電子郵件的結構。

   ```
   {{- define "email.message_alert" -}}
   {{- range .Labels.SortedPairs }}{{ .Name }}={{ .Value }} {{ end }} has value(s)
   {{- range $k, $v := .Values }} {{ $k }}={{ $v }}{{ end }}
   {{- end -}}
   
   {{ define "email.message" }}
   There are {{ len .Alerts.Firing }} firing alerts, and {{ len .Alerts.Resolved }} resolved alerts
   
   {{ if .Alerts.Firing -}}
   Firing alerts:
   {{- range .Alerts.Firing }}
   - {{ template "email.message_alert" . }}
   {{- end }}
   {{- end }}
   
   {{ if .Alerts.Resolved -}}
   Resolved alerts:
   {{- range .Alerts.Resolved }}
   - {{ template "email.message_alert" . }}
   {{- end }}
   {{- end }}
   
   {{ end }}
   ```

1. 在建立聯絡點整合時使用 範本，方法是將範本放入具有 `template`關鍵字**的文字內文**欄位中。

   ```
   {{ template "email.message" . }}
   ```

## 建立 Slack 訊息標題的範本
<a name="v9-alerting-create-template-slack-title"></a>

建立 Slack 訊息標題的範本，其中包含射擊和已解決警示的數量，如下列範例所示：

```
1 firing alerts, 0 resolved alerts
```

**建立 Slack 訊息標題的範本**

1. 使用下列內容建立名為 `slack.title`的範本：

   ```
   {{ define "slack.title" }}
   {{ len .Alerts.Firing }} firing alerts, {{ len .Alerts.Resolved }} resolved alerts
   {{ end }}
   ```

1. 在建立聯絡點整合時使用 範本，方法是將範本放入具有 `template`關鍵字的**標題**欄位中。

   ```
   {{ template "slack.title" . }}
   ```

## 為 Slack 訊息的內容建立範本
<a name="v9-alerting-create-template-slack-message"></a>

為 Slack 訊息的內容建立範本，其中包含所有觸發和已解決提醒的描述，包括其標籤、註釋和儀表板 URL：

```
1 firing alerts:

[firing] Test1
Labels:
- alertname: Test1
- grafana_folder: GrafanaCloud
Annotations:
- description: This is a test alert
Go to dashboard: https://example.com/d/dlhdLqF4z?orgId=1

1 resolved alerts:

[firing] Test2
Labels:
- alertname: Test2
- grafana_folder: GrafanaCloud
Annotations:
- description: This is another test alert
Go to dashboard: https://example.com/d/dlhdLqF4z?orgId=1
```

**為 Slack 訊息的內容建立範本**

1. 在內容中建立名為 的範本`slack`，其中包含兩個範本： `slack.print_alert`和 `slack.message`。

   `slack.print_alert` 範本用於列印標籤、註釋和 DashboardURL，而`slack.message`範本包含通知的結構。

   ```
   {{ define "slack.print_alert" -}}
   [{{.Status}}] {{ .Labels.alertname }}
   Labels:
   {{ range .Labels.SortedPairs -}}
   - {{ .Name }}: {{ .Value }}
   {{ end -}}
   {{ if .Annotations -}}
   Annotations:
   {{ range .Annotations.SortedPairs -}}
   - {{ .Name }}: {{ .Value }}
   {{ end -}}
   {{ end -}}
   {{ if .DashboardURL -}}
     Go to dashboard: {{ .DashboardURL }}
   {{- end }}
   {{- end }}
   
   {{ define "slack.message" -}}
   {{ if .Alerts.Firing -}}
   {{ len .Alerts.Firing }} firing alerts:
   {{ range .Alerts.Firing }}
   {{ template "slack.print_alert" . }}
   {{ end -}}
   {{ end }}
   {{ if .Alerts.Resolved -}}
   {{ len .Alerts.Resolved }} resolved alerts:
   {{ range .Alerts.Resolved }}
   {{ template "slack.print_alert" .}}
   {{ end -}}
   {{ end }}
   {{- end }}
   ```

1. 在建立聯絡點整合時使用 範本，方法是將範本放入具有`template`關鍵字**的文字內文**欄位中。

   ```
   {{ template "slack.message" . }}
   ```

## 使用共用範本來範本電子郵件和 Slack
<a name="v9-alerting-create-shared-templates"></a>

您可以共用相同的範本，而不是為每個聯絡點建立個別的通知範本，例如電子郵件和 Slack。

例如，如果您想要傳送具有此主旨的電子郵件，以及具有此標題 的 Slack 訊息`1 firing alerts, 0 resolved alerts`，您可以建立共用範本。

**建立共用範本**

1. 使用下列內容建立名為 `common.subject_title`的範本：

   ```
   {{ define "common.subject_title" }}
   {{ len .Alerts.Firing }} firing alerts, {{ len .Alerts.Resolved }} resolved alerts
   {{ end }}
   ```

1. 對於電子郵件，請從電子郵件聯絡點整合中的主旨欄位執行範本：

   ```
   {{ template "common.subject_title" . }}
   ```

1. 對於 Slack，請從 Slack 聯絡點整合中的標題欄位執行範本：

   ```
   {{ template "common.subject_title" . }}
   ```

## 使用通知範本
<a name="v9-alerting-use-notification-templates"></a>

在聯絡點中使用範本來自訂您的通知。

**在建立聯絡點時使用範本**

1. 從**提醒**功能表中，選擇**聯絡點**以查看現有聯絡點的清單。

1. 選擇**新增聯絡點**。或者，您可以選擇要編輯的聯絡點旁的**編輯**圖示 （筆） 來編輯現有的聯絡點。

1. 輸入您想要在一個或多個欄位中使用的範本，例如**訊息**或**主旨**。若要輸入範本，請使用格式 `{{ template "template_name" . }}`，將 *template\$1name* 取代為您要使用的範本名稱。

1. 按一下**儲存聯絡點**。

# 範本參考
<a name="v9-alerting-template-reference"></a>

****  
本文件主題專為支援 Grafana **9.x 版的 Grafana** 工作區而設計。  
如需支援 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>

下列資料會傳遞至訊息範本。


| 名稱 | 類型 | 備註 | 
| --- | --- | --- | 
|  `Receiver`  |  string  |  正在傳送通知的聯絡點名稱。  | 
|  `Status`  |  string  |  如果至少一個提醒正在觸發，則觸發，否則會解決。  | 
|  `Alerts`  |  警示  |  此通知中包含的提醒物件清單 （請參閱下方）。  | 
|  `GroupLabels`  |  KeyValue  |  這些警示分組依據的標籤。  | 
|  `CommonLabels`  |  KeyValue  |  此通知中包含的所有提醒通用的標籤。  | 
|  `CommonAnnotations`  |  KeyValue  |  此通知中所有提醒的常見註釋。  | 
|  `ExternalURL`  |  string  |  傳送通知的 Grafana 的返回連結。如果使用外部 Alertmanager，請返回此 Alertmanager 的連結。  | 

`Alerts` 類型會公開兩個用於篩選傳回提醒的函數。
+ `Alerts.Firing` – 傳回射擊警示的清單。
+ `Alerts.Resolved` – 傳回已解析警示的清單。

**提醒 （類型）**

提醒類型包含下列資料。


| 名稱 | 類型 | 備註 | 
| --- | --- | --- | 
|  狀態  |  string  |  `firing` 或 `resolved`  | 
|  標籤  |  KeyValue  |  連接到提醒的一組標籤。  | 
|  註釋  |  KeyValue  |  連接到提醒的一組註釋。  | 
| 值 | KeyValue | 所有表達式的值，包括傳統條件 | 
|  StartsAt  |  time.Time  |  警示開始觸發的時間。  | 
|  EndsAt  |  time.Time  |  只有在已知警示的結束時間時才設定。否則，請設定為自上次收到提醒以來的可設定逾時期間。  | 
|  GeneratorURL  |  string  |  Grafana 或外部 Alertmanager 的後退連結。  | 
|  SilenceURL  |  string  |  提醒靜音的連結 （已預先填入此提醒的標籤）。僅適用於 Grafana 受管提醒。  | 
|  DashboardURL  |  string  |  如果警示規則屬於一個，則連結至 grafana 儀表板。僅適用於 Grafana 受管提醒。  | 
|  PanelURL  |  string  |  如果警示規則屬於一個，則連結至 grafana 儀表板面板。僅適用於 Grafana 受管提醒。  | 
|  指紋  |  string  |  可用來識別提醒的指紋。  | 
|  ValueString  |  string  |  字串，其中包含提醒中每個減少表達式的標籤和值。  | 

 **ExtendedData**

ExtendedData 物件包含下列屬性。


| 名稱 | Kind | Description | 範例 | 
| --- | --- | --- | --- | 
|  接收者  |  `string`  |  傳送通知的聯絡點名稱。  |  `{{ .Receiver }}`  | 
|  狀態  |  `string`  |  狀態為 `firing if at least one alert is firing, otherwise resolved.`  |  `{{ .Status }}`  | 
|  Alerts (提醒)  |  `[]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 類型**

`KeyValue` 類型是一組代表標籤和註釋的鍵/值字串對。

除了直接存取存放為 的資料之外`KeyValue`，還有排序、移除和轉換資料的方法。


| 名稱 | 引數 | 傳回值 | 備註 | 範例 | 
| --- | --- | --- | --- | --- | 
|  SortedPairs  |    |  索引鍵和值字串對的排序清單  |    | `{{ .Annotations.SortedPairs }}` | 
|  移除  |  【】字串  |  KeyValue  |  傳回不含指定金鑰的金鑰/值映射複本。  | `{{ .Annotations.Remove "summary" }}` | 
|  名稱  |    |  【】字串  |  標籤名稱清單  | `{{ .Names }}` | 
|  值  |    |  【】字串  |  標籤值清單  | `{{ .Values }}` | 

**Time (時間)**

時間來自 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>

使用範本函數，您可以處理標籤和註釋來產生動態通知。下列 函數可供使用。


| 名稱 | 引數類型 | 傳回類型 | Description | 
| --- | --- | --- | --- | 
|  `humanize`  |  數字或字串  |  string  |  使用指標字首，將數字轉換為更易讀的格式。  | 
|  `humanize1024`  |  數字或字串  |  string  |  就像人文化一樣，但使用 1024 作為基礎，而不是 1000。  | 
|  `humanizeDuration`  |  數字或字串  |  string  |  以秒為單位將持續時間轉換為更易於讀取的格式。  | 
|  `humanizePercentage`  |  數字或字串  |  string  |  將比率值轉換為 100 的分數。  | 
|  `humanizeTimestamp`  |  數字或字串  |  string  |  以秒為單位將 Unix 時間戳記轉換為更易於讀取的格式。  | 
|  `title`  |  string  |  string  |  strings.Title，將每個單字的第一個字元大寫。  | 
|  `toUpper`  |  string  |  string  |  strings.ToUpper，將所有字元轉換為大寫。  | 
|  `toLower`  |  string  |  string  |  strings.ToLower 會將所有字元轉換為小寫。  | 
|  `match`  |  模式、文字  |  Boolean  |  regexp.MatchString 測試未錨定的 regexp 比對。  | 
|  `reReplaceAll`  |  模式、替換、文字  |  string  |  Regexp.ReplaceAllString Regexp 替換，未錨定。  | 
|  `graphLink`  |  string - 具有 `expr`和 `datasource` 欄位的 JSON 物件  |  string  |  在探索中傳回指定表達式和資料來源的圖形檢視路徑。  | 
|  `tableLink`  |  string - 具有 `expr`和 `datasource` 欄位的 JSON 物件  |  string  |  在探索中傳回指定表達式和資料來源的表格式檢視路徑。  | 
|  `args`  |  【】interface\$1\$1  |  map【string】interface\$1\$1  |  將物件清單轉換為具有索引鍵的映射，例如 arg0、arg1。使用此函數將多個引數傳遞至 範本。  | 
|  `externalURL`  |  無  |  string  |  傳回代表外部 URL 的字串。  | 
|  `pathPrefix`  |  無  |  string  |  傳回外部 URL 的路徑。  | 

下表顯示使用每個 函數的範例。


| 函式 | TemplateString | Input | 預期 | 
| --- | --- | --- | --- | 
|  人文化  |  \$1 人文化 \$1value \$1  |  1234567.0  |  12.35M  | 
|  humanize1024  |  \$1 humanize1024 \$1value \$1  |  1048576.0  |  1Mi  | 
|  humanizeDuration  |  \$1 humanizeDuration \$1value \$1  |  899.99  |  14 公尺 59 秒  | 
|  humanizePercentage  |  \$1 humanizePercentage \$1value \$1  |  0.1234567  |  12.35%  | 
|  humanizeTimestamp  |  \$1 humanizeTimestamp \$1value \$1  |  1435065584.128  |  2015-06-23 13：19：44.128 \$10000 UTC  | 
|  標題  |  \$1 \$1value \$1 標題 \$1  |  aa bB CC  |  Aa Bb Cc  | 
|  toUpper  |  \$1 \$1value \$1 toUpper\$1  |  aa bB CC  |  AA BB CC  | 
|  toLower  |  \$1 \$1value \$1 toLower \$1  |  aa bB CC  |  aa bb cc  | 
|  match  |  \$1 match "a\$1" \$1labels.instance \$1  |  aa  |  true  | 
|  reReplaceAll  |  \$1\$1 reReplaceAll "localhost：(.\$1)" "my.domain：\$11" \$1labels.instance \$1\$1  |  localhost：3000  |  my.domain：3000  | 
|  graphLink  |  \$1\$1 graphLink "\$1\$1"expr\$1"： \$1"up\$1"， \$1"datasource\$1"： \$1"gdev-prometheus\$1"\$1" \$1\$1  |    |  /explore？left=【"now-1h"，"now"，"gdev-prometheus"，\$1"datasource"："gdev-prometheus"，"expr"："up"，"instant"：false，"range"：true\$1】  | 
|  tableLink  |  \$1\$1 tableLink "\$1\$1"expr\$1"：\$1"up\$1"、\$1"datasource\$1"：\$1"gdev-prometheus\$1"\$1" \$1\$1  |    |  /explore？left=【"now-1h"，"now"，"gdev-prometheus"，\$1"datasource"："gdev-prometheus"，"expr"："up"，"instant"：true，"range"：false\$1】  | 
|  args  |  \$1\$1define "x"\$1\$1\$1\$1.arg0\$1\$1 \$1\$1.arg1\$1\$1\$1\$1end\$1\$1\$1\$1template "x" (args 1 "2")\$1\$1  |    |  1 2  | 
|  externalURL  |  \$1 externalURL \$1  |    |  http：//localhost/path/prefix  | 
|  pathPrefix  |  \$1 pathPrefix \$1  |    |  /path/prefix  | 