

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

# 範本參考
<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>

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


| 名稱 | 類型 | 備註 | 
| --- | --- | --- | 
| `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 比對的 regexp.MatchString 測試。 | 
| `reReplaceAll` | 模式、替換、文字 | string | Regexp.ReplaceAllString Regexp 替換，未錨定。 | 
| `graphLink` | string - 具有 `expr`和 `datasource` 欄位的 JSON 物件 | string | 在探索中傳回指定表達式和資料來源的圖形檢視路徑。 | 
| `tableLink` | string - 具有 `expr`和 `datasource` 欄位的 JSON 物件 | string | 在探索中傳回指定表達式和資料來源的表格式檢視路徑。 | 
| `args` | 【】interface{} | map【string】interface{} | 將物件清單轉換為具有索引鍵的映射，例如 arg0、arg1。使用此函數將多個引數傳遞至 範本。 | 
| `externalURL` | 無 | string | 傳回代表外部 URL 的字串。 | 
| `pathPrefix` | 無 | string | 傳回外部 URL 的路徑。 | 

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


| 函式 | TemplateString | Input | 預期 | 
| --- | --- | --- | --- | 
| 人文化 | { 人文化 $value } | 1234567.0 | 12.35M | 
| humanize1024 | { humanize1024 $value } | 1048576.0 | 1Mi | 
| humanizeDuration | { humanizeDuration $value } | 899.99 | 14 公尺 59 秒 | 
| humanizePercentage | { humanizePercentage $value } | 0.1234567 | 12.35% | 
| humanizeTimestamp | { humanizeTimestamp $value } | 1435065584.128 | 2015-06-23 13：19：44.128 \+0000 UTC | 
| 標題 | { $value \| 標題 } | 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 | 
| reReplaceAll | {{ reReplaceAll "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 | 