

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

# 探索提醒
<a name="v9-alerting-explore"></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)。

無論您是開始或擴展 Grafana 警示的實作，請進一步了解可協助您建立、管理和對警示採取動作的重要概念和可用功能，並改善團隊快速解決問題的能力。

首先，讓我們來看看 Grafana Alerting 提供的不同提醒規則類型。

## 警示規則類型
<a name="v9-alerting-explore-rule-types"></a>

**Grafana 受管規則**

Grafana 受管規則是最靈活的提醒規則類型。它們可讓您建立提醒，以處理來自我們任何支援資料來源的資料。除了支援多個資料來源之外，您還可以新增表達式來轉換資料並設定提醒條件。這是允許在單一規則定義中從多個資料來源發出提醒的唯一規則類型。

**Mimir 和 Loki 規則**

若要建立 Mimir 或 Loki 提醒，您必須擁有相容的 Prometheus 或 Loki 資料來源。您可以測試資料來源並觀察是否支援尺規 API，以檢查資料來源是否支援透過 Grafana 建立規則。

**錄製規則**

錄製規則僅適用於相容的 Prometheus 或 Loki 資料來源。錄製規則可讓您預先計算經常需要或運算昂貴的表達式，並將其結果儲存為一組新的時間序列。如果您想要對彙總資料執行警示，或如果您有重複查詢運算上昂貴表達式的儀表板，這會很有用。

## 重要概念和功能
<a name="v9-alerting-explore-features"></a>

下表包含關鍵概念、功能及其定義的清單，旨在協助您充分利用 Grafana 警示。


| 關鍵概念或功能 | 定義 | 
| --- | --- | 
|  警示的資料來源  |  選取您要查詢的資料來源，並將指標、日誌和追蹤視覺化。  | 
|  警示的佈建  |  管理您的提醒資源，並使用檔案佈建或 Terraform 將其佈建到您的 Grafana 系統中。  | 
|  警示管理員  |  管理警示執行個體的路由和分組。  | 
|  警示規則  |  警示規則應何時觸發的一組評估條件。提醒規則包含一或多個查詢和表達式、條件、評估頻率，以及滿足條件的持續時間。警示規則可以產生多個警示執行個體。  | 
|  警示執行個體  |  警示執行個體是警示規則的執行個體。單一維度警示規則有一個警示執行個體。多維提醒規則具有一或多個提醒執行個體。符合多個結果的單一警示規則，例如針對 10 個 VMs CPU，會計入多個 （在此案例中為 10) 警示執行個體。此數字可能會隨著時間而變化。例如，在新增 VMs 時，監控系統中所有 VM CPU VMs提醒執行個體。如需警示執行個體配額的詳細資訊，請參閱 [配額達到錯誤](v9-alerting-managerules-grafana.md#v9-alerting-rule-quota-reached)。  | 
|  警示群組  |  Alertmanager 預設會使用根通知政策的標籤來將警示執行個體分組。這可控制重複資料刪除和傳送至聯絡點的警示執行個體群組。  | 
|  聯絡點  |  定義警示規則觸發時如何通知您的聯絡人。  | 
|  訊息範本  |  建立可重複使用的自訂範本，並將其用於聯絡點。  | 
|  通知政策  |  警示分組和路由到聯絡點的位置、時間和方式的一組規則。  | 
|  標籤和標籤比對器  |  標籤可唯一識別提醒規則。它們將提醒規則連結至通知政策和靜音，決定哪些政策應該處理它們，以及哪些提醒規則應該靜音。  | 
|  靜音  |  停止來自一或多個提醒執行個體的通知。靜音和靜音計時之間的差異在於靜音只會持續一段指定的時段，而靜音計時則表示排程會重複。使用標籤比對器來靜音提醒執行個體。  | 
|  靜音計時  |  當您不希望產生或傳送新通知時，請指定時間間隔。您也可以凍結重複期間的提醒通知，例如在維護期間。必須連結到現有的通知政策。  | 

# 資料來源
<a name="v9-alerting-explore-datasources"></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)。

有許多[資料來源](AMG-data-sources-builtin.md)與 Grafana 警示相容。外掛程式支援每個資料來源。您可以使用下列其中一個內建資料來源。

這些是與 Amazon Managed Grafana 相容且受支援的資料來源。
+ [連線至 Alertmanager 資料來源](data-source-alertmanager.md)
+ [連線至 Amazon CloudWatch 資料來源](using-amazon-cloudwatch-in-AMG.md)
+ [連線至 Amazon OpenSearch Service 資料來源](using-Amazon-OpenSearch-in-AMG.md)
+ [連線至 AWS IoT SiteWise 資料來源](using-iotsitewise-in-AMG.md)
+ [連線至 an AWS IoT TwinMaker 資料來源](AMG-iot-twinmaker.md)
+ [連線至 Amazon Managed Service for Prometheus 和開放原始碼 Prometheus 資料來源](prometheus-data-source.md)
+ [連線至 Amazon Timestream 資料來源](timestream-datasource.md)
+ [連線至 Amazon Athena 資料來源](AWS-Athena.md)
+ [連線至 Amazon Redshift 資料來源](AWS-Redshift.md)
+ [連線至 AWS X-Ray 資料來源](x-ray-data-source.md)
+ [連線至 Azure Monitor 資料來源](using-azure-monitor-in-AMG.md)
+ [連線至 Google Cloud Monitoring 資料來源](using-google-cloud-monitoring-in-grafana.md)
+ [連接至 Graphite 資料來源](using-graphite-in-AMG.md)
+ [連線至 InfluxDB 資料來源](using-influxdb-in-AMG.md)
+ [連線至 Loki 資料來源](using-loki-in-AMG.md)
+ [連線至 Microsoft SQL Server 資料來源](using-microsoft-sql-server-in-AMG.md)
+ [連線至 MySQL 資料來源](using-mysql-in-AMG.md)
+ [連線至 OpenTSDB 資料來源](using-opentsdb-in-AMG.md)
+ [連線至 PostgreSQL 資料來源](using-postgresql-in-AMG.md)
+ [連接至 Jaeger 資料來源](jaeger-data-source.md)
+ [連線至 Zipkin 資料來源](zipkin-data-source.md)
+ [連線至 Tempo 資料來源](tempo-data-source.md)
+ [設定 TestData 資料來源進行測試](testdata-data-source.md)

# 關於提醒規則
<a name="v9-alerting-explore-rules"></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)。

警示規則是一組評估條件，可判斷警示執行個體是否會觸發。規則包含一或多個查詢和表達式、條件、評估頻率，以及選擇滿足條件的持續時間。

當查詢和表達式選取要評估的資料集時，條件會設定警示必須達到或超過才能建立警示的閾值。

間隔會指定警示規則的評估頻率。設定時，持續時間表示條件必須滿足的時間長度。提醒規則也可以定義缺少資料的提醒行為。

**Topics**
+ [警示規則類型](v9-alerting-explore-rules-types.md)
+ [提醒執行個體](v9-alerting-rules-instances.md)
+ [命名空間和群組](v9-alerting-rules-grouping.md)
+ [通知範本](v9-alerting-rules-notification-templates.md)

# 警示規則類型
<a name="v9-alerting-explore-rules-types"></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)。

Grafana 支援多種警示規則類型。以下各節將說明其優點和缺點，並協助您為您的使用案例選擇正確的提醒類型。

Grafana 受管規則

Grafana 受管規則是最靈活的提醒規則類型。它們可讓您建立警示，以對來自任何現有資料來源的資料採取行動。

除了支援任何資料來源之外，您還可以新增[表達式](v9-panels-query-xform-expressions.md)來轉換資料並表達提醒條件。

Mimir、Loki 和 Cortex 規則

若要建立 Mimir、Loki 或 Cortex 提醒，您必須擁有相容的 Prometheus 資料來源。您可以透過測試資料來源來檢查資料來源是否相容，並檢查是否支援尺規 API 的詳細資訊。

錄製規則

錄製規則僅適用於相容的 Prometheus 資料來源，例如 Mimir、Loki 和 Cortex。

錄製規則可讓您將表達式的結果儲存到一組新的時間序列。如果您想要對彙總資料執行警示，或如果您有重複查詢相同表達式的儀表板，這會很有用。

閱讀有關在 Prometheus 中[記錄規則](https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/)的詳細資訊。

# 提醒執行個體
<a name="v9-alerting-rules-instances"></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)。

Grafana 受管警示支援多維度警示。每個提醒規則都可以建立多個提醒執行個體。如果您在單一表達式中觀察多個序列，這會非常強大。

請考慮下列 PromQL 表達式：

```
sum by(cpu) (
  rate(node_cpu_seconds_total{mode!="idle"}[1m])
)
```

使用此表達式的規則將建立與評估期間觀察到的 CPUs 數量一樣多的提醒執行個體，允許單一規則報告每個 CPU 的狀態。

# 命名空間和群組
<a name="v9-alerting-rules-grouping"></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)。

可以使用 Mimir、Loki 或 Prometheus 規則和群組名稱的 Grafana 受管規則和命名空間的資料夾來組織提醒。

**命名空間**

建立 Grafana 受管規則時，資料夾可用來執行存取控制，以及授予或拒絕存取特定資料夾中的所有規則。

**Groups (群組)**

群組內的所有規則都會以相同的**間隔**進行評估。

警示規則和群組內的記錄規則一律會**依序**評估，這表示不會同時依顯示順序評估任何規則。

**提示**  
如果您想要以不同的間隔同時評估規則，請考慮將規則存放在不同的群組中。

# 通知範本
<a name="v9-alerting-rules-notification-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)。

透過聯絡點傳送的通知會使用通知範本建置。Grafana 的預設範本是以 [Go 範本系統](https://golang.org/pkg/text/template)為基礎，其中某些欄位會評估為文字，而其他則評估為 HTML （這可能會影響逸出）。

預設範本 [default\$1template.go](https://github.com/grafana/alerting/blob/main/templates/default_template.go) 是自訂範本的實用參考。

由於大多數的聯絡點欄位都可以建立範本，因此您可以建立可重複使用的自訂範本，並在多個聯絡點中使用它們。若要了解使用 範本的自訂通知，請參閱 [自訂通知](v9-alerting-notifications.md)。

**巢狀範本**

您可以在其他範本中內嵌範本。

例如，您可以使用 `define`關鍵字定義範本片段。

```
{{ define "mytemplate" }}
  {{ len .Alerts.Firing }} firing. {{ len .Alerts.Resolved }} resolved.
{{ end }}
```

然後，您可以使用 `template`關鍵字在此片段中嵌入自訂範本。例如：

```
Alert summary:
{{ template "mytemplate" . }}
```

您可以使用下列任何內建範本選項來內嵌自訂範本。


| 名稱 | 備註 | 
| --- | --- | 
|  `default.title`  |  顯示高階狀態資訊。  | 
|  `default.message`  |  提供射擊和已解決警示的格式化摘要。  | 
|  `teams.default.message`  |  與 類似`default.messsage`，針對 Microsoft Teams 格式化。  | 

**通知範本中的 HTML**

警示通知範本中的 HTML 會逸出。我們不支援在產生的通知中轉譯 HTML。

有些標記符支援變更所產生通知外觀和感覺的替代方法。例如，Grafana 會安裝基本範本，以警示電子郵件給 `<grafana-install-dir>/public/emails/ng_alert_notification.html`。您可以編輯此檔案，以變更所有提醒電子郵件的外觀。

# 數值資料的提醒
<a name="v9-alerting-explore-numeric"></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)。

本主題說明 Grafana 如何處理數值警示，而非時間序列資料。

在特定資料來源中，非時間序列的數值資料可以直接提醒或傳遞至伺服器端表達式 (SSE)。這可讓您在資料來源內獲得更多的處理和產生的效率，也可以簡化提醒規則。提醒數值資料而非時間序列資料時，不需要將每個標記的時間序列減少為單一數字。反之，標記的數字會傳回給 Grafana。

**表格式資料**

查詢表格式資料的後端資料來源支援此功能：
+ SQL 資料來源，例如 MySQL、Postgres、MSSQL 和 Oracle。
+ Azure Kusto 型服務：Azure Monitor (Logs)、Azure Monitor (Azure Resource Graph) 和 Azure Data Explorer。

具有 Grafana 受管警示或 SSE 的查詢會被視為具有這些資料來源的數值，如果：
+ 資料來源查詢中的「格式化 AS」選項設定為「資料表」。
+ 從查詢傳回給 Grafana 的資料表回應僅包含一個數值 （例如 int、 double、 float) 欄，以及選擇性的額外字串欄。

如果有字串資料欄，則這些資料欄會變成標籤。資料欄的名稱會變成標籤名稱，而每一列的值會變成對應標籤的值。如果傳回多個資料列，則每個資料列都應唯一識別其標籤。

**範例**

對於名為「DiskSpace」的 MySQL 資料表：


| 時間 | 主機 | Disk | PercentFree | 
| --- | --- | --- | --- | 
|  2021-June-7  |  Web1  |  /等  |  3  | 
|  2021-June-7  |  Web2  |  /var  |  4  | 
|  2021-June-7  |  Web3  |  /var  |  8  | 
|  ...  |  ...  |  ...  |  ...  | 

您可以按時查詢資料篩選，但不將時間序列傳回給 Grafana。例如，當可用空間少於 5% 時，每個主機磁碟會觸發的提醒：

```
SELECT Host , Disk , CASE WHEN PercentFree  < 5.0 THEN PercentFree  ELSE 0 END FROM ( 
   SELECT
      Host, 
      Disk, 
      Avg(PercentFree) 
   FROM DiskSpace
   Group By
      Host, 
      Disk 
   Where __timeFilter(Time)
```

此查詢會將下列資料表回應傳回 Grafana：


| 主機 | Disk | PercentFree | 
| --- | --- | --- | 
|  Web1  |  /等  |  3  | 
|  Web2  |  /var  |  4  | 
|  Web3  |  /var  |  0  | 

當此查詢用作警示規則中的**條件**時，非零將發出警示。因此，會產生三個提醒執行個體：


| 標籤 | 狀態 | 
| --- | --- | 
|  \$1Host=web1，disk=/etc\$1  |  提醒  | 
|  \$1Host=web2，disk=/var\$1  |  提醒  | 
|  \$1Host=web3，disk=/var\$1  |  正常  | 

# 標籤和註釋
<a name="v9-alerting-explore-labels"></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)。

標籤和註釋包含提醒的相關資訊。標籤和註釋的結構都相同：一組具名值，但其預期用途不同。標籤或同等註釋的範例可能是 `alertname="test"`。

標籤和註釋的主要區別在於，標籤用於區分提醒與所有其他提醒，而註釋用於將其他資訊新增至現有提醒。

例如，請考慮兩個高 CPU 警示：一個用於 `server1`，另一個用於 `server2`。在此範例中，我們可能會有一個名為 的標籤，`server`其中第一個提醒具有 標籤`server="server1"`，而第二個提醒具有 標籤`server="server2"`。不過，我們也可能想要將描述新增至每個提醒，例如 `"The CPU usage for server1 is above 75%."`，其中 `server1`和 `75%` 會取代為伺服器的名稱和 CPU 使用量 （有關如何執行此操作，請參閱 [範本標籤和註釋](v9-alerting-explore-labels-templating.md)上的文件）。這種描述會更適合做為註釋。

## 標籤
<a name="v9-alerting-explore-labels-labels"></a>

標籤包含識別提醒的資訊。標籤的範例可能是 `server=server1`。每個提醒可以有多個標籤，且提醒的完整標籤集稱為其標籤集。這是識別提醒的標籤集。

例如，提醒可能已設定標籤，`{alertname="High CPU usage",server="server1"}`而另一個提醒可能已設定標籤`{alertname="High CPU usage",server="server2"}`。這些是兩個單獨的提醒，因為雖然其`alertname`標籤相同，但其`server`標籤不同。

警示的標籤集是資料來源的標籤、警示規則的自訂標籤，以及許多預留標籤的組合，例如 `alertname`。

**自訂標籤**

自訂標籤是來自提醒規則的其他標籤。如同註釋，自訂標籤必須具有名稱，而且其值可以包含文字和範本程式碼的組合，在觸發提醒時進行評估。您可以[在這裡](v9-alerting-explore-labels-templating.md)找到如何範本自訂標籤的文件。

搭配 範本使用自訂標籤時，請務必確保標籤值不會在警示規則的連續評估之間變更，因為這最終會產生大量不同的警示。不過，範本可以為不同的提醒產生不同的標籤值。例如，請勿將查詢的值放在自訂標籤中，因為這最終會在每次值變更時建立新的一組提醒。請改用註釋。

也請務必確保警示的標籤集沒有兩個或多個具有相同名稱的標籤。如果自訂標籤的名稱與資料來源的標籤相同，則會取代該標籤。不過，如果自訂標籤與預留標籤的名稱相同，則會從提醒中省略自訂標籤。

## 註釋
<a name="v9-alerting-explore-labels-annotations"></a>

註釋是將其他資訊新增至現有提醒的命名配對。Grafana 中有許多建議的註釋，例如 `description`、`runbook_url`、 `summary``dashboardUId`和 `panelId`。與自訂標籤一樣，註釋必須具有名稱，而且其值可以包含觸發提醒時評估的文字和範本程式碼組合。如果註釋包含範本程式碼，則會在觸發提醒時評估範本一次。即使警示已解決，也不會重新評估。您可以在[此處](v9-alerting-explore-labels-templating.md)找到如何建立註釋範本的文件。

# 標籤比對的運作方式
<a name="v9-alerting-explore-labels-matching"></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)。

使用標籤和標籤比對器，將警示規則連結至通知政策和靜音。這可讓 以非常靈活的方式管理您的提醒執行個體、指定哪些政策應處理它們，以及哪些提醒靜音。

標籤比對器包含 3 個不同的部分：**標籤**、**值**和**運算子**。
+ Label **** 欄位是要比對的標籤名稱。它必須完全符合標籤名稱。
+ **值**欄位符合指定**標籤**名稱的對應值。比對方式取決於**運算子**值。
+ **運算**子欄位是要比對標籤值的運算子。可用的運算子包括：


| 運算子 | Description | 
| --- | --- | 
|  `=`  |  選取完全等於 值的標籤。  | 
|  `!=`  |  選取不等於 值的標籤。  | 
|  `=~`  |  選取 regex 符合值的標籤。  | 
|  `!~`  |  選取不與值 regex 相符的標籤。  | 

如果您使用多個標籤比對器，則會使用 AND 邏輯運算子來合併它們。這表示所有配對器都必須相符，才能將規則連結至政策。

**範例藍本**

如果您為提醒定義下列一組標籤：

```
{ foo=bar, baz=qux, id=12 }
```

然後：
+ 定義為 的標籤比對器`foo=bar`符合此提醒規則。
+ 定義為 的標籤比對器`foo!=bar`*不符合*此提醒規則。
+ 定義為 的標籤比對器`id=~[0-9]+`符合此提醒規則。
+ 定義為 的標籤比對器`baz!~[0-9]+`符合此提醒規則。
+ 定義為 `foo=bar`且`id=~[0-9]+`符合此提醒規則的兩個標籤比對程式。

# Grafana 警示中的標籤
<a name="v9-alerting-explore-labels-alerting"></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)。

本主題說明為什麼標籤是提醒的基本元件。
+ 提醒的完整標籤集是 Grafana 提醒中唯一識別提醒的內容。
+ Alertmanager 使用標籤來比對通知政策中靜音和警示群組的警示。
+ 警示 UI 會顯示評估該規則期間產生之每個警示執行個體的標籤。
+ 聯絡點可以存取標籤，動態產生通知，其中包含導致通知的提醒特定資訊。
+ 您可以將標籤新增至[提醒規則](v9-alerting-managerules.md)。標籤可手動設定、使用範本函數，並可參考其他標籤。新增至提醒規則的標籤優先於標籤之間發生衝突的情況 (Grafana 預留標籤的情況除外，如需詳細資訊，請參閱以下內容）。

**外部警示管理員相容性**

Grafana 的內建 Alertmanager 支援 Unicode 標籤索引鍵和值。如果您使用的是外部 Prometheus Alertmanager，標籤金鑰必須與其[資料模型](https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels)相容。這表示標籤索引鍵只能包含 **ASCII 字母**、**數字**以及**底線**，並與 regex 相符`[a-zA-Z_][a-zA-Z0-9_]*`。任何無效的字元都會由 Grafana 提醒引擎移除或取代，然後再根據下列規則傳送至外部 Alertmanager：
+ `Whitespace` 將會移除。
+ `ASCII characters` 將取代為 `_`。
+ `All other characters` 將以小寫十六進位表示法取代。如果這是第一個字元，則會在字首加上 `_`。

**注意**  
如果多個標籤索引鍵已淨化為相同的值，則重複項目的原始標籤的短雜湊會附加為尾碼。

**Grafana 預留標籤**

**注意**  
Grafana `grafana_`會保留字首為 的標籤以供特殊使用。如果從 開始新增手動設定的標籤`grafana_`，則在發生碰撞時可以覆寫。

Grafana 預留標籤的使用方式與手動設定的標籤相同。目前可用的預留標籤清單如下：


| 標籤 | Description | 
| --- | --- | 
|  grafana\$1folder  |  包含提醒的資料夾標題。  | 

# 範本標籤和註釋
<a name="v9-alerting-explore-labels-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)。

在 Grafana 中，您會像在 Prometheus 中一樣範本標籤和註釋。如果您之前已使用 Prometheus，則應熟悉 `$labels`和 `$value`變數，其中包含提醒的標籤和值。您可以在 Grafana 中使用相同的變數，即使提醒不使用 Prometheus 資料來源。如果您之前沒有使用 Prometheus，則不必擔心這些變數的每一個，以及如何建立範本，當您遵循本頁面的其餘部分時，將會進行說明。

## Go 的範本語言
<a name="v9-alerting-explore-labels-templating-go"></a>

標籤和註釋的範本是以 Go 的範本語言[文字/範本](https://pkg.go.dev/text/template)撰寫。

**開啟和關閉標籤**

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

**Print (列印)**

若要列印某個項目的值，請使用 `{{`和 `}}`。您可以列印函數的結果或變數的值。例如，若要列印`$labels`變數，您會撰寫下列項目：

```
{{ $labels }}
```

**在標籤上反覆運算**

若要逐一查看 中的每個標籤`$labels`，您可以使用 `range`。這裡`$k`是指名稱，而 `$v` 是指目前標籤的值。例如，如果您的查詢傳回標籤`instance=test`，則 `$k`會是 `instance`，而 `$v` 會是 `test`。

```
{{ range $k, $v := $labels }}
{{ $k }}={{ $v }}
{{ end }}
```

## 標籤、值和值變數
<a name="v9-alerting-explore-labels-templating-variables"></a>

**標籤變數**

`$labels` 變數包含查詢中的標籤。例如，檢查執行個體是否關閉的查詢可能會傳回執行個體標籤，其名稱為關閉的執行個體。例如，假設您有一個警示規則，當其中一個執行個體停機超過 5 分鐘時，就會觸發該規則。您想要將摘要新增至提醒，告知您哪個執行個體已關閉。使用 `$labels`變數，您可以建立摘要，在摘要中列印執行個體標籤：

```
Instance {{ $labels.instance }} has been down for more than 5 minutes
```

**帶有點的標籤**

如果您想要列印的標籤在範本中使用相同點的名稱中包含點 （完全停止或句點） 將無法運作：

```
Instance {{ $labels.instance.name }} has been down for more than 5 minutes
```

這是因為範本嘗試使用 `name`中稱為 的不存在欄位`$labels.instance`。您應該改用 函數，該`index`函數會在 `$labels`變數`instance.name`中列印標籤：

```
Instance {{ index $labels "instance.name" }} has been down for more than 5 minutes
```

**值變數**

`$value` 變數的運作方式與 Prometheus 不同。在 Prometheus `$value`中，浮點數包含表達式的值，但在 Grafana 中，浮點數包含此提醒規則所有閾值、減少和數學表達式和傳統條件的標籤和值。它不包含查詢的結果，因為它們可以傳回 10s 到 10，000s 的資料列或指標。

如果您要在提醒摘要中使用 `$value`變數：

```
{{ $labels.service }} has over 5% of responses with 5xx errors: {{ $value }})
```

摘要看起來可能會類似以下內容：

```
api has an over 5% of responses with 5xx errors: [ var='B' labels={service=api} value=6.789 ]
```

這裡`var='B'`是指具有 RefID B 的表達式。在 Grafana 中，所有查詢和表達式都是由識別提醒規則中每個查詢和表達式的 RefID 所識別。同樣地， `labels={service=api}` 是指標籤，而 `value=6.789`是指 值。

您可能已觀察到沒有 RefID A。這是因為在大多數提醒規則中，RefID A 是指查詢，而且因為查詢可以傳回許多資料列或時間序列，它們不包含在 中`$value`。

**值變數**

如果`$value`變數包含的資訊超過您需要的資訊，您可以改為使用 列印個別表達式的標籤和值`$values`。與 不同`$value`，`$values`變數是物件的資料表，其中包含每個表達式的標籤和浮點值，依其 RefID 編製索引。

如果您要在提醒摘要`B`中使用 RefID 列印表達式的值：

```
{{ $labels.service }} has over 5% of responses with 5xx errors: {{ $values.B }}%
```

摘要將僅包含 值：

```
api has an over 5% of responses with 5xx errors: 6.789%
```

不過，當 `{{ $values.B }}`列印數字 6.789 時，它實際上是一個字串，因為您列印的物件同時包含 RefID B 的標籤和值，而不是 B 的浮點值。若要使用 RefID B 的浮點值，您必須使用 中的 `Value` 欄位`$values.B`。如果您要人為化警示摘要中的浮點值：

```
{{ $labels.service }} has over 5% of responses with 5xx errors: {{ humanize $values.B.Value }}%
```

**無資料、執行時間錯誤和逾時**

如果警示規則中的查詢未傳回任何資料，或因為資料來源錯誤或逾時而失敗，則使用該查詢的任何閾值、減少或數學表達式也將不會傳回任何資料或錯誤。發生這種情況時，這些表達式將不存在於 `$values`。最佳實務是在使用前檢查 RefID 是否存在，否則，如果您的查詢未傳回資料或發生錯誤，您的範本將會中斷。您可以使用 if 陳述式來執行此操作：

```
{{ if $values.B }}{{ $labels.service }} has over 5% of responses with 5xx errors: {{ humanizePercentage $values.B.Value }}{{ end }}
```

## 傳統條件
<a name="v9-alerting-explore-labels-templating-classic"></a>

如果規則使用 Classic Conditions 而非 Threshold、Reuce 和 Math 運算式，則`$values`變數會以 Classic Condition 中條件的 Ref ID 和位置來編製索引。例如，如果您的 Classic Condition 具有包含兩個條件的 RefID B，則 `$values`將包含兩個條件 `B0`和 `B1`。

```
The first condition is {{ $values.B0 }}, and the second condition is {{ $values.B1 }}
```

## 函數
<a name="v9-alerting-explore-labels-templating-functions"></a>

展開標籤和註釋時，也可以使用下列函數：

**args**

`args` 函數會將物件清單轉譯為索引鍵為 arg0、arg1 等的映射。這是為了允許將多個引數傳遞至 範本。

**範例**

```
{{define "x"}}{{.arg0}} {{.arg1}}{{end}}{{template "x" (args 1 "2")}}
```

```
1 2
```

**externalURL**

`externalURL` 函數會傳回 Grafana 伺服器的外部 URL，如 ini 檔案 (ini) 中所設定。

**範例**

```
{{ externalURL }}
```

```
https://example.com/grafana
```

**graphLink**

`graphLink` 函數會針對指定的表達式和資料來源，傳回 中圖形檢視[探索 Grafana 第 9 版](v9-explore.md)的路徑。

**範例**

```
{{ graphLink "{\"expr\": \"up\", \"datasource\": \"gdev-prometheus\"}" }}
```

```
/explore?left=["now-1h","now","gdev-prometheus",{"datasource":"gdev-prometheus","expr":"up","instant":false,"range":true}]
```

**人文化**

`humanize` 函數可人為化小數位數。

**範例**

```
{{ humanize 1000.0 }}
```

```
1k
```

**humanize1024**

`humanize1024` 的運作方式類似於 ，`humanize`但使用 1024 做為基礎，而不是 1000。

**範例**

```
{{ humanize1024 1024.0 }}
```

```
1ki
```

**humanizeDuration**

`humanizeDuration` 函數會以秒為單位將持續時間人為化。

**範例**

```
{{ humanizeDuration 60.0 }}
```

```
1m 0s
```

**humanizePercentage**

`humanizePercentage` 函數會將比率值人為化為百分比。

**範例**

```
{{ humanizePercentage 0.2 }}
```

```
20%
```

**humanizeTimestamp**

`humanizeTimestamp` 函數會人為化 Unix 時間戳記。

**範例**

```
{{ humanizeTimestamp 1577836800.0 }}
```

```
2020-01-01 00:00:00 +0000 UTC
```

**比對**

`match` 函數會比對文字與規則表達式模式。

**範例**

```
{{ match "a.*" "abc" }}
```

```
true
```

**pathPrefix**

`pathPrefix` 函數會傳回 Grafana 伺服器的路徑，如 ini 檔案 (ini) 中所設定。

**範例**

```
{{ pathPrefix }}
```

```
/grafana
```

**tableLink**

`tableLink` 函數會針對指定的表達式和資料來源，傳回 中表格式檢視[探索 Grafana 第 9 版](v9-explore.md)的路徑。

**範例**

```
{{ tableLink "{\"expr\": \"up\", \"datasource\": \"gdev-prometheus\"}" }}
```

```
/explore?left=["now-1h","now","gdev-prometheus",{"datasource":"gdev-prometheus","expr":"up","instant":true,"range":false}]
```

**標題**

`title` 函數會大寫每個單字的第一個字元。

**範例**

```
{{ title "hello, world!" }}
```

```
Hello, World!
```

**toLower**

`toLower` 函數會傳回小寫的所有文字。

**範例**

```
{{ toLower "Hello, world!" }}
```

```
hello, world!
```

**toUpper**

`toUpper` 函數會傳回大寫的所有文字。

**範例**

```
{{ toUpper "Hello, world!" }}
```

```
HELLO, WORLD!
```

**reReplaceAll**

`reReplaceAll` 函數會取代符合規則表達式的文字。

**範例**

```
{{ reReplaceAll "localhost:(.*)" "example.com:$1" "localhost:8080" }}
```

```
example.com:8080
```

# 警示規則的狀態和運作狀態
<a name="v9-alerting-explore-state"></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)。

警示規則的狀態和運作狀態可協助您了解警示的數個關鍵狀態指標。

有三個關鍵元件：*警示規則狀態*、*警示執行個體狀態*和*警示規則運作*狀態。雖然相關，但每個元件傳達的資訊都略有不同。

**警示規則狀態**

警示規則可以處於下列其中一種狀態：


| State | Description | 
| --- | --- | 
|  正常  |  評估引擎傳回的任何時間序列都不會處於 `Pending`或 `Firing` 狀態。  | 
|  待定  |  評估引擎傳回的至少一個時間序列為 `Pending`。  | 
|  射擊  |  評估引擎傳回的至少一個時間序列為 `Firing`。  | 

**注意**  
警示會先轉換為 `pending`，然後再轉換為 `firing`，因此至少需要兩個評估週期才能觸發警示。

**警示執行個體狀態**

警示執行個體可以處於下列其中一種狀態：


| State | Description | 
| --- | --- | 
|  正常  |  既不發射也不待定的提醒狀態，一切都正常運作。  | 
|  待定  |  處於作用中狀態，且持續時間少於設定的閾值持續時間的提醒狀態。  | 
|  提醒  |  處於作用中狀態且超過設定的閾值持續時間的提醒狀態。  | 
|  NoData  |  未收到所設定時段的資料。  | 
|  錯誤  |  嘗試評估警示規則時發生錯誤。  | 

**警示規則運作狀態**

提醒規則可以具有下列其中一種運作狀態：


| State | Description | 
| --- | --- | 
|  確定  |  評估警示規則時沒有錯誤。  | 
|  錯誤  |  評估警示規則時發生錯誤。  | 
|  NoData  |  在規則評估期間，至少傳回一個時間序列中缺少資料。  | 

**`NoData`和 的特殊提醒 `Error`**

當警示規則評估產生狀態 `NoData`或 時`Error`，Grafana 警示將產生具有下列額外標籤的警示執行個體：


| 標籤 | Description | 
| --- | --- | 
|  提醒名稱  |  `DatasourceNoData` 或 `DatasourceError`取決於 狀態。  | 
|  datasource\$1uid  |  造成 狀態的資料來源 UID。  | 

您可以透過新增靜音、路由到聯絡點等方式，以與一般提醒相同的方式處理這些提醒。

# 聯絡點
<a name="v9-alerting-explore-contacts"></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、Webhook 等。當警示規則觸發時，通知會傳送至為聯絡點列出的所有聯絡點類型。您可以為 Grafana Alertmanager 和外部警示管理員設定聯絡點。

您也可以使用通知範本來自訂聯絡點類型的通知訊息。

**支援的聯絡點類型**

下表列出 Grafana 支援的聯絡點類型。


| 名稱 | 類型 | 
| --- | --- | 
|  Amazon SNS  |  `sns`  | 
|  OpsGenie  |  `opsgenie`  | 
|  Pager 職責  |  `pagerduty`  | 
|  Slack  |  `slack`  | 
|  VictorOps  |  `victorops`  | 

如需聯絡點的詳細資訊，請參閱 [使用聯絡點](v9-alerting-contact-points.md)和 [自訂通知](v9-alerting-notifications.md)。

# 通知
<a name="v9-alerting-explore-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)。

Grafana 使用警示管理員來傳送觸發和解決警示的通知。Grafana 有自己的 Alertmanager，在使用者介面中稱為「Grafana」，但也支援從其他 Alertmanager 傳送通知，例如 [Prometheus Alertmanager](https://prometheus.io/docs/alerting/latest/alertmanager/)。Grafana Alertmanager 使用通知政策和聯絡點來設定通知的傳送方式和位置；通知的傳送頻率；以及提醒是否應該在相同的通知中傳送、根據一組標籤以分組通知傳送，還是單獨傳送通知。

## 通知政策
<a name="v9-alerting-explore-notifications-policies"></a>

通知政策控制通知傳送的時間和位置。通知政策可以選擇在同一通知中一起傳送所有提醒、根據一組標籤在分組通知中傳送提醒，或將提醒作為個別通知傳送。您可以設定每個通知政策來控制應傳送通知的頻率，以及具有一個或多個靜音時間，以在一天中的特定時間和一週中的特定天禁止通知。

通知政策會組織在樹狀結構中，其中樹狀目錄的根目錄有一個稱為根政策的通知政策。只能有一個根政策，且無法刪除根政策。

特定路由政策是根政策的子系，可用於根據一組相符標籤，比對所有警示或警示子集。當警示相符的標籤符合警示中的標籤時，通知政策會比對警示。

特定路由政策可以有自己的子政策，稱為巢狀政策，允許額外的警示比對。特定路由政策的範例可能是傳送基礎設施提醒給營運團隊；而子政策可能會傳送高優先順序提醒給 Pagerduty，以及傳送低優先順序提醒給 Slack。

無論其標籤為何，所有提醒都符合根政策。不過，當根政策收到提醒時，它會查看每個特定路由政策，並將提醒傳送至符合提醒的第一個特定路由政策。如果特定路由政策有進一步的子政策，則可以嘗試將提醒與其中一個巢狀政策進行比對。如果沒有巢狀政策符合提醒，則特定路由政策是相符政策。如果沒有特定路由政策，或沒有特定路由政策符合提醒，則根政策是相符政策。

## 聯絡點
<a name="v9-alerting-explore-notifications-contacts"></a>

聯絡點包含傳送通知的組態。聯絡點是整合的清單，每個整合都會傳送通知到特定的電子郵件地址、服務或 URL。聯絡點可以有相同類型的多個整合，或不同類型的整合組合。例如，聯絡點可能包含分頁器職責整合、分頁器職責和 Slack 整合，或分頁器職責整合、Slack 整合和兩個 Amazon SNS 整合。您也可以設定沒有整合的聯絡點；在這種情況下，不會傳送通知。

在將通知新增至通知政策之前，聯絡點無法傳送通知。通知政策只能將提醒傳送至一個聯絡點，但可以同時將聯絡點新增至多個通知政策。當警示符合通知政策時，該警示會傳送至該通知政策中的聯絡點，然後傳送通知給其組態中的每個整合。

**注意**  
如需支援之聯絡點整合的資訊，請參閱 [聯絡點](v9-alerting-explore-contacts.md)。

## 範本化通知
<a name="v9-alerting-explore-notifications-templating"></a>

您可以使用 範本自訂通知。例如， 範本可用來變更傳送至 Slack 通知的標題和訊息。

範本不限於個別整合或聯絡點，而是可用於相同聯絡點中的多個整合，甚至是跨不同聯絡點的整合。例如，Grafana 使用者可以建立名為 的範本，`custom_subject_or_title`並將其用於 Pager Duty 中的範本主題和 Slack 訊息的標題，而無需建立兩個單獨的範本。

所有通知範本都會以 [Go 的範本語言](https://pkg.go.dev/text/template)撰寫，且位於警示頁面上的聯絡點索引標籤中。

## 靜音
<a name="v9-alerting-explore-notifications-silences"></a>

您可以使用靜音來將一或多個觸發規則的通知靜音。靜音不會阻止警示觸發或解決，或隱藏使用者介面中的觸發警示。只要其持續時間可以設定為分鐘、小時、天、月或年，靜音就會持續。