

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

# 使用 Grafana 版本 9
<a name="using-grafana-v9"></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 版本 9 的 Grafana 工作区。

**Topics**
+ [Grafana 9 中的控制面板](v9-dashboards.md)
+ [Grafana 9 中的面板和可视化](v9-panels.md)
+ [Grafana 9 中的 Explore](v9-explore.md)
+ [Grafana 9 版本中的警报](v9-alerts.md)

# Grafana 9 中的控制面板
<a name="v9-dashboards"></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)。

控制面板是一组由一个或多个[面板](v9-panels.md)组成的集合，这些面板整理和排列成一行或多行。Grafana 随附各种面板，让您可以轻松构造正确的查询并自定义可视化，从而创建满足您需求的完美控制面板。每个面板都可以与任何配置的 [连接到数据来源](AMG-data-sources.md) 中的数据交互。

控制面板快照是静态的。无法从快照中重新运行查询和表达式。因此，如果更新查询或表达式中的任何变量，也不会更改控制面板数据。

**Topics**
+ [使用控制面板](v9-dash-using-dashboards.md)
+ [构建控制面板](v9-dash-building-dashboards.md)
+ [管理控制面板](v9-dash-managing-dashboards.md)
+ [共享控制面板和面板](v9-dash-sharing.md)
+ [管理播放列表](v9-dash-managing-playlists.md)
+ [添加和管理控制面板变量](v9-dash-variables.md)
+ [评测控制面板使用情况](v9-dash-assess-dashboard-usage.md)
+ [在 Grafana 9 中搜索控制面板](v9-search.md)

# 使用控制面板
<a name="v9-dash-using-dashboards"></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-dash-features"></a>

您可以通过以下方式使用控制面板自定义数据的表示形式。


|  功能  |  说明  | 
| --- | --- | 
| **1。主页** | 单击 Grafana 主页图标，重定向到 Grafana 实例中配置的主页。 | 
| **2。标题** | 单击控制面板标题时，可以搜索当前文件夹中包含的控制面板。 | 
| **3。共享控制面板** | 使用此选项通过链接或快照共享当前控制面板。您还可以从共享模式中导出控制面板定义。 | 
| **4。添加新面板** | 使用此选项向当前控制面板添加面板、控制面板行或库面板。 | 
| **5。控制面板设置** | 使用此选项可以更改控制面板名称、文件夹和标签，管理变量和注释查询。有关控制面板设置的更多信息，请参阅 [修改控制面板设置](v9-dash-modify-settings.md)。 | 
| **6。时间选取器下拉列表** |  单击选择相对时间范围选项，设置自定义绝对时间范围。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/v9-dash-using-dashboards.html)  | 
| **7。缩小时间范围**  | 单击可缩小时间范围。有关如何使用时间范围控件的更多信息，请参阅 [设置控制面板时间范围](#v9-dash-setting-dashboard-time-range)。  | 
| **8。刷新控制面板** | 单击可立即触发查询并刷新控制面板数据。 | 
| **9。刷新控制面板时间间隔** | 单击选择控制面板自动刷新时间间隔。 | 
| **10。视图模式**  | 单击以在大屏幕（如电视或信息亭）上显示控制面板。视图模式会隐藏不相关的信息，例如导航菜单。  | 
| **11。控制面板面板** |  控制面板的主要构件是面板。要添加新面板、控制面板行或库面板，请单击**添加面板**。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/v9-dash-using-dashboards.html)  | 
| **12。图形图例** | 直接从图例中更改序列颜色、y 轴和序列可见性。 | 
| **13。控制面板搜索** | 单击**搜索**按名称或面板标题搜索控制面板。 | 
| **14。控制面板行** | 控制面板行是控制面板中的逻辑分隔线，用于将面板分组在一起。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/v9-dash-using-dashboards.html)  | 

## 键盘快捷键
<a name="v9-dash-keyboard-shortcuts"></a>

Grafana 有许多键盘快捷键可供选择。要显示所有可用的键盘快捷键，请按 **?** 或键盘上的 **h** 键。
+ `Ctrl+S` 保存当前控制面板。
+ `f` 打开控制面板查找器/搜索。
+  `d+k` 切换自助服务模式（隐藏菜单）。
+ `d+e` 展开所有行。
+ `d+s` 打开控制面板设置。
+ `Ctrl+K` 打开命令调色板。
+ `Esc` 在全屏视图或编辑模式下退出面板。还可以通过控制面板设置返回控制面板。

**聚焦面板**

要使用针对特定面板的快捷方式，请将指针悬停在面板上。
+ `e` 切换面板编辑视图 
+ `v` 切换面板全屏视图 
+ `ps` 打开面板共享功能 
+ `pd` 复制面板 
+ `pr` 删除面板 
+ `pl` 切换面板图例 

## 设置控制面板时间范围
<a name="v9-dash-setting-dashboard-time-range"></a>

Grafana 提供了多种方法来管理可视化数据的时间范围，包括控制面板、面板和警报。

本节介绍了支持的时间单位和相对范围、常用时间控件、控制面板范围的时间设置以及面板特定的时间设置。

**时间单位和相对范围**

Grafana 支持以下时间单位：`s (seconds)`、`m (minutes)`、`h (hours)`、`d (days)`、`w (weeks)`、`M (months)`、`Q (quarters)` 和 `y (years)`。

减号运算符可以回退时间（相对于现在）。如果要显示单位的完整周期（日、周或月），请在末尾附加 `/<time unit>`。要查看会计期，请使用 `fQ (fiscal quarter)` 和 `fy (fiscal year)` 时间单位。

加号运算符可以快进时间（相对于现在）。例如，您可以使用此功能来查看未来的预测数据。

下表提供了相对范围示例。


| 相对范围示例 | 来源 | 目标 | 
| --- | --- | --- | 
| 过去 5 分钟 |  `now-5m`  |  `now`  | 
| 当日至今 |  `now/d`  |  `now`  | 
| 本周 |  `now/w`  |  `now/w`  | 
| 本周至今 |  `now/w`  |  `now`  | 
| 本月 |  `now/M`  |  `now/M`  | 
| 本月至今 |  `now/M`  |  `now`  | 
| 上个月 |  `now-1M/M`  |  `now-1M/M`  | 
| 本年度至今 |  `now/Y`  |  `now`  | 
| 本年度 |  `now/Y`  |  `now/Y`  | 
| 上个财年 |  `now-1y/fy`  |  `now-1y/fy`  | 

**注意**  
 Grafana Alerting 不支持将 `now+n` 用于未来时间戳，也不支持将 `now-1n/n` 用于“从 n 开始到 n 结束”**时间戳。

**常用时间范围控件**

控制面板和面板时间控件具有通用的用户界面。以下介绍了常用的时间范围控件。
+ 当前时间范围（也称为“时间选取器”**）显示您正在查看的控制面板或面板中当前显示的时间范围。将光标悬停在字段上，可查看范围内的确切时间戳及其来源（如本地浏览器）。单击“当前时间范围”**进行更改。您可以使用“相对时间范围”**（例如过去 15 分钟）或“绝对时间范围”（例如从 `2020-05-14 00:00:00` 到 `2020-05-15 23:59:59`）。
+ 可从**相对时间范围**列表中选择**相对时间范围**。您可以使用顶部的输入字段来筛选列表。时间范围的一些示例包括“过去 30 分钟”**、“过去 12 小时”**、“过去 7 天”**、“过去 2 年”**、“昨天”**、“前天”**、“上周今天”**、“本日至今”**、“本周至今”**和“本月至今”**。
+ 可通过两种方式设置**绝对时间范围**：在**从**和**到**字段中输入确切的时间值或相对时间值，然后单击**应用时间范围**，或者在单击**从**或**到**字段时，从显示的日历中单击日期或日期范围。要应用选择，请单击**应用时间范围**。

*其他时间范围功能*

1. 若要缩小，请单击 **Cmd\$1Z** 或 **Ctrl\$1Z**。单击该图标可在控制面板或面板可视化中查看更大的时间范围。

1. 若要放大，请单击并拖动以选择要在可视化中查看的时间范围。

**注意**  
放大仅适用于图形可视化。

*刷新控制面板*

单击**刷新控制面板**图标可立即运行控制面板上的所有查询，并刷新可视化。触发刷新时，Grafana 会取消所有待处理的请求。

默认情况下，Grafana 不会自动刷新控制面板。根据面板设置，按自己的时间表运行查询。但是，如果要定期刷新控制面板，请单击**刷新控制面板**图标旁边的向下箭头，然后选择刷新间隔。

**使用 URL 控制时间范围**

您可以通过在控制面板 URL 中提供以下查询参数来控制面板的时间范围。
+ `from` 定义时间范围的下限（以毫秒纪元为单位指定）或[相对时间](#v9-dash-setting-dashboard-time-range)。
+ `to` 定义时间范围的上限（以毫秒纪元为单位指定）或相对时间。
+ `time` 和 `time.window` 定义了从 `time-time.window/2` 到 `time+time.window/2` 的时间范围。两个参数均应以毫秒为单位指定。例如，`?time=1500000000000&time.window=10000` 将得出 10 秒的时间范围，从 1499999995000 到 1500000005000。

# 构建控制面板
<a name="v9-dash-building-dashboards"></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 工作区并登录后，您可以创建控制面板并修改设置以满足您的需求。

**Topics**
+ [创建控制面板](v9-dash-creating.md)
+ [添加或编辑面板](v9-dash-edit-panels.md)
+ [修改控制面板设置](v9-dash-modify-settings.md)
+ [控制面板 URL 变量](v9-dash-dashboard-url-variables.md)
+ [向控制面板添加库面板](v9-dash-manage-library-panels.md)
+ [管理控制面板版本历史记录](v9-dash-manage-version-history.md)
+ [管理控制面板链接](v9-dash-manage-dashboard-links.md)
+ [控制面板 JSON 模型](v9-dash-dashboard-json-model.md)

# 创建控制面板
<a name="v9-dash-creating"></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-administration-authorization.md)。
+ 确定要向其中添加面板的控制面板。
+ 了解目标数据来源的查询语言。
+ 确保已添加要为其编写查询的数据来源。

 创建控制面板：

1. 登录 Grafana，将光标悬停在**控制面板**上，然后单击 **\$1 新建控制面板**。

1. 单击**添加新面板**。

1. 在**查询**选项卡的第一行中，单击下拉列表并选择数据来源。

1. 使用数据来源的查询语言编写或构造查询。

1. 在**可视化**列表中，选择可视化类型。Grafana 将显示应用可视化后的查询结果预览。有关更多信息，请参阅[可视化选项](v9-panels-viz.md)。

1. 通过以下方法调整面板设置。
   + [配置值映射](v9-panels-configure-value-mappings.md)
   + [可视化特定选项](v9-panels-viz.md)
   + [覆盖字段值](v9-panels-configure-overrides.md)
   + [配置阈值](v9-panels-configure-thresholds.md)
   + [配置标准选项](v9-panels-configure-standard-options.md)
**注意**  
大多数可视化效果需要进行一些调整，然后才能正确显示所需的信息。

1. 添加注释来描述可视化（或描述您的更改），然后单击页面右上角的**保存**。
**注意**  
如果您需要将控制面板恢复到以前的版本，注释会很有帮助。

**配置重复行**

您可以将 Grafana 配置为根据变量的值向控制面板动态添加面板或行。变量会动态更改控制面板中所有行的查询。有关重复面板的更多信息，请参阅[配置重复面板]()。

如果在设置变量时选择了 `Multi-value` 或 `Include all values`，也可以重复行。

在开始之前，请确保查询包含多值变量，然后完成以下步骤。

1. 在控制面板主页上，单击**添加面板**。

1. 在**添加面板**对话框中，单击**添加新行**。

1. 将鼠标悬停在行标题上，然后单击齿轮图标。

1. 在**行选项**对话框中，添加标题并选择要为其添加重复行的变量。
**注意**  
 要向控制面板用户提供上下文，请将变量添加到行标题。

**移动面板**

1. 打开控制面板。

1. 单击面板标题，然后将面板拖动到新位置。您可以将面板放置在控制面板上的任何位置。

**调整面板大小**

1. 打开控制面板。

1. 要调整面板大小，请单击并拖动面板右下角。您可以根据需要调整控制面板的面板大小。

# 添加或编辑面板
<a name="v9-dash-edit-panels"></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-dash-modify-settings"></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)。

您可以在控制面板设置页面上：
+ 编辑控制面板的常规属性，包括时间设置。
+ 添加注释查询。
+ 添加控制面板变量。
+ 添加链接。
+ 查看控制面板 JSON 模型

访问控制面板设置页面：

1. 在编辑模式下打开控制面板。

1. 单击页面顶部的**控制面板设置**（齿轮图标）。

**修改控制面板时间设置**

如果要更改控制面板时区、本地浏览器时间并指定自动刷新时间间隔，请调整控制面板时间设置。

**修改控制面板时间设置**

1. 在**控制面板**设置页面上，选择**常规**。

1. 导航到**时间选项**部分。

1. 根据以下描述指定时间设置。

1. 时区指定了您要监控的服务或系统的本地时区。这在监控跨多个时区运行的系统或服务时非常有用。
   + Grafana 对用户个人资料、团队或组织使用*默认*选定的时区。如果没有为用户个人资料、用户所属的团队或组织指定时区，Grafana 将使用本地浏览器时间。
   + 使用为查看用户浏览器配置的时区，即*本地浏览器时间*。这通常与计算机上设置的时区相同。
   + 使用标准 [ISO 8601 时区](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)，包括 UTC。
+ **自动刷新**可自定义相对时间显示的选项，自动刷新选项条目以逗号分隔，并接受任何有效的时间单位。
+ **现在延迟**通过输入时间延迟来覆盖 `now` 时间。使用此选项来适应数据聚合中的已知延迟，以避免 null 值。
+ **隐藏时间选取器**可删除 Grafana 时间选取器显示屏幕。

**注意**  
要使用时间控件，您的数据必须包含时间列。有关包含时间列的更多信息，请参阅特定[数据来源](AMG-data-sources.md)的文档。

**添加注释查询**

注释查询是查询事件的一种查询方式。这些事件可以在控制面板上的图形中显示为垂直线，并带有一个小图标，您可以将鼠标悬停在上方以查看事件信息。

**添加注释查询**

1. 在**控制面板设置**页面上，选择**注释**。

1. 选择**添加注释查询**。

1. 输入名称并选择数据来源。

1. 完成表单的其余部分以构建查询和注释。

查询编辑器 UI 会根据您选择的数据来源而变化。有关如何构造查询的详细信息，请参阅[数据来源](AMG-data-sources.md)文档。

**添加变量**

变量使您能够创建更具交互性和动态性的控制面板。您可以在指标查询中使用变量代替服务器、应用程序和传感器名称等硬编码。变量以下拉列表的形式显示在控制面板顶部。通过这些下拉列表，可以轻松更改控制面板中显示的数据。

有关变量的更多信息，请参阅[变量](v9-dash-variables.md)。

1. 在**控制面板设置**页面上，单击左侧菜单中的**变量**，然后单击**添加变量**按钮。

1. 在**常规**部分，输入变量的名称。这是您稍后将在查询中使用的名称。

1. 选择变量**类型**。
**注意**  
选择的变量类型会影响您在页面上填充的字段。

1. 定义变量并单击**更新**。

**添加链接**

控制面板链接让您可以将指向其他控制面板和网站的链接直接放在控制面板标题下方。通过链接，可以轻松导航到其他相关的控制面板和内容。

1.  在**控制面板设置**页面上，单击左侧菜单中的**链接**，然后单击**添加链接**按钮。

1.  输入标题，然后在**类型**字段中选择**控制面板**或**链接**。

1.  要添加控制面板链接，请添加可选标签，选择任意控制面板链接选项，然后单击**应用**。
**注意**  
标签在创建包含特定标签的控制面板的动态下拉列表时非常有用。

1.  要添加链接，请添加当用户将鼠标悬停在链接上时显示的 URL 和工具提示文本，选择链接旁边显示的图标，然后选择任意控制面板链接选项。

**查看控制面板 JSON 模型** 

Grafana 中的控制面板由 JSON 对象表示，该对象存储其控制面板的元数据。控制面板元数据包括控制面板属性、面板中的元数据、模板变量、面板查询等。

要查看控制面板 JSON 模型，请在**控制面板设置**页面上单击 **JSON**。

有关 JSON 字段的更多信息，请参阅 [JSON 字段](v9-dash-dashboard-json-model.md)。

# 控制面板 URL 变量
<a name="v9-dash-dashboard-url-variables"></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 可以应用在控制面板中作为查询参数传递的变量值。 URLs有关更多信息，请参阅[管理控制面板链接](v9-dash-manage-dashboard-links.md)以及[模板和变量](v9-dash-variables.md)。

**将变量作为查询参数传递**

Grafana 将前缀为 `var-` 的查询字符串参数解释为给定控制面板中的变量。

例如，在此 URL 中：

```
https://${your-domain}/path/to/your/dashboard?var-example=value
```

查询参数 `var-example=value` 表示值为 `value` 的控制面板变量。

**为变量传递多个值**

要传递多个值，请为每个值重复一次变量参数。

```
https://${your-domain}/path/to/your/dashboard?var-example=value1&var-example=value2
```

Grafana 将 `var-example=value1&var-example=value2` 解释为带有两个值的控制面板变量示例：`value1` 和 `value2`。

**将变量添加到控制面板链接**

当您从控制面板的设置生成变量时，Grafana 可以将变量添加到控制面板链接中。有关添加变量的更多信息和步骤，请参阅[管理控制面板链接](v9-dash-manage-dashboard-links.md)。

**传递临时筛选条件**

临时筛选条件将键或值筛选条件应用于使用指定数据来源的所有指标查询。有关更多信息，请参阅[临时筛选条件]()。

要将临时筛选条件作为查询参数传递，请使用变量语法传递临时筛选条件变量，并提供键、运算符作为值、管道分隔列表作为值。

例如，在此 URL 中：

`https://${your-domain}/path/to/your/dashboard?var-adhoc=example_key|=|example_value` 

查询参数 `var-adhoc=key|=|value` 使用 `example_key` 键、`=` 运算符和 `example_value` 值应用配置为临时控制面板变量的临时筛选条件。

**注意**  
使用即席过滤 URLs 器共享时，请记得对 URL 进行编码。在上面的示例中，将管道 `(|)` 替换为 `%7C`，将相等运算符 `(=)`替换为 ` %3D`。

**使用 URL 控制时间范围**

要设置控制面板的时间范围，请使用 `from`、`to`、`time` 和 `time.window` 查询参数。因为这些不是变量，所以不需要 `var-` 前缀。

# 向控制面板添加库面板
<a name="v9-dash-manage-library-panels"></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)。

库面板是可在任何控制面板中使用的可重用面板。更改库面板时，更改会传播到使用该面板的所有实例。库面板简化了面板在多个控制面板中的重用。

您可以将库面板与保存的控制面板一起保存在文件夹中。

**创建库面板**

创建库面板时，来源控制面板上的面板也将转换为库面板。转换面板后，您需要保存原始控制面板。

1. 在编辑模式下打开面板。

1. 在面板显示选项中，单击向下箭头选项以可视化效果进行更改。

1. 要打开**创建**对话框，请单击**库面板**选项，然后单击**创建库面板**。

1. 在**库面板名称**中，输入名称。

1. 在**保存在文件夹**中，选择要保存库面板的文件夹。

1. 要保存更改，请单击**创建库面板**。

1. 要保存控制面板，请单击**保存**。

创建库面板后，您可以在面板所在的控制面板上对其进行修改。保存更改后，库面板的所有实例都会反映这些修改。

**向控制面板添加库面板**

如果您想向其他控制面板用户提供可视化效果，请将 Grafana 库面板添加到控制面板。

1. 将鼠标悬停在左侧菜单的**控制面板**选项上，然后从下拉选项中选择**新建控制面板**。此时将打开**添加面板**对话框。

1. 单击从面板库中**添加面板**选项。您将看到库面板的列表。

1. 筛选列表或搜索以查找要添加的面板。

1. 单击面板将其添加到控制面板。

**取消链接库面板**

如果要对库面板进行更改，而不影响库面板的其他实例，请取消链接该面板。

1. 将鼠标悬停在左侧菜单的**控制面板**上，然后单击**库面板**。

1. 选择正在其他控制面板中使用的库面板。

1. 选择要取消链接的面板。

1. 单击面板标题，然后单击**编辑**。该面板将在编辑模式下打开。

1. 单击页面右上角的**取消链接**选项。

**查看库面板列表**

如果要对库面板进行更改，而不影响库面板的其他实例，请取消链接该面板。

1. 将鼠标悬停在左侧菜单的**控制面板**选项上，然后单击**库面板**。您可以看到先前定义的库面板列表。

1. 如果您知道特定库面板的名称，请搜索该面板。您也可以按文件夹或类型筛选面板。

**删除库面板**

当您不再需要某个库面板时，请将其删除。

1. 将鼠标悬停在左侧菜单的**控制面板**上，然后选择**库面板**。

1. 选择要删除的面板。

1. 单击库名称旁边的删除图标。

# 管理控制面板版本历史记录
<a name="v9-dash-manage-version-history"></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)。

每当您保存控制面板的某个版本时，都会保存该版本的副本，这样控制面板的先前版本永远不会丢失。输入控制面板设置，然后在左侧菜单中选择**版本**，即可获得这些版本的列表。

控制面板版本历史记录功能允许比较和恢复到之前保存的控制面板版本。

**比较两个控制面板版本**

要比较两个控制面板版本，请从列表中选择要比较的两个版本。单击**比较版本**以查看两个版本之间的差异。

单击按钮后，您将转到差异视图。默认情况下，您将看到更改的文本摘要。

如果要查看代表控制面板的原始 JSON 的差异，也可以单击底部的**查看 JSON 差异**按钮来实现。

如果想要恢复到要比较的版本，可以单击右上角的**恢复到版本 <x>** 按钮来实现。

**恢复到之前保存的控制面板版本**

如果需要恢复到之前保存的控制面板版本，可以单击控制面板版本列表中一行右侧的**恢复**按钮，也可以单击差异视图中出现的**恢复到版本 <x>** 按钮。单击该按钮将弹出以下弹出窗口，提示您确认恢复。

恢复到先前版本后，将创建一个新版本，其中包含与先前版本完全相同的数据，只是版本号不同。这将在新控制面板版本中该行的**备注列**中指示。这样只是为了确保您之前的控制面板版本不受更改的影响。

# 管理控制面板链接
<a name="v9-dash-manage-dashboard-links"></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 中的所有链接类型都用于创建指向其他控制面板或外部网站的快捷方式，但它们在不同的环境中起作用。
+ 如果链接与控制面板中的大多数（如果不是全部）面板相关，请使用控制面板链接。
+ 如果要深入查看特定面板，请使用面板链接。
+ 如果要链接到外部站点，您可以使用控制面板链接或面板链接。
+ 如果要深入查看特定序列，甚至是单个测量值，请使用数据链接。

**使用 URL 控制时间范围**

要控制面板或控制面板的时间范围，您可以在控制面板 URL 中提供查询参数：
+ `from` 定义时间范围的下限，以毫秒纪元为单位指定。
+ `to` 定义时间范围的上限，以毫秒纪元为单位指定。
+ `time` 和 `time.window` 定义了从 `time-time.window/2` 到 `time+time.window/2` 的时间范围。两个参数均应以毫秒为单位指定。例如，`?time=1500000000000&time.window=10000` 将得出 10 秒的时间范围，从 1499999995000 到 1500000005000。

**控制面板链接**

创建控制面板链接时，可包含时间范围和当前模板变量，以直接跳转到另一个控制面板中的相同上下文。这样，您就不必担心发送链接的人查看的是否是正确的数据。有关其他类型的链接，请参阅[数据链接变量]()。

仪表板链接也可以用作外部系统的快捷方式，例如使用[当前仪表板名称提交 GitHub 问题](https://github.com/grafana/grafana/issues/new?title=Dashboard%3A%20HTTP%20Requests)。

添加控制面板链接后，则会显示在控制面板的右上角。

**向控制面板添加链接**

在当前控制面板的顶部添加指向其他控制面板的链接。

1. 在查看要链接的控制面板时，单击屏幕顶部的齿轮以打开**控制面板设置**。

1. 单击**链接**，然后单击**添加控制面板链接**或**新建**。

1. 在**类型**中，选择**控制面板**。

1. 从下面选择链接选项。
   + **带标签**：输入标签，将链接的控制面板限制为仅包含带有您所输入标签的控制面板。否则，Grafana 将包含指向所有其他控制面板的链接。
   + **作为下拉列表**：如果要链接到多个控制面板，则可能需要选择此选项，并在下拉列表中添加可选标题。否则，Grafana 会在控制面板顶部并排显示控制面板链接。
   + **时间范围**：选择此选项可在链接中包含控制面板的时间范围。当用户单击链接时，链接的控制面板将会打开，并显示已设置的指示时间范围。
   + **变量值**：选择此选项可在链接中包含当前用作查询参数的模板变量。当用户单击链接时，链接的控制面板中的任何匹配模板都将设置为链接中的值。有关更多信息，请参阅[控制面板 URL 变量](v9-dash-dashboard-url-variables.md)。
   + **在新选项卡中打开**：如果您希望控制面板链接在新选项卡或窗口中打开，请选择此选项。

1. 单击 **Add（添加）**。

**向控制面板添加 URL 链接**

在当前控制面板的顶部添加指向 URL 的链接。您可以链接到任何可用的 URL，包括控制面板、面板或外部站点。甚至可以控制时间范围，确保用户在 Grafana 中放大正确的数据。

1. 在查看要链接的控制面板时，单击屏幕顶部的齿轮以打开**控制面板设置**。

1. 单击**链接**，然后单击**添加控制面板链接**或**新建**。

1. 在“类型”中，选择**链接**。

1. 从下面选择链接选项。
   + **URL**：输入要链接的 URL。根据目标，您可能希望包含字段值。有关更多信息，请参阅此 [Github 示例](https://github.com/grafana/grafana/issues/new?title=Dashboard%3A%20HTTP%20Requests)。
   + **标题**：输入您希望链接显示的标题。
   + **标题**：输入您希望链接显示的工具提示。
   + **图标**：选择要与链接一起显示的图标。
   + **时间范围**：选择此选项可在链接中包含控制面板的时间范围。当用户单击链接时，链接的控制面板将会打开，并显示设置的指示时间范围。
     + `from` 定义时间范围的下限，以毫秒纪元为单位指定。
     + `to` 定义时间范围的上限，以毫秒纪元为单位指定。
     + `time` 和 `time.window` 定义了从 `time-time.window/2` 到 `time+time.window/2` 的时间范围。两个参数均应以毫秒为单位指定。例如，`?time=1500000000000&time.window=10000` 将得出 10 秒的时间范围，从 1499999995000 到 1500000005000。
   + **变量值**：选择此选项可在链接中包含当前用作查询参数的模板变量。当用户单击链接时，链接的控制面板中的任何匹配模板都将设置为链接中的值。

     变量格式如下：

     `https://${you-domain}/path/to/your/dashboard?var-${template-varable1}=value1&var-{template-variable2}=value2`
   + **在新选项卡中打开**：如果您希望控制面板链接在新选项卡或窗口中打开，请选择此选项

1. 单击 **Add（添加）**。

**更新控制面板链接**

要更改或更新现有控制面板链接，请按照以下步骤操作。

1. 在**控制面板设置**的**链接**选项卡上，单击要编辑的现有链接。

1. 更改设置，然后单击**更新**。

**复制控制面板链接**

要复制现有控制面板链接，请单击要复制的现有链接旁边的复制图标。

**删除控制面板链接**

要删除现有控制面板链接，请单击要删除的重复图标旁边的垃圾桶图标。

**面板链接**

每个面板都有自己的一组链接，这些链接显示在面板左上角。您可以链接到任何可用的 URL，包括控制面板、面板或外部站点。甚至可以控制时间范围，确保用户在 Grafana 中放大正确的数据。

要查看可用的面板链接，请单击面板左上角的图标。
+ **添加面板链接**：每个面板都有自己的一组链接，这些链接显示在面板左上角。您可以链接到任何可用的 URL，包括控制面板、面板或外部站点。甚至可以控制时间范围，确保用户在 Grafana 中放大正确的数据。单击面板左上角的图标，查看可用的面板链接。

  1. 将光标悬停在要添加链接的面板上，然后按 `e` 键。或者单击面板标题旁边的下拉箭头，然后单击**编辑**。

  1. 在**面板**选项卡上，向下滚动到**链接**部分。

  1. 展开**链接**，然后单击**添加链接**。

  1. 输入**标题**。**标题**是链接的可读标签，显示在 UI 中。

  1. 输入要链接的 **URL**。您甚至可以添加在控制面板中定义的一个模板变量。按 `Ctrl+Space` 或 `Cmd+Space` 并单击 URL 字段以查看可用的变量。通过向面板链接添加模板变量，该链接会将用户引导到正确的上下文，且相关变量已设置。

     您还可以使用时间变量。
     + `from` 定义时间范围的下限，以毫秒纪元为单位指定。
     + `to` 定义时间范围的上限，以毫秒纪元为单位指定。
     + `time` 和 `time.window` 定义了从 `time-time.window/2` 到 `time+time.window/2` 的时间范围。两个参数均应以毫秒为单位指定。例如，`?time=1500000000000&time.window=10000` 将得出 10 秒的时间范围，从 1499999995000 到 1500000005000。
+ **更新面板链接**

  1. 在**面板**选项卡上，找到要更改的链接。

  1. 单击**编辑**（铅笔）图标打开编辑链接窗口。

  1. 进行任何必需的更改。

  1. 单击**保存**以保存更改并关闭窗口。

  1. 单击右上角的**保存**将更改保存到控制面板。
+ **删除面板链接**

  1. 在**面板**选项卡上，找到要更改的链接。

  1. 单击要删除的链接旁边的 **X** 图标。

  1. 单击右上角的**保存**将更改保存到控制面板。

# 控制面板 JSON 模型
<a name="v9-dash-dashboard-json-model"></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 中的控制面板由 JSON 对象表示，该对象存储其控制面板的元数据。控制面板元数据包括控制面板属性、面板元数据、模板变量和面板查询。

查看控制面板 JSON 对象。

1. 导航到控制面板。

1. 在顶部导航菜单中，单击**控制面板设置**（齿轮）图标。

1. 单击 **JSON 模型**。

**JSON 字段**

当用户创建新控制面板时，将使用以下字段初始化新的控制面板 JSON 对象。

**注意**  
在以下 JSON 中，ID 显示为 null，这是在保存控制面板之前分配的默认值。保存控制面板后，会为 `id` 字段分配一个整数值。

```
{
  "id": null,
  "uid": "cLV5GDCkz",
  "title": "New dashboard",
  "tags": [],
  "style": "dark",
  "timezone": "browser",
  "editable": true,
  "graphTooltip": 1,
  "panels": [],
  "time": {
    "from": "now-6h",
    "to": "now"
  },
  "timepicker": {
    "time_options": [],
    "refresh_intervals": []
  },
  "templating": {
    "list": []
  },
  "annotations": {
    "list": []
  },
  "refresh": "5s",
  "schemaVersion": 17,
  "version": 0,
  "links": []
}
```

下面介绍了控制面板 JSON 中的每个字段。


| Name | 用法 | 
| --- | --- | 
| **id** | 控制面板的唯一数字标识符（由数据库生成） | 
| **uid** | 任何人都可以生成的唯一控制面板标识符，字符串（8-40） | 
| **删除实例快照** | 控制面板的当前标题 | 
| **tags** | 与控制面板关联的标签，字符串数组 | 
| **style** | 控制面板的主题，例如*深色*或*浅色* | 
| **timezone** | 控制面板的时区，例如 *UTC* 或*浏览器* | 
| **editable** | 控制面板是否可编辑 | 
| **graphTooltip** | 0 表示无共享十字准线或工具提示（默认），1 表示共享十字准线，2 表示共享十字准线和共享工具提示 | 
| **时间** | 控制面板的时间范围，比如*过去 6 小时*或*过去 7 天* | 
| **timepicker** | 时间选取器元数据，详情请参阅[时间选取器部分](#v9-dash-dashboard-json-model) | 
| **templating** | 模板化元数据，详情请参阅[模板化部分](#v9-dash-dashboard-json-model) | 
| **annotations** | 注释元数据，有关如何添加注释，请参阅[注释](v9-panels-annotate-visualizations.md) | 
| **refresh** | 自动刷新间隔 | 
| **schemaVersion** | JSON 架构的版本（整数），每当 Grafana 更新对所述架构进行更改时都会递增 | 
| **版本** | 控制面板的版本（整数），每次更新控制面板时都会递增 | 
| **panels** | 面板阵列（详情见下文） | 

**面板**

面板是控制面板的组成部分。由数据来源查询、图形类型、别名等构成。面板 JSON 由一组 JSON 对象组成，每个对象代表不同的面板。大多数字段对于所有面板都是通用的，但有些字段取决于面板类型。以下是文本面板的面板 JSON 示例。

```
"panels": [
  {
    "type": "text",
    "title": "Panel Title",
    "gridPos": {
      "x": 0,
      "y": 0,
      "w": 12,
      "h": 9
    },
    "id": 4,
    "mode": "markdown",
    "content": "# title"
  }
```

**面板大小和位置**

gridPos 属性以网格坐标描述了面板大小和位置。
+ `w`：1-24（控制面板的宽度分为 24 列）
+ `h`：以网格高度为单位，每个网格代表 30 像素。
+ `x`：x 位置，与 `w` 的单位相同。
+ `y`：y 位置，与 `h` 的单位相同。

网格具有负重力，如果面板上方有空白空间，则会向上移动面板。

**Timepicker**

```
"timepicker": {
    "collapse": false,
    "enable": true,
    "notice": false,
    "now": true,
    "refresh_intervals": [
      "5s",
      "10s",
      "30s",
      "1m",
      "5m",
      "15m",
      "30m",
      "1h",
      "2h",
      "1d"
    ],
    "status": "Stable",
    "type": "timepicker"
  }
```

**模板化**

`templating` 字段包含一组模板变量，及其保存的值和一些其他元数据。

```
"templating": {
    "enable": true,
    "list": [
       {
        "allFormat": "wildcard",
        "current":  {
          "tags": [],
          "text": "prod",
          "value": "prod"
        },
        "datasource": null,
        "includeAll": true,
        "name": "env",
        "options": [
           {
            "selected": false,
            "text": "All",
            "value": "*"
          },
           {
            "selected": false,
            "text": "stage",
            "value": "stage"
          },
           {
            "selected": false,
            "text": "test",
            "value": "test"
          }
        ],
        "query": "tag_values(cpu.utilization.average,env)",
        "refresh": false,
        "type": "query"
      },
       {
        "allFormat": "wildcard",
        "current":  {
          "text": "apache",
          "value": "apache"
        },
        "datasource": null,
        "includeAll": false,
        "multi": false,
        "multiFormat": "glob",
        "name": "app",
        "options": [
           {
            "selected": true,
            "text": "tomcat",
            "value": "tomcat"
          },
           {
            "selected": false,
            "text": "cassandra",
            "value": "cassandra"
          }
        ],
        "query": "tag_values(cpu.utilization.average,app)",
        "refresh": false,
        "regex": "",
        "type": "query"
      }
    ]
  }
```

# 管理控制面板
<a name="v9-dash-managing-dashboards"></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)。

控制面板由一个或多个[面板](v9-panels.md)组成，可将您的数据直观地呈现为一行或多行。

有关创建控制面板的更多信息，请参阅[添加和整理面板]()。

## 创建控制面板文件夹
<a name="v9-dash-create-dashboard-folder"></a>

文件夹有助于整理和分组控制面板，这在您有许多控制面板或多个团队使用同一 Grafana 实例时非常有用。

**先决条件**

确保您拥有 Grafana 管理员权限。有关控制面板权限的更多信息，请参阅[控制面板权限](Grafana-administration-authorization.md)。

**创建控制面板文件夹**

1. 登录 Grafana，在侧边菜单上，单击**控制面板 > 新建文件夹**

1. 输入唯一名称，然后单击**创建**。

**注意**  
保存控制面板时，您可以选择要保存控制面板的文件夹，也可以创建新文件夹。

## 管理控制面板和文件夹
<a name="v9-dash-manage-dashboard-folder"></a>

在**管理控制面板和文件夹**页面上，您可以：
+ 创建文件夹
+ 创建控制面板
+ 将控制面板移入文件夹
+ 删除多个控制面板
+ 导航到文件夹页面，您可以在其中分配文件夹和控制面板权限

**控制面板文件夹页面**

您可以在**控制面板文件夹**页面上执行以下操作：
+ 移动或删除文件夹中的控制面板。
+ 重命名文件夹（位于**设置**选项卡下）。
+ 为文件夹分配权限（由文件夹中的控制面板继承）。

要导航到控制面板文件夹页面，将鼠标悬停在控制面板搜索结果列表或**管理控制面板和文件夹**页面中的某个文件夹上时，会出现一个齿轮图标，单击此图标。

**控制面板权限**

您可以为文件夹分配权限。您分配的任何权限都将由文件夹中的控制面板继承。使用访问控制列表（ACL），可以为**组织角色**、**团队**和**用户**分配权限。

有关更多信息，请参阅[权限](Grafana-permissions.md)。

## 导出和导入控制面板
<a name="v9-dash-export-import-dashboards"></a>

您可以使用 Grafana UI 或 HTTP API 导出和导入控制面板。

**导出控制面板**

控制面板导出操作会创建一个 Grafana JSON 文件，其中包含您需要的一切，包括布局、变量、样式、数据源、查询等，以便您以后可以导入控制面板。

**注意**  
Grafana 会将 JSON 文件下载到您的本地计算机。

1. 打开要导出的控制面板。

1. 选择共享图标。

1. 选择**导出**。

1. 选择**保存到文件**。

**使控制面板可移植**

如果要导出控制面板供其他人使用，则可以为指标前缀（使用常量变量）和服务器名称之类的内容添加模板变量。

`Constant` 类型的模板变量将自动隐藏在控制面板中，并在导入控制面板时作为必必需输入添加。

**导入控制面板**

1. 在侧边菜单中选择**控制面板**。

1. 选择**新建**，然后从下拉菜单中选择**导入**。

1. 执行下列步骤之一。
   + 上传控制面板 JSON 文件。
   + 粘贴 [Grafana.com](https://grafana.com/) 控制面板网址。
   + 将控制面板 JSON 文本直接粘贴到文本区域。

   通过导入过程，您可以更改控制面板的名称，选择希望控制面板使用的数据来源，指定任何指标前缀（如果控制面板使用任何前缀）。

## 控制面板问题排查
<a name="v9-dash-troubleshooting"></a>

本节提供了一些信息来帮助您解决控制面板中的常见问题。

**控制面板运行缓慢**

如果控制面板运行缓慢，请考虑以下方面：
+ 您是否尝试在图形上渲染数十（或数百或数千）个时间序列？ 这可能会导致浏览器延迟。尝试使用 highestMax（Graphite）等函数来减少返回的序列。
+ 有时，序列名称可能非常大。这会导致响应大小变大。尝试使用别名来减小返回的序列名称大小。
+ 您是查询多个时间序列还是查询较长的时间范围？ 这两种情况都可能导致 Grafana 或您的数据来源提取大量数据，从而减慢速度。
+ 可能导致您的网络基础设施负载过高。如果缓慢程度不一致，这可能就是问题所在。

**控制面板刷新率问题**

默认情况下，Grafana 每 30 秒查询一次数据来源。在控制面板上设置低刷新率会给后端造成不必要的压力。在许多情况下，不需要频繁地查询，因为数据不会发送到系统，可以看到变化。

如果遇到此问题，建议使用以下解决方案。
+ 除非需要，否则请勿在控制面板、面板或变量上启用自动刷新。用户可以手动刷新浏览器，也可以将刷新率设置为合理的时间段（例如每十分钟或每小时）。
+ 如果需要，则将刷新率设置为每分钟一次。用户可以随时手动刷新控制面板。
+ 如果控制面板的时间段较长（例如一周），则可能不需要自动刷新。

**处理或呈现的 null 数据发生错误或令人困惑**

有些应用程序会间歇性地发布数据。例如，仅在事件发生时发布指标。默认情况下，Grafana 图形会在数据点之间用线连接。

# 共享控制面板和面板
<a name="v9-dash-sharing"></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 允许您与组织内的其他用户共享控制面板和面板，在某些情况下，还可以在 Web 上公开共享。您可以使用以下方式共享：
+ 直接链接
+ 快照
+ 导出链接（仅适用于控制面板）

您必须拥有授权查看者权限，才能查看通过直接链接渲染的图像。

除非您为 Grafana 实例启用了匿名访问权限，否则查看嵌入式链接也需要相同的权限。

以快照形式共享面板或控制面板时，快照（拍摄快照时的面板或控制面板）将在 Web 上公开发布。任何拥有链接的人都可以访问快照。由于快照不需要任何授权即可查看，因此 Grafana 会删除与快照来源账户相关的信息，以及快照中的任何敏感数据。

## 共享控制面板
<a name="v9-dash-share-dashboard"></a>

您可以将控制面板以直接链接或快照的形式共享。您也可以导出控制面板。

**注意**  
如果更改控制面板，请确保在共享之前保存更改。

1. 导航到 Grafana 实例的主页。

1. 单击顶部导航中的共享图标。

   共享对话框将打开并显示**链接**选项卡。

**共享直接链接**

**链接**选项卡显示当前时间范围、模板变量和默认主题。您还可以共享短 URL。

1. 单击**副本**。此操作将默认或短 URL 复制到剪贴板。

1. 将复制的 URL 发送给有权查看链接的 Grafana 用户。

**发布快照**

控制面板快照公开共享交互式控制面板。Grafana 会去除敏感数据，例如查询（指标、模板和注释）和面板链接，仅保留嵌入在控制面板中的可见指标数据和序列名称。任何拥有链接的人都可以访问控制面板快照。

您可以将快照发布到本地实例。

1. 单击**本地快照**。

1. Grafana 会生成快照的链接。复制快照链接，然后在组织内部或在 Web 上公开共享。

**导出控制面板**

Grafana 控制面板可以轻松导出和导入。有关更多信息，请参阅[导入和导出控制面板](v9-dash-managing-dashboards.md#v9-dash-export-import-dashboards)。

## 共享面板
<a name="v9-dash-share-panel"></a>

您可以将面板以直接链接或快照的形式共享。您也可以使用任何面板的**共享**选项来创建库面板。

1. 单击面板标题以打开面板菜单。

1. 单击**共享**。共享对话框将打开并显示**链接**选项卡。

**使用直接链接**

**链接**选项卡显示当前时间范围、模板变量和默认主题。您可以选择启用短 URL 以进行共享。

1. 单击**复制**将默认或短 URL 复制到剪贴板。

1. 将复制的 URL 发送给有权查看链接的 Grafana 用户。

1. 您也可以单击**直接链接渲染图像**，共享面板的图像。

**查询服务器端渲染图像的字符串参数**
+ **width**：宽度（像素）。默认值为 800。
+ **height**：高度（像素）。默认值为 400。
+ **tz**：时区格式 `UTC%2BHH%3AMM`，其中 HH 和 MM 在 UTC 之后以小时和分钟为单位偏移。
+ **timeout**：秒数。如果查询面板所需的时间超过默认的 30 秒，则可以延长超时时间。
+ **scale**：用于配置设备比例因子的数值。默认值为 1。使用较高的值可生成更详细的图像（更高的 DPI）。Grafana 7.0\$1 支持。

**发布快照**

面板快照公开共享交互式面板。Grafana 会去除敏感数据，仅保留控制面板中嵌入的可见指标数据和序列名称。任何拥有链接的人都可以访问面板快照

您可以将快照发布到本地实例。

1. 在**共享面板**对话框中，单击**快照**以打开选项卡。

1. 单击**本地快照**。Grafana 会生成快照的链接。

1. 复制快照链接，然后在组织内部或在 Web 上公开共享。

如果您创建的快照有误，请单击**删除快照**，从 Grafana 实例中删除快照。

**创建库面板**

从**共享面板**对话框创建库面板。

1. 单击**库面板**。

1. 在**库面板名称**中，输入名称。

1. 在**保存在文件夹**中，选择要保存库面板的文件夹。默认情况下，选择**常规**文件夹。

1. 单击**创建库**面板以保存更改。

1. 单击**保存**以保存控制面板。

# 管理播放列表
<a name="v9-dash-managing-playlists"></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 侧边菜单访问播放列表功能。

## 访问、共享和控制播放列表
<a name="v9-dash-access-share-control-playlist"></a>

使用本节中的信息访问现有播放列表。可通过五种可用模式启动和控制播放列表的显示。

**访问播放列表**

1. 将光标悬停在 Grafana 的侧边菜单上。

1. 单击**播放列表**。

   您将看到现有播放列表。

**启动播放列表**

您可以在五种不同的视图模式下启动播放列表。视图模式决定了菜单和导航栏在控制面板上的显示方式。

默认情况下，每个控制面板都会显示在**间隔**字段中输入的时间量，该时间量是您在创建或编辑播放列表时设置的。启动播放列表后，可通过页面顶部的导航栏来控制。

播放列表在 `Interval` 字段中指定的时间内显示每个控制面板，该时间是在创建或编辑播放列表时设置的。启动播放列表后，可通过页面顶部的导航栏来控制。

1. 访问播放列表页面以查看现有播放列表的列表。

1. 找到要启动的播放列表，然后单击**启动播放列表**。

   此时将打开启动播放列表对话框。

1. 根据下表中的信息，从五种可用的播放列表模式中选择一种。

1. 单击开始。


| Mode | 说明 | 
| --- | --- | 
| 正常模式 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/v9-dash-managing-playlists.html)  | 
| 电视模式 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/v9-dash-managing-playlists.html)  | 
| 电视模式（带有自动调整面板） |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/v9-dash-managing-playlists.html)  | 
| 自助服务模式 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/v9-dash-managing-playlists.html)  | 
| 自助服务模式（带有自动调整面板） |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/v9-dash-managing-playlists.html)  | 

**控制播放列表**

启动播放列表后，可通过屏幕顶部的导航栏，在**正常**或**电视**模式下控制播放列表。按下键盘上的 `Esc` 键停止播放列表。


| 按钮 | Action | 
| --- | --- | 
| 前进（双右箭头） | 前进到下一个控制面板。 | 
| 后退（向左箭头） | 返回到上一个控制面板。 | 
| 停止（方形箭头） | 结束播放列表，退出到当前控制面板。 | 
| 循环视图模式（监视器图标） | 在不同的视图模式下旋转控制面板的显示。 | 
| 时间范围 | 显示某个时间范围内的数据。使用向下箭头，可将其设置为显示最近 5 分钟至 5 年前的数据，或自定义时间范围。 | 
| 刷新（圆形箭头） | 重新加载控制面板以显示当前数据。可使用下拉箭头将其设置为每 5 秒到 1 天自动重新加载一次。 | 

## 创建播放列表
<a name="v9-dash-create-playlist"></a>

您可以创建一个播放列表，按照设定的顺序和控制面板之间的时间间隔依次显示控制面板。

1. 单击播放列表页面上的**新建播放列表**。

1. 在**名称**文本框中输入描述性名称。

1. 在**间隔**文本框中输入时间间隔。
**注意**  
您添加的控制面板将按顺序列出。

1. 在**控制面板**中，使用**按标题添加**和**按标签添加**下拉选项将现有控制面板添加到播放列表。

1. 可选：
   + 按名称、正则表达式或标签搜索控制面板。
   + 按已加星标的状态或标签筛选结果。
   + 使用向上和向下箭头图标对您添加的控制面板重新排序。
   + 单击控制面板旁边的 **X** 图标，从播放列表中删除控制面板。

1. 单击**保存**保存您的更改。

## 保存播放列表
<a name="v9-dash-save-playlist"></a>

您可以保存播放列表并将其添加到**播放列表**页面，然后在那里启动。

**重要**  
在保存播放列表之前，确保在创建或编辑播放列表时，已添加所有要显示在播放列表中的控制面板。

1. 要访问播放列表功能，将光标悬停在 Grafana 的侧边菜单上。

1. 单击**播放列表**查看可供您使用的播放列表。

1. 单击您选择的播放列表。

1. 编辑播放列表。

1. 检查播放列表中是否添加了**名称**、**间隔**和至少一个**控制面板**。

1. 单击**保存**保存您的更改。

## 编辑或删除播放列表
<a name="v9-dash-edit-delete-playlist"></a>

在编辑播放列表时，您可以更新播放列表的名称和间隔时间，添加、删除控制面板并重新排序。

**编辑播放列表**

1. 单击播放列表页面上的**编辑播放列表**。

1. 更新名称和时间间隔，然后按照上面创建播放列表中的说明，在播放列表中添加或删除控制面板。

1. 单击**保存**保存您的更改。

**删除播放列表**

1. 单击**播放列表**。

1. 单击要删除的播放列表旁边的**删除**。

**重新排列控制面板顺序**

1. 在要移动的控制面板旁边，单击向上或向下箭头。

1. 单击**保存**保存您的更改。

**移除控制面板**

1. 单击**删除**将控制面板从播放列表中删除。

1. 单击**保存**保存您的更改。

## 在视图模式下共享播放列表
<a name="v9-dash-share-playlist-view-mode"></a>

在共享播放列表时，您可以在首选的视图模式下复制链接地址，然后将 URL 粘贴到目标。

1. 在**控制面板**子菜单中，单击**播放列表**。

1. 单击要共享的播放列表旁边的**启动播放列表**。

1. 在下拉列表中，右键单击首选视图模式。

1. 单击**复制链接地址**将 URL 复制到剪贴板。

1. 将 URL 粘贴到目标。

# 添加和管理控制面板变量
<a name="v9-dash-variables"></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 查看器可以使用变量。

变量和模板还允许您使用单一来源控制面板。如果有多个相同的数据来源或服务器，则可以创建一个控制面板，使用变量来更改您查看的内容。这极大地简化了维护和保养。

**模板**

模板是任何包含变量的查询。例如，如果要管理一个控制面板来监控多个服务器，则可以为每个服务器创建一个控制面板，也可以创建一个控制面板并使用带有模板查询的面板，如下所示。

```
wmi_system_threads{instance=~"$server"}
```

变量值始终使用语法 var-<varname>=value 同步到 URL。

**示例**

变量位于屏幕顶部的下拉列表中。选择不同的变量，查看可视化效果的变化。

要查看变量设置，请导航到**控制面板设置 > 变量**。单击列表中的变量以查看其设置。 

变量可用于标题、描述、文本面板和查询。以 `$` 开头的文本为模板查询。并非所有面板都有模板查询。

**变量最佳实践**
+ 变量下拉列表按照**控制面板设置**的变量列表中列出的顺序显示。
+ 将经常更改的变量放在顶部，这样它们就会显示在最前面（控制面板的最左边）。

# 添加和管理变量
<a name="v9-dash-variable-add"></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 附带的变量类型。


| 变量类型 | 说明 | 
| --- | --- | 
|  Query  |  查询生成的值列表，例如指标名称、服务器名称、传感器 IDs、数据中心等。添加查询变量。  | 
|  自定义  |  使用逗号分隔的列表手动定义变量选项。添加自定义变量。  | 
|  Text box（文本框）  |  显示带有可选默认值的自由文本输入字段。添加文本框变量。  | 
|  常量  |  定义隐藏的常量。添加常量变量。  | 
|  数据来源  |  快速更改整个控制面板的数据来源。添加数据来源变量。  | 
|  Interval  |  间隔变量表示时间跨度。添加间隔变量。  | 
|  临时筛选条件  |  自动添加到数据来源（仅限 Prometheus、Loki、InfluxDB 和 Elasticsearch）的所有指标查询中的键值筛选条件。添加临时筛选条件。  | 
|  全局变量  |  可在查询编辑器的表达式中使用的内置变量。参考全局变量。  | 
|  链式变量  |  变量查询可以包含其他变量。请参考链式变量。  | 

## 输入常规选项
<a name="v9-dash-variable-options"></a>

您必须为创建的任何类型的变量输入常规选项。

**输入常规选项**

1. 导航到要为其设置变量的控制面板，然后选择页面顶部的**控制面板设置**（齿轮）图标。

1. 在**变量**选项卡上，选择**新建**。

1. 输入变量的**名称**。

1. 在**类型**列表中，选择**查询**。

1. （可选）在**标签**中，输入变量下拉列表的显示名称。

   如果未输入显示名称，则下拉标签就是变量名称。

1. 选择**隐藏**选项：
   + **无选择（空白）：**变量下拉列表显示变量**名称**或**标签**值。
   + **标签：**变量下拉列表仅显示选定变量值和向下箭头。
   + **变量：**控制面板上不显示变量下拉列表。

## 添加查询变量
<a name="v9-dash-variable-add-query"></a>

通过查询变量，您可以编写数据来源查询，该查询可返回指标名称、标签值或键的列表。例如，查询变量可能返回服务器名称 IDs、传感器或数据中心的列表。变量值在使用数据来源查询动态获取选项时会发生变化。

查询变量通常仅支持字符串。如果您的查询返回数字或任何其他数据类型，则可能需要将其转换为字符串，才能将其用作变量。例如，对于 Azure 数据来源，您可以使用 [tostring](https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/tostringfunction) 函数来实现此目的。

查询表达式可以包含对其他变量的引用，实际上就是创建链接变量。Grafana 会检测到这一点，并在其中一个链接变量发生变化时自动刷新变量。

**注意**  
每个数据来源的查询表达式都不同。有关更多信息，请参阅[数据来源](AMG-data-sources.md)的文档。

**添加查询变量**

1. 如上所示，输入常规选项。

1. 在**数据来源**列表中，选择查询的目标数据来源。

1. 在**刷新**列表中，选择变量应何时更新选项。
   + **控制面板加载时：**每次加载控制面板时查询数据来源。这会减慢控制面板的加载速度，因为需要在初始化控制面板之前完成变量查询。
   + **时间范围更改时：**当控制面板时间范围发生变化时查询数据来源。仅当变量选项查询包含时间范围筛选条件或依赖于控制面板时间范围时，才使用此选项。

1. 在**查询**字段中，输入查询。
   + 查询字段因数据来源而异。某些数据来源具有自定义查询编辑器。
   + 如果单个输入字段查询编辑器中需要更多空间，请将光标悬停在字段右下角的行上，然后向下拖动以展开。

1. （可选）在**正则表达式**字段中，键入正则表达式以筛选或捕获数据来源查询返回的名称的特定部分。要查看示例，请参阅[使用正则表达式筛选变量](#v9-dash-variable-add-filter)。

1. 在**排序**列表中，选择要在下拉列表中显示的值的排序顺序。默认选项**禁用**表示使用数据来源查询返回的选项顺序。

1. （可选）输入[选择选项](#v9-dash-variable-add-selection)。

1. 在**值预览**中，Grafana 显示当前变量值的列表。查看以确保其符合您的预期。

1. 选择**添加**将变量添加到控制面板。

## 添加自定义变量
<a name="v9-dash-variable-add-custom"></a>

对不变的值（如数字或字符串）使用*自定义*变量。

例如，如果您的服务器名称或区域名称从未更改，则可能需要将其创建为自定义变量，而不是查询变量。因为其不会更改，所以可以在[链式变量](#v9-dash-variable-add-chained)中，而不是其他查询变量中使用。这将减少链式变量更新时 Grafana 必须发送的查询次数。

**添加自定义变量**

1. 如上所示，输入常规选项。

1. 在 

   **以逗号分隔的值**列表，在逗号分隔的列表中输入此变量的值。可以包含由空格和冒号分隔的数字、字符串或键值对。例如 `key1 : value1,key2 : value2`。

1. （可选）输入[选择选项](#v9-dash-variable-add-selection)。

1. 在**值预览**中，Grafana 显示当前变量值的列表。查看以确保其符合您的预期。

1. 选择**添加**将变量添加到控制面板。

## 添加文本框变量
<a name="v9-dash-variable-add-text"></a>

*文本框*变量显示带有可选默认值的自由文本输入字段。这是最灵活的变量，因为您可以输入任何值。如果您的指标具有高基数，或者您希望同时更新控制面板中的多个面板，请使用此类型的变量。

**添加文本框变量**

1. 如上所示，输入常规选项。

1. （可选）在**默认值**字段中，选择变量的默认值。如果未在此字段中输入任何内容，Grafana 会显示一个空文本框，供用户键入文本。

1. 在**值预览**中，Grafana 显示当前变量值的列表。查看以确保其符合您的预期。

1. 选择**添加**将变量添加到控制面板。

## 添加常量变量
<a name="v9-dash-variable-add-constant"></a>

*常量变量*允许定义隐藏的常量。这对于要共享的控制面板的指标路径前缀很有用。导出控制面板时，常量变量会转换为导入选项。

常量变量*不*灵活。每个常量变量仅包含一个值，除非更新变量设置，否则无法更新。

如果需要在查询中包含复杂的值，但又不想在每次查询中都重新输入，常量变量就非常有用。例如，如果有一个名为 `i-0b6a61efe2ab843gg` 的服务器路径，则可以将其替换为一个名为 `$path_gg` 的变量。

**添加常量变量**

1. 如上所示，输入常规选项。

1. 在**值**字段中，输入变量值。您可以输入字母、数字和符号。如果您使用[原始格式](https://grafana.com/docs/grafana/latest/dashboards/variables/variable-syntax/#raw)，甚至可以使用通配符。

1. 在**值预览**中，Grafana 显示当前变量值的列表。查看以确保其符合您的预期。

1. 选择**添加**将变量添加到控制面板。

## 添加数据来源变量
<a name="v9-dash-variable-add-datasource"></a>

*数据来源*变量让您可以快速更改整个控制面板的数据来源。如果您有多个数据来源实例（可能位于不同的环境中），则会很有用。

**添加数据来源变量**

1. 如上所示，输入常规选项。

1. 在**类型**列表中，选择变量的目标数据来源。

1. （可选）在**实例名称筛选条件**中，在变量值下拉列表中输入要从中选择的数据来源实例的正则表达式筛选条件。将此字段留空可显示所有实例。

1. （可选）输入[选择选项](#v9-dash-variable-add-selection)。

1. 在**值预览**中，Grafana 显示当前变量值的列表。查看以确保其符合您的预期。

1. 选择**添加**将变量添加到控制面板。

## 添加间隔变量
<a name="v9-dash-variable-add-internal"></a>

使用*间隔*变量来表示时间跨度，例如 `1m`、`1h` 或 `1d`。您可以将其视为控制面板范围内的*按时间分组*命令。间隔变量会更改数据在可视化中的分组方式。您也可以使用“自动选项”在每个时间跨度返回一定数量的数据点。

您可以使用间隔变量作为按时间分组参数（对于 InfluxDB）、日期直方图间隔（对于 Elasticsearch）或作为 summarize 函数参数（对于 Graphite）。

**添加间隔变量**

1. 如上所示，输入常规选项。

1. 在**值**字段中，输入您希望在变量下拉列表中显示的时间范围间隔。支持以下时间单位：`s (seconds)`、`m (minutes)`、`h (hours)`、`d (days)`、`w (weeks)`、`M (months)` 和 `y (years)`。您也可以接受或编辑默认值：`1m,10m,30m,1h,6h,12h,1d,7d,14d,30d`.

1. （可选）如果要将 `auto` 选项添加到列表中，请打开**自动选项**。此选项允许您指定应将当前时间范围划分多少次，来计算当前 `auto` 时间跨度。如果将其打开，则会出现另外两个选项：
   + **步数**：选择当前时间范围的划分次数以计算该值，类似于**最大数据点**查询选项。例如，如果当前可见的时间范围为 30 分钟，则 `auto` 间隔将数据分组为 30 个一分钟增量。默认值为 30 步。
   + **最小间隔：**最小阈值，低于该阈值的步数间隔不会划分时间。继续以 30 分钟为例，如果最小间隔设置为 2m，则 Grafana 会将数据分组为 15 个两分钟增量。

1. 在**值预览**中，Grafana 显示当前变量值的列表。查看以确保其符合您的预期。

1. 选择**添加**将变量添加到控制面板。

**间隔变量示例**

以下示例显示了 Graphite 函数中的模板变量 `myinterval`：

```
summarize($myinterval, sum, false)
```

## 添加临时筛选条件
<a name="v9-dash-variable-add-adhoc"></a>

*临时筛选条件*允许您添加键值筛选条件，这些筛选条件会自动添加到使用指定数据来源的所有指标查询中。与其他变量不同的是，不在查询中使用临时筛选条件。而是使用临时筛选条件为现有查询编写筛选条件。

**注意**  
临时筛选条件变量仅适用于 Prometheus、Loki、InfluxDB 和 Elasticsearch 数据来源。

1. 如上所示，输入常规选项。

1. 在**数据来源**列表中，选择目标数据来源。

1. 选择**添加**将变量添加到控制面板。

**创建临时筛选条件**

临时筛选条件是可用的最复杂、最灵活的变量选项之一。此变量让您可以构建控制面板范围的临时查询，而不是常规的变量选项列表。以这种方式应用的筛选条件将应用于控制面板上的所有面板。

## 配置变量选择选项
<a name="v9-dash-variable-add-selection"></a>

**选择选项**是一项用于管理变量选项选择的功能。所有选择选项都是可选的，默认处于关闭状态。

### 多值变量
<a name="v9-dash-variable-add-selection-multi"></a>

对选择了多个值的变量进行插值会比较麻烦，因为如何将多个值格式化为字符串，而且该字符串在使用该变量的给定上下文中有效，这不是个简单明了的过程。Grafana 试图通过允许每个数据来源插件通知模板插值引擎对多个值使用的格式来解决这个问题。

**注意**  
变量上的**自定义所有值**选项必须为空，Grafana 才能将所有值格式化为单个字符串。如果将其留空，则 Grafana 会将查询中的所有值连接（相加）。例如 `value1,value2,value3`。如果使用自定义的 `all` 值，该值将变为 `*` 或 `all`。

**具有 Graphite 数据来源的多值变量**

Graphite 使用 glob 表达式。在这种情况下，如果当前变量值为 *host1*、*host2* 和 *host3*，则具有多个值的变量将插值为 `{host1,host2,host3}`。

**具有 Prometheus 或 InfluxDB 数据来源的多值变量**

InfluxDB 和 Prometheus 使用正则表达式，因此相同的变量将插值为 `(host1|host2|host3)`。每个值也将进行正则表达式转义。否则，带有正则表达式控制字符的值将中断正则表达式。

**具有 Elastic 数据来源的多值变量**

Elasticsearch 使用 lucene 查询语法，因此相同的变量将格式化为 `("host1" OR "host2" OR "host3")`。在这种情况下，必须对每个值进行转义，使该值仅包含 lucene 控制词和引号。

**多值变量问题排查**

自动转义和格式化可能会导致问题，其背后的逻辑也很难理解。特别是对于 InfluxDB 和 Prometheus 来说，使用正则表达式语法需要在正则表达式运算符上下文中使用变量。

如果您不希望 Grafana 自动执行正则表达式转义和格式化，则必须执行下列操作之一：
+ 关闭**多值**或**包含全部选项**选项。
+ 使用[原始变量格式](https://grafana.com/docs/grafana/latest/dashboards/variables/variable-syntax/#raw)。

### 包含全部选项
<a name="v9-dash-variable-add-multi-all"></a>

Grafana 在变量下拉列表中添加了 `All` 选项。如果用户选择此选项，则会选择所有变量选项。

### 自定义所有值
<a name="v9-dash-variable-add-multi-custom"></a>

仅当选择**包含全部选项**时，此选项才可见。

在**自定义所有值**字段中输入 regex、glob 或 lucene 语法来定义 `All` 选项的值。

默认情况下，`All` 值包含组合表达式中的所有选项。该值可能会变得很长，并且可能会出现性能问题。有时，最好指定自定义 all 值，例如通配符正则表达式。

要在**自定义所有值**选项中使用自定义 regex、glob 或 lucene 语法，使其永远不会转义，因此您必须考虑数据来源的有效值。

## 全局变量
<a name="v9-dash-variable-add-global"></a>

Grafana 具有全局内置变量，可在查询编辑器的表达式中使用。本主题按字母顺序列出了这些变量，并对其进行了定义。这些变量在查询、控制面板链接、面板链接和数据链接中非常有用。

**\$1\$1\$1dashboard**

此变量是当前控制面板的名称。

**\$1\$1\$1from 和 \$1\$1\$1to**

Grafana 有两个内置的时间范围变量：`$__from` 和 `$__to`。默认情况下，当前始终插值为 epoch 毫秒，但您可以控制日期格式。


| 语法 | 示例结果 | 说明 | 
| --- | --- | --- | 
|  `${__from}`  |  1594671549254  |  Unix 毫秒 epoch  | 
|  `${__from:date}`  |  2020-07-13T20:19:09.254Z  |  无参数，默认为 ISO 8601/RFC 3339  | 
|  `${__from:date:iso}`  |  2020-07-13T20:19:09.254Z  |  ISO 8601/RFC 3339  | 
|  `${__from:date:seconds}`  |  1594671549  |  Unix 秒 epoch  | 
|  `${__from:date:YYYY-MM}`  |  2020-07  |  任何不包含 : 字符的自定义日期格式  | 

上面的语法也适用于 `${__to}`。

**\$1\$1\$1interval**

您可以使用 `$__interval` 变量作为按时间分组参数（对于 InfluxDB、MySQL、Postgres、MSSQL）、日期直方图间隔（对于 Elasticsearch）或作为 *summarize* 函数参数（对于 Graphite）。

Grafana 会自动计算一个间隔，该间隔可用于在查询中按时间分组。当数据点多于图形上显示的数据点时，可通过按更大的间隔分组来提高查询的效率。例如，如果您正在查看包含 3 个月数据的图形，则可能无法看到分钟级别的详细信息。按小时或天分组可以提高查询效率，而不会影响图形显示的内容。`$__interval` 是使用时间范围和图形宽度（像素数）计算得出的。

近似计算：`(to - from) / resolution`

例如，当时间范围为 1 小时且图形为全屏时，则可以将间隔计算为 `2m`，点按 2 分钟间隔分组。如果时间范围为 6 个月且图形为全屏时，则间隔可能是 `1d`（1 天），点按天分组。

在 InfluxDB 数据来源中，传统变量 `$interval` 是同一个变量。应改为使用 `$__interval`。

InfluxDB 和 Elasticsearch 数据源具有 `Group by time interval` 字段，用于对间隔进行硬编码或设置 `$__interval` 变量的最小限制（使用 `>` 语法 -> `>10m`）。

**\$1\$1\$1interval\$1ms**

此变量是以毫秒为单位的 `$__interval` 变量，而不是时间间隔格式的字符串。例如，如果 `$__interval` 为 `20m`，则 `$__interval_ms` 为 `1200000`。

**\$1\$1\$1org**

此变量是当前组织的 ID。`${__org.name}` 是当前组织的名称。

**\$1\$1\$1user**

`${__user.id}` 是当前用户的 ID。`${__user.login}` 是当前用户的登录句柄。`${__user.email}` 是当前用户的电子邮件。

**\$1\$1\$1range**

目前仅支持 Prometheus 和 Loki 数据来源。此变量表示当前控制面板的范围。由 `to - from` 计算得出。此变量有毫秒和秒两种表示形式，分别称为 `$__range_ms` 和 `$__range_s`。

**\$1\$1\$1rate\$1interval**

目前仅支持 Prometheus 数据来源。`$__rate_interval` 变量旨在用于 rate 函数。

**\$1timeFilter 或 \$1\$1\$1timeFilter**

`$timeFilter` 变量以表达式形式返回当前选定的时间范围。例如，时间范围间隔 `Last 7 days` 表达式为 `time > now() - 7d`。

可在多个地方使用，包括：
+ InfluxDB 数据来源的 WHERE 子句。在查询编辑器模式下，Grafana 会自动将其添加到 InfluxDB 查询。您可以在文本编辑器模式下手动添加：`WHERE $timeFilter`。
+ 在 Azure Monitor 数据来源中记录分析查询。
+ MySQL、Postgres 和 MSSQL 中的 SQL 查询。
+ `$__timeFilter` 变量用于 MySQL 数据来源。

## 链式变量
<a name="v9-dash-variable-add-chained"></a>

*链式变量*，也称为*链接变量*或*嵌套变量*，是变量查询中包含一个或多个其他变量的查询变量。本节说明了链式变量的工作原理，并提供了指向使用链式变量的示例控制面板的链接。

每个数据来源的链式变量查询都不同，但前提都是一样的。您可以在任何允许的数据来源中使用链式变量查询。

可以使用极为复杂的链接模板控制面板，深度为 5 或 10 级。从技术上讲，深度和复杂程度没有限制，但链接越多，查询负荷就越大。

**最佳实践和提示**

以下做法可使您的控制面板和变量更易于使用。

**创建新的链接变量**
+ 链接变量会产生 parent/child 依赖关系。您可以将其想象成梯子或树。
+ 创建新的链式变量的最简单方法是复制要作为新变量基础的变量。在变量列表中，单击变量条目右侧的**复制变量**图标以创建副本。然后，您就可以为父变量添加查询。
+ 通过这种方式创建的新变量显示在列表的底部。您可能需要将其拖动到列表中的其他位置，以使其按逻辑顺序排列。

**变量顺序**

您可以通过单击每个条目右侧的向上和向下箭头，来更改控制面板变量列表中变量的顺序。Grafana 根据此列表从左到右列出变量下拉列表，变量位于最左侧的顶部。
+ 在顶部列出没有依赖关系的变量，放在其子变量之前。
+ 每个变量都应遵循其依赖的变量。
+ 请记住，UI 中没有指示哪些变量具有依赖关系。按逻辑顺序列出变量，以方便其他用户（和您自己）使用。

**复杂性考虑**

变量中的依赖关系层越多，更改变量后更新控制面板所需的时间就越长。

例如，如果您有一系列四个链接变量（国家、地区、服务器、指标），并更改了根变量值（国家），Grafana 必须先对所有因变量运行查询，然后才能更新控制面板中的可视化。

## 管理变量
<a name="v9-dash-variable-add-manage"></a>

您可以在变量页面上[添加](https://grafana.com/docs/grafana/latest/dashboards/variables/add-template-variables/)变量和管理现有变量。还可以[检查](https://grafana.com/docs/grafana/latest/dashboards/variables/inspect-variable/)变量，并确定变量是否在其他变量或控制面板中被引用（或使用）。

**移动：**您可以使用拖放操作在列表中上下移动变量。

**克隆：**要克隆变量，请单击右侧图标集中的克隆图标。这将创建一个变量的副本，其原始变量的名称前缀为 `copy_of_`。

**删除：**要删除变量，请单击右侧图标集中的垃圾桶图标。

## 使用正则表达式筛选变量
<a name="v9-dash-variable-add-filter"></a>

通过 Regex Query 选项，您可以筛选变量查询返回的选项列表或修改返回的选项。

本页展示了如何使用正则表达式来处理变量下 filter/modify 拉列表中的值。

通过 Regex Query 选项，您可以筛选变量查询返回的选项列表或修改返回的选项。有关更多信息，请参阅 Mozilla [正则表达式](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions)指南。

以下示例显示了对以下选项列表的筛选

```
backend_01
backend_02
backend_03
backend_04
```

**筛选以仅返回以 `01` 或 `02` 结尾的选项**

正则表达式：

```
/
(
01|02 
) 
$/
```

结果：

```
backend_01
backend_02
```

**使用正则表达式捕获组筛选和修改选项以返回部分文本**

正则表达式：

```
/.* 
(
01|02 
)
/
```

结果：

```
01
02
```

**筛选和修改：Prometheus 示例**

选项列表：

```
up{instance="demo.robustperception.io:9090",job="prometheus"} 1 1521630638000
up{instance="demo.robustperception.io:9093",job="alertmanager"} 1 1521630638000
up{instance="demo.robustperception.io:9100",job="node"} 1 1521630638000
```

正则表达式：

```
/. *instance="
(
[^"]*
)
.*/
```

结果：

```
demo.robustperception.io:9090
demo.robustperception.io:9093
demo.robustperception.io:9100
```

**使用命名文本和值捕获组进行筛选和修改**

使用命名捕获组，您可以从变量查询返回的选项中捕获单独的“文本”和“值”部分。这样，变量下拉列表中的每个可选值都会包含友好的名称。

例如，在查询 `node_hwmon_chip_names` Prometheus 指标时，`chip_name` 比 `chip` 值更友好。因此，以下变量查询结果：

```
node_hwmon_chip_names{chip="0000:d7:00_0_0000:d8:00_0",chip_name="enp216s0f0np0"} 1
node_hwmon_chip_names{chip="0000:d7:00_0_0000:d8:00_1",chip_name="enp216s0f0np1"} 1
node_hwmon_chip_names{chip="0000:d7:00_0_0000:d8:00_2",chip_name="enp216s0f0np2"} 1
node_hwmon_chip_names{chip="0000:d7:00_0_0000:d8:00_3",chip_name="enp216s0f0np3"} 1
```

通过以下正则表达式传递：

```
/chip_name="(?<text>[ ^ " ] + ) |chip=" (?<value >[ ^ " ] + )/g
```

将生成以下下拉列表：

```
Display Name          Value
------------          -------------------------
enp216s0f0np0         0000:d7:00_0_0000:d8:00_0
enp216s0f0np1         0000:d7:00_0_0000:d8:00_1
enp216s0f0np2         0000:d7:00_0_0000:d8:00_2
enp216s0f0np3         0000:d7:00_0_0000:d8:00_3
```

仅支持 `text` 和 `value` 捕获组名称。

## 
<a name="v9-dash-variable-add-inspect"></a>

您可以在变量页面上轻松识别变量是否在其他变量或控制面板中被引用（或使用）。

任何被引用或使用的变量旁边都有一个绿色的复选标记，而未引用的变量旁边有一个橙色的警告图标。此外，所有引用的变量在绿色复选标记旁边都有一个依赖关系图标。您可以选择图标来查看依赖关系图。依赖关系图可以移动。您可以使用鼠标滚轮或等效工具来放大或缩小。

# 变量语法
<a name="v9-dash-variable-syntax"></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)。

面板标题和指标查询可以使用两种不同的语法来引用变量。
+ `$varname`：此语法易于读取，但不能在词中间使用变量。

  **示例**：`apps.frontend.$server.requests.count`
+ `${var_name}`：如果要在表达式中间使用变量，请使用此语法。
+ `${var_name:<format>}`：此格式让您可以更好地控制 Grafana 如何解释值。有关更多信息，请参阅*高级变量格式选项*。
+ `[[varname]]`：请勿使用。此语法已过时，不再使用。这将在未来版本中删除。

在将查询发送到数据来源之前，会对查询进行*插值*，这意味着变量将替换为当前值。在插值过程中，变量值可能会被*转义*，以符合查询语言的语法和使用场合。例如，InfluxDB 或 Prometheus 查询中的正则表达式中使用的变量将被正则表达式转义。

**高级变量格式选项**

变量插值的格式取决于数据来源，但在某些情况下，可能需要更改默认格式。

例如，MySQL 数据来源的默认格式是以逗号分隔的形式联接多个值，并使用引号：`'server01','server02'`。在某些情况下，您可能希望使用逗号分隔的字符串，但不使用引号：`server01,server02`。您可以使用下面列出的高级变量格式选项来实现这一点。

**一般语法**

语法：`${var_name:option}`

如果指定了任何无效的格式选项，`glob`则为该 default/fallback 选项。

**CSV**

将具有多个值的变量格式化为逗号分隔的字符串。

```
servers = [ 'test1',  'test2' ]
String to interpolate:  '${servers:csv}'
Interpolation result:  'test1,test2'
```

**分布式 OpenTSDB**

以 OpenTSDB 自定义格式来格式化具有多个值的变量。

```
servers = [ 'test1',  'test2' ]
String to interpolate:  '${servers:distributed}'
Interpolation result:  'test1,servers=test2'
```

**Doublequote**

将单值和多值变量格式化为逗号分隔的字符串，在每个值中使用 `\"` 对 `"` 进行转义，并在每个值两侧加上 `"`。

```
servers = [ 'test1',  'test2' ]
String to interpolate:  '${servers:doublequote}'
Interpolation result:  '"test1","test2"'
```

**Glob - Graphite**

将具有多个值的变量格式化为 glob（用于 Graphite 查询）。

```
servers = [ 'test1',  'test2' ]
String to interpolate:  '${servers:glob}'
Interpolation result:  '{test1,test2}'
```

**JSON**

将具有多个值的变量格式化为逗号分隔的字符串。

```
servers = [ 'test1',  'test2' ]
String to interpolate:  '${servers:json}'
Interpolation result:  '["test1", "test2"]'
```

**Lucene - Elasticsearch**

将具有多个值的变量格式化为适用于 Elasticsearch 的 Lucene 格式。

```
servers = [ 'test1',  'test2' ]
String to interpolate:  '${servers:lucene}'
Interpolation result:  '("test1" OR "test2")'
```

**Percentencode**

格式化单值和多值变量，供 URL 参数使用。

```
servers = [ 'foo()bar BAZ',  'test2' ]
String to interpolate:  '${servers:percentencode}'
Interpolation result:  'foo%28%29bar%20BAZ%2Ctest2'
```

**Pipe**

将具有多个值的变量格式化为以竖线分隔的字符串。

```
servers = [ 'test1.',  'test2' ]
String to interpolate:  '${servers:pipe}'
Interpolation result:  'test1.|test2'
```

**Raw**

关闭特定于数据来源的格式化，如 SQL 查询中的单引号。

```
servers = [ 'test.1',  'test2' ]
String to interpolate:  '${var_name:raw}'
Interpolation result:  'test.1,test2'
```

**Regex (正则表达式)**

将具有多个值的变量格式化为正则表达式字符串。

```
servers = [ 'test1.',  'test2' ]
String to interpolate:  '${servers:regex}'
Interpolation result:  '(test1\.|test2)'
```

**Singlequote**

将单值和多值变量格式化为逗号分隔的字符串，在每个值中使用 `\'` 对 `'` 进行转义，并在每个值两侧加上 `'`。

```
servers = [ 'test1',  'test2' ]
String to interpolate:  '${servers:singlequote}'
Interpolation result:  "'test1','test2'"
```

**Sqlstring**

将单值和多值变量格式化为逗号分隔的字符串，在每个值中使用 `''` 对 `'` 进行转义，并在每个值两侧加上 `'`。

```
servers = [ "test'1",  "test2" ]
String to interpolate:  '${servers:sqlstring}'
Interpolation result:  "'test''1','test2'"
```

**文本**

将单值和多值变量格式化为其文本表示形式。对于单个变量，仅返回文本表示形式。对于多值变量，将返回与 `+` 组合的文本表示形式。

```
servers = [ "test1",  "test2" ]
String to interpolate:  '${servers:text}'
Interpolation result:  "test1 + test2"
```

**查询参数**

将单值和多值变量格式化为其查询参数表示形式。示例：`var-foo=value1&var-foo=value2`

```
servers = [ "test1",  "test2" ]
String to interpolate:  '${servers:queryparam}'
Interpolation result:  "var-servers=test1&var-servers=test2"
```

# 评测控制面板使用情况
<a name="v9-dash-assess-dashboard-usage"></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 实例的使用情况。

使用情况见解功能可收集大量聚合数据，并将其存储在数据库中。
+ 控制面板视图（聚合视图和每个用户视图）
+ 数据来源错误
+ 数据来源查询

聚合数据使您可以访问多种功能，包括控制面板和数据来源见解、状态指示器，使用见解数据对控制面板排序，在控制面板中可视化使用情况见解数据。

此功能还可生成详细日志，并导出到 Loki。

## 控制面板和数据来源见解
<a name="v9-dash-insights"></a>

对于每个控制面板和数据来源，您可以访问使用情况信息。

**控制面板见解**

要查看控制面板使用情况信息，请单击顶部栏中的**控制面板见解**。

控制面板见解显示以下信息。
+ **统计信息**：过去 30 天的每日查询和错误数。
+ **用户和活动**：过去 30 天的每日浏览次数；控制面板上最近的活动和最近的用户（上限为 20 个）。

**数据来源见解**

数据来源见解提供了过去 30 天内数据来源使用情况的信息，例如：
+ 每日查询数
+ 每日错误数
+ 每日查询加载时间（平均毫秒数）

查找数据来源见解：

1. 转到**数据来源**列表视图。

1. 单击**数据来源**。

1. 单击**见解**选项卡。

## 状态指示器
<a name="v9-dash-presence-indicator"></a>

在登录并查看控制面板时，您可以通过状态指示器了解谁在与您查看同一控制面板，该指示器显示最近与控制面板交互的用户的头像。默认时间范围为 10 分钟。要查看用户的姓名，请将鼠标悬停在用户头像上。头像来自 [Gravatar](https://gravatar.com/)，基于用户的电子邮件。

当控制面板上的活动用户数量超出状态指示器的容纳范围时，请单击 **\$1X** 图标。这样将打开控制面板见解，其中包含有关最近用户活动的更多详细信息。

## 使用见解数据对控制面板排序
<a name="v9-dash-sort-dashboards"></a>

在搜索视图中，您可以使用见解数据来帮助查找最常用、损坏和未使用的控制面板。
+ 错误总数
+ 30 天错误数
+ 浏览总数
+ 30 天浏览数

# 在 Grafana 9 中搜索控制面板
<a name="v9-search"></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 实例中可用的所有控制面板，即使您没有查看控制面板内容的权限。

## 使用控制面板名称搜索控制面板
<a name="v9-search-by-name"></a>

在搜索栏中输入控制面板名称的任意部分。当您键入时，搜索将实时返回任何部分字符串匹配的结果。

控制面板搜索：
+ 实时
+ *不*区分大小写
+ 跨存储和基于文件的控制面板运行。

**提示**  
您可以使用键盘箭头键导航结果，然后按 `Enter` 键打开选定的控制面板。

## 使用面板标题搜索控制面板
<a name="v9-search-by-title"></a>

您可以按控制面板中显示的面板标题来搜索控制面板。如果面板标题与您的搜索查询匹配，控制面板将出现在搜索结果中。

## 按标签筛选控制面板搜索结果
<a name="v9-search-by-tag"></a>

标签是整理控制面板的好方法，尤其是在控制面板数量增加时。您可以在控制面板**设置**中添加和管理标签。

当您选择多个标签时，Grafana 会显示包含所有选定标签的控制面板。

要按标签筛选控制面板，请完成下列步骤之一：
+ 要按标签筛选控制面板搜索结果，请选择显示在搜索结果右列中的标签。

  您可以通过选择其他标签来继续筛选。
+ 要查看所有可用标签的列表，请单击**按标签筛选**下拉菜单并选择一个标签。

  将显示所有标签，当您选择标签时，将立即筛选控制面板搜索。

**提示**  
仅使用键盘时，按 `tab` 键导航至**按标签筛选**下拉菜单，按向下箭头键激活菜单并找到标签，然后按 `Enter` 键选择标签。

# Grafana 9 中的面板和可视化
<a name="v9-panels"></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-plugins.md)以获得其他面板类型。
+  有关使用特定数据来源的详细信息，请参阅 [连接到数据来源](AMG-data-sources.md)。

**Topics**
+ [面板编辑器概述](v9-panels-editor-overview.md)
+ [配置面板选项](v9-panels-configure-panel-options.md)
+ [配置标准选项](v9-panels-configure-standard-options.md)
+ [查询和转换数据](v9-panels-query-xform.md)
+ [配置阈值](v9-panels-configure-thresholds.md)
+ [配置数据链接](v9-panels-configure-data-links.md)
+ [配置字段覆盖](v9-panels-configure-overrides.md)
+ [配置值映射](v9-panels-configure-value-mappings.md)
+ [配置图例](v9-panels-configure-legend.md)
+ [计算类型](v9-panels-calculation-types.md)
+ [对可视化进行注释](v9-panels-annotate-visualizations.md)
+ [面板检查视图](v9-panels-panel-inspector.md)
+ [Grafana 9 提供的可视化](v9-panels-viz.md)

# 面板编辑器概述
<a name="v9-panels-editor-overview"></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 面板编辑器的各个区域。
+  面板标题：标题部分列出了显示面板的控制面板和以下控件：
  +  **控制面板设置（齿轮）图标**：单击访问控制面板设置。
  +  **丢弃**：丢弃自上次保存控制面板之后，对面板所做的更改。
  +  **保存**：保存对面板所做的更改。
  +  **应用**：应用您所做的更改，关闭面板编辑器，返回控制面板。您需要保存控制面板，以持久保留所应用的更改。
+  可视化预览：可视化预览部分包含以下选项：
  +  **表视图**：将任何可视化转换为表，以便查看数据。表视图有助于进行问题排查。此视图仅包含原始数据。不包括您可能应用于数据的转换，也不包括[表](v9-panels-table.md)可视化中可用的格式化选项。
  +  **填充**：可视化预览会填充可用空间。如果更改侧窗格的宽度或底部窗格的高度，可视化效果会随之改变以填充可用空间。
  +  **实际**：可视化预览的大小与控制面板上的大小完全一致。如果可用空间不足，可视化大小会缩减，同时保留纵横比。
  +  **时间范围控制**：**默认**为浏览器本地时区或在更高级别选择的时区。
+  数据部分：数据部分包含用于输入查询、转换数据和创建警报规则（如适用）的选项卡。
  +  **查询选项卡**：选择您的数据来源，并在此处输入查询。
  +  **转换选项卡**：应用数据转换。
  +  **警报选项卡**：编写警报规则。
+  面板显示选项：显示选项部分包含选项卡，您可以在其中配置数据可视化的各个方面。

## 打开面板检查抽屉
<a name="v9-panels-editor-open-panel"></a>

 检查抽屉有助于您了解查询并进行问题排查。您可以查看任何面板的原始数据，将该数据导出到逗号分隔值（CSV）文件，查看查询请求，以及导出面板和数据 JSON。

 **注意：**并非所有面板类型都包含所有选项卡。例如，控制面板列表面板没有要检查的原始数据，因此不显示“统计”、“数据”或“查询”选项卡。

 面板检查器包含以下选项：
+  面板检查抽屉显示会在右侧打开一个抽屉。单击右上角的箭头可展开或缩小抽屉窗格。
+  **数据选项卡**：显示应用转换后查询返回的原始数据。默认情况下，不会应用覆盖和值映射之类的字段选项。
+  **统计选项卡**：显示查询花费的时间和返回的数量。
+  **JSON 选项卡**：允许您查看和复制面板 JSON、面板数据 JSON 和数据帧结构 JSON。如果您在预置或管理 Grafana，这非常有用。
+  **查询选项卡**：显示 Grafana 查询数据来源时向服务器发送的请求。
+  **错误选项卡**：显示错误。仅在查询返回错误时可见。

# 配置面板选项
<a name="v9-panels-configure-panel-options"></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 面板是一个用户界面，用于定义数据来源查询，转换和格式化可视化中显示的数据。

 面板编辑器包括一个查询生成器和一系列选项，您可以使用这些选项来转换数据，向面板添加信息。

 本主题介绍了如何：
+  打开面板进行编辑 
+  添加面板标题和描述 
+  查看面板 JSON 模型 
+  添加重复行和面板 

## 编辑面板。
<a name="v9-panels-edit-a-panel"></a>

 将面板添加到控制面板后，可以随时打开面板更改或更新查询、添加数据转换以及更改可视化设置。

1.  打开包含要编辑其面板的控制面板。

1.  将鼠标悬停在面板的任何部分，右上角就会显示操作菜单。

1.  单击菜单并选择**编辑**。

    要使用键盘快捷键打开面板，请将鼠标悬停在面板上，然后按 **e** 键。

    面板将以编辑模式打开。

## 向面板添加标题和描述
<a name="v9-panels-add-title-description"></a>

 向面板添加标题和描述，与用户共享有关可视化的任何重要信息。例如，使用描述来记录可视化的目的。

1.  编辑面板。

1.  在面板显示选项窗格中，找到**图例选项**部分。

1.  输入**标题**。

    在此字段中输入的文本将显示在面板编辑器和控制面板中的面板顶部。

1.  为面板和要显示的数据编写描述。

    在此字段中输入的文本将显示在面板左上角的工具提示中。

    您可以在**标题**和**描述**字段中使用[定义的变量](v9-dash-variables.md)，但不能使用[全局变量](v9-dash-variable-add.md#v9-dash-variable-add-global)。

    

## 查看面板 JSON 模型
<a name="v9-panels-json-model"></a>

 浏览和导出面板、面板数据和数据帧 JSON 模型。

1.  打开包含面板的控制面板。

1.  将鼠标悬停在面板的任何部分，右上角就会显示操作菜单。

1.  单击菜单并选择**检查 > 面板 JSON**。

1.  在**选择来源**字段中，选择以下选项之一：
   +  **面板 JSON**：显示代表面板的 JSON 对象。
   +  **面板数据**：显示一个 JSON 对象，该对象表示传递给面板的数据。
   +  **DataFrame structure：**显示应用了转换、字段配置和覆盖配置的原始结果集。

1.  要浏览 JSON，请单击 **>** 展开或折叠 JSON 模型的各个部分。

## 配置重复面板
<a name="v9-panels-configure-repeating-panels"></a>

 您可以配置 Grafana 以向控制面板动态添加面板或行。动态面板是系统根据变量值创建的面板。变量会动态更改控制面板中所有面板的查询。

**注意**  
重复面板需要变量来选择一个或多个项目；不能将面板重复零次以将其隐藏。

 **开始前的准备工作：**
+  确保查询包含多值变量。

 **配置重复面板：**

1. 编辑要重复的面板。

1.  在显示选项窗格上，单击**面板选项 > 重复选项**。

1.  选择**方向**。
   +  选择**水平**排列面板 side-by-side。Grafana 可调整重复面板的宽度。当前，您不能将一行中的其他面板与重复的面板混合使用。
   +  选择**垂直**将面板排列成一列。重复面板的宽度与原始重复面板的宽度相同。

1.  要将更改传播到所有面板，请重新加载控制面板。

# 配置标准选项
<a name="v9-panels-configure-standard-options"></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 显示数据的方式。更改选项后，将应用于所有字段，即所有序列或列。例如，如果将单位更改为百分比，则所有带有数值的字段都将以百分比显示。

 有关字段格式设置选项的完整列表，请参阅[标准选项定义](#v9-panels-standard-options-definitions)。

**注意**  
 您可以将标准选项应用于大多数内置 Grafana 面板。一些尚未更新到新面板和数据模型的旧面板和社区面板将缺少全部或部分字段选项。

1.  打开控制面板，单击面板标题，然后单击**编辑**。

1.  在面板显示选项窗格中，找到**标准选项**部分。

1.  选择要应用的标准选项。

1.  要预览更改，请单击您正在编辑的字段选项框的外部，或按 **Enter** 键。

## 标准选项定义
<a name="v9-panels-standard-options-definitions"></a>

 本节介绍了所有可用的标准选项。

 您可以将标准选项应用于大多数内置 Grafana 面板。一些尚未更新到新面板和数据模型的旧面板和社区面板将缺少全部或部分字段选项。

 除非您在正在编辑的字段选项框外部单击或按 Enter 键，否则大多数字段选项不会影响可视化。

**注意**  
 我们一直在努力为所有可视化添加和扩展选项，但并非所有选项都适用于所有可视化。

### 单位
<a name="v9-panels-standard-options-unit"></a>

 允许选择字段应使用的单位。单击**单位**字段，然后向下钻取，直到找到所需的单位。您选择的单位将应用于除时间之外的所有字段。

#### 自定义单位
<a name="v9-panels-standard-options-custom-units"></a>

 您也可以使用单位下拉列表来指定自定义单位、自定义前缀或后缀以及日期时间格式。

 要选择自定义单位，请输入单位，然后在下拉列表中选择最后一个**自定义：xxx** 选项。
+  **后缀：<suffix>** 应跟在值后面的自定义单位。
+  **前缀：<prefix>** 应放在值前面的自定义单位。
+  **时间：<format>** 自定义日期时间格式类型，例如 **time:YYYY-MM-DD**。有关格式语法和选项，请参阅[格式](https://momentjs.com/docs/#/displaying/)。
+  **si:<base scale><unit characters>** 自定义 SI 单位。例如：**si: mF**。这个更高级一些，因为您可以指定单位和来源数据比例。因此，如果您的来源数据表示为毫（千），请在单位前面加上该 SI 比例字符。
+  **计数：<unit>** 自定义计数单位。
+  **货币：<unit>** 自定义货币单位。

 您还可以在单位选择器中粘贴原生表情符号，然后将其选择为自定义单位。

#### 字符串单位
<a name="v9-panels-standard-options-string-units"></a>

 Grafana 有时在解析字符串并将其显示为数字时过于激进。要配置 Grafana 以显示原始字符串值，请创建一个字段覆盖，并添加一个带有**字符串**单位的单位属性。

### 最小值
<a name="v9-panels-standard-options-min"></a>

 这让您可以设置百分比阈值计算中使用的最小值。留空表示根据所有序列和字段自动计算。

### 最大值
<a name="v9-panels-standard-options-max"></a>

 这让您可以设置百分比阈值计算中使用的最大值。留空表示根据所有序列和字段自动计算。

### 小数
<a name="v9-panels-standard-options-decimals"></a>

 指定 Grafana 在渲染值中包含的小数位数。如果将此字段留空，Grafana 会根据值自动截断小数位数。例如，1.1234 将显示为 1.12，100.456 将显示为 100。

 要显示所有小数，请将单位设置为**字符串**。

### 显示名称
<a name="v9-panels-standard-options-displayname"></a>

 可设置所有字段的显示标题。您可以使用[变量](v9-dash-variables.md)。

 当显示多个统计数据、字段或序列时，此字段控制每个统计数据中的标题。您可以使用 **\$1\$1\$1\$1field.name\$1** 这样的表达式，仅在标题中使用序列名称或字段名称。

 假设有一个名为 Temp 的字段，标签为 \$1"Loc"="PBI", "Sensor"="3"\$1 


|  表达式语法  |  示例  |  渲染为  |  说明  | 
| --- | --- | --- | --- | 
|  \$1\$1\$1\$1field.displayName\$1  |  与语法相同  |  Temp \$1Loc="PBI", Sensor="3"\$1  |  在 \$1\$1 中显示字段名称和标签（如果存在）。如果响应中只有一个标签键，那么对于标签部分，Grafana 会显示不带大括号的标签值。 | 
|  \$1\$1\$1\$1field.name\$1  |  与语法相同  |  Temp  |  显示字段的名称（不带标签）。 | 
|  \$1\$1\$1\$1field.labels\$1  |  与语法相同  |  Loc="PBI", Sensor="3" |  显示不带名称的标签。 | 
|  \$1\$1\$1\$1field.labels.X\$1  |  \$1\$1\$1\$1field.labels.Loc\$1  |  PBI  |  显示指定标签键的值。 | 
|  \$1\$1\$1\$1field.labels.\$1\$1values\$1  |  与语法相同  |  PBI, 3  |  显示用逗号分隔的标签值（不含标签键）。 | 

 如果在呈现特定字段的表达式后该值为空字符串，则使用默认的显示方法。

### 颜色方案
<a name="v9-panels-standard-options-color-scheme"></a>

 颜色选项及其对可视化的影响取决于您正在使用的可视化效果。有些可视化有不同的颜色选项。

 您可以指定单一颜色，也可以根据值选择连续（渐变）颜色方案。连续颜色使用相对于最小值和最大值的百分比来插值颜色。

 选择以下调色板之一：


|  颜色模式  |  说明  | 
| --- | --- | 
|  单色  |  指定单一颜色，这在覆盖规则中很有用  | 
|  来自阈值  |  通知 Grafana 从匹配的阈值中获取颜色  | 
|  经典调色板  |  Grafana 将通过序列索引在调色板中查找颜色来分配颜色。适用于图形、饼图和其他分类数据可视化  | 
|  Green-Yellow-Red （按价值计算）  |  连续颜色方案  | 
|  Blue-Yellow-Red （按价值计算）  |  连续颜色方案  | 
|  蓝色（按值）  |  连续颜色方案（面板背景为蓝色）  | 
|  红色（按值）  |  连续颜色方案（面板背景为蓝色）  | 
|  绿色（按值）  |  连续颜色方案（面板背景为蓝色）  | 
|  紫色（按值）  |  连续颜色方案（面板背景为蓝色）  | 

### 无值
<a name="v9-panels-standard-options-no-value"></a>

 输入当字段值为空或 null 时 Grafana 应显示的内容。默认值为连字符（-）。

# 查询和转换数据
<a name="v9-panels-query-xform"></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 支持多种类型的[数据来源](AMG-data-sources.md)。数据来源*查询*返回数据，供 Grafana *转换*和可视化。每个数据来源都使用自己的查询语言，而每个数据来源插件都实现了一个名为查询编辑器的查询构建用户界面。

## 关于查询
<a name="v9-panels-query-xform-about"></a>

Grafana 面板通过查询与数据来源通信，查询会检索数据进行可视化。查询是用数据来源使用的查询语言编写的问题。

您可以在面板的数据来源选项中配置查询频率和数据收集限制。Grafana 每个面板最多支持 26 个查询。

有关每个数据来源查询语言的更多信息，请参阅[数据来源](AMG-data-sources.md)部分。

**查询编辑器**

每个数据来源的*查询编辑器*都提供了一个自定义的用户界面，可帮助您编写利用其独特功能的查询。

由于查询语言之间的差异，每个数据来源查询编辑器的外观和功能都不同。根据您的数据来源，查询编辑器可能会提供自动完成功能、指标名称、变量建议或可视化查询构建界面。

有关特定数据来源的独特查询编辑器功能的详细信息，请参阅其文档：
+ 有关 Grafana 中包含的数据来源，请参阅[内置数据来源](AMG-data-sources-builtin.md)。
+ 有关 Grafana Enterprise 中包含的数据来源，请参阅 [连接到企业数据来源](AMG-data-sources-enterprise.md)。

**查询语法**

数据来源使用不同的查询语言来请求数据。有关特定数据来源的独特查询语言的详细信息，请参阅其文档。

**PostgreSQL 示例：**

```
SELECT hostname FROM host WHERE region IN($region)
```

**PromQL 示例：**

```
query_result(max_over_time(<metric>[${__range_s}s]) != <state>)
```

**特殊数据来源**

Grafana 还包含三种特殊数据来源：**Grafana**、**混合**和**控制面板**。有关详细信息，请参阅数据来源

## 导航查询选项卡
<a name="v9-panels-query-xform-navigate"></a>

面板的**查询**选项卡由以下元素组成：
+ **数据来源选择器**：选择要查询的数据来源。
+ **查询选项**：设置最大数据检索参数和查询运行时间间隔。
+ **查询检查器按钮**：打开查询检查器面板，您可以在其中查看和优化查询。
+ **查询编辑器列表**：列出您编写的查询。
+ **表达式**：使用表达式生成器创建警报表达式。有关表达式的更多信息，请参阅[编写表达式查询](v9-panels-query-xform-expressions.md)。

## 添加查询
<a name="v9-panels-query-xform-add"></a>

查询返回数据，供 Grafana 在控制面板面板中可视化。创建面板时，Grafana 会自动选择默认数据来源。

**添加查询**

1. 编辑要向其中添加查询的面板。

1. 选择 **Query**（查询）选项卡。

1. 选择**数据来源**下拉菜单并选择一个数据来源。

1. 选择**查询选项**以配置所需的最大数据点数。有关查询选项的更多信息，请参阅 [查询选项](#v9-panels-query-xform-options)。

1. 使用查询编辑器编写查询。

1. 选择**应用**。

Grafana 查询数据来源并将数据可视化。

## 管理查询
<a name="v9-panels-query-xform-manage"></a>

Grafana 在可折叠的查询行中整理查询。每个查询行都包含一个查询编辑器，并以字母（A、B、C 等）进行标识。

要管理查询，您可以复制查询、隐藏查询、产出查询、重新排序查询以及切换查询编辑器的帮助。

## 查询选项
<a name="v9-panels-query-xform-options"></a>

选择数据来源选择器旁边的**查询选项**，查看所选数据来源的设置。您在此处所做的更改仅影响在此面板中进行的查询。

Grafana 设置了以深灰色文本显示的默认值。更改以白色文本显示。要将字段恢复为默认设置，请从该字段中删除白色文本。

面板数据来源查询选项包括：
+ **最大数据点数**：如果数据来源支持该选项，则为返回的每个序列设置最大数据点数。如果查询返回的数据点数超过最大数据点设置，则数据来源将按 average、max 其他函数将其聚合在一起，来减少返回的数据点数。

  您可以限制点数以提高查询性能或平滑可视化线条。默认值是图形的宽度（或像素数），因为只有图形面板有足够的空间显示尽可能多的数据点，才能实现可视化。

  在流处理数据中，Grafana 对滚动缓冲使用最大数据点值。流处理是连续的数据流，而缓冲将数据流划分为多个块。例如，Loki 在实时跟踪模式下传输数据。
+ **最小间隔**：为自动计算的间隔设置最小限制，通常是最小抓取间隔。如果每 15 秒保存一次数据点，低于此间隔不会对您有什么好处。您也可以将其设置为比抓取间隔更高的最小值，以检索更粗粒度且运行良好的查询。
+ **间隔**：按时间对数据点进行聚合或分组时可以使用的时间范围。

  Grafana 会自动计算适当的间隔，该间隔可用作模板化查询中的变量。变量以秒（`$__interval`）或毫秒（`$__interval_ms`）为单位。

  间隔通常用于 sum 或 average 等聚合函数。例如，这是一个使用间隔变量的 Prometheus 查询：`rate(http_requests_total[$__interval])`。

  此自动间隔是根据图形的宽度计算的。当用户缩小可视化时，间隔会增大，从而产生更粗粒度的聚合。同样，如果用户放大，间隔会减小，从而产生更细粒度的聚合。

  有关更多信息，请参阅 [全局变量](v9-dash-variable-add.md#v9-dash-variable-add-global)。
+ **相对时间**：覆盖各个面板的相对时间范围，使其与控制面板右上角控制面板时间选择器中所选择的时间不同。您可以使用此函数在同一控制面板上显示不同时间段或日期的指标。
**注意**  
当控制面板的时间范围为绝对值时，面板时间覆盖不起作用。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/v9-panels-query-xform.html)
+ **时移**：通过相对于时间选取器移动面板的开始和结束时间，来覆盖各个面板的时间范围。例如，您可以将面板的时间范围移至比控制面板时间选择器早 2 小时。
**注意**  
当控制面板的时间范围为绝对值时，面板时间覆盖不起作用。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/v9-panels-query-xform.html)
+ **缓存超时**：*（仅在数据来源中可用时才可见）*如果您的时间序列存储具有查询缓存，则覆盖默认缓存超时。将此值指定为数值（秒）。

# 编写表达式查询
<a name="v9-panels-query-xform-expressions"></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-panels-query-about"></a>

服务器端表达式使您能够用数学和其他运算查询返回的数据。表达式会创建新数据，但不操作数据来源返回的数据，除了一些小的数据重组，使数据成为表达式可接受的输入。

**使用表达式**

表达式主要由 [Grafana Alerting](v9-alerts.md) 使用。处理在服务器端完成，因此表达式可以在没有浏览器会话的情况下运行。但是，表达式也可以用于后端数据来源和可视化。

**注意**  
表达式不适用于旧版控制面板警报。

表达式旨在通过合并来自不同数据来源的查询或提供数据来源中不可用的运算来扩充数据来源。

**注意**  
在可能的情况下，应在数据来源内部进行数据处理。将数据从存储复制到 Grafana 服务器进行处理效率低下，因此表达式主要针对轻量级数据处理。

表达式适用于返回时间序列或数字数据的数据来源查询。还可以处理[多维数据](getting-started-grafanaui.md#time-series-dimensions)。例如，返回多个序列的查询，其中每个序列都由标签或标记标识。

单个表达式将一个或多个查询或其他表达式作为输入，并将数据添加到结果中。每个单独的表达式或查询都由一个变量表示，该变量是一个命名标识符，称为 RefID（例如，默认字母 `A` 或 `B`）。

要在另一个表达式中引用单个表达式或数据来源查询的输出，此标识符将用作变量。

**表达式类型**

表达式可以处理两种类型的数据。
+ 时间序列的集合。
+ 数字的集合，其中每个数字都是一个项。

每个集合均从单个数据来源查询或表达式返回，并由 ReFID 表示。每个集合都是一个集，而集中的每一项都由其维度唯一标识，这些维度以[标签](getting-started-grafanaui.md#labels)或键值对形式存储。

**数据来源查询**

服务器端表达式仅支持对后端数据来源的查询。通常假设数据是有标签的时间序列数据。将来，我们打算添加查询返回类型（数字或时间序列）数据的断言，以便表达式可以更好地处理错误。

与表达式一起使用时，数据来源查询由表达式引擎运行。在此过程中，将数据重组为一个时间序列或每个数据帧一个数字。例如，如果使用的数据来源在表视图中的一个帧上返回多个序列，那么在使用表达式运行时，您可能会发现其看起来有所不同。

目前，在使用数据帧时，唯一支持的非时间序列格式（数字）是表响应，返回的是无时间的数据帧、字符串列和一个数字列：


| Loc | 主机 | Avg\$1CPU | 
| --- | --- | --- | 
|  MIA  |  A  |  1  | 
|  NYC  |  B  |  2  | 

上面的示例将生成一个适用于表达式的数字。字符串列变成标签，数字列变成相应的值。例如 `{"Loc": "MIA", "Host": "A"}`，值为 1。

**操作**

您可以在表达式中使用以下运算：math、reduce 和 resample。

**数学**

Math 适用于时间序列或数字数据的自由格式数学公式。数学运算将数字和时间序列作为输入，并将其转换为不同的数字和时间序列。

在引用其他查询或表达式中的数据时，RefID 会以美元符号作为前缀，例如 `$A`。如果变量的名称中包含空格，则可以使用大括号语法，例如 `${my variable}`。

数字常量可以是十进制（`2.24`）、八进制（带前导 0 `072`）或十六进制（带前导 0x `0x2A`）。还支持指数和符号（例如 `-0.8e-2`）。

**运算符**

支持算术运算符（`+`、二元和一元 `-`、`*`、`/`、`%`、指数 `**`）、关系运算符（`<`、`>`、`==`、`!=`、`>=`、`<=`）和逻辑运算符（`&&`、`||` 和一元 `!`）。

运算对数据的行为方式取决于其是数字数据还是时间序列数据。

对于二元运算（例如 `$A + $B` 或 `$A || $B`），运算符根据数据类型按以下方式应用：
+ 如果 `$A` 和 `$B` 都是数字，则对这两个数字执行运算。
+ 如果一个变量是数字，而另一个变量是时间序列，则执行时间序列中每个点的值与数字之间的运算。
+ 如果 `$A` 和 `$B` 都是时间序列数据，则对 `$A` 和 `$B` 中存在的每个时间戳执行两个序列中每个值之间的运算。可使用 `Resample` 运算排列时间戳。

摘要：
+ 数字 OP 数字 = 数字
+ 数字 OP 序列 = 序列
+ 序列 OP 序列 = 序列

由于表达式处理由单个变量表示的多个序列或数字，因此二进制运算还会在两个变量之间执行联合（连接）。这是根据与每个序列或数字关联的标识标签完成的。

因此，如果 `$A` 中的数字带有 `{host=web01}` 等标签，而 `$B` 中的另一个数字具有相同的标签，则在每个变量中的这两个项目之间执行运算，结果将共享相同的标签。此联合的行为规则如下：
+ 无标签的项将连接到任何项。
+ 如果 `$A` 和 `$B` 都只包含一个项（一个序列或一个数字），则二者将会连接。
+ 如果标签是具体的数学运算，则会连接。
+ 如果标签是另一个标签的子集，例如 `$A` 中的一个项标记为 `{host=A,dc=MIA}`，而 `$B` 中的一个项标记为 `{host=A}`，则二者将会连接。
+ 如果在 `$A` 等变量中，每个项都有不同的标签键，则连接行为未定义。

关系运算符和逻辑运算符返回 0 表示 false，返回 1 表示 true。

**数学函数**

虽然大多数函数存在于自己的表达式运算中，但数学运算确实有一些类似于数学运算符或符号的函数。当函数可以取数字或序列时，将返回与参数相同的类型。如果是序列，则对序列中每个点的值执行运算。

*abs*

abs 返回其参数的绝对值，可以是数字或序列。例如，`abs(-1)` 或 `abs($A)`。

*is\$1inf*

is\$1inf 取一个数字或序列，`Inf` 值（负值或正值）返回 `1`，其他值返回 `0`。例如 `is_inf($A)`。

**注意**  
例如，如果需要特别检查负无穷大，可以做一个比较，比如 `$A == infn()`。

*is\$1nan*

is\$1nan 取一个数字或序列，`NaN` 值返回 `1`，其他值返回 `0`。例如 `is_nan($A)`。此函数之所以存在，是因为 `NaN` 不等于 `NaN`。

*is\$1null*

is\$1null 取一个数字或序列，`null` 值返回 `1`，其他值返回 `0`。例如 `is_null($A)`。

*is\$1number*

is\$1number 取一个数字或序列，所有实数值返回 `1`，其他值返回 `0`（即 `null`、`Inf+`、`Inf-` 和 `NaN`）。例如 `is_number($A)`。

*log*

log 返回其参数的自然对数，可以是数字或序列。如果值小于 0，则返回 `NaN`。例如，`log(-1)` 或 `log($A)`。

*inf、infn、nan 和 null*

inf、infn、nan 和 null 函数都返回一个名称值。主要用于测试。示例：`null()`。

*round*

Round 返回一个四舍五入的整数值。例如，`round(3.123)` 或 `round($A)`。

*ceil*

Ceil 将数字向上舍入到最接近的整数值。例如，`ceil(3.123)` 将返回 `4`。

*floor*

Floor 将数字向下舍入到最接近的整数值。例如，`floor(3.123` 将返回 `3`。

**Reduce**

Reduce 取查询或表达式返回的一个或多个时间序列，将每个序列转换为一个数字。时间序列的标签作为标签保留在每个输出的归约数上。

*字段：*
+ **函数**：要使用的归约函数
+ **输入**：要重采样的变量（RefID（如 `A`））
+ **模式**：当序列包含非数值（null、NaN、\$1-Inf）时，允许控制归约函数的行为

**归约函数**

*计数*

Count 返回每个序列中的点数。

*平均值*

Mean 返回每个序列中所有值的总和除以该序列中的点数。在 `strict` 模式下，如果序列中的任何值为 null 或 nan，或者序列为空，则返回 NaN。

*Min 和 Max*

Min 和 Max 分别返回序列中的最小值或最大值。在 `strict` 模式下，如果序列中的任何值为 null 或 nan，或者序列为空，则返回 NaN。

*总计*

Sum 返回序列中所有值的总和。如果序列长度为零，则总和为 0。在 `strict` 模式下，如果序列中的任何值为 NaN 或 Null，则返回 NaN。

*Last*

Last 返回序列中的最后一个数字。如果该序列没有值，则返回 NaN。

**归约模式**

*Strict*

在 Strict 模式下，按原样处理输入序列。如果序列中的任何值为非数字（null、NaN 或 \$1-Inf），则返回 NaN。

*Drop Non-Numeric*

在此模式下，在运行归约函数之前，将筛选掉输入序列中的所有非数字值（null、NaN 或 \$1-Inf）。

*Replace Non-Numeric*

在此模式下，所有非数字值都将替换为预定义值。

**Resample**

Resample 会更改每个时间序列中的时间戳，使其具有一致的时间间隔。主要用例是，您可以对不共享相同时间戳的时间序列进行重采样，以便在其之间执行数学运算。这可以通过对两个序列中的每一个进行重采样，然后在引用重采样变量的数学运算中来完成。

*字段：*
+ **输入**：要重采样的时间序列数据变量（refID（如 `A`））
+ **重采样至**：重采样的时间持续，例如，`10s.` 单位 `s` 表示秒，`m` 表示分钟，`h` 表示小时，`d` 表示天，`w` 表示周，`y` 表示年。
+ **降采样**：当每个窗口样本有多个数据点时使用的归约函数。有关行为详细信息，请参阅归约运算。
+ **升采样**：用于填充无数据点窗口样本的方法。
  + **pad** 填充上一个已知值
  + **backfill** 回填下一个已知值
  + **fillna** 用来填充空白的样本窗口 NaNs

## 编写表达式
<a name="v9-panels-query-write"></a>

如果您的数据来源支持表达式，Grafana 会显示**表达式**按钮，并在查询编辑器列表中显示任何现有表达式。

**编写表达式**

1. 打开面板。

1. 在查询下方，选择**表达式**。

1. 在**运算**字段中，选择要编写的表达式类型。

1. 编写表达式。

1. 选择**应用**。

## 特殊情况
<a name="v9-panels-query-special"></a>

当任何查询的数据来源未返回序列或数字时，表达式引擎将返回 `NoData`。例如，如果请求包含两个由表达式合并的数据来源查询，而 `NoData` 由至少一个数据来源查询返回，则整个查询的返回结果为 `NoData`。有关 Grafana Alerting 如何处理 `NoData` 结果的更多信息，请参阅 [处理无数据或错误的情况](v9-alerting-managerules-grafana.md#v9-alerting-rule-no-data-error)。

# 与其他面板共享查询结果
<a name="v9-panels-query-share"></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 没有为每个面板发送单独的查询，而是发送一个查询，而其他面板则使用查询结果来构造可视化。

例如，当您有多个面板可视化相同的数据时，该策略可以大大减少查询的次数。

**共享查询结果**

1. [创建控制面板](v9-dash-creating.md)。

1. 将标题更改为 `Source panel`。使用此面板作为其他面板的来源。

1. 定义要共享的一个或多个查询。

   如果您没有可用的数据源，请使用**TestData**数据源，它会返回一个可用于测试的随机时间序列。

1. 添加第二个面板，然后在查询编辑器中选择**控制面板**数据来源。

1. 在**使用来自面板列表的结果**中，选择您创建的第一个面板。

现在，在来源面板中定义的所有查询都可用于新面板。在来源面板中进行的查询可与多个面板共享。

您可以单击任何查询以转到定义查询的面板。

# 转换数据
<a name="v9-panels-xform"></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-panels-xform-types"></a>

Grafana 提供了多种转换数据的方式。下面是转换函数的完整列表。

## 转换顺序
<a name="v9-panels-xform-order"></a>

当存在多个转换时，Grafana 会按其列出的顺序来应用。每次转换都会创建一个新的结果集，然后传递给处理管道中的下一个转换。

Grafana 应用转换的顺序会直接影响结果。例如，如果使用 Reduce 转换将一列的所有结果压缩为单个值，则只能对该值应用转换。

## 向数据添加转换函数
<a name="v9-panels-xform-add"></a>

以下步骤将指导您向数据添加转换。

**向面板添加转换**

1. 导航到要在其中添加一个或多个转换的面板。

1. 选择面板标题，然后单击**编辑**。

1. 选择 **Transform (转换)** 选项卡。

1. 选择转换。此时会显示一个转换行，您可以在其中配置转换选项。

1. 要应用另一个转换，请选择**添加转换**。这次转换对上一次转换返回的结果执行操作。

## 调试转换
<a name="v9-panels-xform-debug"></a>

要查看转换的输入和输出结果集，请选择转换行右侧的调试图标。

输入和输出结果集有助于调试转换。

## 删除转换
<a name="v9-panels-xform-delete"></a>

建议删除不需要的转换。删除转换时，即从可视化中删除数据。

先决条件：

识别所有依赖转换的控制面板，并通知受影响的控制面板用户。

**删除转换**

1. 打开面板进行编辑。

1. 选择 **Transform (转换)** 选项卡。

1. 选择要删除的转换旁边的垃圾桶图标。

## 转换函数
<a name="v9-panels-xform-functions"></a>

您可以对数据执行以下转换。

**从计算添加字段**

使用此转换可以添加一个根据其他两个字段计算得出的新字段。每次转换都允许您添加一个新字段。
+ **模式**：选择一种模式：
  + **减少行**：对选定字段的每一行分别应用所选计算。
  + **二元选项**：对两个选定字段的单行中的值应用基本的数学运算（求和、乘法等）。
+ **字段名称**：选择要在新字段的计算中使用的字段名称。
+ **计算**：如果您选择**减少行**模式，则会出现**计算**字段。单击字段以查看可用于创建新字段的计算选项列表。有关可用计算的信息，请参阅[计算类型](v9-panels-calculation-types.md)。
+ **运算**：如果您选择**二元选项**模式，则出现**运算**字段。通过这些字段，您可以对来自两个选定字段的单行中的值进行基本数学运算。也可以使用数值进行二元运算。
+ **别名**：（可选）输入新字段的名称。如果将此项保留为空，则将对该字段命名以与计算匹配。
+ **替换所有字段**：（可选）如果您想在可视化中隐藏所有其他字段并仅显示经过计算字段，请使用此选项。

**连接字段**

这种转换将所有帧中的所有字段合并为一个结果。考虑以下两个查询。

查询 A：


| 临时文件 | 正常运行时间 | 
| --- | --- | 
|  15.4  |  1230233  | 

查询 B：


| AQI | 错误 | 
| --- | --- | 
|  3.2  |  5  | 

连接字段后，数据帧为：


| 临时文件 | 正常运行时间 | AQI | 错误 | 
| --- | --- | --- | --- | 
|  15.4  |  1230233  |  3.2  |  5  | 

**来自查询结果的配置**

通过这种转换，您可以选择一个查询，从中提取**最小值**、**最大值**、**单位**和**阈值**等标准选项，并将其应用于其他查询结果。这实现了动态查询驱动的可视化配置。

如果您想为配置查询结果中的每一行提取唯一配置，请尝试行到字段的转换。

**Options**
+ **配置查询**：选择返回要用作配置的数据的查询。
+ **应用于**：选择要对哪些字段或序列应用配置。
+ **应用于选项**：通常是字段类型或字段名称正则表达式，具体取决于您在**应用于**中选择的选项。

**转换字段类型**

此转换会更改指定字段的字段类型。
+ **字段**：从可用字段中选择
+ **as** — 选择 FieldType 要转换为
  + **数字**：尝试将值变为数字
  + **字符串**：将值设为字符串
  + **时间**：尝试将值解析为时间
    + 将显示一个选项，用于通过诸 DateFormat 如 yyyy-mm-dd或 DD MM YYYY hh: mm: ss 之类的字符串将 a 指定为输入
  + **布尔值**：将值变为布尔值

例如，可通过选择时间字段“Time”和日期格式“YYYY”来修改以下查询。


| 时间 | 标记 | 值 | 
| --- | --- | --- | 
|  7/1/2017  |  高于  |  25  | 
|  8/2/2018  |  低于  |  22  | 
|  9/2/2019  |  低于  |  29  | 
|  10/4/2020  |  高于  |  22  | 

结果：


| 时间 | 标记 | 值 | 
| --- | --- | --- | 
|  1/1/2017  |  高于  |  25  | 
|  1/1/2018  |  低于  |  22  | 
|  2019 年 1 月 1 日  |  低于  |  29  | 
|  1/1/2020  |  高于  |  22  | 

**按名称筛选数据**

使用此转换可以移除部分查询结果。

Grafana 显示**标识符**字段，后面是您的查询返回的字段。

您可以通过以下两种方式之一应用筛选器：
+ 输入正则表达式。
+ 选择一个字段以切换对该字段的筛选。筛选后的字段显示为深灰色文本，未筛选的字段包含白色文本。

**按查询筛选数据**

如果您想要隐藏一个或多个查询，请在包含多个查询的面板中使用此转换。

Grafana 以深灰色文本显示查询标识字母。单击查询标识符以切换筛选。如果查询字母是白色的，则会显示结果。如果查询字母是深色的，则会隐藏结果。

**注意**  
这种转换不适用于 Graphite，因为此数据来源不支持将返回的数据与查询关联。

**按值筛选数据**

此转换允许您直接在 Grafana 中筛选数据，并从查询结果中删除一些数据点。您可以选择包含或排除与您定义的一个或多个条件相匹配的数据。这些条件将应用于选定的字段。

如果您的数据来源未按值进行本机筛选，则此转换非常有用。如果您使用的是共享查询，也可以使用它来缩小要显示的值的范围。

所有字段的可用条件如下：
+ **正则表达式**：匹配正则表达式
+ **为 Null 值**：如果值为 null 值，则匹配
+ **为非 Null 值**：如果值为非 null 值，则匹配
+ **等于**：如果值等于指定值，则匹配
+ **不同**：如果值与指定值不同，则匹配

数值字段的可用条件如下：
+ **大于**：如果值大于指定值，则匹配
+ **小于**：如果值小于指定值，则匹配
+ **大于或等于**：如果值大于或等于指定值，则匹配
+ **小于或等于**：如果值小于或等于指定值，则匹配
+ **范围**：匹配指定的最小值和最大值之间的范围，包括最小值和最大值

考虑以下数据集：


| 时间 | 温度 | 海拔 | 
| --- | --- | --- | 
|  7/7/2020 上午 11:34:23  |  32  |  101  | 
|  7/7/2020 上午 11:34:22  |  28  |  125  | 
|  7/7/2020 上午 11:34:21  |  26  |  110  | 
|  7/7/2020 上午 11:34:20  |  23  |  98  | 
|  7/7/2020 上午 10:32:24  |  31  |  95  | 
|  7/7/2020 上午 10:31:22  |  20  |  85  | 
|  7/7/2020 上午 9:30:57  |  19  |  101  | 

如果**包括**温度低于 30°C 的数据点，配置将如下所示：
+ **筛选条件类型**：`Include`
+ **条件**：`Temperature` 匹配 `Lower Than 30` 的行

您将得到以下结果，其中仅包括低于 30°C 的温度：


| 时间 | 温度 | 海拔 | 
| --- | --- | --- | 
|  7/7/2020 上午 11:34:22  |  28  |  125  | 
|  7/7/2020 上午 11:34:21  |  26  |  110  | 
|  7/7/2020 上午 11:34:20  |  23  |  98  | 
|  7/7/2020 上午 10:31:22  |  20  |  85  | 
|  7/7/2020 上午 9:30:57  |  19  |  101  | 

您可以向筛选器添加多个条件。例如，您可能希望仅在海拔大于 100 时才包含数据。为此，请将该条件添加到以下配置：
+ 筛选条件类型：符合 `Match All` 条件的 `Include` 行
+ 条件 1：`Temperature` 匹配 `Lower` 而非 `30` 的行
+ 条件 2：`Altitude` 匹配 `Greater` 而非 `100` 的行

当您有多个条件时，您可以选择是希望将操作（包括/排除）应用于您添加的 **Match all** 条件的行，还是 **Match any** 条件的行。

在上面的示例中，我们之所以选择 **Match all**，是因为我们希望包括温度低于 30 且海拔高于 100 的行。如果我们想包括温度低于 30 或海拔高于 100 的行，则可以选择 **Match any**。这包括原始数据中的第一行，该行的温度为 32°C（与第一个条件不匹配），但海拔高度为 101（与第二个条件匹配），因此包括在内。

无效或配置不完整的条件将被忽略。

**Group by** (分组依据)

此转换按指定的字段（列）值对数据进行分组，并处理每个组的计算。单击以查看计算选项的列表。

以下是原始数据的示例：


| 时间 | Server ID | CPU 温度 | 服务器状态 | 
| --- | --- | --- | --- | 
|  7/7/2020 上午 11:34:20  |  server 1  |  80  |  关闭  | 
|  7/7/2020 上午 11:34:20  |  server 3  |  62  |  OK  | 
|  7/7/2020 上午 10:32:20  |  server 2  |  90  |  过载  | 
|  7/7/2020 上午 10:31:22  |  server 3  |  55  |  正常  | 
|  7/7/2020 上午 9:30:57  |  server 3  |  62  |  Rebooting  | 
|  7/7/2020 上午 9:30:05  |  server 2  |  88  |  OK  | 
|  7/7/2020 上午 9:28:06  |  server 1  |  80  |  OK  | 
|  7/7/2020 上午 9:25:05  |  server 2  |  88  |  OK  | 
|  7/7/2020 上午 9:23:07  |  server 1  |  86  |  OK  | 

该转换分两个步骤。首先，指定一个或多个字段作为数据分组依据。这会将这些字段的所有相同值分组到一起，就像对它们进行排序一样。例如，如果我们按服务器 ID 字段分组，则其将按以下方式对数据分组：


| 时间 | Server ID | CPU 温度 | 服务器状态 | 
| --- | --- | --- | --- | 
|  7/7/2020 上午 11:34:20  |  server 1  |  80  |  关闭  | 
|  7/7/2020 上午 9:28:06  |  server 1  |  80  |  OK  | 
|  7/7/2020 上午 9:23:07  |  server 1  |  86  |  OK  | 
|  7/7/2020 上午 10:32:20  |  server 2  |  90  |  过载  | 
|  7/7/2020 上午 9:30:05  |  server 2  |  88  |  OK  | 
|  7/7/2020 上午 9:25:05  |  server 2  |  88  |  OK  | 
|  7/7/2020 上午 11:34:20  |  server 3  |  62  |  OK  | 
|  7/7/2020 上午 10:31:22  |  server 3  |  55  |  正常  | 
|  7/7/2020 上午 9:30:57  |  server 3  |  62  |  Rebooting  | 

包含相同服务器 ID 值的所有行将分组在一起。

选择作为数据分组依据的字段后，可以在其他字段上添加各种计算，计算将应用于每组行。例如，您可能想要计算每台服务器的平均 CPU 温度。因此，我们可以将应用于 CPU 温度字段的*平均值*计算相加，得到以下结果：


| Server ID | CPU 温度（平均值） | 
| --- | --- | 
|  server 1  |  82  | 
|  server 2  |  88.6  | 
|  server 3  |  59.6  | 

我们可以添加多个计算。例如：
+ 对于“时间”字段，我们可以计算*上个*值，以了解每台服务器上一个数据点的接收时间
+ 对于“服务器状态”字段，我们可以计算*上个*值，以了解每台服务器上一次的状态值。
+ 对于“温度”字段，我们可以计算*上个*值，以了解每台服务器的最新监控温度。

然后我们会得到：


| Server ID | CPU 温度（平均值） | CPU 温度（上个值） | 时间（上个值） | 服务器状态（上个值） | 
| --- | --- | --- | --- | --- | 
|  server 1  |  82  |  80  |  7/7/2020 上午 11:34:20  |  关闭  | 
|  server 2  |  88.6  |  90  |  7/7/2020 上午 10:32:20  |  过载  | 
|  server 3  |  59.6  |  62  |  7/7/2020 上午 11:34:20  |  OK  | 

此转换使您能够从时间序列中提取关键信息，并以便捷的方式显示这些信息。

**按字段连接**

使用此转换将多个结果连接到一个表中。这对于将多个时间序列结果转换为具有共享时间字段的单个宽表特别有用。

*内连接*

内连接合并多个表中的数据，其中所有表共享选定字段中的相同值。这种类型的连接会排除每个结果中值不匹配的数据。

使用此转换将多个查询结果（通过连接字段或首次列组合）合并为一个结果，并删除无法成功连接的行。

在以下示例中，两个查询返回表数据。在应用内连接转换之前，将其可视化为两个独立的表。

查询 A：


| 时间 | 任务 | 正常运行时间 | 
| --- | --- | --- | 
|  7/7/2020 上午 11:34:20  |  节点  |  25260122  | 
|  7/7/2020 上午 11:24:20  |  postgre  |  123001233  | 
|  7/7/2020 上午 11:14:20  |  postgre  |  345001233  | 

查询 B：


| 时间 | 服务器 | 错误 | 
| --- | --- | --- | 
|  7/7/2020 上午 11:34:20  |  server 1  |  15  | 
|  7/7/2020 上午 11:24:20  |  server 2  |  5  | 
|  7/7/2020 上午 11:04:20  |  server 3  |  10  | 

应用内连接转换后的结果如下所示：


| 时间 | 任务 | 正常运行时间 | 服务器 | 错误 | 
| --- | --- | --- | --- | --- | 
|  7/7/2020 上午 11:34:20  |  节点  |  25260122  |  server 1  |  15  | 
|  7/7/2020 上午 11:24:20  |  postgre  |  123001233  |  server 2  |  5  | 

*外连接*

外连接包括来自内连接的所有数据，以及在每个输入中值不匹配的行。内连接在时间字段上连接查询 A 和查询 B，而外连接包括所有在时间字段上不匹配的行。

在以下示例中，两个查询返回表数据。在应用外连接转换之前，将其可视化为两个表。

查询 A：


| 时间 | 任务 | 正常运行时间 | 
| --- | --- | --- | 
|  7/7/2020 上午 11:34:20  |  节点  |  25260122  | 
|  7/7/2020 上午 11:24:20  |  postgre  |  123001233  | 
|  7/7/2020 上午 11:14:20  |  postgre  |  345001233  | 

查询 B：


| 时间 | 服务器 | 错误 | 
| --- | --- | --- | 
|  7/7/2020 上午 11:34:20  |  server 1  |  15  | 
|  7/7/2020 上午 11:24:20  |  server 2  |  5  | 
|  7/7/2020 上午 11:04:20  |  server 3  |  10  | 

应用外连接转换后的结果如下所示：


| 时间 | 任务 | 正常运行时间 | 服务器 | 错误 | 
| --- | --- | --- | --- | --- | 
|  7/7/2020 上午 11:04:20  |    |    |  server 3  |  10  | 
|  7/7/2020 上午 11:14:20  |  postgre  |  345001233  |    |    | 
|  7/7/2020 上午 11:34:20  |  节点  |  25260122  |  server 1  |  15  | 
|  7/7/2020 上午 11:24:20  |  postgre  |  123001233  |  server 2  |  5  | 

**标签到字段**

此转换将包含标签或标记的时间序列结果更改为表，其中每个标签键和值都包含在表结果中。标签可以显示为列或行值。

给定两个时间序列的查询结果：
+ 序列 1：标签 Server=Server A，Datacenter=EU
+ 序列 2：标签 Server=Server B，Datacenter=EU

在**列**模式下，结果如下所示：


| 时间 | 服务器 | Datacenter | 值 | 
| --- | --- | --- | --- | 
|  7/7/2020 上午 11:34:20  |  Server A  |  EU  |  1  | 
|  7/7/2020 上午 11:34:20  |  Server B  |  EU  |  2  | 

在“行”模式下，结果对每个序列都创建一个表，并显示每个标签值，如下所示：


| label | 值 | 
| --- | --- | 
|  服务器  |  Server A  | 
|  Datacenter  |  EU  | 


| label | 值 | 
| --- | --- | 
|  服务器  |  Server B  | 
|  Datacenter  |  EU  | 

*值字段名称*

如果您选择 Server 作为**值字段名称**，则 Server 标签的每个值都将获得一个字段。


| 时间 | Datacenter | Server A | Server B | 
| --- | --- | --- | --- | 
|  7/7/2020 上午 11:34:20  |  EU  |  1  |  2  | 

*合并行为*

标签到字段转换器在内部是两个独立的转换。第一个作用于单个序列，并将标签提取到字段。第二个是合并转换，将所有结果合并到一个表。合并转换会尝试连接所有匹配字段。此合并步骤是必需的，无法关闭。

**注意**  
*合并*转换可以单独使用，详细说明如下。

为了说明这一点，这里有一个示例，其中有两个查询返回没有重叠标签的时间序列。
+ 序列 1：标签 Server=ServerA
+ 序列 2：标签 Datacenter=EU

首先会生成这两个表：


| 时间 | 服务器 | 值 | 
| --- | --- | --- | 
|  7/7/2020 上午 11:34:20  |  ServerA  |  10  | 


| 时间 | Datacenter | 值 | 
| --- | --- | --- | 
|  7/7/2020 上午 11:34:20  |  EU  |  20  | 

合并后：


| 时间 | 服务器 | 值 | Datacenter | 
| --- | --- | --- | --- | 
|  7/7/2020 上午 11:34:20  |  ServerA  |  10  |    | 
|  7/7/2020 上午 11:34:20  |    |  20  |  EU  | 

**合并** 

使用此转换将来自多个查询的结果合并为一个结果。这在使用表面板可视化时很有用。可以合并的值将合并到同一行中。如果共享字段包含相同的数据，则可以合并值。

在下面的示例中，我们有两个返回表数据的查询。在应用转换之前，将其可视化为两个独立的表。

查询 A：


| 时间 | 任务 | 正常运行时间 | 
| --- | --- | --- | 
|  7/7/2020 上午 11:34:20  |  节点  |  25260122  | 
|  7/7/2020 上午 11:24:20  |  postgre  |  123001233  | 

查询 B：


| 时间 | 任务 | 错误 | 
| --- | --- | --- | 
|  7/7/2020 上午 11:34:20  |  节点  |  15  | 
|  7/7/2020 上午 11:24:20  |  postgre  |  5  | 

以下是应用合并转换后的结果：


| 时间 | 任务 | 错误 | 正常运行时间 | 
| --- | --- | --- | --- | 
|  7/7/2020 上午 11:34:20  |  节点  |  15  |  25260122  | 
|  7/7/2020 上午 11:24:20  |  postgre  |  5  |  123001233  | 

**整理字段**

使用此转换可以重命名、重新排序或隐藏查询返回的字段。

**注意**  
此转换仅适用于具有单个查询的面板。如果您的面板有多个查询，则必须应用外连接转换或删除多余的查询。

Grafana 会显示查询返回的字段列表。你可以：
+ 将光标悬停在字段上以更改字段顺序。光标变成手形，然后您就可以将该字段拖到新的位置。
+ 通过单击字段名称旁边的眼睛图标隐藏或显示字段。
+ 通过在重命名框中键入新名称来重命名字段。

**按值分区**

在绘制多个序列时，这种转换可避免使用不同 `WHERE` 子句对同一数据来源进行多次查询。考虑一个包含以下数据的指标 SQL 表：


| 时间 | Region | 值 | 
| --- | --- | --- | 
|  2022 年 10 月 20 日下午 12:00:00  |  美国  |  1520  | 
|  2022 年 10 月 20 日下午 12:00:00  |  EU  |  2936  | 
|  2022 年 10 月 20 日凌晨 1:00:00  |  美国  |  1327  | 
|  2022 年 10 月 20 日凌晨 1:00:00  |  EU  |  912  | 

在 v9.3 之前，如果你想在同一个 TimeSeries 面板中绘制美国的红色趋势线和欧盟的蓝色趋势线，你可能需要将其分成两个查询：

```
SELECT Time, Value FROM metrics WHERE Time > '2022-10-20' AND Region='US'
SELECT Time, Value FROM metrics WHERE Time > '2022-10-20' AND Region='EU'
```

这还需要您提前知道指标表中实际存在哪些区域。

通过*按值分区*转换器，您可以发出单个查询，并根据您选择的一个或多个列（`fields`）中的唯一值来拆分结果。下面的示例使用了 `Region`。

```
SELECT Time, Region, Value FROM metrics WHERE Time > '2022-10-20'
```


| 时间 | Region | 值 | 
| --- | --- | --- | 
|  2022 年 10 月 20 日下午 12:00:00  |  美国  |  1520  | 
|  2022 年 10 月 20 日凌晨 1:00:00  |  美国  |  1327  | 


| 时间 | Region | 值 | 
| --- | --- | --- | 
|  2022 年 10 月 20 日下午 12:00:00  |  EU  |  2936  | 
|  2022 年 10 月 20 日凌晨 1:00:00  |  EU  |  912  | 

**Reduce**

*Reduce* 转换将计算应用于帧中的每个字段，并返回单个值。应用此转换时，将删除时间字段。

考虑以下输入：

查询 A：


| 时间 | 临时文件 | 正常运行时间 | 
| --- | --- | --- | 
|  7/7/2020 上午 11:34:20  |  12.3  |  256122  | 
|  7/7/2020 上午 11:24:20  |  15.4  |  1230233  | 

查询 B：


| 时间 | AQI | 错误 | 
| --- | --- | --- | 
|  7/7/2020 上午 11:34:20  |  6.5  |  15  | 
|  7/7/2020 上午 11:24:20  |  3.2  |  5  | 

reduce 转换器具有两种模式：
+ **序列到行**：为每个字段创建一行，为每个计算创建一列。
+ **减少字段**：保留现有的框架结构，但将每个字段折叠为单个值。

例如，如果将**第一个**和**最后一个**计算与**序列到行**转换一起使用，则结果为：


| 字段 | 第一个 | Last | 
| --- | --- | --- | 
|  临时文件  |  12.3  |  15.4  | 
|  正常运行时间  |  256122  |  1230233  | 
|  AQI  |  6.5  |  3.2  | 
|  错误  |  15  |  5  | 

最后一次计算的 Reduce 字段会产生两个帧，每个帧都有一行：

查询 A：


| 临时文件 | 正常运行时间 | 
| --- | --- | 
|  15.4  |  1230233  | 

查询 B：


| AQI | 错误 | 
| --- | --- | 
|  3.2  |  5  | 

**按正则表达式重命名**

使用此转换，可以使用正则表达式和替换模式来重命名部分查询结果。

您可以指定一个正则表达式，该正则表达式只应用于匹配，同时指定一个支持反向引用的替换模式。例如，假设您在可视化每台主机的 CPU 使用情况，并希望删除域名。您可以将正则表达式设置为 `([^\.]+)\..+`，并将替换模式设置为 `$1`，`web-01.example.com` 将变为 `web-01`。

**行到字段**

行到字段的转换将行转换为单独的字段。这非常有用，因为可以单独设置字段的样式和配置。还可以使用附加字段作为动态字段配置的来源，或将其映射到字段标签。然后，可以使用其他标签为生成的字段定义更好的显示名称。

此转换包括一个字段表，该表列出了配置查询返回的数据中的所有字段。通过此表，您可以控制应将哪些字段映射到每个配置属性（\$1用作\$1\$1选项）。如果返回的数据中有多行，您还可以选择要选择的值。

这种转换需要：
+ 一个字段用作字段名称的来源。

  默认情况下，转换使用第一个字符串字段作为来源。您可以在要使用的字段的**用作**列中选择**字段名称**，来覆盖此默认设置。
+ 一个字段用作值的来源。

  默认情况下，转换使用第一个数字字段作为来源。但您可以在要使用的字段的**用作**列中选择**字段值**，来覆盖此默认设置。

在以下位置可视化数据时非常有用：
+ 计量表
+ Stat
+ 饼图

*将多余字段映射到标签*

如果字段未映射到配置属性，Grafana 会自动将其用作输出字段上标签的来源：

示例：


| Name | DataCenter | 值 | 
| --- | --- | --- | 
|  ServerA  |  美国  |  100  | 
|  ServerB  |  EU  |  200  | 

输出：


| ServerA（标签： DataCenter: 美国） | ServerB（标签： DataCenter：欧盟） | 
| --- | --- | 
|  10  |  20  | 

现在可以在字段显示名称中使用额外的标签，提供更完整的字段名称。

如果要从一个查询中提取配置并将其应用于另一个查询，则应使用查询结果转换中的配置。

*示例*

输入：


| Name | 值 | 最大值 | 
| --- | --- | --- | 
|  ServerA  |  10  |  100  | 
|  ServerB  |  20  |  200  | 
|  ServerC  |  30  |  300  | 

输出：


| ServerA（配置：max=100） | ServerB（配置：max=200） | ServerC（配置：max=300） | 
| --- | --- | --- | 
|  10  |  20  |  30  | 

如您所见，来源数据中的每一行都变成一个单独的字段。现在，每个字段还设置了最大配置选项。最小值、最大值、单位和阈值等选项都是字段配置的一部分，如果这样设置，可视化将使用这些选项，而不是在面板编辑器选项窗格中手动配置的任何选项。

**准备时间序列**

当数据来源以您要使用的面板不支持的格式返回时间序列数据时，准备时间序列转换非常有用。

这种转换通过将时间序列数据从宽格式转换为长格式或反过来，来帮助您解决此问题。

选择**多帧时间序列**选项，将时间序列数据框从宽格式转换为长格式。

选择**宽时间序列**选项，将时间序列数据框从长格式转换为宽格式。

**序列到行**

使用此转换可将多个时间序列数据查询的结果合并为一个结果。这在使用表面板可视化时很有用。

此转换的结果将包含三列：时间、指标和值。添加指标列是为了方便您查看该指标来自哪个查询。通过在来源查询上定义标签来自定义此值。

在下面的示例中，有两个查询返回时间序列数据。在应用转换之前，将其可视化为两个独立的表。

查询 A：


| 时间 | 温度 | 
| --- | --- | 
|  7/7/2020 上午 11:34:20  |  25  | 
|  7/7/2020 上午 10:31:22  |  22  | 
|  7/7/2020 上午 9:30:05  |  19  | 

查询 B：


| 时间 | 湿度 | 
| --- | --- | 
|  7/7/2020 上午 11:34:20  |  24  | 
|  7/7/2020 上午 10:32:20  |  29  | 
|  7/7/2020 上午 9:30:57  |  33  | 

以下是将序列应用于行转换后的结果。


| 时间 | 指标 | 值 | 
| --- | --- | --- | 
|  7/7/2020 上午 11:34:20  |  温度  |  25  | 
|  7/7/2020 上午 11:34:20  |  湿度  |  22  | 
|  7/7/2020 上午 10:32:20  |  湿度  |  29  | 
|  7/7/2020 上午 10:31:22  |  温度  |  22  | 
|  7/7/2020 上午 9:30:57  |  湿度  |  33  | 
|  7/7/2020 上午 9:30:05  |  温度  |  19  | 

**排序依据**

此转换将按配置的字段对每一帧排序，选中 `reverse` 后，值将按相反的顺序返回。

**限制**

使用此转换来限制显示的行数。

在下面的示例中，我们从数据来源获得了以下响应：


| 时间 | 指标 | 值 | 
| --- | --- | --- | 
|  7/7/2020 上午 11:34:20  |  温度  |  25  | 
|  7/7/2020 上午 11:34:20  |  湿度  |  22  | 
|  7/7/2020 上午 10:32:20  |  湿度  |  29  | 
|  7/7/2020 上午 10:31:22  |  温度  |  22  | 
|  7/7/2020 上午 9:30:57  |  湿度  |  33  | 
|  7/7/2020 上午 9:30:05  |  温度  |  19  | 

以下是添加值为“3”的限制转换后的结果：


| 时间 | 指标 | 值 | 
| --- | --- | --- | 
|  7/7/2020 上午 11:34:20  |  温度  |  25  | 
|  7/7/2020 上午 11:34:20  |  湿度  |  22  | 
|  7/7/2020 上午 10:32:20  |  湿度  |  29  | 

# 查询问题排查
<a name="v9-panels-query-troubleshoot"></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 中的错误或可视化问题，其实是数据来源查询或数据来源响应的问题。首先检查面板查询和响应。

有关更多信息，请参阅[检查请求和响应数据](v9-panels-panel-inspector.md)。

**查询速度缓慢**

查询返回多少个数据点？ 返回大量数据点的查询速度会很慢。尝试：
+ 在**查询选项**中，限制返回的**最大数据点**。
+ 在**查询选项**中，增加**最小间隔**时间。
+ 在查询中，使用 `group by` 函数。

# 配置阈值
<a name="v9-panels-configure-thresholds"></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-panels-thresholds-about"></a>

 阈值是您为指标指定的值，当达到或超过阈值时，该值会直观地反映在控制面板中。

 阈值为您提供了一种根据查询结果有条件地设置可视化样式和颜色的方法。您可以将阈值应用于大多数（但不是全部）可视化。有关可视化的更多信息，请参阅[可视化面板](v9-panels.md)。

 您可以使用阈值：
+  为[时间序列可视化](v9-panels-time-series.md)中的网格线或网格区域区域着色 
+  为[时间序列可视化](v9-panels-time-series.md)中的线条着色 
+  为[统计可视化](v9-panels-stat.md)中的背景或值文本着色 
+  为[仪表可视化](v9-panels-gauge.md)中的仪表和阈值标记着色 
+  为 [Geomap 可视化](v9-panels-geomap.md)中的标记着色 
+  为[表可视化](v9-panels-table.md)中的单元格文本或背景着色 
+  在[状态时间线可视化](v9-panels-state-timeline.md)中定义区域和区域颜色 

 有两种类型的阈值：
+  **绝对**阈值由数字定义。例如，从 1 到 150 的刻度 80。
+  **百分比**阈值是相对于最小值或最大值定义的。例如，80%。

### 默认阈值
<a name="v9-panels-thresholds-default"></a>

 在支持此阈值的可视化中，Grafana 将默认阈值设置为：
+  80 = 红色 
+  基本 = 绿色 
+  模式 = 绝对 

 **基本**值表示负无穷大。这种颜色通常表示良好。

## 添加或删除阈值
<a name="v9-panels-thresholds-add-delete"></a>

 您可以根据需要向面板添加任意数量的阈值。Grafana 会自动将阈值从最高到最低排序。

 当阈值与业务运营不再相关时，将其删除。删除阈值时，系统会从包含该阈值的所有可视化中将其删除。

1.  添加阈值：

   1.  编辑要向其中添加阈值的面板。

   1.  在选项侧窗格中，找到**阈值**部分，然后单击 **\$1 添加阈值**。

   1.  选择阈值颜色、数字和模式。阈值模式适用于此面板上的所有阈值。

   1.  对于时间序列面板，选择**显示阈值**选项。

1.  要删除阈值，请导航到包含阈值的面板，然后单击要删除的阈值旁边的垃圾桶图标。

## 向旧图形面板添加阈值
<a name="v9-panels-thresholds-legacy-graph"></a>

 在图形面板可视化中，阈值让您可以为图形添加线条或截面，以便在图形超过阈值时更容易识别。

1.  导航到要向其添加阈值的图形面板。

1.  在**面板**选项卡上，单击**阈值**。

1.  单击**添加阈值**。

1.  填写以下字段：
   +  **T1**：需要两个值才能显示阈值。
     +  **lt** 或 **gt**：选择 **lt** 表示小于，或选择 **gt** 表示大于，以指示阈值适用的范围。
     +  **值**：输入阈值。Grafana 沿 Y 轴在该值处绘制一条阈值线。
   +  **颜色**：选择与颜色对应的条件，或定义自己的颜色。
     +  **自定义**：定义填充颜色和线条颜色。
     +  **critical**：填充和线条颜色为红色。
     +  **warning**：填充和线条颜色为黄色。
     +  **ok**：填充和线条颜色为绿色。
   +  **填充**：控制是否显示阈值填充。
   +  **线条**：控制是否显示阈值线条。
   +  **Y 轴**：选择**左**或**右**。

1.  单击**保存**将更改保存到控制面板中。

# 配置数据链接
<a name="v9-panels-configure-data-links"></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-panels-data-link-variables"></a>

 您可以使用数据链接中的变量来查看序列字段、标签和值。有关数据链接的更多信息，请参阅 [数据链接](#v9-panels-data-links)。

 要查看可用变量列表，请在数据链接 **URL** 字段中键入 **\$1**，以查看可使用的变量列表。

**注意**  
 这些变量在 6.4 中发生了变化，因此，如果您使用的是旧版 Grafana，请使用版本选择器为旧版本的 Grafana 选择文档。

 您也可以在数据链接中使用模板变量 URLs，请参阅[添加和管理控制面板变量](v9-dash-variables.md)。

## 时间范围面板变量
<a name="v9-panels-time-range-panel-variables"></a>

 您可以使用这些变量在数据链接 URL 中包含当前时间范围。
+  **\$1\$1url\$1time\$1range**：当前控制面板的时间范围（即 **?from=now-6h&to=now**） 
+  **\$1\$1\$1from 和 \$1\$1\$1to**：有关更多信息，请参阅 [全局变量](v9-dash-variable-add.md#v9-dash-variable-add-global)。

## 序列变量
<a name="v9-panels-series-variables"></a>

 特定于序列的变量在 **\$1\$1series** 命名空间下可用：
+  **\$1\$1series.name**：URL 的序列名称 

## 字段变量
<a name="v9-panels-field-variables"></a>

 特定于字段的变量在 **\$1\$1field** 命名空间下可用：
+  **\$1\$1field.name**：字段的名称 
+  **\$1\$1field.labels.<LABEL>**：URL 的标签值。如果标签包含点，则使用 **\$1\$1field.labels["<LABEL>"]** 语法。

## 值变量
<a name="v9-panels-value-variables"></a>

 特定于值的变量在 **\$1\$1value** 命名空间下可用：
+  **\$1\$1value.time**：URL 值的时间戳（Unix 毫秒纪元）（即 **?time=1560268814105**） 
+  **\$1\$1value.raw**：原始值 
+  **\$1\$1value.numeric**：值的数字表示 
+  **\$1\$1value.text**：值的文本表示 
+  **\$1\$1value.calc**：如果值是计算结果，则为计算名称 

## 模板变量
<a name="v9-panels-template-variables"></a>

 在链接到其他使用模板变量的控制面板时，请为单击链接的用户选择变量值。

 **\$1\$1var-myvar:queryparam\$1**：其中 **var-myvar** 是模板变量的名称，该变量与当前控制面板中要使用的变量匹配。


|  变量状态  |  创建 URL 的结果  | 
| --- | --- | 
|  选择一个值  |  var-myvar=value1  | 
|  选择多个值  |  var-myvar=value1&var-myvar=value2  | 
|  选择全部  |  var-myvar=all  | 

 如果要将当前控制面板的所有变量添加到 URL，请使用 **\$1\$1\$1\$1all\$1variables\$1**。

## 数据链接
<a name="v9-panels-data-links"></a>

 通过数据链接，可为链接提供更精细的上下文。您可以创建包含序列名称甚至光标下值的链接。例如，如果您的可视化显示四台服务器，则可以向其中一两台服务器添加数据链接。

 根据可视化效果，可通过不同的方式访问链接本身。对于图形，您需要单击数据点或线；对于像统计、控制面板或条形仪表等板，您可以单击可视化上的任意位置以打开上下文菜单。

 您可以在数据链接中使用变量，将用户引导至具有保留数据筛选条件的详细控制面板。例如，您可以使用变量来指定时间范围、序列和变量选择。有关更多信息，请参阅 [数据链接变量](#v9-panels-data-link-variables)。

### 提前输入建议
<a name="v9-panels-typeahead-suggestions"></a>

 创建或更新数据链接时，按键盘上的 Cmd\$1Space 或 Ctrl\$1Space 打开预输入建议，以便更轻松地向 URL 添加变量。

### 添加数据链接
<a name="v9-panels-add-a-datalink"></a>

1.  将光标悬停在要添加链接的面板上，然后按 **e** 键。或者单击面板标题旁边的下拉箭头，然后单击**编辑**。

1.  在字段选项卡上，向下滚动到数据链接部分。

1.  展开数据链接，然后单击**添加链接**。

1.  输入**标题**。**标题**是链接的可读标签，显示在 UI 中。

1.  输入要链接的 **URL**。

    您甚至可以添加在控制面板中定义的一个模板变量。选择 **URL** 字段，然后键入 **\$1**，或者按 Ctrl\$1Space 或 Cmd\$1Space 查看可用变量列表。通过向面板链接添加模板变量，该链接会将用户引导到正确的上下文，且相关变量已设置。有关更多信息，请参阅 [数据链接变量](#v9-panels-data-link-variables)。

1.  如果要在新选项卡中打开链接，请选择**在新选项卡中打开**。

1.  单击**保存**以保存更改并关闭窗口。

1.  单击右上角的**保存**将更改保存到控制面板。

### 更新数据链接
<a name="v9-panels-update-a-datalink"></a>

1.  在字段选项卡上，找到要更改的链接。

1.  单击编辑（铅笔）图标打开编辑链接窗口。

1.  进行任何必需的更改。

1.  单击**保存**以保存更改并关闭窗口。

1.  单击右上角的**保存**将更改保存到控制面板。

### 删除数据链接
<a name="v9-panels-delete-a-datalink"></a>

1.  在字段选项卡上，找到要删除的链接。

1.  单击要删除的链接旁边的 **X** 图标。

1.  单击右上角的**保存**将更改保存到控制面板。

# 配置字段覆盖
<a name="v9-panels-configure-overrides"></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)。

 您可以通过覆盖自定义特定字段或序列的可视化设置。这是通过添加覆盖规则来实现的，该规则针对一组特定的字段，每个字段可以定义多个选项。

 例如，您可以为所有包含文本 "bytes" 的字段设置单位，方法是使用**名称与正则表达式匹配的字段**匹配程序添加覆盖，然后将单位选项添加到覆盖规则。

## 示例 1：格式化温度
<a name="v9-panels-overrides-format-temperature"></a>

 假设结果集是一个由两个字段组成的数据帧：时间和温度。


|  时间  |  temperature  | 
| --- | --- | 
|  2020-01-02 03:04:00  |  45.0  | 
|  2020-01-02 03:05:00  |  47.0  | 
|  2020-01-02 03:06:00  |  48.0  | 

 此结构的每个字段（列）都可以应用字段选项，从而改变其值的显示方式。例如，您可以将“单位”设置为“温度”>“摄氏度”，结果如下表所示：


|  时间  |  temperature  | 
| --- | --- | 
|  2020-01-02 03:04:00  |  45.0°C  | 
|  2020-01-02 03:05:00  |  47.0°C  | 
|  2020-01-02 03:06:00  |  48.0°C  | 

 此外，不需要小数位，我们可以将其删除。您可以将小数从 **auto** 更改为零（**0**），从而得到以下表：


|  时间  |  temperature  | 
| --- | --- | 
|  2020-01-02 03:04:00  |  45°C  | 
|  2020-01-02 03:05:00  |  47°C  | 
|  2020-01-02 03:06:00  |  48°C  | 

## 示例 2：格式化温度和湿度
<a name="v9-panels-overrides-format-humidity"></a>

 假设我们的结果集是一个由四个字段组成的数据帧：时间、高温、低温和湿度。


|  时间  |  高温  |  低温  |  湿度  | 
| --- | --- | --- | --- | 
|  2020-01-02 03:04:00  |  45.0  |  30.0  |  67  | 
|  2020-01-02 03:05:00  |  47.0  |  34.0  |  68  | 
|  2020-01-02 03:06:00  |  48.0  |  31.0  |  68  | 

 我们添加摄氏度单位并去掉小数位。这将生成下表：


|  时间  |  高温  |  低温  |  湿度  | 
| --- | --- | --- | --- | 
|  2020-01-02 03:04:00  |  45°C  |  30°C  |  67°C  | 
|  2020-01-02 03:05:00  |  47°C  |  34°C  |  68°C  | 
|  2020-01-02 03:06:00  |  48°C  |  31°C  |  68°C  | 

 温度字段看起来不错，但现在必须更改湿度。我们可以通过对湿度字段应用字段选项覆盖并将单位更改为“杂项”>“百分比（0-100）”来解决此问题。


|  时间  |  高温  |  低温  |  湿度  | 
| --- | --- | --- | --- | 
|  2020-01-02 03:04:00  |  45°C  |  30°C  |  67%  | 
|  2020-01-02 03:05:00  |  47°C  |  34°C  |  68%  | 
|  2020-01-02 03:06:00  |  48°C  |  31°C  |  68%  | 

## 添加字段覆盖
<a name="v9-panels-overrides-add-a-field"></a>

 字段覆盖规则可以自定义特定字段或序列的可视化设置。

1.  编辑要添加覆盖的面板。

1.  在面板选项侧窗格中，单击窗格底部的**添加字段覆盖**。

1.  选择要应用覆盖规则的字段：
   +  **带名称的字段**：从所有可用字段列表中选择一个字段。使用此选择器添加到规则中的属性仅应用于此单个字段。
   +  **名称与正则表达式匹配的字段**：使用该选项来指定要用正则表达式覆盖的字段。使用此选择器向规则添加的属性将应用于字段名称与正则表达式匹配的所有字段。
   +  **带类型的字段**：使用该选项可以按类型选择字段，例如字符串、数值等。使用此选择器添加到规则中的属性将应用于与所选类型匹配的所有字段。
   +  **查询返回的字段**：选择特定查询返回的所有字段，例如 A、B 或 C。使用此选择器添加到规则中的属性将应用于所选查询返回的所有字段。

1.  单击**添加覆盖属性**。

1.  选择要应用的字段选项。

1.  通过在字段中添加值来输入选项。要将选项恢复为默认值，请删除字段中的白色文本。

1.  单击**添加覆盖属性**继续向该字段添加覆盖，或者您可以单击**添加覆盖**，然后选择其他要添加覆盖的字段。

1.  完成后，单击**保存**将所有面板编辑保存到控制面板。

## 删除字段覆盖
<a name="v9-panels-overrides-delete-a-field"></a>

 当您不再需要字段覆盖时，将其删除。删除覆盖时，值的外观默认为其原始格式。此更改会影响依赖受影响面板的控制面板和控制面板用户。

1.  编辑包含要删除的覆盖的面板。

1.  在面板选项侧窗格中，向下滚动直到看到覆盖。

1.  单击要删除的覆盖，然后单击关联的垃圾桶图标。

## 查看字段覆盖
<a name="v9-panels-overrides-view"></a>

 您可以在面板显示选项中查看字段覆盖。

1.  编辑包含要查看的覆盖的面板。

1.  在面板选项侧窗格中，向下滚动直到看到覆盖。

 **全部**选项卡上显示的覆盖设置与**覆盖**选项卡上显示的设置相同。

## 编辑字段覆盖
<a name="v9-panels-overrides-edit-a-field"></a>

 要更改覆盖设置时，编辑字段覆盖。更改会立即生效。

1.  编辑包含要编辑的覆盖的面板。

1.  在面板选项侧窗格中，向下滚动直到看到覆盖。

1.  找到要更改的覆盖。

1.  执行以下任一操作：
   +  编辑现有覆盖或字段选择参数的设置。
   +  单击属性旁边的 **X** 来删除现有的覆盖属性。
   +  单击**添加覆盖属性**来添加覆盖属性。

# 配置值映射
<a name="v9-panels-configure-value-mappings"></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 会在面板编辑器的侧窗格中显示摘要。

**注意**  
 新的值映射与某些可视化效果不兼容，例如图形（旧）、文本和热图。

## 值映射的类型
<a name="v9-panels-value-mappings-types"></a>

 Grafana 支持以下值映射：
+  **值**：将文本值映射到颜色或其他显示文本。例如，您可以配置一个值映射，使值 **10** 的所有实例都显示为 **Perfection\$1** 而不是数字。
+  **范围**：将数值范围映射到显示文本和颜色。例如，如果某个值在某个范围内，则可以将范围值映射配置为显示**低**或**高**而不是数字。
+  **正则表达式**：将正则表达式映射到替换文本和颜色。例如，如果值为 **www.example.com**，则可以配置正则表达式值映射，以便 Grafana 显示 **www** 并截断域。
+  **特殊**将特殊值（如 **Null**、**NaN**（非数字）和布尔值（如 **true** 和 **false**）映射到显示文本和颜色。例如，您可以配置特殊值映射，使 **null** 值显示为 **N/A**。

 您还可以使用左侧的点在列表中拖动值映射并重新排序。

## 映射值
<a name="v9-panels-value-mappings-map-a-value"></a>

 当您想要格式化单个值时，请映射一个值。

1.  打开要为其映射值的面板。

1.  在面板显示选项中，找到**值映射**部分，然后单击**添加值映射**。

1.  单击**添加新映射**，然后选择**值**。

1.  输入 Grafana 要匹配的值。

1.  （可选）输入显示文本。

1.  （可选）设置颜色。

1.  单击**更新**保存值映射。

## 映射范围
<a name="v9-panels-value-mappings-map-a-range"></a>

 当您想要格式化多个连续值时，请映射值范围。

1.  编辑要为其映射值范围的面板。

1.  在面板显示选项中的**值映射**部分，单击**添加值映射**。

1.  单击**添加新映射**，然后选择**范围**。

1.  在 Grafana 要匹配的范围内输入开始值和结束值。

1.  （可选）输入显示文本。

1.  （可选）设置颜色。

1.  单击**更新**保存值映射。

## 映射正则表达式
<a name="v9-panels-value-mappings-map-a-regex"></a>

 当您想要格式化正则表达式值的文本和颜色时，请映射正则表达式。

1.  编辑要为其映射正则表达式的面板。

1.  在面板显示选项中的**值映射**部分，单击**添加值映射**。

1.  单击**添加新映射**，然后选择**正则表达式**。

1.  输入 Grafana 要匹配的正则表达式模式。

1.  （可选）输入显示文本。

1.  （可选）设置颜色。

1.  单击**更新**保存值映射。

## 映射特殊值
<a name="v9-panels-value-mappings-map-a-special-value"></a>

 当您要格式化不常用值、布尔值或空值时，请映射特殊值。

1.  编辑要为其映射特殊的面板。

1.  在面板显示选项中，找到**值映射**部分，然后单击**添加值映射**。

1.  单击**添加新映射**，然后选择**特殊**。

1.  选择 Grafana 要匹配的特殊值。

1.  （可选）输入显示文本。

1.  （可选）设置颜色。

1.  单击**更新**保存值映射。

## 编辑值映射
<a name="v9-panels-value-mappings-edit-a-value"></a>

 您可以随时更改值映射。

1.  编辑包含要编辑的值映射的面板。

1.  在面板显示选项中的**值映射**部分，单击**编辑值映射**。

1.  更改并单击**更新**。

# 配置图例
<a name="v9-panels-configure-legend"></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-panels-legend-isolate"></a>

可视化通常在视觉上比较复杂，而且包含许多数据序列。您可以从可视化中删除序列数据来简化视图，从而隔离要查看的数据。Grafana 会在**覆盖**选项卡中自动创建新的覆盖。

应用更改后，面板的所有用户都会看到可视化更改。

**在可视化中隔离序列数据**

1. 打开面板。

1. 在图例中，选择要隔离的序列的标签。

   系统将从视图中删除所有其他序列数据。

1. 要以增量方式将序列数据添加到孤立的序列中，请按 **Ctrl** 或 **Command** 键，然后选择要添加的序列的标签。

1. 要恢复到包含所有数据的默认视图，请单击任意序列标签两次。

1. 要保存更改，使其显示给面板的所有查看者，请选择**应用**。

本主题目前适用于以下可视化：
+ [条形图](v9-panels-bar-chart.md)
+ [直方图](v9-panels-histogram.md)
+ [饼图](v9-panels-piechart.md)
+ [状态时间轴](v9-panels-state-timeline.md)
+ [状态历史记录](v9-panels-status-history.md)
+ [时间序列](v9-panels-time-series.md)

## 为图例添加值
<a name="v9-panels-legend-add-values"></a>

要为可视化添加更多上下文，可以向图例中添加序列数据值。您可以添加任意数量的值；应用更改后，可以水平滚动图例以查看所有值。

**为图例添加值**

1. 编辑面板。

1. 在面板显示选项窗格中，找到**图例**部分。

1. 在**图例值**字段中，选择要在图例中显示的值。

1. 选择**应用**以保存更改，然后导航回控制面板。

## 更改序列颜色
<a name="v9-panels-legend-change-color"></a>

默认情况下，Grafana 会指定序列数据的颜色，您可以对其进行更改。

**更改序列颜色**

1. 编辑面板。

1. 在图例中，选择与序列关联的颜色条。

1. 从调色板中选择预设颜色或自定义颜色。

1. 选择**应用**以保存更改，然后导航回控制面板。

## 对序列排序
<a name="v9-panels-legend-sort"></a>

您可以将图例模式更改为**表**，并选择 [计算类型](v9-panels-calculation-types.md) 以在图例中显示。在图例表中选择计算名称标题，按升序或降序对表中的值排序。

排序顺序会影响条形图面板中的条形位置，以及时间序列和条形图面板中堆叠序列的顺序。

**注意**  
只有以下面板支持此功能：条形图、直方图、时间序列、XY 图表。

# 计算类型
<a name="v9-panels-calculation-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 中执行的计算列表。您可以在**转换**选项卡以及条形仪表、仪表和统计数据可视化中找到这些计算结果。


|  计算  |  说明  | 
| --- | --- | 
|  全部为 null  |  当所有值都为 null 时为 True  | 
|  全部为 0  |  当所有值都为 0 时为 True  | 
|  更改计数  |  字段值更改的次数  | 
|  计数  |  字段中值的数量  | 
|  Delta  |  值的累积变化，仅计算增量  | 
|  区别  |  字段第一个值和最后一个值的差  | 
|  百分比差  |  字段第一个值和最后一个值的百分比差  | 
|  去重计数  |  字段中唯一值的数量  | 
|  第一个（非 null）  |  第一个，字段中的非 null 值  | 
|  最大值  |  字段的最大值  | 
|  平均值  |  字段中所有值的平均值  | 
|  方差  |  字段中所有值的方差  | 
|  StdDev  |  字段中所有值的标准差  | 
|  最小值  |  字段的最小值  | 
|  最小值（大于 0）  |  字段的最小正值  | 
|  Range  |  字段的最大值和最小值的差  | 
|  步骤  |  字段值之间的最小间隔  | 
|  Total  |  字段中所有值的总和  | 

# 对可视化进行注释
<a name="v9-panels-annotate-visualizations"></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 自带原生注释存储库，可直接从图形面板或通过 HTTP API 添加注释事件。

**添加注释**

1. 在控制面板中，单击**时间序列**面板。将出现一个上下文菜单。

1. 在上下文菜单中，单击**添加注释**。

1. 添加注释描述和标签（可选）。

1. 单击**保存**。

或者，要添加注释，请在**时间序列**面板上 `Ctrl+Click` 或 `Cmd+Click`，将会显示**添加注释**弹出窗口。

**添加区域注释**

1. 在控制面板中，在**时间序列**面板上 `Ctrl+Click` 或 `Cmd+Click`。

1. 在上下文菜单中，单击**添加注释**。

1. 添加注释描述和标签（可选）。

1. 单击**保存**。

**编辑注释**

1. 在控制面板中，将鼠标悬停在**时间序列**面板中的注释指示器上。

1. 单击注释工具提示中的编辑（铅笔）图标。

1. 修改描述和标签（可选）。

1. 单击**保存**。

**删除注释**

1. 在控制面板中，将鼠标悬停在**时间序列**面板中的注释指示器上。

1. 单击注释工具提示中的垃圾桶图标。

**内置查询**

添加注释后，将仍然可见。这是因为所有控制面板上都存在内置的注释查询。此注释查询将获取源于当前控制面板的所有注释事件，并将其显示在创建事件的面板上。这包括警报状态历史记录注释。您可以打开“注释”设置（通过控制面板齿轮菜单），并修改名为 `Annotations & Alerts (Built-in)` 的查询，来阻止获取和绘制**注释**。

当您使用**另存为**功能复制控制面板时，将获得一个新的控制面板 ID，因此在来源控制面板上创建的注释将不再显示在副本上。如果您添加新的**注释查询**并按标签筛选，则仍然可以显示。仅当来源控制面板上的注释具有可筛选的标签时，这才有效。

**按标签查询**

您可以将**筛选依据**设置为 `Tags` 来创建新的查询，以通过 `-- Grafana --` 数据来源从原生注释存储库获取注释。

Grafana v8.1 及更高版本还支持提前输入现有标签，至少提供一个标签。

例如，创建注释查询名称 `outages` 并指定标签 `outage`。此查询将显示带有中断标签的所有注释（来自任何控制面板或通过 API）。如果在注释查询中定义了多个标签，Grafana 将仅显示与所有标签匹配的注释。要修改行为，请启用 `Match any`，Grafana 将显示包含您提供的任何一个标签的注释。

在 Grafana v5.3\$1 中，可在标签查询中使用模板变量。因此，如果您有一个显示不同服务的统计信息的控制面板和一个指示显示哪些服务的模板变量，您现在可以在注释查询中使用相同的模板变量，仅显示这些服务的注释。

**查询其他数据来源**

注释事件是通过注解查询获取的。要向控制面板添加新的注释查询，请打开控制面板设置菜单，然后选择**注释**。这将打开控制面板注释设置视图。要创建新的注释查询，请单击**新建**按钮。

指定注释查询的名称。此名称被赋予切换功能（复选框），允许您启用或禁用此查询中显示的注释事件。例如，您可能有两个名为 `Deploys` 和 `Outages` 的注释查询。通过切换，您可以决定显示哪些注释。

**注释查询详细信息**

每个数据来源的注释查询选项都不同。有关特定数据来源中注释的信息，请参阅特定[数据来源](AMG-data-sources.md)主题。

# 面板检查视图
<a name="v9-panels-panel-inspector"></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 面板的原始数据，将该数据导出到逗号分隔值（CSV）文件，查看查询请求，以及导出面板和数据 JSON。

**注意**  
 并非所有面板类型都包含所有选项卡。例如，控制面板列表面板没有要检查的原始数据，因此不显示“统计”、“数据”或“查询”选项卡。

 面板检查器包含以下选项：

1.  面板检查器在面板顶部显示 **Inspect: [NameOfPanelBeingInspected]**。单击右上角的箭头可展开或缩小窗格。

1.  **数据选项卡**：显示应用转换后查询返回的原始数据。默认情况下，不会应用覆盖和值映射之类的字段选项。

1.  **统计选项卡**：显示查询花费的时间和返回的数量。

1.  **JSON 选项卡**：允许您查看和复制面板 JSON、面板数据 JSON 和数据帧结构 JSON。如果您在预置或管理 Grafana，这非常有用。

1.  **查询选项卡**：显示 Grafana 查询数据来源时向服务器发送的请求。

1.  **错误选项卡**：显示错误。仅在查询返回错误时可见。

## 下载原始查询结果
<a name="v9-panels-raw-query-results"></a>

 Grafana 会生成一个 CSV 文件，其中包含您的数据，包括对该数据的任何转换。您可以选择在面板应用字段选项或字段选项覆盖之前或之后查看数据。

1.  编辑包含要下载的查询数据的面板。

1.  在查询编辑器中，单击**查询检查器**。

1.  单击**数据**。

    如果您的面板包含多个查询或查询多个节点，您还有其他选项。
   +  **选择结果**：选择要查看的结果集数据。
   +  **转换数据** 
   +  **按时间连接**：一次查看所有查询的原始数据，每列一个结果集。单击列标题以对数据重新排序。

1.  要在系统应用字段覆盖之前查看数据，请单击**格式化数据**切换按钮。

1.  要下载专门针对 Excel 格式化的 CSV 文件，请单击**下载 Excel** 切换按钮。

1.  单击**下载 CSV**。

## 检查查询性能
<a name="v9-panels-query-performance"></a>

 **统计**选项卡显示统计数据，告诉您查询需要多长时间、发送的查询数量以及返回的行数。此信息有助于您对查询进行问题排查，尤其是在任何数字意外偏高或偏低时。

1.  编辑包含要检查性能的查询的面板。

1.  在查询编辑器中，单击**查询检查器**。

1.  单击**统计**。

 统计数据以只读格式显示。

## 检查查询请求和响应
<a name="v9-panels-query-request-response"></a>

 如果要对返回意外结果或未能返回预期结果的查询进行问题排查，请检查查询请求和响应数据。

1.  编辑包含要导出的查询的面板。

1.  在查询编辑器中，单击**查询检查器**。

1.  单击**刷新**。

    面板将填充响应数据。

1.  根据需要进行调整，然后重新运行查询。

1.  要下载查询请求和响应数据，请单击**复制到剪贴板**图标，然后将结果粘贴到其他应用程序中。

# Grafana 9 提供的可视化
<a name="v9-panels-viz"></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 提供了多种可视化来支持不同的用例。本文档的这一部分重点介绍了内置面板、其选项和典型用法。

[时间序列面板](v9-panels-time-series.md) 面板是一种常见的入门面板，用于学习使用面板的基础知识。

**Topics**
+ [警报列表面板](v9-panels-alert-list.md)
+ [注释面板](v9-panels-annotations.md)
+ [条形图面板](v9-panels-bar-chart.md)
+ [条形仪表](v9-panels-bar-gauge.md)
+ [K 线图面板](v9-panels-candlestick.md)
+ [画布面板](v9-panels-canvas.md)
+ [时钟面板](v9-panels-clock.md)
+ [控制面板列表](v9-panels-dashboard-list.md)
+ [仪表面板](v9-panels-gauge.md)
+ [Geomap 面板](v9-panels-geomap.md)
+ [图形面板](v9-panels-graph.md)
+ [热图面板](v9-panels-heatmap.md)
+ [直方图面板](v9-panels-histogram.md)
+ [日志面板](v9-panels-logs.md)
+ [新闻面板](v9-panels-news.md)
+ [节点图面板](v9-panels-node-graph.md)
+ [饼图面板](v9-panels-piechart.md)
+ [Plotly 面板](v9-panels-plotly.md)
+ [Sankey 面板](v9-panels-sankey.md)
+ [散点面板](v9-panels-scatter.md)
+ [统计面板](v9-panels-stat.md)
+ [状态时间轴面板](v9-panels-state-timeline.md)
+ [状态历史面板](v9-panels-status-history.md)
+ [表面板](v9-panels-table.md)
+ [文本面板](v9-panels-text.md)
+ [时间序列面板](v9-panels-time-series.md)
+ [跟踪面板（测试版）](v9-panels-traces.md)
+ [WindRose](v9-panels-windrose.md)

# 警报列表面板
<a name="v9-panels-alert-list"></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 9 版本中的警报](v9-alerts.md)。

使用这些设置来改进可视化结果。

## 选项
<a name="v9-panels-alert-list-options"></a>
+  **组模式**：选择**默认分组**以显示按警报规则分组的警报实例，或者选择**自定义分组**以按一组自定义标签对警报实例进行分组。
+  **最大项目数**：设置要列出的最大警报数。
+  **排序顺序**：选择显示警报的排序方式。
  +  **按字母顺序（升序）**：按字母顺序排列
  +  **按字母顺序（降序）**：按字母顺序倒序排列
  +  **重要性**：根据以下值，按重要性划分，其中 1 为最高：
    + `alerting` 或 `firing`：1
    + `no_data`：2
    + `pending`：3
    + `ok`：4
    + `paused` 或 `inactive`：5
+  **来自此控制面板的警报**：仅显示警报列表所在控制面板的警报。

## 筛选条件
<a name="v9-panels-alert-filter"></a>

使用以下选项筛选警报，使其与您选择的查询、文件夹或标签相匹配：
+  **警报名称**：输入警报名称查询。
+  **警报实例标签**：使用标签查询筛选警报实例。例如 `{severity="critical", instance=~"cluster-us-.+"}`。
+  **文件夹**：选择一个文件夹。仅会显示所选文件夹中控制面板的警报。
+  **数据来源**：筛选来自所选数据来源的警报。

## 状态筛选条件
<a name="v9-panels-alert-state-filter"></a>

选择要在此面板中显示的警报状态。
+ 警报/触发
+ 待定
+ 无数据
+ Normal
+ 错误

# 注释面板
<a name="v9-panels-annotations"></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-panels-annotations-query"></a>

以下选项可控制注释列表的来源查询。

**查询筛选条件**

使用查询筛选条件从组织中的所有控制面板或此面板所在的当前控制面板创建注释列表。具有以下选项：
+ 所有控制面板：列出当前组织中所有控制面板的注释。
+ 此控制面板：将列表限制为当前控制面板上的注释。

**时间范围**

使用时间范围选项来指定是否应将列表限制在当前时间范围内。具有以下选项：
+ 无：注释查询没有时间范围限制。
+ 此控制面板：将列表限制为注释列表面板可用的控制面板的时间范围内。

**标签**

使用标签选项按标签筛选注释。您可以添加多个标签以优化列表。

**注意**  
或者，将标签列表留空，然后选择作为面板本身结果一部分列出的标签来动态筛选。

*限制*

使用“限制”选项来限制返回的结果数量。

## 显示
<a name="v9-panels-annotations-display"></a>

这些选项可控制注释面板显示中包含的其他元数据。

**显示用户**

使用此选项显示或隐藏创建注释的用户。

**显示时间**

使用此选项显示或隐藏创建注释的时间。

**显示标签**

使用此选项显示或隐藏注释相关的标签。*注意*：您可以使用标签对面板本身的注释列表进行实时筛选。

## 链接行为
<a name="v9-panels-annotations-links"></a>

**链接目标**

使用此选项选择如何查看带注释的数据。具有以下选项：
+ 面板：此选项可让您直接进入面板的全屏视图，其中包含相应的注释
+ 控制面板：此选项将注释聚焦于完整控制面板的上下文中

**之前的时间**

使用此选项设置注释之前的时间范围。使用持续时间字符串值，例如“1h”= 1 小时，“10m”= 10 分钟等。

**之后的时间**

使用此选项设置注释之后的时间范围。

# 条形图面板
<a name="v9-panels-bar-chart"></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-panels-bar-chart-formats"></a>

仅支持一个数据框，且该数据框至少需要一个字符串字段（用作 X 轴或 Y 轴的类别）和一个或多个数值字段。以下是数据格式的示例：


|  浏览器  |  市场占有率  | 
| --- | --- | 
|  Chrome  |  50  | 
|  Internet Explorer  |  17.5  | 

如果您有多个数值字段，面板会显示分组条形图。

### 可视化时间序列或多个结果集
<a name="v9-panels-bar-chart-visualization"></a>

如果您有多个时间序列或表，则首先需要使用 join 或 reduce 转换将其连接。例如，如果您有多个时间序列，并想要比较其最新值和最大值，请添加 **Reduce** 转换，并在**计算**下指定**最大值**和**最新值**选项。

## 条形图选项
<a name="v9-panels-bar-chart-options"></a>

使用以下选项来优化可视化效果：

**方向**
+  **自动**：Grafana 根据面板尺寸决定条形图的方向。
+  **水平**：将 X 轴设为类别轴。
+  **垂直**：将 Y 轴设为类别轴。

**X 轴刻度标签最大长度**用于设置条形图标签的最大长度。超过最大长度的标签会被截断（用省略号）。

**条形图标签最小间距**用于设置条形图标签之间的最小间距。

**显示值**

控制值是显示在条形图的顶部还是左侧。
+  **自动**：如果有空间，则显示值。
+  **始终**：始终显示值。
+  **从不**：从不显示值。

**堆叠**

控制条形图堆叠。
+  **关闭**：条形图不会堆叠。
+  **正常**：条形图彼此堆叠。
+  **百分比**：条形图彼此堆叠，每个条形图的高度为堆叠总高度的百分比（所有条形图堆叠的高度相同，合计为 100%）。

**组宽度**控制组的宽度。0=最小宽度，1=最大宽度。

**条形图宽度**控制条形图的宽度。0=最小宽度，1=最大宽度。

**条形图半径**控制条形图的半径，0=最小半径，0.5=最大半径。

**悬停时高亮显示整个区域**控制当鼠标指针悬停在条形图上方时，条形图周围区域是否高亮显示。

**线宽**控制条形图的线宽。

**填充不透明度**控制条形图的填充不透明度。

**渐变模式**设置渐变填充的模式。填充渐变基于线条颜色。要更改颜色，请使用标准颜色方案字段选项。渐变外观受**填充不透明度**设置的影响。
+  **无**：无渐变填充，这是默认设置。
+  **不透明度**：渐变的透明度是根据 y 轴上的值计算的。填充的不透明度随 Y 轴上的值增加而增加。
+  **色调**：渐变色是根据线条颜色的色调生成的。

**工具提示模式**：当您将光标悬停在可视化上时，Grafana 可显示工具提示。选择工具提示的行为方式。
+  **单个**：悬停工具提示仅显示一个序列，即您将鼠标悬停在可视化上面的序列。
+  **全部**：悬停工具提示显示可视化中的所有序列。Grafana 在工具提示的序列列表中以粗体突出显示您悬停在上面的序列。
+  **隐藏**：与可视化交互时不显示工具提示。

**注意**  
可使用覆盖从工具提示隐藏单个序列。

**图例模式**：使用这些设置可以优化图例在可视化中的显示方式。有关更多信息，请参阅 [配置图例](v9-panels-configure-legend.md)。
+  **列表**：以列表形式显示图例。这是图例的默认显示模式。
+  **表**：以表的形式显示图例。
+  **隐藏**：隐藏图例。

**图例放置**：选择图例的放置位置。
+  **底部**：显示在图形下方。
+  **右**：显示在图形右侧。

**图例计算**：选择要在图例中显示的标准计算。可以输入多个值。

**文本大小**：输入一个值以更改条形图上文本的大小。

**轴**：使用以下字段设置来优化轴的显示方式。除非您在正在编辑的字段选项框外部单击或按 Enter 键，否则某些字段选项不会影响可视化。
+  **放置**：设置 y 轴的放置。
+  **自动**：Grafana 会自动为序列分配 Y 轴。当有两个或多个具有不同单位的序列时，Grafana 将左轴分配给第一个单位，将右轴分配给下一个单位。
+  **左**：在左侧显示所有 Y 轴。
+  **右**：在右侧显示所有 Y 轴。
+  **隐藏**：隐藏所有 Y 轴。
+  **标签**：设置 Y 轴文本标签。如果有多个 Y 轴，可使用覆盖分配不同的标签。
+  **宽度**：设置轴的固定宽度。默认情况下，Grafana 会动态计算轴的宽度。

  通过设置轴的宽度，具有不同轴类型的数据可以共享相同的显示比例。这样就可以更容易比较多个图形的数据，因为轴在视觉上不会相互移动或拉伸。
+  **软最小值和软最大值**：设置软最小值或软最大值选项，以更好地控制 Y 轴限制。默认情况下，Grafana 会根据数据集自动设置 Y 轴的范围。

  软最小值或软最大值设置可以防止在数据大部分平缓的情况下，出现山峰状的突起，而从标准最小值和最大值字段选项派生的硬最小值或硬最大值，则可以通过剪裁超过定义点的尖峰，来防止间歇性尖峰压平有用的细节。

  您可以设置标准 min/max 选项来定义 Y 轴的硬限制。

# 条形仪表
<a name="v9-panels-bar-gauge"></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 计算归约的方式。

此面板可以显示一个或多个条形仪表，具体取决于查询返回的序列、行或列的数量。

## 值选项
<a name="v9-panels-bar-gauge-value"></a>

使用以下选项来优化可视化显示值的方式：

**显示**：选择 Grafana 显示数据的方式。

**计算**：显示基于所有行的计算值。
+ **计算**：选择一个 reducer 函数，Grafana 将使用该函数将多个字段归约为单个值。有关可用计算的列表，请参阅计算类型。
+ **字段**：选择面板中显示的字段。

**所有值**：为每行显示一个单独的统计数据。如果选择此选项，则还可以限制要显示的行数。
+ **限制**：要显示的最大行数。默认为 5000。
+ **字段**：选择面板中显示的字段。

## 条形仪表选项
<a name="v9-panels-bar-gauge-options"></a>

调整条形仪表的显示方式。

**方向**：选择堆叠方向。
+ **自动**：Grafana 会选择其认为最佳的方向。
+ **水平**：从左到右水平拉伸条形图。
+ **垂直**：从上到下垂直拉伸条形图。

**显示模式**：选择显示模式。
+ **渐变**：阈值级别定义梯度。
+ **复古 LCD**：将仪表分成点亮或不点亮的小单元格。
+ **基本**：基于匹配阈值的单色。

**显示未填充区域**：如果要将条形图的未填充区域渲染为深灰色，请选择此选项。不适用于复古 LCD 显示模式。

**最小宽度**

限制条形柱在垂直方向上的最小宽度。

当数据量较大时，自动显示 x 轴滚动条。

**最小高度**

限制条形行在水平方向上的最小高度。

当数据量较大时，自动显示 y 轴滚动条。

# K 线图面板
<a name="v9-panels-candlestick"></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)。

通过 K 线图面板，您可以可视化包含多个一致维度的数据（侧重于价格走势）。Kandlestick 面板包括 Open-High-Low-Close (OHLC) 模式，并支持基于时间序列数据的其他维度。

K 线图面板建立在 [时间序列面板](v9-panels-time-series.md) 的基础之上，包含许多常用的配置设置。

**Mode (模式)**

您可以使用模式选项切换用于可视化的维度。
+ **蜡烛**将面板维度限制为 K 线图可视化使用的开盘、高点、低点和收盘维度。
+ **成交量**将面板维度限制为成交量维度。
+ **二者**是 K 线图面板的默认行为。包括 K 线图和成交量可视化。

**蜡烛样式**
+ **K 线图**是默认的显示样式，可在开盘和收盘维度之间创建蜡烛样式的可视化效果。
+ **OHLC 条形图**显示四个核心维度的开盘值、高点值、低点值和收盘值。

**颜色策略**
+ **开盘以来**是默认行为。如果期间内价格变动为正值，该模式将使用*上涨*颜色。换句话说，如果收盘时的值大于或等于开盘时的值，则使用*上涨*颜色。
+ **上次收盘以来**是另一种显示方法，蜡烛的颜色取决于期间内的价格走势或价值变化。换句话说，如果开盘值大于收盘值，则使用*上涨*颜色。如果开盘值小于收盘值，则使用*下跌*颜色。*该选项还会触发空心 K 线图可视化模式*。空心表示周期内的变动为正值（收盘时的值高于开盘时的值），实心表示周期内的变动为负值（收盘时的值低于开盘时的值）。要了解更多信息，请参阅[差异说明](https://thetradingbible.com/how-to-read-hollow-candlesticks)。

**上涨和下跌颜色**

**上涨颜色**和**下跌颜色**选项用于选择价格上涨或下跌时使用的颜色。上述*颜色策略*将决定是使用周期内还是周期间的价格变动来选择 K 线图或 OHLC 条形图的颜色。

**开盘、高点、低点、收盘**

K 线图面板会尝试将字段映射到相应的维度。如果面板无法将数据映射到这些维度，则可以使用**开盘**、**高点**、**低点**和**关闭**选项。

**注意**  
这些值在图例中是隐藏的。
+ **开盘**对应给定周期的起始值。
+ **高点**对应给定周期的最高值。
+ **低点**对应给定周期的最低值。
+ **收盘**对应给定周期的最终（结束）值。
+ **成交量**对应给定周期内的样本数（例如交易次数）

**其他字段**

K 线面板基于时间序列面板。除了开盘、高点、低点、收盘和成交量之外，还能可视化其他数据维度。**Include** 和 **Ignore** 选项允许面板使用 [时间序列面板](v9-panels-time-series.md) 中可用的相同样式和配置来可视化其他包含的数据，如简单移动平均线、布林线等。

# 画布面板
<a name="v9-panels-canvas"></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 的 UI 中完成。如果您使用过流行的 UI 和 Web 设计工具，那么设计画布面板会感觉非常熟悉。

## 元素
<a name="v9-panels-canvas-elements"></a>

**指标值**

指标值元素让您可以轻松选择要在画布上显示的数据。此元素具有独特的“编辑”模式，可通过上下文菜单“编辑”选项或双击来触发。在编辑模式下，您可以选择要显示的字段数据。

**文本**

文本元素使您能够轻松地向画布添加文本。该元素还支持编辑模式，可通过双击或上下文菜单中的编辑菜单选项触发。

**矩形**

通过矩形元素，您可以在画布上添加基本的矩形。矩形元素支持显示文本（固定数据和字段数据），也可以根据数据阈值更改背景颜色。

**图标**

通过图标元素，您可以将支持的图标添加到画布。可根据阈值或值映射来设置图标的颜色。

## 画布编辑
<a name="v9-panels-canvas-editing"></a>

**内联编辑器**

画布引入了全新的编辑体验。现在，您可以在控制面板模式下以内联方式编辑画布面板。

**上下文菜单**

通过上下文菜单，您可以访问常见任务。支持的功能包括打开和关闭内联编辑器、复制元素、删除元素等。

右键单击面板或给定画布元素会触发上下文菜单。右键单击面板时，您可以设置背景图像，轻松地向画布添加元素。

右键单击元素时，您可以编辑、删除和复制该元素，或者修改元素的图层位置。

## 画布选项
<a name="v9-panels-canvas-options"></a>

**内联编辑**

内联编辑开关让您可以锁定或解锁画布面板。关闭后，画布面板将处于*锁定*状态，将元素冻结在原位并防止意外修改。

# 时钟面板
<a name="v9-panels-clock"></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)。

时钟面板显示当前时间或倒计时。每秒更新一次。
+ **模式**：默认为**时间**。如果选择**倒计时**，请设置**倒计时截止时间**以开始倒计时。
+ **12 或 24 小时**：显示时间的选项有 12 小时制和 24 小时制。
+ **时区**：时区由时刻时区库提供。默认值为计算机上的时区。
+ **倒计时截止时间**：如果您已将**模式**设置为**倒计时**，请指定倒计时的时间和日期。
+ **倒计时结束文本**：指定倒计时结束时要显示的文本。
+ **日期/时间格式选项**-自定义字体大小、粗细和 date/time 格式。如果显示倒计时，但不想看到秒数减少，请将时间格式更改为 24 小时制 `hh:mm` 或 12 小时制 `h:mm A`。有关选项的完整列表，请参阅[显示](https://momentjs.com/docs/#/displaying/)。
+ **背景颜色**：为时钟选择背景颜色。

# 控制面板列表
<a name="v9-panels-dashboard-list"></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)。

控制面板列表可视化可展示指向其他控制面板的动态链接。可将该列表配置为使用已加星标的控制面板、最近查看的控制面板、搜索查询和控制面板标签。

每次加载仪表板时，此面板都会查询仪表板列表，始终提供最多的 up-to-date结果。

**Options**

使用以下选项来优化可视化效果。
+ **已加星标**：按字母顺序显示已加星标的控制面板。
+ **最近查看**：按字母顺序显示最近查看的控制面板。
+ **搜索**：按搜索查询或标签显示控制面板。您必须在**查询**或**标签**中至少输入一个值。对于**查询**和**标签**字段，支持变量插值，例如，`$my_var` 或 `${my_var}`。
+ **显示标题**：所选列表选择（已加星标、最近查看、搜索）显示为标题。
+ **最大项数**：设置每个部分列出的最大项数。例如，如果您保留默认值 10，并显示已加星标和最近查看的控制面板，则该面板将最多显示 20 个控制面板，每个部分有 10 个。

**搜索**

仅当选择**搜索**选项时，这些选项才适用。
+ **查询**：输入您要搜索的查询。查询不区分大小写，并接受部分值。
+ **文件夹**：选择要显示的控制面板文件夹。
+ **标签**：您可以在此输入要搜索的标签。现有标签不会在您键入时显示，*并且*区分大小写。

**注意**  
当出现多个标签和字符串时，控制面板列表将显示符合*所有*条件的标签和字符串。

# 仪表面板
<a name="v9-panels-gauge"></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)。

仪表是一种单值可视化，可为每个序列、列或行重复仪表。

**值选项**

使用以下选项来优化可视化显示值的方式：

**Show (显式)**

选择 Grafana 显示数据的方式。

**计算**

显示基于所有行的计算值。
+ **计算**：选择一个 reducer 函数，Grafana 将使用该函数将多个字段归约为单个值。有关可用计算的列表，请参阅 [计算类型](v9-panels-calculation-types.md)。
+ **字段**：选择面板中显示的字段。

**所有值**

为每行显示一个单独的统计数据。如果选择此选项，则还可以限制要显示的行数。
+ **限制**：要显示的最大行数。默认为 5000。
+ **字段**：选择面板中显示的字段。

**计量表**

调整仪表的显示方式。
+ **显示阈值标签**：控制是否显示阈值。
+ **显示阈值标记**：控制是否在内部计量表值范围之外显示阈值范围。

**文本大小**

调整仪表文本的大小。
+ **标题**：输入仪表标题大小的数值。
+ **值**：输入仪表值大小的数值。

# Geomap 面板
<a name="v9-panels-geomap"></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)。

Geomap 面板可视化让您可以使用地理空间数据，查看和自定义世界地图。通过配置各种叠加样式和地图视图设置，您可以轻松聚焦于数据中基于位置的重要特征。

## 地图视图
<a name="v9-panels-geomap-view"></a>

地图视图控制控制面板加载时地图的初始视图。

**初始视图**

初始视图配置首次加载 GeoMap 面板时面板的呈现方式。
+ **视图**设置面板首次加载时地图的中心。
  + **适应数据**根据地图图层的数据范围适应地图视图，并在数据发生变化时更新。
    + **数据**选项允许根据所选图层中的“所有图层”、单个“图层”或“最后一个值”的数据选择范围。
    + 如果适应来自单个“图层”或图层“最后一个值”的数据，则可以选择**图层**。
    + **填充**以超出数据范围的相对百分比设置填充（仅在查看“最后一个值”时不可用）。
    + **最大缩放**设置适应数据时的最大缩放级别。
  + **坐标**根据以下因素设置地图视图：
    + **纬度**
    + **经度**
  + 还提供了默认视图，包括：
    + **（0°, 0°）**
    + **北美洲**
    + **南美洲**
    + **欧洲**
    + **非洲**
    + **西亚**
    + **南亚**
    + **东南亚**
    + **东亚**
    + **澳大利亚**
    + **大洋洲**
+ **缩放**设置初始缩放级别。

## 地图图层
<a name="v9-panels-geomap-layers"></a>

Geomap 可视化支持显示多个层。每个图层决定了如何基于基础地图，实现地理空间数据的可视化。

**类型**

Geomap 可视化中有三种地图层类型可供选择。
+ [标记图层](#v9-panels-geomap-markers) 在每个数据点渲染一个标记。
+ [热图图层](#v9-panels-geomap-heatmap) 可视化数据的热图。
+ [GeoJSON 图层](#v9-panels-geomap-geojson) 渲染 GeoJSON 文件中的静态数据。

目前还有五种图层类型处于 alpha 阶段。
+ [夜间/白天图层（Alpha）](#v9-panels-geomap-nightday) 渲染夜间或白天区域。
+ **最后一个点的图标（alpha）**在最后一个数据点渲染一个图标。
+ **动态 GeoJSON（alpha）**根据查询结果设置 GeoJSON 文件的样式。
+ **路由（alpha）**将数据点渲染为路由。
+ [照片图层（Alpha）](#v9-panels-geomap-photos) 在每个数据点渲染一张照片。

**图层控件**

图层控件允许您创建图层、更改图层名称、重新排序和删除图层。
+ **添加图层**可为 Geomap 可视化创建附加的可配置数据图层。添加图层时，系统会提示您选择图层类型。在面板配置过程中，您可以随时更改图层类型。有关每种图层类型的详细信息，请参阅上面的**图层类型**部分。
+ 通过图层控件，您可以重命名、删除和重新排序面板上的图层。
  + **编辑图层名称**（铅笔图标）可重命名图层。
  + **垃圾桶**可删除图层。
  + **重新排序**（六个点/抓取手柄）允许更改图层顺序。较高图层的数据将显示在较低图层的数据之上。拖放时，面板将更新图层顺序，以帮助简化图层顺序的选择。

您可以向单个 Geomap 面板添加多层数据，以创建丰富、详细的可视化效果。

**位置**

Geomap 面板需要一个地理数据来源。这些数据来自数据库查询，数据有四种映射选项。
+ **自动**可自动搜索位置数据。当您的查询基于以下数据字段名称之一时，请使用此选项。
  + geohash: “geohash”
  + latitude: “latitude”, “lat”
  + longitude: “longitude”, “lng”, “lon”
  + lookup: “lookup”
+ **坐标**指定查询包含坐标数据。系统会提示您从数据库查询中选择纬度和经度的数值数据字段。
+ **地理哈希**指定您的查询包含地理哈希数据。系统会提示您从数据库查询中为地理哈希选择字符串数据字段。
+ **查找**指定查询包含需要映射为地理位置的名称数据。系统将提示您从数据库查询和地名录中选择查找字段。地名录是用于将查询到的数据映射到地理点的目录。

## 标记图层
<a name="v9-panels-geomap-markers"></a>

标记图层允许您将数据点显示为不同的标记形状，如圆形、方形、三角形、星形等。

标记有许多自定义选项。
+ **标记颜色**可配置标记的颜色。默认的 `Single color` 会使所有点保持为单一颜色。还有一个备选选项，可根据数据点得值和在 `Thresholds` 部分设置的阈值设置多种颜色。
+ **标记大小**可配置标记的大小。默认值为 `Fixed size`，即无论数据点的情况如何，所有标记的大小都相同。但是，也有一个选项可以根据对应的数据点缩放圆圈的大小。需要设置 `Min` 和 `Max` 标记大小，以便标记图层可以在这些范围内缩放。
+ **标记形状**允许您选择形状、图标或图形，以帮助为数据提供额外的可视化上下文。从 Grafana 中包含的资源中选择，例如简单形状或 Unicon 库。您也可以指定包含图像资源的 URL。图像必须是可缩放向量图形（SVG）。
+ **填充不透明度**可配置每个标记的透明度。

## 热图图层
<a name="v9-panels-geomap-heatmap"></a>

热图图层将各种数据点聚类，以直观显示不同密度的位置。添加热图图层：

单击数据图层下的下拉菜单并选择 `Heatmap`。

与 `Markers` 类似，系统会提示您使用各种选项来确定要可视化的数据点以及可视化的方式。
+ **权重值**用于配置热图集群的强度。`Fixed value` 在所有数据点保持恒定的权重值。该值范围应为 0\$11。与标记类似，下拉列表中还有一个备选选项，可以根据数据值自动缩放权重值。
+ **半径**用于配置热图集群的大小。
+ **模糊**用于配置每个集群的模糊程度。

## GeoJSON 图层
<a name="v9-panels-geomap-geojson"></a>

通过 GeoJSON 图层，可从文件系统中选择并加载静态 GeoJSON 文件。
+ **GeoJSON URL** 提供了 Grafana 附带的 GeoJSON 文件供您选择。
+ **默认样式**控制当上述规则不匹配时要应用的样式。
  + **颜色**可配置默认样式的颜色
  + **不透明度**可配置默认的不透明度
+ **样式规则**根据特征属性应用样式
  + **规则**允许您从 GeoJSON 文件中选择*特征*、*条件*和*值*来定义规则。垃圾桶图标可用于删除当前规则。
  + **颜色**可为当前规则配置样式的颜色
  + **不透明度**配置当前规则的透明度级别
+ **添加样式规则**可创建其他样式规则。

## CARTO 图层
<a name="v9-panels-geomap-carto"></a>

CARTO 图层来自 [CARTO](https://carto.com/about-us/) 栅格底图。

**Options**
+ **主题**

   选择一个主题，可以是**浅色**主题、**深色**主题或**自动**主题。
+ **显示标签**在地图顶部显示国家/地区的详细信息。
+ **不透明度**从 0（透明）到 1（不透明）

## XYZ 切片图层
<a name="v9-panels-geomap-xyz"></a>

XYZ 切片图层是来自通用切片图层的地图。

**注意**  
有关通用切片图层的更多信息，请参阅 [Web 切片地图](https://en.wikipedia.org/wiki/Tiled_web_map)和 [Open Street Map 切片服务器列表](https://wiki.openstreetmap.org/wiki/Tile_servers)。

**Options**
+ **URL 模板**
**注意**  
设置有效的切片服务器 url，例如 \$1z\$1/\$1x\$1/\$1y\$1：`https://tile.openstreetmap.org/{z}/{x}/{y}.png`。
+ **属性**设置图层的参考字符串（如果显示在[地图控件](#v9-panels-geomap-controls)中）
+ **不透明度**从 0（透明）到 1（不透明）

## Open Street Map 图层
<a name="v9-panels-geomap-osm"></a>

来自 [Open Street Map](https://www.openstreetmap.org/about) 的地图，这是一个协作式的免费地理世界数据库。

**Options**
+ **不透明度**从 0（透明）到 1（不透明）

## ArcGIS 图层
<a name="v9-panels-geomap-arcgis"></a>

A [rcGIS](https://services.arcgisonline.com/arcgis/rest/services) 图层是来自 [ESRI](https://www.esri.com/en-us/about/about-esri/overview) ArcGIS MapServer 的图层。

**Options**
+ **服务器实例**，可从以下地图类型中选择。
  + World Street Map
  + World Imagery
  + World Physical
  + Topographic
  + USA Topographic
  + World Ocean
  + 自定义 MapServer （有关格式，请参阅 [XYZ](#v9-panels-geomap-xyz)）
    + URL 模板
    + 属性
+ **不透明度**从 0（透明）到 1（不透明）

## 夜间/白天图层（Alpha）
<a name="v9-panels-geomap-nightday"></a>

夜间/白天图层根据当前时间范围显示夜间和白天区域。

**注意**  
有关更多信息，请参阅 [ OpenLayers -的扩展 DayNight](https://viglino.github.io/ol-ext/examples/layer/map.daynight.html)。

**Options**
+ **显示**从面板时间范围切换时间来源
+ **夜间区域颜色**选择夜间区域的颜色
+ **显示太阳**切换太阳图标
+ **不透明度**从 0（透明）到 1（不透明）

## 照片图层（Alpha）
<a name="v9-panels-geomap-photos"></a>

照片图层在每个数据点渲染一张照片。

**注意**  
有关更多信息，请参阅 [ OpenLayers -图像照片样式的扩展程序](http://viglino.github.io/ol-ext/examples/style/map.style.photo.html)。

**Options**
+ **图像来源字段**

  选择包含以下任一格式的图像数据的字符串字段：
  + **图像 URLs**
  + **Base64 编码**图像二进制（`data:image/png;base64,…`）
+ **类型**

   选择图像周围的框架样式
  + **Square**
  + **Circle**
  + **锚定**
  + **对开**
+ **裁剪**切换（裁剪图像以适合尺寸）
+ **阴影**切换图像背后的方框阴影
+ **边框**设置图像周围的边框大小
+ **边框颜色**设置图像周围的边框颜色
+ **半径**设置图像的整体大小（像素）

## 地图控件
<a name="v9-panels-geomap-controls"></a>

地图控件界面包含以下地图信息和工具叠加选项。

**Zoom**

本节介绍了每个缩放控件。

*显示缩放控件*

在左上角显示缩放控件。

*鼠标滚轮缩放*

使用鼠标滚轮进行放大或缩小来打开或关闭。

**显示属性**

显示地图上底图图层的属性。

**显示刻度**

在左下角显示刻度信息。

**注意**  
以 [m]/[km] 为单位显示。

**显示测量工具**

在右上角显示测量工具。仅当此控件打开时，才会显示测量值。
+ **单击**开始测量
+ **继续单击**继续测量
+ **双击**结束测量

**注意**  
更改测量类型或单位后，先前的测量值将从地图上删除。  
如果控件关闭后又重新打开，则会显示最新的测量值。  
单击并拖动测量值可以对其进行修改。

*长度*

获取几何形状的球面长度。该长度是坐标之间的大圆距离之和。对于多部分几何形状，长度是每个部分的长度之和。假设几何形状位于“EPSG:3857”中。

您可以选择以下长度测量单位：
+ **公制（m/km）**
+ **英尺（ft）**
+ **英里（mi）**
+ **海里（nmi）**

*领域*

获取几何形状的球面面积。计算此面积时，假设多边形的边是球体上大圆的线段。假设几何形状位于“EPSG:3857”中。

您可以选择以下面积测量单位：
+ **平方米（m²）**
+ **平方千米（km²）**
+ **平方英尺（ft²）**
+ **平方英里（mi²）**
+ **英亩（acre）**
+ **公顷（ha）**

**显示调试**

在地图右上角显示调试信息。这对于调试或验证数据来源很有用。
+ **缩放**显示地图的当前缩放级别。
+ **中心**显示地图中心的当前**经度**和**纬度**。

**Tooltip**
+ **无**仅当单击数据点时才显示工具提示。
+ **详细信息**当指针悬停在数据点上时显示工具提示。

# 图形面板
<a name="v9-panels-graph"></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-panels-graph-data-and-field-options"></a>

使用图形可视化时，可以应用以下选项：
+  [转换数据](v9-panels-xform.md) 
+ 警报。这是唯一允许设置警报的可视化类型。有关更多信息，请参阅 [Grafana 9 版本中的警报](v9-alerts.md)。
+  [配置阈值](v9-panels-configure-thresholds.md) 

## 显示选项
<a name="v9-panels-graph-display-options"></a>

使用以下设置来优化可视化效果：
+  **条形图**：将值显示为条形图。
+  **折线图**：将值显示为折线图。
+  **线宽**：指定序列的线条宽度。默认 为 1。
+  **阶梯**：将相邻的点绘制成阶梯。
+  **区域填充**：指定序列的颜色填充量。默认值为 1，0 表示没有颜色。
+  **填充渐变**：指定区域填充的渐变程度。默认值为 0，表示没有渐变，10 表示急剧的渐变。
+  **点数**：显示值的点数。
+  **点半径**：控制点的大小。
+  **警报阈值**：在面板上显示警报阈值和区域。

### 堆叠和空值
<a name="v9-panels-graph-stacking-and-null-value"></a>
+  **堆叠**：每个序列堆叠在另一个序列之上。
+  **百分比**：每个序列按所有序列总计的百分比绘制。选择**堆叠**后，此选项可用。
+  **空值**：指定空值的显示方式。*这是一项重要的设置。*请参阅下面的注释。
  +  **连接**：如果序列中存在间隙（即一个或多个空值），该行将跳过间隙并连接到下一个非空值。
  +  **空值** 如果序列中存在间隙（即空值），则图表中的直线将被打断并显示间隙。这是默认设置。
  +  **空值为零**：如果序列中存在间隙（即空值），则间隙将在图形面板中显示为零值。

**重要**  
如果您正在监视服务器的 CPU 负载并且负载达到 100%，则服务器将锁定，发送统计信息的代理将无法收集负载统计信息。这会导致指标中存在间隙，使用默认的*空值*设置意味着 Amazon Managed Grafana 将显示间隙并指明出现了问题。如果将其设置为*连接*，则很容易错过此信号。

### 悬停工具提示
<a name="v9-panels-graph-hover-tooltip"></a>

使用这些设置可以更改工具提示的外观，该工具提示会在您将光标悬停在图形可视化效果上时出现。
+  **模式**：确定悬停工具提示显示的序列数量。
  +  **全部序列**：悬停工具提示显示图形中的所有序列。在工具提示的序列列表中，Grafana 工作区以粗体突出显示光标悬停在其上方的序列。
  +  **单个**：悬停工具提示仅显示一个序列，即图形中光标悬停在其上方的序列。
+  **排序顺序**：如果选择**所有序列**模式，则会对悬停工具提示中的序列排序。当光标悬停在图形上时，Amazon Managed Grafana 会显示与线条相关的值。通常，用户最感兴趣的是最高值或最低值。对这些值进行排序可以更轻松地找到所需的数据。
  +  **无**：工具提示中序列的顺序由查询中的排序顺序决定。例如，您可以按序列名称的字母顺序对序列排序。
  +  **递增**：悬停工具提示中的序列按值以递增顺序排序，最低值位于列表顶部。
  +  **递减**：悬停工具提示中的序列按值以递减顺序排序，最高值位于列表顶部。

## 序列覆盖
<a name="v9-panels-graph-series-overrides"></a>

序列覆盖允许图形面板中的序列以与其他序列不同的方式呈现。您可以为每个序列自定义不同显示选项，也可以使用正则表达式规则来自定义显示选项。例如，可以将某个序列的线宽加粗，使其突出，或者将其移至 Y 轴右侧。

您可以添加多个序列覆盖。

**添加序列覆盖**

1. 选择**添加序列覆盖**。

1. 在**别名或正则表达式**中，键入或选择一个序列。选择字段以查看可用序列列表。

   例如，`/Network.*/` 将与名为 `Network out` 和 `Network in` 的两个序列匹配。

1. 选择 **\$1**，然后选择要应用于该序列的样式。您可以向每个条目添加多个样式。
+  **条形图**：将序列显示为条形图。
+  **折线图**：将序列显示为折线图。
+  **线条填充**：显示带有区域填充的折线图。
+  **填充渐变**：指定区域填充渐变量。
+  **线宽**：设置线宽。
+  **空值点模式**：使用此选项可以忽略空值或将其替换为零。如果要忽略数据中的间隙，此选项很重要。
+  **填充至下方**：填充两个序列之间的区域。
+  **阶梯线**：将序列显示为阶梯线。
+  **短横线**：显示带有短横线的线条。
+  **隐藏序列**：隐藏序列。
+  **短横线长度**：设置线条中短横线的长度。
+  **短横线间距**：设置线条中短横线之间的空格长度。
+  **点**：将序列显示为单独的点。
+  **点半径**：设置点渲染的半径。
+  **堆栈**：设置序列的堆栈组。
+  **颜色**：设置序列颜色。
+  **Y 轴**：设置序列 y 轴。
+  **Z 索引**：设置序列 z 索引（渲染顺序）。当您叠加不同的样式（例如条形图和面积图）时，此选项非常重要。
+  转换：将值转换为负值以在 y 轴下方呈现。
+  **图例**：控制序列是否显示在图例中。
+  **在工具提示中隐藏**：控制序列是否显示在图表工具提示中。

## 轴
<a name="v9-panels-graph-axes"></a>

使用这些选项来控制可视化中轴的显示。

### 向左 Y/Right Y
<a name="v9-panels-graph-left-yright-y"></a>

两个 y 轴的选项相同。
+  **显示**：选择显示或隐藏轴。
+  **单位**：选择 y 值的显示单位。
+  **刻度**：选择用于 y 值的刻度：**线性**或**对数**。默认值为**线性**。
+  **Y 最小值**：y 的最小值。默认值为 **auto**。
+  **Y 最大值**：y 的最大值。默认值为 **auto**。
+  **小数**：定义 y 值显示的小数位数。默认值为 **auto**。
+  **标签**：指定 y 轴标签。默认值为“"”。

### Y 轴
<a name="v9-panels-graph-y-axes"></a>
+  **对齐**：按值对齐左右的 y 轴。默认为未选中/false。
+  **级别**：输入用于左右 y 轴对齐的值，从 Y=0 开始。默认值是 0。选择**对齐**后，此选项可用。

### X 轴
<a name="v9-panels-graph-x-axis"></a>
+  **显示**：选择显示或隐藏轴。
+  **模式**：显示模式完全改变了图形面板的可视化效果。就像三个面板合而为一。主要模式是时间序列模式，而且 x 轴上显示了时间。另外两种模式包括基本的条形图模式（在 x 轴上显示序列而不是时间）和直方图模式。
  +  **时间**（默认值）：x 轴表示时间，数据按时间（例如，按小时或分钟）分组。
  +  **序列**：数据按序列分组，而不是按时间分组。y 轴仍然代表值。
    +  **值**：这是用于值的聚合类型。默认值为**合计**（将值相加）。
  +  **直方图**：此选项将图形转换为直方图。直方图是一种将数字分组为范围的条形图，通常称为桶或箱。条形越高表示该范围内的数据越多。

    有关此直方图的更多信息，请参阅 [直方图和热图简介](getting-started-grafanaui.md#introduction-to-histograms-and-heatmaps)。
    +  **桶**：设置要按其对值进行分组的桶数量。如果留空，Amazon Managed Grafana 会尝试计算合适的桶数量。
    +  **X 最小值**：筛选出直方图中小于此最小限制的值。
    +  **X 最大值**：筛选出大于此最大限制的值。

## 图例
<a name="v9-panels-graph-legend"></a>

使用这些设置可以优化图例在可视化中的显示方式。

### 选项
<a name="v9-panels-graph-legends-options"></a>
+  **显示**：清除以隐藏图例。默认选中（true）。
+  **作为表**：选择此选项可在表中显示图例。默认选中（true）。
+  **向右**：选择后可在右侧显示图例。
+  宽度：输入图例的最小宽度（以像素为单位）。选择**右对齐**后，此选项可用。

### 值
<a name="v9-panels-graph-values"></a>

可以在图例名称旁边显示其他值。
+  **最小值**：指标查询返回的最小值。
+  **最大值**：指标查询返回的最大值。
+  **平均值**：指标查询返回的平均值。
+  **当前值**：从指标查询返回的最后一个值。
+  **总计**：从指标查询返回的所有值的总和。
+  **小数**：图例值和图形悬停工具提示显示的小数位数。

Amazon Managed Grafana 会计算客户端的图例值。这些图例值取决于指标查询使用的聚合类型或点合并类型。以上所有图例值不能同时正确。

例如，如果您绘制请求/秒之类的速率（可能使用平均值作为聚合器），则图例中的总数将不代表请求总数。这是 Amazon Managed Grafana 收到的所有数据点的总和。

### 隐藏序列
<a name="v9-panels-graph-hide-series"></a>

当指标查询中某个序列的所有值均为特定值时，则隐藏序列。
+  **只有空值**：value=NULL（默认为未选中）
+  **只有零**：value=Zero（默认为未选中）

### 时间区域
<a name="v9-panels-graph-time-regions"></a>

您可以在图形上突出显示特定的时间区域，以便于查看，例如周末、工作时间和下班时间。所有配置的时间区域均以 UTC 时间为准。

# 热图面板
<a name="v9-panels-heatmap"></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)。

通过热图面板可视化，您可以查看随时间变化的直方图。有关直方图的更多信息，请参阅 [直方图和热图简介](getting-started-grafanaui.md#introduction-to-histograms-and-heatmaps)。

## 根据数据计算
<a name="v9-panels-heatmap-calculate"></a>

此设置决定数据是已计算的热图（来自数据来源/转换器），还是在面板中计算的热图。

**X 桶**

此设置决定如何将 X 轴拆分为桶。可在**大小**输入中指定时间间隔。例如，时间范围为 `1h` 会使 X 轴上的单元格宽度为 1 小时。

**Y 桶**

此设置决定如何将 Y 轴拆分为桶。

**Y 桶刻度**

从以下 Y 轴值刻度中选择一个：
+ **线性**：线性刻度。
+ **log（底数 2）**：底数为 2 的对数刻度。
+ **log（底数 10）**：底数为 10 的对数刻度。

## Y 轴
<a name="v9-panels-heatmap-y-axes"></a>

定义 Y 轴的显示方式

 **放置**
+ **左**：在左侧
+ **右**：在右侧
+ **隐藏**：隐藏

**单位**

单位配置

**小数**

此设置决定十进制配置。

**最小/最大值**

此设置配置轴范围。

**反向**

选中后，轴将按相反顺序显示。

## 颜色
<a name="v9-panels-heatmap-colors"></a>

色谱控制值计数（在每个桶中）和分配给每个桶的颜色之间的映射。色谱上最左侧的颜色表示最小计数，最右侧的颜色表示最大计数。使用浅色主题时，某些颜色方案会自动反转。

您也可以将颜色模式更改为“不透明度”。在这种情况下，颜色不会改变，但不透明度会随桶数的变化而变化
+ **Mode (模式)**
  + **方案**：用单元格颜色表示的桶值。
    + **方案**：如果模式为**方案**，则选择颜色方案。
  + **不透明度**：由单元格不透明度表示的桶值。不透明单元格表示最大值。
    + **颜色**：单元格基色。
    + **刻度**：将桶值映射到不透明度的刻度。
      + **线性**：线性刻度。桶值以线性方式映射到不透明度。
      + **sqrt**：幂刻度。以 `value ^ k` 计算的单元格不透明度，其中 `k` 是配置的**指数**值。如果指数小于 `1`，则会得到一个对数刻度。如果指数大于 `1`，则会得到一个指数刻度。如果是 `1`，则刻度将与线性相同。
    + **指数**：指数值，大于 `0`。

**从值开始/结束颜色**

默认情况下，Grafana 根据最小和最大桶值计算单元格颜色。可使用最小值和最大值覆盖这些值。将桶值视为 Z 轴，将最小值和最大值分别视为 Z-Min 和 Z-Max。
+ **开始**：用于单元格颜色计算的最小值。如果桶值小于最小值，则将其映射到“最小”颜色。序列最小值为默认值。
+ **结束**：用于单元格颜色计算的最大值。如果桶值大于最大值，则将其映射到“最大”颜色。序列最大值为默认值。

## 单元格显示
<a name="v9-panels-heatmap-cell"></a>

使用单元格显示设置来优化热图中单元格的可视化效果。

## 其他显示选项
<a name="v9-panels-heatmap-options"></a>

**Tooltip**
+ **显示工具提示**：显示热图工具提示。
+ **显示直方图**：在工具提示上显示 Y 轴直方图。直方图表示特定时间戳的桶值的分布。

**图例**

选择是否要在可视化上显示热图图例。

**样本**

设置用于显示样本数据的颜色。

# 直方图面板
<a name="v9-panels-histogram"></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)。

直方图可视化计算值的分布并将其显示为条形图。Y 轴和每个条形的高度代表落入每个括号中的值的数量，而 X 轴代表值范围。

直方图可视化支持时间序列和任何带有一个或多个数值字段的表结果。

## 支持的格式
<a name="v9-panels-histogram-formats"></a>

直方图可视化支持时间序列和任何带有一个或多个数值字段的表结果。

## 显示选项
<a name="v9-panels-histogram-options"></a>

使用以下选项来优化可视化效果：

**桶大小**

桶的大小。将此字段留空，以自动调整桶大小（约为全量程的 10%）。

**桶偏移**

第一个桶不应该从零开始。非零偏移会移动聚合窗口。例如，大小为 5（0–5、5–10、10–15）且默认偏移量为 0 的桶将变为 2–7、7–12、12–17，偏移量为 2；在这种情况下，0、5 或 10 的偏移量实际上没有任何作用。通常，此选项将与明确定义的桶大小一起使用，而不是与自动桶大小一起使用。要使此设置生效，偏移量应大于 0 且小于桶大小；超出此范围的值将与该范围内的值具有相同的效果。

**组合序列**

这会将所有序列和字段合并为一个组合的直方图。

**线宽**控制条形图的线宽。

**填充不透明度**控制条形图的填充不透明度。

**渐变模式**设置渐变填充的模式。填充渐变基于线条颜色。要更改颜色，请使用标准颜色方案字段选项。渐变外观受填充不透明度设置的影响。
+  **无**：无渐变填充，这是默认设置。
+  **不透明度**：渐变的透明度是根据 Y 轴上的值计算的。填充的不透明度随 Y 轴上的值增加而增加。
+  **色调**：渐变色是根据线条颜色的色调生成的。

**工具提示模式** 当您将光标悬停在图形上时，Grafana 可以显示工具提示。选择工具提示的行为方式：
+  **单个**：悬停工具提示仅显示您悬停在上面的序列。
+  **全部**：悬停工具提示显示可视化中的所有序列。Grafana 在工具提示的序列列表中以粗体突出显示您悬停在上面的序列。
+  **隐藏**：不显示工具提示。

**注意**  
使用覆盖从工具提示隐藏单个序列。

## 图例选项
<a name="v9-panels-histogram-legend"></a>

启用图例选项后，可以显示值映射或阈值括号。要在图例中显示值映射，请务必将标准选项下的“颜色方案”选项设置为“单色”或“经典”调色板。要查看图例中的阈值括号，请将“颜色方案”设置为“来自阈值”。

**图例模式**：使用这些设置可以优化图例在可视化中的显示方式。
+  **列表**：以列表形式显示图例。这是图例的默认显示模式。
+  **表**：以表的形式显示图例。
+  **隐藏**：隐藏图例。

**图例放置**：选择图例的放置位置。
+  **底部**：显示在图形下方。
+  **右**：显示在图形右侧。

**图例值**

选择要在图例中显示的标准计算。可以输入多个值。有关更多信息，请参阅 [计算类型](v9-panels-calculation-types.md)。

**图例计算**

选择要在图例中显示的计算。可以选择多个值。

# 日志面板
<a name="v9-panels-logs"></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)。

日志面板可视化显示来自支持日志的数据来源（例如 Elastic、Influx 和 Loki）的日志行。通常，您可以使用图形面板旁边的此面板来显示相关进程的日志输出。

日志面板显示在**查询**选项卡上输入的查询结果。多个查询的结果按时间合并和排序。如果数据来源返回的行数超过了可以显示的行数，则可以在面板内滚动。

要限制渲染的行数，可以使用**查询选项**中的**最大数据点**设置。如果未设置，则数据来源通常会强制使用默认限制。

## 日志级别
<a name="v9-panels-logs-level"></a>

对于指定了**级别**标签的日志，我们会使用标签值来确定日志级别，并相应地更新颜色。如果日志未指定级别标签，则会尝试查明其内容是否与任何受支持的表达式匹配（有关更多信息，请参阅下文）。日志级别始终由第一个匹配项决定。如果 Grafana 无法确定日志级别，则会使用**未知的**日志级别对其可视化。有关更多信息，请参阅 [日志可视化](v9-explore-logs.md#v9-explore-logs-viz)。

## 日志详细信息
<a name="v9-panels-logs-details"></a>

每个日志行都有一个可扩展区域，其中带有标签和检测到的字段，以实现更可靠的交互。每个字段或标签有一个统计图标，以显示与所有显示的日志相关的统计信息。

**数据链接**

通过数据链接，您可以将日志消息的任何部分转换为内部或外部链接。创建的链接在**日志详细信息**视图的**链接**部分以按钮的形式显示。

**显示选项**

使用以下设置来优化可视化效果：
+  **时间**：显示或隐藏时间列。这是与数据来源报告的日志行关联的时间戳。
+  **唯一标签**：显示或隐藏唯一标签列，该列仅显示非常见标签。
+ **常用标签**：显示或隐藏常用标签
+  **换行**：切换换行符。
+ **Prettify JSON**：将其设置为 `true` 可打印所有 JSON 日志。此设置不会影响 JSON 以外的任何格式的日志。
+ **启用日志详细信息**：切换选项以查看每个日志行的日志详细信息视图。默认设置为 `true`。
+  **顺序**：按时间降序或升序显示结果。默认为**降序**，首先显示最新的日志。设置为**升序**可首先显示最旧的日志行。

# 新闻面板
<a name="v9-panels-news"></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)。

此面板显示 RSS 源。默认情况下，显示来自 Grafana Labs 博客的文章。

在**显示**部分输入 RSS 的 URL。此面板类型不接受任何其他查询。

**注意**  
RSS 源由 Grafana 前端加载，无需代理。因此，只有配置了相应 [CORS 标头](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS)的 RSS 源才会加载。如果尝试显示的 RSS 源无法加载，请考虑重新托管 RSS 源或创建自己的代理。

# 节点图面板
<a name="v9-panels-node-graph"></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-panels-node-graph-requirements"></a>

节点图面板需要数据的特定形状才能显示其节点和边。并非每个数据来源或查询都可以在此面板中可视化。

节点图可视化由*节点*和*边*组成。
+ *节点*显示为圆形。从应用程序的角度来看，节点可能代表应用程序、服务或其他任何相关的内容。
+ *边*显示为一条连接两个节点的线。连接可能是请求、运算或两个节点之间的某种其他关系。

节点和边都可以具有关联的元数据或统计数据。数据来源定义了显示哪些信息和值，因此不同的数据来源可以显示不同类型的值，也可以不显示某些值。

## Nodes
<a name="v9-panels-node-graph-nodes"></a>

通常，节点在节点内部显示两个统计值，在节点正下方显示两个标识符，通常是名称和类型。节点还可以在节点周围用彩色圆圈显示另一组数值，不同颜色的部分代表不同的数值，这些数值相加应为 1。例如，您可以用圆圈的红色部分表示误差百分比。

其他详细信息可以显示在上下文菜单中，该菜单会在您选择节点时显示。上下文菜单中还可以有其他链接，这些链接可以指向 Grafana 工作区的其他部分或任何外部链接。

**注意**  
节点图只能显示 1500 个节点。如果超过此限制，则右上角会显示一条警告，某些节点会被隐藏。您可以单击图形中的**隐藏节点**标记，展开图形的隐藏部分。

## Edges
<a name="v9-panels-node-graph-edges"></a>

当您将鼠标悬停在边上时，边也可以显示统计数据。与节点类似，您也可以选择边以打开包含其他详细信息和链接的上下文菜单。

支持此可视化的第一个 AWS X-Ray 数据源是其服务地图功能的数据源。有关更多信息，请参阅 [Connect 连接到 AWS X-Ray 数据源](x-ray-data-source.md)。

## 浏览节点图
<a name="v9-panels-node-graph-navigation"></a>

通过选择任何节点或边的外部并拖动指针，可以在节点图内平移。

您可以使用节点图左上角的按钮进行缩放。

**隐藏节点**

为了保持合理的性能，在给定时间显示的节点数量是有限的。超出此限制的节点隐藏在可点击的标记后面，这些标记显示连接到该边的隐藏节点的大致数量。您可以选择标记来围绕该节点展开图形。

**网格视图**

您可以切换到网格视图，以便更好地了解图形中最有趣的节点。网格视图显示网格中没有边的节点，可以按节点内部显示的统计数据或节点的彩色边框表示的统计数据进行排序。

要对节点进行排序，请选择图例中的统计数据。统计数据名称旁边的标记显示当前用于排序和排序方向的统计数据。

选择节点，然后选择**在图形布局中显示**选项，切换回图形布局，将焦点放在所选节点上，以在整个图形的上下文中显示该节点。

## 数据 API
<a name="v9-panels-node-graph-data-api"></a>

这种可视化需要从数据来源返回特定形状的数据，以便正确显示。

节点图至少需要一个描述图形边缘的数据帧。默认情况下，节点图将根据此数据帧计算节点和任何统计数据。（可选）如果需要显示更多特定于节点的元数据，则可以发送描述节点的第二个数据帧。您必须在两个数据帧上设置 `frame.meta.preferredVisualisationType = 'nodeGraph'`，或将其分别命名为 `nodes` 和 `edges`，这样才能渲染节点图。

**结构中的边数据**

必填字段：


| 字段名称 | Type | 说明 | 
| --- | --- | --- | 
|  id  |  字符串  |  边的唯一标识符。  | 
|  source  |  字符串  |  来源节点 ID。  | 
|  target  |  字符串  |  目标 ID。  | 

可选字段：


| 字段名称 | Type | 说明 | 
| --- | --- | --- | 
|  mainstat  |  字符串/数字  |  将鼠标悬停在边上方时，第一个统计数据显示在叠加层中。可以是按原样显示值的字符串，也可以是数字。如果是数字，则还会显示与该字段关联的任何单位  | 
|  secondarystat  |  字符串/数字  |  与 MainStat 相同，但显示在其正下方。  | 
|  detail\$1\$1\$1  |  字符串/数字  |  单击边时，任何前缀为 `detail__` 的字段都将显示在上下文菜单的标题中。将 `config.displayName` 用于更易读的标签。  | 

**结构中的节点数据**

必填字段：


| 字段名称 | Type | 说明 | 
| --- | --- | --- | 
|  id  |  字符串  |  节点的唯一标识符。边在其来源和目标字段中引用此 ID。  | 

可选字段：


| 字段名称 | Type | 说明 | 
| --- | --- | --- | 
|  删除实例快照  |  字符串  |  节点正下方可见的节点名称。  | 
|  subtitle  |  字符串  |  标题下显示的附加名称、类型或其他标识符。  | 
|  mainstat  |  字符串/数字  |  第一个统计数据显示在节点中。可以是按原样显示值的字符串，也可以是数字。如果是数字，则还会显示与该字段关联的任何单位。  | 
|  secondarystat  |  字符串/数字  |  与 MainStat 相同，但显示在节点中的下方。  | 
|  arc\$1\$1\$1  |  数字  |  任何前缀为 `arc__` 的字段都将用于在节点周围创建彩色圆圈。这些字段中的所有值加起来应为 1。您可以使用 `config.color.fixedColor` 指定颜色。  | 
|  detail\$1\$1\$1  |  字符串/数字  |  单击节点时，任何前缀为 `detail__` 的字段都将显示在上下文菜单的标题中。将 `config.displayName` 用于更易读的标签。  | 

# 饼图面板
<a name="v9-panels-piechart"></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-panels-piechart-value"></a>

使用以下选项优化可视化中的值。

**Show (显式)**

选择要显示的信息量。
+ **计算**：将每个值归约为每个序列的单个值。
+ **所有值**：显示单个序列中的每个值。

**计算**

选择计算后，选择计算以归约每个序列。有关可用计算的信息，请参阅[计算类型](v9-panels-calculation-types.md)。

**限制**

显示单个序列中的每个值时，这会限制显示的值数量。

**字段**

选择要在可视化中显示的字段。列表中提供了每个字段名称，也可以选择以下选项之一：
+ **数值字段**：所有包含数值的字段。
+ **所有字段**：所有未由转换删除的字段。
+ **时间**：所有带有时间值的字段。

## 饼图选项
<a name="v9-panels-piechart-options"></a>

使用以下选项来优化可视化效果。

**饼图类型**

选择饼图的显示样式。可以是以下任一项：
+ **饼图**：标准饼图
+ **甜甜圈**：中间有洞的饼图

**标签**

选择要在饼图上显示的标签。您可以选择多个标签。
+ **名称**：序列或字段名称。
+ **百分比**：占整体的百分比。
+ **值**：原始数值。

默认情况下，标签在图表正文上显示为白色。您可以选择深颜色的图表，使其更加明显。较长的名称或数字可能会被截断。

**工具提示模式**

当您将光标悬停在可视化上时，Grafana 可显示工具提示。选择工具提示的行为方式。
+ **单个**：悬停工具提示仅显示一个序列，即您将鼠标悬停在可视化上面的序列。
+ **全部**：悬停工具提示显示可视化中的所有序列。Grafana 在工具提示的序列列表中以粗体突出显示您悬停在上面的序列。
+ **隐藏**：与可视化交互时不显示工具提示。

使用覆盖从工具提示隐藏单个序列。

**图例模式**

使用这些设置可定义图例在可视化中的显示方式。有关图例的更多信息，请参阅[配置图例](v9-panels-configure-legend.md)。
+ **列表**：以列表形式显示图例。这是图例的默认显示模式。
+ **表**：以表的形式显示图例。
+ **隐藏**：隐藏图例。

**图例放置**

选择显示图例的位置。
+ **底部**：显示在图形下方。
+ **右**：显示在图形右侧。

**图例值**

选择要在图例中显示的[标准计算](v9-panels-calculation-types.md)。可以输入多个值。

选择要在图例中显示的值。可以选择多个值。
+ **百分比**：占整体的百分比。
+ **值**：原始数值。

有关图例的更多信息，请参阅[配置图例](v9-panels-configure-legend.md)。

# Plotly 面板
<a name="v9-panels-plotly"></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)。

Plotly 面板使用开源 javascript 图形库 [Plotly](https://plotly.com/javascript/) 渲染图表。

**数据**、**布局**和**配置**字段与 [Plotly 文档](https://plotly.com/javascript/plotlyjs-function-reference/)中描述的常用参数相匹配。必须采用 JSON 格式。

数据来源提供的数据可通过用户定义的脚本进行转换，然后再注入 Plotly 图表。该脚本包含 2 个参数。
+ `data`：数据来源返回的数据。
+ `variables`：当前控制面板中包含 [Grafana 变量](templates-and-variables.md)的对象（用户变量和以下几个全局变量：`__from`、`__to`、`__interval` 和 `__interval_ms`）。

该脚本返回的对象必须具有以下一个或多个属性：`data`、`layout`、`config` 和 `frames`。示例如下：

```
let x  = data.series[0].fields[0].values.buffer
let y  = data.series[0].fields[1].values.buffer
let serie = {
    x : x,
    y : y,
    name : variables.project //where project is the name of a Grafana’s variable
}

return {
    data : [serie],
    config : {
    displayModeBar: false
    }
}
```

*数据*、*布局*和*配置*字段中提供的脚本和 JSON 返回的对象将被合并（深度合并）。

如果未提供脚本，面板将仅使用*数据*、*布局*和*配置*字段。

# Sankey 面板
<a name="v9-panels-sankey"></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)。

Sankey 面板显示了 Sankey 关系图，这些关系图非常适合可视化流数据，流宽度与所选指标成正比。下图显示了一个 Sankey 关系图，其中包含两组源和目标。

![\[Sankey diagram showing flow between source organizations, science disciplines, and projects.\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/sankey-panel.png)


**工作原理**

sankey 面板需要至少 2 列数据，分别是数据流的源和目标。您的查询应将您的数据分为至少两组。该面板将按查询顺序绘制从第一列数据点到最后一列数据点的链接。链接的粗细将与查询中的指标分配的值成比。

**自定义**
+ **链接**：当前有两种链接颜色选项：多色或单色。默认为多色。要为链接选择单色，请切换**仅限单一链接颜色**选项，然后从 Grafana 的颜色选择器中选择颜色。
+ **节点**：您可以通过更改**节点颜色**选项来更改矩形节点的颜色
+ **节点宽度**：可以使用**节点宽度**滑块或在输入框中输入数字来调整节点的宽度。此数字必须是整数。
+ **节点填充**：可以使用**节点填充**滑块或在输入框中输入数字来调整节点之间的垂直填充。此数字必须是整数。如果您的链接太薄，可以尝试调整这个数字
+ **标题**：可以在编辑器面板中使用**显示名称**覆盖来更改列标题。这与您为**文本颜色**选择的颜色相同
+ **Sankey 布局**：可使用**布局迭代**滑块稍微调整 Sankey 链接的布局。此数字必须为整数，并且是用于生成布局的松弛迭代次数。

# 散点面板
<a name="v9-panels-scatter"></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)。

散点面板显示表格数据的 X/Y 散点图，其界面比其他图形面板更简单。与图形面板不同，散点面板不要求数据处于时间序列中。散点面板需要表格式的数据集，其中包含两列或多列数值数据。

其中一列可以分配给 X 轴。可以将一列或多列分配给一系列 Y 轴值，并将生成的数据绘制为一系列点。每个序列还可以选择使用多个统计最佳拟合中的一个来显示回归线。

**创建散点面板**

以下过程介绍了如何使用散点面板创建散点图。对于此示例，我们将假设存在如下表所示的 `HEIGHT` 数据，其中包含三列数值 `Age`、`Boys` 和 `Girls`，按年龄显示男孩和女孩的平均身高。


| 天数 | 男孩身高 | 女孩身高 | 
| --- | --- | --- | 
|  5  |  109.7  |  109.5  | 
|  6  |  115.6  |  115.4  | 
|  7  |  121.1  |  120.8  | 
|  8  |  126.3  |  126  | 
|  9  |  131.3  |  131.3  | 
|  10  |  136.2  |  137.1  | 
|  11  |  141.2  |  143.2  | 
|  12  |  147  |  148.7  | 
|  13  |  153.6  |  152.6  | 
|  14  |  159.9  |  155.1  | 
|  15  |  164.4  |  156.7  | 
|  16  |  167.3  |  157.6  | 
|  17  |  169  |  158  | 
|  18  |  170  |  158.3  | 
|  19  |  170.8  |  158.6  | 

**使用散点面板创建散点图**

1. 在您的 Grafana 控制面板中，选择**添加面板**。

1. 对于查询，编写一个将返回所需数据的查询。在这种情况下，您将使用 `SELECT * FROM HEIGHT` 之类的查询。

1. 选择**散点**可视化。

这将创建一个散点图，使用第一列作为 X 轴，其他数值列作为 Y 轴。

**配置选项**

散点面板提供以下四个自定义配置选项。
+ **X 轴**：您可以选择用作 X 轴的字段，以及轴的范围、标题和显示信息。
+ **Y 轴**：您可以选择用作 Y 轴的字段，包括每个字段的显示选项以及轴的范围和标题信息。您还可以选择显示每个字段的回归线。有关回归线配置的更多详细信息，请参阅以下信息。
+ **图例**：您可以打开或关闭面板的图例，也可以选择图例中文本的大小。
+ **显示**：您可以为图表设置其他选项，包括网格颜色和边框样式。

**回归线配置**

除了单个点之外，每个 Y 轴数据集还可以显示一条线。有五个线条类型的选项。
+ **无**：不显示回归线。
+ **简单**：显示连接数据集点的回归线。
+ **线性**：使用最小二乘法这种最佳拟合方法显示一条直线。
+ **指数**：显示指数最佳拟合回归线。
+ **幂**：显示幂最佳拟合回归线。

# 统计面板
<a name="v9-panels-stat"></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-panels-stat-automatic-adjust"></a>

面板会根据控制面板中的可用宽度和高度自动调整布局。如果面板变得太小，将会自动隐藏图形（迷你图）。

## 值选项
<a name="v9-panels-stat-value"></a>

使用以下选项来优化可视化显示值的方式：

**Show (显式)**

选择 Grafana 显示数据的方式。

**计算**

显示基于所有行的计算值。
+ **计算**：选择一个 reducer 函数，Grafana 将使用该函数将多个字段归约为单个值。有关可用计算的列表，请参阅[标准计算](v9-panels-calculation-types.md)。
+ **字段**：选择面板中显示的字段。

**所有值**

为每行显示一个单独的统计数据。如果选择此选项，则还可以限制要显示的行数。
+ **限制**：要显示的最大行数。默认为 5000。
+ **字段**：选择面板中显示的字段。

## 统计样式
<a name="v9-panels-stat-styles"></a>

设置可视化的样式。

**方向**

选择堆叠方向。
+ **自动**：Grafana 会选择其认为最佳的方向。
+ **水平**：从左到右水平拉伸条形图。
+ **垂直**：从上到下垂直拉伸条形图。

**文本模式**

您可以使用文本模式选项来控制面板渲染的文本。如果值并不重要，重要的是名称和颜色，则将**文本模式**更改为**名称**。该值仍用于确定颜色，并显示在工具提示中。
+ **自动**：如果数据包含多个序列或字段，则同时显示名称和值。
+ **值**：仅显示值，不显示名称。名称显示在悬停工具提示中。
+ **值和名称**：始终显示值和名称。
+ **名称**：显示名称而不是值。值显示在悬停工具提示中。
+ **无**：不显示任何内容（空）。名称和值显示在悬停工具提示中。

**颜色模式**

选择一种颜色模式。
+ **值**：仅为值和图形区域着色。
+ **背景**：同时为背景着色。

**图形模式**

选择图形和迷你图模式。
+ **无**：隐藏图形并仅显示值。
+ **面积**：在值下方显示面积图。这要求您的查询返回时间列。

**文本对齐方式**

选择对齐模式。
+ **自动**：如果仅显示单个值（不重复），则该值居中。如果显示多个序列或多行，则该值为左对齐。
+ **中心**：统计值居中。

文本大小

调整仪表文本的大小。
+ **标题**：输入仪表标题大小的数值。
+ **值**：输入仪表值大小的数值。

# 状态时间轴面板
<a name="v9-panels-state-timeline"></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-panels-state-timeline-options"></a>

使用以下选项来优化可视化效果：

**合并相等的连续值**

控制 Grafana 是否合并相邻的相同值。

**显示值**

控制是否在状态区域内渲染数值。如果有足够的空间，Auto 将渲染值。

**对齐值**

控制状态区域内的值对齐。

**行高**

控制行间的间距。1 = 无间距，0.5 = 50% 间距。

**线宽**

控制状态区域的线宽。

**填充不透明度**

控制状态区域的不透明度。

## 值映射
<a name="v9-panels-state-timeline-valuemap"></a>

要为布尔值或字符串值分配颜色，请使用 [配置值映射](v9-panels-configure-value-mappings.md)。

## 带阈值的时间序列数据
<a name="v9-panels-state-timeline-threshold"></a>

该面板也可以用于时间序列数据。在这种情况下，使用阈值将时间序列转换为离散的彩色状态区域。

## 图例选项
<a name="v9-panels-state-timeline-legend"></a>

启用图例选项后，可以显示值映射或阈值括号。要在图例中显示值映射，请务必将“标准”选项下的“颜色方案”选项设置为“单色”或“经典”调色板。要查看图例中的阈值括号，请将“颜色方案”设置为“来自阈值”。

**图例模式**：使用这些设置可以优化图例在可视化中的显示方式。
+  **列表**：以列表形式显示图例。这是图例的默认显示模式。
+  **表**：以表的形式显示图例。
+  **隐藏**：隐藏图例。

**图例放置**：选择图例的放置位置。
+  **底部**：显示在图形下方。
+  **右**：显示在图形右侧。

**图例值**

选择要在图例中显示的[标准计算](v9-panels-calculation-types.md)。可以输入多个值。

# 状态历史面板
<a name="v9-panels-status-history"></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-panels-status-history-timeline-options"></a>

使用以下选项来优化可视化效果：

**显示值**

控制值是否在值框内渲染。如果有足够的空间，Auto 将渲染值。

**列宽**控制框的宽度。1 = 最大宽度，0 = 最小宽度。

**线宽**控制状态区域的线宽。

**填充不透明度**控制状态区域的填充不透明度。

## 值映射
<a name="v9-panels-status-history-valuemap"></a>

要为布尔值或字符串值分配颜色，请使用 [配置值映射](v9-panels-configure-value-mappings.md)。

## 带阈值的时间序列数据
<a name="v9-panels-status-history-threshold"></a>

该面板也可以用于时间序列数据。在这种情况下，使用阈值为框着色。也可以使用渐变配色方案为值着色。

## 图例选项
<a name="v9-panels-status-history-legend"></a>

启用图例选项后，可以显示值映射或阈值括号。要在图例中显示值映射，请务必将“标准”选项下的“颜色方案”选项设置为“单色”或“经典”调色板。要查看图例中的阈值括号，请将“颜色方案”设置为“来自阈值”。

**图例模式**：使用这些设置可以优化图例在可视化中的显示方式。
+  **列表**：以列表形式显示图例。这是图例的默认显示模式。
+  **表**：以表的形式显示图例。
+  **隐藏**：隐藏图例。

**图例放置**：选择图例的放置位置。
+  **底部**：显示在图形下方。
+  **右**：显示在图形右侧。

**图例值**

选择要在图例中显示的[标准计算](v9-panels-calculation-types.md)。可以输入多个值。

# 表面板
<a name="v9-panels-table"></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)。

表面板可视化非常灵活，支持时间序列、表、注释和原始 JSON 数据的多种模式。此面板还提供日期格式、值格式和着色选项。

## 对列排序
<a name="v9-panels-table-sort"></a>

单击列标题，将排序顺序从默认降序改为升序。每次单击时，排序顺序都会变为循环中的下一个选项。一次只能按一列排序。

## 表选项
<a name="v9-panels-table-options"></a>

**显示标题**

显示或隐藏从数据来源导入的列名称。

## 列宽
<a name="v9-panels-table-width"></a>

默认情况下，Grafana 会根据表大小和最小列宽自动计算列宽。此字段选项可以覆盖设置，并以像素为单位定义所有列的宽度。

例如，如果在字段中输入 `100`，则在字段外部单击时，所有列的宽度都将设置为 100 像素。

## 最小列宽
<a name="v9-panels-table-min"></a>

默认情况下，表列的最小宽度为 150 像素。该字段选项可以覆盖默认值，并以像素为单位定义表面板新的最小列宽。

例如，如果在字段中输入 `75`，则在字段外部单击时，所有列的宽度将缩放到不小于 75 像素。

对于小屏幕设备（如智能手机或平板电脑），您可以将默认 `150` 像素值减小为 `50`，以便在控制面板中正确渲染表面板。

## 列对齐方式
<a name="v9-panels-table-alignment"></a>

选择 Grafana 对齐单元格内容的方式：
+ 自动（默认）
+ 靠左对齐
+ 居中对齐
+ 靠右对齐

## 单元格类型
<a name="v9-panels-table-cell-type"></a>

默认情况下，Grafana 会自动选择显示设置。您可以选择以下选项之一来覆盖设置，为所有字段设置默认值。对于某些单元格类型，还可提供其他配置。

**注意**  
如果您在**字段**选项卡中进行设置，该类型将应用于所有字段，包括时间字段。您可以在**覆盖**选项卡中进行设置，以将更改应用于一个或多个字段。

**颜色文本**

如果设置了阈值，则字段文本将以相应的阈值颜色显示。

**彩色背景（渐变或纯色）**

如果设置了阈值，则字段背景将以相应的阈值颜色显示。

**计量表**

单元格可以显示为图形仪表，具有几种不同的表示类型。

**基本**

基本模式将显示一个简单的仪表，其阈值水平定义了仪表的颜色。

**渐变**

阈值水平定义渐变。

**LCD**

将仪表分成点亮或不点亮的小单元格。

**JSON 视图**

显示格式化为代码的值。如果值是对象，则允许浏览 JSON 对象的 JSON 视图在悬停时显示。

## 单元格值检查
<a name="v9-panels-table-cell-value"></a>

从表单元格启用值检查。原始值显示在模态窗口中。

**注意**  
仅当单元格显示模式设置为自动、彩色文本、彩色背景或 JSON 视图时，单元格值检查才可用。

## 列筛选器
<a name="v9-panels-table-col-filter"></a>

您可以暂时更改列数据的显示方式。例如，您可以按从高到低的顺序排列值，或者隐藏特定的值。有关更多信息，请查看以下[筛选表列](#v9-panels-table-filter)。

## 分页
<a name="v9-panels-table-pagination"></a>

使用此选项启用或禁用分页。这是一个前端选项，不影响查询。启用后，页面大小会自动调整为表的高度。

## 筛选表列
<a name="v9-panels-table-filter"></a>

如果打开**列筛选器**，可以筛选表选项。

**打开列筛选**

1. 在 Grafana 中，导航到表控制面板，其中包含要筛选的列。

1. 在要筛选的表面板上，打开面板编辑器。

1. 选择**字段**选项卡。

1. 在**表**选项中，打开**列筛选器**选项。

每个列标题旁边都会显示一个筛选器图标。

**筛选列值**

要筛选列值，请选择列标题旁边的筛选器（漏斗）图标。Grafana 会显示该列的筛选选项。

选中要显示的值旁边的复选框。在顶部的搜索字段中输入文本，在显示屏中显示这些值，这样您就可以从中选择，而不用滚动来查找。

**清除列筛选条件**

应用筛选条件的列在标题旁边会显示一个蓝色的漏斗。

要删除筛选条件，请选择蓝色漏斗图标，然后选择清除筛选条件。

## 表脚注
<a name="v9-panels-table-footer"></a>

您可以使用表脚注来显示字段的[计算](v9-panels-calculation-types.md)。

启用表脚注后，您可以选择**计算**，然后选择要计算的**字段**。

如果未选择字段，系统会将计算应用于所有数值字段。

**计算行数**

如果要显示数据集中的行数，而不是所选字段中的值数，请选择**计数**计算并启用**计算行数**。

# 文本面板
<a name="v9-panels-text"></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)。

文本面板使您可以直接在控制面板中包含文本或 HTML。可将其用于添加上下文信息和描述或嵌入复杂的 HTML。

**Mode (模式)**

模式决定了嵌入内容的显示方式。具有以下选项
+ **Markdown**：此选项将内容格式化为 markdown。
+ **HTML**：此设置将内容渲染为经过清理的 HTML。
+ **代码**：此设置在只读代码编辑器中渲染内容。选择适当的语言，对嵌入文本应用语法突出显示。

**变量**

内容中的变量将展开以供显示。

# 时间序列面板
<a name="v9-panels-time-series"></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 会传输所有适用的设置。

**Topics**
+ [工具提示选项](v9-time-series-panel-tooltip.md)
+ [图例选项](v9-time-series-panel-legend.md)
+ [图形样式选项](v9-time-series-graph.md)
+ [轴选项](v9-time-series-axis.md)
+ [颜色选项](v9-time-series-color.md)

# 工具提示选项
<a name="v9-time-series-panel-tooltip"></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 在工具提示的序列列表中以粗体突出显示您悬停在上面的序列。
+  **隐藏**：不显示工具提示。

# 图例选项
<a name="v9-time-series-panel-legend"></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)。

**图例模式**：选择图例的显示方式。
+  **列表**：以列表形式显示图例。这是默认值。
+  **表**：以表的形式显示图例。
+  **隐藏**：隐藏图例。

**图例放置**：选择是否显示图例。
+  **底部**：显示在图形下方。
+  **右**：显示在图形右侧。

**图例计算**

选择要在图例中显示的计算。有关更多信息，请参阅 [计算类型](v9-panels-calculation-types.md)。

# 图形样式选项
<a name="v9-time-series-graph"></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)。

**图形样式**

可使用此选项定义如何显示时间序列数据。您可以使用覆盖在同一个图形中组合多种样式。这里有三个样式选项：其他一些样式选项仅适用于某些图形样式。
+ **线**：在图形上将时间序列显示为一条线。
+ **条形图**：将时间序列显示为图形上的一系列条形图，每个条形图对应一个数据点。
+ **点**：将时间序列显示为图形上的一系列点，每个点对应一个数据点。

**条形图对齐**

对于条形图，设置条形图相对于图形上绘制点的位置。由于条形图具有宽度，可将其放置在点的前面、后面或居中。选项包括**前**、**居中**或**后**。

**线宽**

设置折线图的线条粗细，或条形图中每个条的轮廓粗细。

**填充不透明度**

设置填充颜色的不透明度。例如，填充用于显示折线图中线条下方的区域，或用作条形图中条形的颜色。

**渐变模式**

渐变模式指定渐变填充，该填充基于序列颜色。要更改颜色，请使用标准颜色方案字段选项。有关更多信息，请参阅 [颜色方案](v9-panels-configure-standard-options.md#v9-panels-standard-options-color-scheme)。渐变模式选项包括：
+ **无**：无渐变填充。
+ **不透明度**：一种不透明度渐变，其中填充的不透明度随着 Y 轴值的增加而增加。
+ **色调**：一种基于序列色调的渐变。
+ **方案**：由您的颜色方案定义的颜色渐变。该设置可用于填充和线条。有关更多信息，请参阅 [颜色选项](v9-time-series-color.md)。

渐变外观也可以通过**填充不透明度**设置来修改。

**显示点**

您可以配置可视化以向折线图或条形图添加点。您可以选择**始终**、**从不**或**自动**。使用**自动**时，Grafana 会根据数据的密度来确定是否显示点。如果数据的密度足够低，则会显示点。

**点大小**

设置绘制点的大小，直径从 1 到 40 像素不等。

**线插值**

选择 Grafana 插入序列线的方式。选项包括**线性**、**平滑**、**前一步**和**后一步**。

**线型**

设置线条样式。要更改颜色，请使用标准颜色方案字段选项。

线条样式的外观受**线宽**和**填充不透明度**设置的影响。

线条样式的选项包括**实线**、**虚线**和**点线**。

**连接 null 值**

选择 null 值（数据中的图形）在图形上的显示方式。可以将空值连接起来形成一条连续的线，也可以设置一个阈值，如果超过该阈值，数据间隙将不再连接。您可以选择**从不**连接有间隙的数据点，**始终**连接有间隙的数据点，或者设置一个**阈值**，当达到该阈值时，数据间隙将不再连接。

**堆栈序列**

*堆叠*允许 Grafana 相互叠加显示序列。在可视化中使用堆叠时要小心，因为很容易创建误导性图形。要了解为什么堆叠可能不是最佳方法的更多信息，请参阅[堆叠问题](https://www.data-to-viz.com/caveat/stacking.html)。

堆叠选项包括：
+ **关闭**：关闭序列堆叠。
+ **正常**：将序列堆叠在一起。
+ **100%**：按百分比堆叠，其中所有序列相加为 100%。

**分组堆叠序列**

您可以覆盖堆叠行为以分组堆叠序列。有关创建覆盖的更多信息，请参阅 [配置字段覆盖](v9-panels-configure-overrides.md)。创建覆盖时，请指定您希望序列所属的堆叠组的名称。

**填充至下方**

**填充至下方**选项填充两个序列之间的区域。此选项仅以序列或字段覆盖形式提供。使用此选项，您可以填充两个序列之间的区域，而不是从序列线向下填充到 0。例如，如果您有两个名为 *Max* 和 *Min* 的序列，您可以选择 **Max** 序列并将其覆盖，以**填充至下方** **Min** 序列。这将仅填充两条序列线之间的区域。

# 轴选项
<a name="v9-time-series-axis"></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)。

轴类别下的选项会更改 X 和 Y 轴的渲染方式。某些选项只有在您编辑的字段选项框外部单击后才会生效。也可以按 `Enter` 键。

**放置**

设置 Y 轴的放置。选项包括：
+ **自动**：Grafana 会自动为序列分配 Y 轴。当有两个或多个具有不同单位的序列时，Grafana 将左轴分配给第一个单位，将右轴分配给下一个单位。
+ **左**：在左侧显示所有 Y 轴。
+ **右**：在右侧显示所有 Y 轴。
+ **隐藏**：隐藏所有 Y 轴。

要为每个字段或序列分配轴，请[添加字段覆盖](v9-panels-configure-overrides.md)。

**标签**

设置 Y 轴文本标签。如果有多个 Y 轴，可使用覆盖分配不同的标签。

**Width (宽度)**

设置轴的固定宽度。默认情况下，Grafana 会动态计算轴的宽度。

通过设置轴的宽度，具有不同轴类型的数据可以共享相同的显示比例。此设置让您更容易比较多个图形的数据，因为轴在视觉上不会相互错位或拉伸。

**软最小值和软最大值**

设置**软最小值**或**软最大值**选项，以更好地控制 Y 轴限制。默认情况下，Grafana 会根据数据集自动设置 Y 轴的范围。

软最小值和软最大值设置允许在不存在重大更改时看到微小的变化。根据标准最小值和最大值字段选项得出硬最小值或最大值，可防止间歇性尖峰通过将尖峰剪过特定点来压平有用的细节。

要定义 Y 轴的硬限制，可以设置标准 min/max 选项。有关更多信息，请参阅[配置标准选项](v9-panels-configure-standard-options.md)。

**Scale**

设置 Y 轴刻度。选项包括**线性**或**对数**。如果选择对数，则可以进一步选择以 2 为底数或以 10 为底数的对数刻度。

**转换**

您可以覆盖序列以将转换应用于图表上的值（而不会影响基础值或工具提示、上下文菜单或图例中的值）。您有两个转换选项：
+ **负 Y 转换**：将结果翻转为 Y 轴上的负值。
+ **常量**：将第一个值显示为常量线。

# 颜色选项
<a name="v9-time-series-color"></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)。

默认情况下，图形使用标准[颜色方案](v9-panels-configure-standard-options.md#v9-panels-standard-options-color-scheme)选项来指定序列颜色。您也可以通过单击图例序列颜色图标，使用图例打开颜色选取器。以这种方式设置颜色会自动创建覆盖规则，为特定序列设置特定颜色。

以下是可用于覆盖序列颜色默认值的其他选项。

**经典调色板**

最常见的设置是使用**经典调色板**绘制图形。此方案根据每个字段或序列的顺序自动为其分配颜色。如果查询中字段的顺序发生变化，颜色也会发生变化。您可以使用覆盖规则手动配置特定字段的颜色。

**单色**

使用此模式指定颜色。您还可以单击图例中每个序列旁边的彩色线条图标来打开颜色选取器。这将自动创建一个新的覆盖，将颜色方案设置为单色和选定颜色。

**按值颜色方案**

如果您选择按值配色方案，例如**从阈值（按值）**或 **Green-Yellow-Red （按值）**，则会出现 “**按系列着色**” 选项。此选项控制使用哪个值（最后一个、最小值、最大值）为序列指定颜色。

**方案渐变模式**

位于**图形样式**下方的**渐变模式**选项有一个名为 **Scheme** 的模式。启用 **Scheme** 时，线条或条形图会收到根据选定**方案**定义的渐变颜色。

**来自阈值**

如果将**颜色方案**设置为**来自阈值（按值）**，将**渐变模式**设置为**方案**，则线条或条形图颜色在超出定义的阈值时会发生变化。您只会看到在方案中选择的具体颜色。

**渐变颜色方案**

使用渐变颜色方案而*不*将**渐变模式**设置为**方案**，这意味着当序列中的值在设置的阈值之间移动时，所选颜色将在所选颜色之间形成渐变。

# 跟踪面板（测试版）
<a name="v9-panels-traces"></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)。

*跟踪*是一种可视化方式，使您能够在请求遍历基础设施中的服务时跟踪和记录请求。

有关跟踪的更多信息，请参阅 [Explore 中的跟踪](v9-explore-tracing.md)。

# WindRose
<a name="v9-panels-windrose"></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)。

 WindRose 面板接收原始时间序列数据，转换数据并将其映射到 WindRose 图表中。

![\[WindRose panel with two circular charts showing wind direction and speed data distribution.\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/windrose.png)


## 选项
<a name="v9-panels-windrose-options"></a>

该 WindRose 面板支持以下选项：
+ 轴频率
+ 轴样式（度数或指南针）
+ 刻度（线性、平方、对数）

# Grafana 9 中的 Explore
<a name="v9-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 的控制面板 UI 提供了构建可视化控制面板的功能。*Explore* 去掉了控制面板和面板选项，以便您专注于查询。这有助于您进行迭代，直到得到有效的查询，然后您可以根据查询构建控制面板。

**注意**  
如果您只想浏览数据，而不想创建控制面板，Explore 可以让该操作变得更加容易。如果数据来源支持图形和表数据，Explore 会以图形和表的形式显示结果。这样，您就可以同时查看数据趋势和更多详细信息。

## 开始探索
<a name="v9-explore-start"></a>

**注意**  
要访问 Explore，您必须具有编辑者或管理员角色。

**访问 Explore**

1. 在 Grafana 工作区中，从左侧菜单栏中选择 Explore 菜单项。

   这将打开一个空的 Explore 选项卡。

   或者，要从面板中的现有查询开始，请从“面板”菜单中选择 Explore 选项。这将打开 Explore 选项卡，其中包含来自面板的查询，并让您可以在控制面板之外调整或迭代查询。

1. 从左上角的下拉列表中选择数据来源。[Prometheus](prometheus-data-source.md) 具有自定义的 Explore 实现，其他数据来源使用其标准查询编辑器。

1. 在查询字段中，编写查询以浏览数据。查询字段旁边有三个按钮：清除按钮（X）、添加查询按钮（\$1）和删除查询按钮（-）。与普通查询编辑器一样，您可以添加和删除多个查询。

   有关查询的详细信息，请参阅 [查询和转换数据](v9-panels-query-xform.md)。

## 拆分和比较
<a name="v9-explore-compare"></a>

拆分视图提供了一种简单的方法来比较图表和表格， side-by-side或者在一个页面上一起查看相关数据。

**顶部打开拆分视图**

1. 在 “浏览” 视图中，选择 “**拆分**” 按钮以复制当前查询，并将页面拆分为两个 side-by-side查询。
**注意**  
可以为新查询选择其他数据来源，例如，比较两个不同服务器的同一查询，或比较暂存环境和生产环境。

   在拆分视图中，选择附加到其中一个时间选取器的时间同步按钮，可以链接两个面板的时间选取器（如果更改一个，另一个也会更改）。链接时间选取器可使拆分视图查询的开始和结束时间保持同步。这样可确保您在两个拆分面板中看到相同的时间间隔。

1. 要关闭新创建的查询，请单击“关闭拆分”按钮。

## 共享短链接
<a name="v9-explore-share"></a>

共享缩短链接功能允许您创建更小、更简单 URLs的 /goto/:uid 格式，而不必在查询参数中使用更长的时间。 URLs 要创建指向查询结果的短链接，请在 Explore 工具栏中选择**共享**选项。从未使用过的短链接将在七（7）天后自动删除。

# Explore 中的查询管理
<a name="v9-explore-manage"></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)。

为了帮助调试查询，Explore 允许您通过查询检查器调查查询请求和响应以及查询统计信息。此功能类似于面板检查器任务[检查查询性能](v9-panels-panel-inspector.md#v9-panels-query-performance)和[检查查询请求和响应数据](v9-panels-panel-inspector.md#v9-panels-query-request-response)。

## 查询历史记录
<a name="v9-explore-manage-history"></a>

查询历史记录是您在 Explore 中使用的查询列表。历史记录存储在 Grafana 数据库中，不与其他用户共享。历史查询的保留期为两周。超过两周的查询会被自动删除。要打开历史记录并与之交互，请在 Explore 中选择**查询历史记录**按钮。

**注意**  
带星号（收藏）的查询不受两周保留期的限制，也不会被删除。

**查看查询历史记录**

您可以通过“查询历史记录”查看查询历史记录。对于每个单独的查询，您可以：
+ 运行查询。
+ 创建 and/or 编辑评论。
+ 将查询复制到剪贴板。
+ 将包含查询的短链接复制到剪贴板。
+ 为查询加上星号（收藏）。

**管理收藏的查询**

“查询历史记录”选项卡中所有标有星号的查询都会显示在“已加星标”列表中。这让您可以快速访问收藏的查询，且无需从头开始键入，即可重用这些查询。

**对查询历史记录排序**

默认情况下，查询历史记录会显示最新的查询。您可以按日期或数据来源名称以升序或降序对历史记录排序。

**对查询历史记录排序**

1. 选择**查询排序依据**字段。

1. 选择下列选项之一：
   + 最新的优先
   + 最早的优先

**筛选查询历史记录**

您可以在“查询历史记录”和“已加星标”选项卡中将查询历史记录筛选到特定的数据来源。

**将历史记录筛选到数据来源**

1. 选择**筛选特定数据来源查询**字段。

1. 选择要为其筛选历史记录的数据来源。您也可以选择多个数据来源。

在**查询历史记录**选项卡中，还可以使用滑块按日期筛选查询：
+ 使用垂直滑块按日期筛选查询。
+ 拖动顶部手柄调整开始日期。
+ 拖动顶部手柄调整结束日期。

**在查询历史记录中搜索**

您可以在历史记录中跨查询和评论进行搜索 在“查询历史记录”选项卡和“已加星标”选项卡中搜索查询。

**在查询历史记录中搜索**

1. 选择**搜索查询**字段。

1. 在搜索字段中输入您要搜索的术语。

**查询历史记录设置**

您可以在“设置”选项卡中自定义查询历史记录。下表描述了选项。


| 设置 | 默认 值 | 
| --- | --- | 
| 更改默认的活动选项卡 | “查询历史记录”选项卡 | 

**注意**  
查询历史记录设置是全局型的，在拆分模式下应用于两个面板。

## Prometheus 特定的功能
<a name="v9-explore-manage-prometheus"></a>

Explore 提供了适用于 Prometheus 的自定义查询体验。运行查询时，实际上会运行两个查询，一个是针对图形的普通 Prometheus 查询，一个是针对表的*即时查询*。即时查询会返回每个时间序列的最后一个值，简要概括了图形中所示的数据。

**Metrics explorer**

在查询字段的左侧，选择**指标**以打开 Metric Explorer。这将显示一个分层菜单，其中包含按前缀分组的指标。例如，所有 Alertmanager 指标都分组在 `alertmanager` 前缀下。如果您只想了解哪些指标可用，这是一个不错的切入点。

**查询字段**

“查询”字段支持指标名称和函数的自动完成，类似于标准的 Prometheus 查询编辑器。您可以按 Enter 键创建新行，然后按 Shift\$1Enter 键运行查询。

按 Ctrl\$1Space 键可以触发自动完成菜单。自动完成菜单包含一个新的“历史记录”部分，其中列出了最近运行的查询。

查询字段下方可能会显示建议，选择这些建议即可根据建议的更改更新查询。
+ 对于计数器（单调递增指标），建议使用 rate 函数。
+ 对于存储桶，将建议使用直方图函数。
+ 对于记录规则，可将其展开。

**表筛选器**

选择表面板**标签**列中的筛选器按钮，将筛选器添加到查询表达式。您也可以为多个查询添加筛选条件，系统会为所有查询添加筛选条件。

# 登录 Explore
<a name="v9-explore-logs"></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)。

除了指标外，Explore 还允许您调查以下数据来源中的日志：
+ [OpenSearch](using-opensearch-in-AMG.md)
+ [InfluxDB](using-influxdb-in-AMG.md)
+ [Loki](using-loki-in-AMG.md)

在基础设施监控和事件响应期间，您可以深入挖掘指标和日志，找出原因。Explore 还允许您通过查看指标和日志来关联它们。 side-by-side这将创建一个新的调试工作流。

1. 收到警报。

1. 向下钻取和检查指标。

1. 再次向下钻取，并搜索与指标和时间间隔相关的日志（以及将来的分布式跟踪）。

## 日志可视化
<a name="v9-explore-logs-viz"></a>

日志查询的结果在图形中以直方图的形式显示，以下各节将对各个日志进行说明。

如果数据来源支持全范围日志卷直方图，则会自动显示所有输入日志查询的日志分布图。 OpenSearch 和 Loki 数据源目前支持此功能。

**注意**  
在 Loki 中，这种全范围的日志卷直方图通过指标查询来呈现，可能开销较大，具体取决于查询的时间范围。对于较小的 Loki 安装来说，处理这种查询尤其具有挑战性。为了缓解这种情况，我们建议在 Loki 前面使用像 [nginx](https://www.nginx.com/) 这样的代理来为这些查询设置自定义超时（例如 10 秒）。可通过查找带有 HTTP 标头 `X-Query-Tags`（值为 `Source=logvolhist`）的查询来识别日志卷直方图查询；Grafana 会将这些标头添加到所有日志卷直方图查询中。

如果数据来源不支持加载全范围日志卷直方图，则日志模型将根据按自动计算的时间间隔存储的日志行计数来计算时间序列，然后第一个日志行的时间戳会从结果中锚定直方图的开始时间。时间序列的末尾锚定到时间选取器的 **To** 范围。

**日志级别**

对于指定了级别标签的日志，Grafana 会使用标签值来确定日志级别，并相应地更新颜色。如果日志未指定级别标签，则会尝试查明其内容是否与任何受支持的表达式匹配（有关更多信息，请参阅下文）。日志级别始终由第一个匹配项决定。如果 Grafana 无法确定日志级别，则会使用未知的日志级别对其可视化。

**提示**  
如果使用 Loki 数据来源，且 `level` 位于日志行中，请使用解析程序（JSON、logfmt、regex,..）将级别信息提取到用于确定日志级别的级别标签中。这允许直方图在单独的条形图中显示不同的日志级别。

**支持的日志级别以及日志级别缩写和表达式的映射：**


| 支持的表达式 | 日志级别 | 颜色 | 
| --- | --- | --- | 
| emerg | critical | purple | 
| fatal | critical | purple | 
| 警报 | critical | purple | 
| crit | critical | purple | 
| critical | critical | purple | 
| err | error | red | 
| eror | error | red | 
| error | error | red | 
| warn | warning | yellow | 
| warning | warning | yellow | 
| info | info | green | 
| 信息 | info | green | 
| NOTICE | info | green | 
| dbug | debug | blue | 
| debug | debug | blue | 
| trace | trace | light blue | 
| \$1 | unknown | grey | 

## 日志导航
<a name="v9-explore-logs-nav"></a>

可使用日志行旁边的日志导航界面请求更多日志。您可以选择导航底部的**旧日志**按钮完成此操作。当达到行数限制并希望查看更多日志时，可通过此方式获取更多日志。每个请求都作为单独的页面显示在导航中。每个页面都显示传入日志行的起始和结束时间戳。您可以单击要查看的页面来查看之前的结果。Explore 会缓存从日志导航中运行的最后五个请求，因此在单击这些页面时不会重新运行相同的查询。

## 可视化选项
<a name="v9-explore-logs-vis-options"></a>

您可以自定义日志的显示方式，并选择显示哪些列。

**时间**

显示或隐藏时间列。这是与数据来源报告的日志行关联的时间戳。

**唯一标签**

显示或隐藏仅包含非常用标签的唯一标签列。上面显示了所有常用标签。

**换行**

如果希望使用换行显示，请将其设置为 True。如果设置为 False，则会导致水平滚动。

**修饰 JSON**

将其设置为 `true` 可打印所有 JSON 日志。此设置不会影响 JSON 以外的任何格式的日志。

**重复数据删除**

日志数据可能有很多重复，而 Explore 可以隐藏重复的日志行。您可以使用几种不同的重复数据删除算法：
+ **精确**：除日期字段外，对整行进行精确匹配。
+ **数字**：去除持续时间、IP 地址等数字后，在行上匹配。
+ **签名**：最激进的重复数据删除方法，该方法会去除所有字母和数字，匹配剩余的空格和标点符号。

**翻转结果顺序**

您可以将接收日志的顺序从默认降序（最新的优先）改为升序（最早的优先）。

**标签和检测到的字段**

每个日志行都有一个可扩展区域，其中带有标签和检测到的字段，以实现更可靠的交互。对于所有标签，我们添加了筛选（正向筛选）和筛除（反向筛选）选定标签的功能。每个字段或标签还有一个统计图标，以显示与所有显示的日志相关的统计信息。

**转义换行符**

Explore 可自动检测日志行中的一些错误转义序列，如换行符（`\n`、`\r`）或制表符（`\t`）。当检测到此类序列时，Explore 会提供“转义换行符”选项。

Explore 可自动修复检测到的错误转义序列

**自动修复转义序列**

1. 选择**转义换行符**来替换序列。

1. 手动检查替换项以确认其正确性。

Explore 将替换这些序列。替换时，选项将从**转义换行符**变为**删除转义**。评估变更，因为根据接收的输入，解析可能不准确。您可以选择**删除转义**来恢复替换项。

**数据链接**

通过数据链接，您可以将日志消息的任何部分转换为内部或外部链接。创建的链接在**日志详细信息**视图的**链接**部分以按钮的形式显示。

**切换字段可见性**

展开日志行，单击眼睛图标以显示或隐藏字段。

## Loki 特定的功能
<a name="v9-explore-logs-loki"></a>

Loki 是 Grafana Labs 的开源日志聚合系统。Loki 的设计符合成本效益，因为其并不索引日志内容，而是为每个日志流创建一组标签。Loki 的日志查询方式与 Prometheus 中的标签选择器的查询方式类似。该方式使用标签对日志流分组，以便与 Prometheus 标签匹配。有关 Grafana Loki 的更多信息，请查看 [Grafana Loki](https://github.com/grafana/loki) Github。

有关如何查询日志数据的更多信息，请参阅 [Loki](using-loki-in-AMG.md)。

**从指标切换到日志**

如果从 Prometheus 查询切换到日志查询（可以先进行拆分，以并排显示指标和日志），则会保留日志中存在的查询标签，并使用这些标签来查询日志流。例如，如果进行以下 Prometheus 查询：

```
grafana_alerting_active_alerts{job="grafana"}
```

切换到日志数据来源后，将会变为：

```
{job="grafana"}
```

这将返回所选时间范围内可搜索的日志块。

## 日志示例
<a name="v9-explore-logs-sample"></a>

如果所选数据来源实现了日志示例，同时支持日志和指标查询，那么对于指标查询，您将能够自动查看有助于可视化指标的日志行示例。Loki 数据来源目前支持此功能。

**实时跟踪**

使用实时跟踪功能查看受支持数据来源的实时日志。

选择 Explore 工具栏中的**实时**按钮以切换到实时跟踪视图。

在实时跟踪视图中，新日志将出现在屏幕底部，并具有渐变的对比背景，以便您跟踪新增内容。选择**暂停**按钮或滚动日志视图可暂停实时跟踪，不间断地浏览之前的日志。选择**恢复**按钮以恢复实时跟踪，或选择**停止**按钮以退出实时跟踪并返回标准 Explore 视图。

# Explore 中的跟踪
<a name="v9-explore-tracing"></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)。

您可以通过 Explore 可视化来自数据来源的跟踪。

支持以下数据来源。
+ [Jaeger](jaeger-data-source.md)
+ [Tempo](tempo-data-source.md)
+ [AWS X-Ray](x-ray-data-source.md)
+ [Zipkin](zipkin-data-source.md)

有关如何为上述数据来源配置查询的信息，请参阅特定数据来源的文档。

## 跟踪视图说明
<a name="v9-explore-trace-view"></a>

本节介绍了跟踪视图控制面板的元素。

**标题**

跟踪视图的标题包含以下元素
+ 标题：显示根跨度的名称和跟踪 ID。
+ 搜索：突出显示包含搜索文本的跨度。
+ 元数据：关于跟踪的各种元数据。

**缩微贴图**

显示精简视图或跟踪时间线。将鼠标指针拖到锁位贴图上方可缩小时间范围。缩放还会更新主时间线，所以容易看到较短的时间跨度。将鼠标悬停在缩微贴图上，缩放时将显示重置选择按钮，以重置缩放。

**时间表**

显示跟踪中的跨度列表。每个跨度行由以下组件组成：
+ 展开子按钮：展开或折叠所选跨度的所有子跨度。
+ 服务名称：记录跨度的服务名称。
+ 操作名称：跨度代表的操作名称。
+ 跨度持续时间条：跟踪中操作持续时间的直观表示。

**跨度详细信息**

单击跨度行上的任意位置可显示跨度详细信息，包括以下内容。
+ 操作名称
+ 跨度元数据
+ 标签：与此跨度关联的任何标签。
+ 流程元数据：记录此跨度的进程的元数据。
+ 日志：此跨度记录的日志列表和相关键值。如果是 Zipkin，则日志部分显示 Zipkin 注释。

**节点图**

您可以选择展开显示的跟踪的节点图。根据数据来源的不同，可以将跟踪的跨度显示为图中的节点，也可以添加一些额外的上下文，包括基于当前跟踪的服务图。

**日志跟踪**

您可以从跟踪视图中的跨度直接导航到与该跨度相关的日志。这适用于 Tempo、Jaeger 和 Zipkin 数据来源。有关如何配置每个数据来源的说明，请参阅相关文档。

单击文档图标，在 Explore 中打开一个包含已配置数据来源的拆分视图，并查询该跨度的相关日志。

## 服务图视图
<a name="v9-explore-trace-graph"></a>

服务图视图能够可视化跨度指标（速率、错误率和持续时间（RED）的跟踪数据）和服务图。设置要求后，此预配置的视图将立即可用。

有关更多信息，请参阅 [Tempo](tempo-data-source.md) 数据来源页面。您还可以在 *Tempo 文档*中查看[服务图视图页面](https://grafana.com/docs/tempo/latest/metrics-generator/service-graph-view/)。

# Explore 中的检查器
<a name="v9-explore-inspector"></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)。

检查器有助于您了解查询并进行问题排查。您可以检查原始数据，将该数据导出到逗号分隔值（CSV）文件，以 TXT 格式导出日志结果，并查看查询请求。

## 检查器 UI
<a name="v9-explore-inspector-ui"></a>

检查器包含以下选项卡：
+ **统计选项卡**：显示查询花费的时间和返回的数量。
+ **查询选项卡**：显示 Grafana 查询数据来源时向服务器发送的请求。
+ **JSON 选项卡**：允许查看和复制数据 JSON 和数据帧结构 JSON。
+ **数据选项卡**：显示查询返回的原始数据。
+ **错误选项卡**：显示错误。仅在查询返回错误时可见。

## 检查器任务
<a name="v9-explore-inspector-tasks"></a>

您可以在 Explore 检查器中执行各种任务。

**打开检查器**

运行要检查的查询后，选择**检查器**按钮。

检查器面板在屏幕底部打开。

*检查原始查询结果*

您可以在表中查看原始查询结果，即查询返回的数据。

在**检查器**选项卡中，单击**数据**选项卡。

对于多个查询或多个节点的查询，还提供了其他选项。
+ **显示数据帧**：选择要查看的结果集数据。
+ **按时间连接的序列**：一次查看所有查询的原始数据，每列一个结果集。您可以单击列标题对数据进行排序。

**以 CSV 格式下载原始查询结果**

查看原始查询结果后，可以生成结果的 CSV 文件。您将得到一个 CSV 文件，其中包含您看到的结果，因此在生成 CSV 文件之前，请务必优化结果，以获得所需的结果。

要生成 CSV 文件，请在**检查器**选项卡中选择**下载 CSV**。

要下载专门针对 Excel 格式化的 CSV 文件，请展开**数据选项**，打开**下载 Excel** 开关，然后再选择**下载 CSV **选项。

*以 TXT 格式下载日志结果*

在**检查器**选项卡中选择**下载日志**，生成当前正在查看的日志的 TXT 文件。

**下载跟踪结果**

根据数据来源类型，Grafana 可以采用其中一种支持格式对跟踪结果生成 JSON 文件：Jaeger、Zipkin 或 OTLP 格式。

要下载跟踪，请在**检查器**选项卡上选择**下载跟踪**。

**检查查询性能**

**统计**选项卡显示统计数据，告诉您查询需要多长时间、发送的查询数量以及返回的行数。此信息有助于您对查询进行问题排查，尤其是在任何数字意外偏高或偏低时。

统计数据为只读。

**查看 JSON 模型**

您可以浏览和导出数据以及数据帧 JSON 模型。

**查看 JSON 模型**

1. 在检查器面板中，单击 **JSON** 选项卡。

1. 在**选择来源**下拉列表中，选择以下选项之一：
   + **数据**：显示一个 JSON 对象，该对象表示返回到 Explore 的数据。
   + **DataFrame 结构**-显示原始结果集。

1. 您可以展开或折叠 JSON 的某些部分以查看不同的部分。您也可以选择**复制到剪贴板**选项，来复制 JSON 正文并将其粘贴到其他应用程序中。

**查看对数据来源的原始请求和响应**

在使用 Explore 和检查器选项卡时，您可以查看通过查询生成的原始请求和响应数据。在检查器中，选择**查询**选项卡，然后选择**刷新**以查看原始数据。

Grafana 将查询发送到服务器并显示结果。您可以向下钻取查询的特定部分，展开或折叠所有部分，或者将数据复制到剪贴板以在其他应用程序中使用。

# Grafana 9 版本中的警报
<a name="v9-alerts"></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 Alerting 可为您提供强大且可操作的警报，帮助您在系统出现问题后立即了解情况，最大限度地减少服务中断。

Amazon Managed Grafana 允许访问更新的警报系统 *Grafana Alerting*，该系统将警报信息集中在一个可搜索的视图中。包括以下功能：
+ 在集中视图中创建和管理 Grafana 警报。
+ 通过单一界面创建和管理 Cortex 和 Loki 管理的警报。
+ 查看来自 Prometheus、Amazon Managed Service for Prometheus 和其他 Alertmanager 兼容数据来源的警报信息。

创建 Amazon Managed Grafana 工作区时，您可以选择使用 Grafana Alerting 或 [经典控制面板警报](old-alerts-overview.md)。本节介绍了 Grafana Alerting。

**注意**  
如果您创建的工作区启用了经典警报，并希望切换到 Grafana Alerting，您可以[在两个警报系统之间切换](v9-alerting-use-grafana-alerts.md)。

## Grafana Alerting 限制
<a name="v9-alert-limitations"></a>
+ Grafana Alerting 系统可以从所有可用的 Amazon Managed Service for Prometheus、Prometheus、Loki 和 Alertmanager 数据来源中检索规则。但可能无法从其他受支持的数据来源获取规则。
+ 在 Grafana（而不是 Prometheus）中定义的警报规则会向您的联系点发送多条通知。如果您使用的是原生 Grafana 警报，建议您继续使用经典控制面板警报，不要启用新的 Grafana Alerting 功能。如果您想查看 Prometheus 数据来源中定义的警报，那么建议您启用 Grafana Alerting，该功能只会针对在 Prometheus Alertmanager 中创建的警报发送一条通知。
**注意**  
在支持 Grafana v10.4 及更高版本的 Amazon Managed Grafana 工作区中，此限制不再适用。

**Topics**
+ [Grafana Alerting 限制](#v9-alert-limitations)
+ [概述](v9-alerting-overview.md)
+ [探索警报](v9-alerting-explore.md)
+ [设置警报](v9-alerting-setup.md)
+ [将经典控制面板警报迁移到 Grafana Alerting](v9-alerting-use-grafana-alerts.md)
+ [管理警报规则](v9-alerting-managerules.md)
+ [管理警报通知](v9-alerting-managenotifications.md)

# 概述
<a name="v9-alerting-overview"></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 Alerting 的工作原理，并介绍了一些关键概念，这些概念共同构成了灵活而强大的警报引擎的核心。

1. **数据来源**

   连接到警报使用的数据。这些数据通常是用于警报的时间序列数据，并显示要监控和分析的系统的详细信息。有关更多信息，请参阅[数据来源](AMG-data-sources-builtin.md)。

1. **警报规则**

   设置评估标准，以确定是否触发警报实例。警报规则包含一个或多个用于从数据来源提取数据的查询和表达式、描述警报需求的条件、评估频率以及（可选）触发警报必须满足条件的持续时间。

   Grafana 管理的警报支持多维警报，这意味着每个警报规则可以创建多个警报实例。如果您在单个表达式中观察到多个序列，这将非常有用。

1. **标签**

   将警报规则及其实例与通知策略和静默匹配。还可用于按严重程度对警报分组。

1. **通知策略**

   设置警报的发送位置、时间和方式，以便在警报触发时通知您的团队。每个通知策略都指定了一组标签匹配程序，指示其负责哪些警报。通知策略分配有联系点，该联系点由一个或多个通知程序组成。

1. **联系点**

   定义触发警报时如何通知您的联系人。我们支持多种 ChatOps 工具，以确保您的团队收到警报。

## 功能
<a name="v9-alerting-features"></a>

**单页显示所有警报**

单个 Grafana Alerting 页面将 Grafana 管理的警报和驻留在兼容 Prometheus 的数据来源中的警报整合到一个位置。

**多维警报**

警报规则可为每个警报规则创建多个单独的警报实例（称为多维警报），让您只需发出一个警报，就能获得对整个系统的可见性。

**路由警报**

根据您定义的标签，将每个警报实例路由到特定的联系点。通知策略是一组规则，规定了在何处、何时以及如何将警报分组并路由到联系点。

**静默警报**

您可以通过静默停止接收来自一个或多个警报规则的持续通知。您也可以根据特定标准部分暂停警报。静默有自己的专用部分，以便更好地整理和查看，让您可以扫描暂停的警报规则，而不会使主警报视图混乱。

**静音定时**

通过静音计时，您可以指定不希望生成或发送新通知的时间间隔。您也可以在周期性时间段（如维护时间段）冻结警报通知。

# 探索警报
<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 Alerting，都可以了解关键概念和可用功能的更多信息，这些关键概念和可用功能可帮助您创建、管理和响应警报，并提高团队快速解决问题的能力。

首先，我们来看看 Grafana Alerting 提供的不同警报规则类型。

## 警报规则类型
<a name="v9-alerting-explore-rule-types"></a>

**Grafana 管理的警报**

Grafana 管理的规则是最灵活的警报规则类型。通过这些规则，您可以创建警报，而这些警报可以作用于我们支持的任何数据来源中的数据。除了支持多个数据来源，您还可以添加表达式来转换数据和设置警报条件。这是唯一允许在单个规则定义中从多个数据来源发出警报的规则类型。

**Mimir 和 Loki 规则**

要创建 Mimir 或 Loki 警报，您必须拥有兼容的 Prometheus 或 Loki 数据来源。您可以通过测试数据来源并观察是否支持 Ruler API 来检查您的数据来源是否支持通过 Grafana 创建规则。

**记录规则**

记录规则仅适用于兼容的 Prometheus 或 Loki 数据来源。记录规则让您可以预先计算经常需要或计算开销较大的表达式，将其结果另存为一组新的时间序列。如果要对聚合数据运行警报，或者如果您的控制面板重复查询计算开销较大的表达式，此功能将非常有用。

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

下表列出了关键概念、功能及其定义，旨在帮助您充分利用 Grafana Alerting。


| 关键概念或功能 | 定义 | 
| --- | --- | 
|  警报的数据来源  |  选择数据来源，从中查询指标、日志和跟踪，并以可视化方式展示。  | 
|  警报预置  |  管理您的警报资源，并使用文件预置或 Terraform 将其预置到 Grafana 系统。  | 
|  Alertmanager  |  管理警报实例的路由和分组。  | 
|  警报规则  |  用于确定警报规则何时触发的一组评估标准。警报规则包含一个或多个查询和表达式、一个条件、评估频率，以及满足条件的持续时间。一条警报规则可以生成多个警报实例。  | 
|  警报实例  |  警报实例是警报规则的实例。单维警报规则有一个警报实例。多维警报规则有一个或多个警报实例。与多个结果匹配的单个警报规则（例如 CPU 对 10 VMs）被视为多个（在本例中为 10）警报实例。这个数字可能会随时间变化。例如，监控系统 VMs 中所有人 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 Alerting 兼容。每个数据来源都由一个插件支持。您可以使用下面列出的内置数据来源之一。

这些都是与 Amazon Managed Grafana 兼容并受其支持的数据来源。
+ [连接到 AlertManager 数据来源](data-source-alertmanager.md)
+ [Connect 连接到亚马逊 CloudWatch 数据源](using-amazon-cloudwatch-in-AMG.md)
+ [Connect 连接到亚马逊 OpenSearch 服务数据源](using-Amazon-OpenSearch-in-AMG.md)
+ [Connect 连接到 AWS IoT SiteWise 数据源](using-iotsitewise-in-AMG.md)
+ [Connect 连接到 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)
+ [Connect 连接到 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 数据来源。您可以通过测试数据来源，并检查是否支持 Ruler 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)。

您可以使用 Grafana 管理的规则文件夹以及 Mimir、Loki 或 Prometheus 规则和组名称的命名空间来整理警报。

**命名空间**

创建 Grafana 管理的规则时，可使用文件夹执行访问控制，并授予或拒绝对特定文件夹内所有规则的访问权限。

**组**

组中的所有规则按相同的**时间间隔**进行评估。

组中的警报规则和记录规则将始终**按顺序**进行评估，这意味着不会同时按出现的顺序评估任何规则。

**提示**  
如果您希望按不同的时间间隔同时评估规则，请考虑将其存储在不同的组中。

# 通知模板化
<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" . }}
```

您可以使用以下内置模板选项嵌入自定义模板。


| Name | 注意 | 
| --- | --- | 
|  `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（日志）、Azure Monitor（Azure Resource Graph）和 Azure Data Explorer。

如果满足以下条件，则使用 Grafana 管理的警报或 SSE 的查询在这些数据来源中会被视为数值查询：
+ 在数据来源查询中，“格式为”选项设置为“表”。
+ 从查询返回给 Grafana 的表响应仅包含一个数值（例如 int、double、float）列和可选的附加字符串列。

如果存在字符串列，这些列将成为标签。列的名称将成为标签名称，每行的值将成为相应标签的值。如果返回多行，则每行都应通过其标签进行唯一标识。

**示例**

对于名为 “DiskSpace” 的 MySQL 表：


| 时间 | Host | 磁盘 | PercentFree | 
| --- | --- | --- | --- | 
|  2021-June-7  |  web1  |  /etc  |  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 返回以下表响应：


| Host | 磁盘 | PercentFree | 
| --- | --- | --- | 
|  web1  |  /etc  |  3  | 
|  web2  |  /var  |  4  | 
|  web3  |  /var  |  0  | 

如果在警报规则中将此查询用作**条件**，则对值为非零的情况发出警报。因此，将生成三个警报实例：


| 标签 | Status | 
| --- | --- | 
|  \$1Host=web1,disk=/etc\$1  |  警报  | 
|  \$1Host=web2,disk=/var\$1  |  警报  | 
|  \$1Host=web3,disk=/var\$1  |  Normal  | 

# 标签和注释
<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)查找。

在模板中使用自定义标签时，请务必确保标签值在警报规则的连续评估之间不会发生变化，因为这最终会创建大量不同的警报。但是，模板可以为不同的警报生成不同的标签值。例如，不要将查询的值放在自定义标签中，因为这最终会在每次值更改时创建一组新的警报。改为使用注释。

此外，请务必确保警报的标签集没有两个或多个同名标签。如果自定义标签与数据来源中的标签同名，则会替换该标签。但如果自定义标签与保留标签同名，则该自定义标签将从警报中省略。

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

注释是为现有警报添加其他信息的命名对。Grafana 中有许多建议的注释，例如 `description`、`summary`、`runbook_url`、`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 个不同的部分组成：**标签**、**值**和**运算符**。
+ **标签**字段是要匹配的标签名称。必须与标签名称完全匹配。
+ **值**字段与指定**标签**名称的相应值匹配。匹配方式取决于**运算符**值。
+ **运算符**字段是与标签值匹配的运算符。可用的运算符有：


| 运算符 | 说明 | 
| --- | --- | 
|  `=`  |  选择与该值完全相等的标签。  | 
|  `!=`  |  选择与该值不相等的标签。  | 
|  `=~`  |  选择与该值正则表达式匹配的标签。  | 
|  `!~`  |  选择不与该值正则表达式匹配的标签。  | 

如果您使用多个标签匹配程序，则使用 AND 逻辑运算符将其组合在一起。这意味着所有匹配程序都必须匹配，才能将规关联到策略。

**示例方案**

如果为警报定义了一组标签：

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

那么：
+ 定义为 `foo=bar` 的标签匹配程序与此警报规则匹配。
+ 定义为 `foo!=bar` 的标签匹配程序*不*与此警报规则匹配。
+ 定义为 `id=~[0-9]+` 的标签匹配程序与此警报规则匹配。
+ 定义为 `baz!~[0-9]+` 的标签匹配程序与此警报规则匹配。
+ 定义为 `foo=bar` 和 `id=~[0-9]+` 的两个标签匹配程序与此警报规则匹配。

# Grafana Alerting 中的标签
<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 保留标签除外，更多信息见下文）。

**外部 Alertmanager 兼容性**

Grafana 的内置 Alertmanager 支持 Unicode 标签键和值。如果您使用的是外部 Prometheus Alertmanager，则标签键必须与其[数据模型](https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels)兼容。这意味着标签键只能包含 **ASCII 字母**、**数字**和**下划线**，并与正则表达式 `[a-zA-Z_][a-zA-Z0-9_]*` 匹配。任何无效字符都将被 Grafana Alerting 引擎移除或替换，然后根据以下规则发送到外部 Alertmanager：
+ `Whitespace` 将被移除。
+ `ASCII characters` 将替换为 `_`。
+ `All other characters` 将替换为小写的十六进制表示形式。如果是第一个字符，则带有前缀 `_`。

**注意**  
如果将多个标签键清理为相同的值，则重复项将附加原始标签的短哈希作为后缀。

**Grafana 保留标签**

**注意**  
Grafana 保留带有前缀 `grafana_` 的标签，用于特殊用途。如果添加以 `grafana_` 开头的手动配置标签，在发生冲突的情况下，该标签将被覆盖。

Grafana 保留标签的使用方式与手动配置的标签相同。当前可用的保留标签列表：


| 标签 | 说明 | 
| --- | --- | 
|  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` 变量，包括警报的标签和值。即使警报不使用 Prometheus 数据来源，您也可以在 Grafana 中使用相同的变量。如果您以前没有使用过 Prometheus，请不要担心，因为本页的其余部分将介绍这些变量以及如何对其模板化。

## Go 的模板语言
<a name="v9-alerting-explore-labels-templating-go"></a>

标签和注释的模板是用 Go 的模板语言 [text/template](https://pkg.go.dev/text/template) 编写的。

**开始和结束标签**

在 text/template 中，模板以 `{{` 开头，以 `}}` 结尾，无论模板是打印变量还是运行 if 语句等控制结构。这与 Jinja 等其他模板语言不同，在 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
```

这是因为模板尝试使用 `$labels.instance` 中不存在的字段（名为 `name`）。您应该改用 `index` 函数，该函数会在 `$labels` 变量中打印标签 `instance.name`：

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

**值变量**

`$value` 变量的工作原理与 Prometheus 不同。在 Prometheus 中，`$value` 是一个包含表达式值的浮点数，但在 Grafana 中，却是一个字符串，包含该警报规则的所有阈值、Reduce 和 Math 表达式以及经典条件的标签和值。但不包含查询的结果，因为这些查询可以返回 10 到 10000 行或指标。

如果您要在警报摘要中使用 `$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 标识，该 ReFID 标识警报规则中的每个查询和表达式。同样，`labels={service=api}` 是指标签，`value=6.789` 是指值。

您可能已经注意到没有 RefID A。这是因为在大多数警报规则中，RefID A 指的是查询，而由于查询可以返回许多行或时间序列，因此并不包含在 `$value` 规则中。

**值变量**

如果 `$value` 变量包含的信息超出了您的需求，则可以使用 `$values` 打印单个表达式的标签和值。不同于 `$value`，`$values` 变量是一个对象表，包含每个表达式的标签和浮点值，按其 RefID 索引。

如果要在警报摘要中打印带有 RefID `B` 的表达式值：

```
{{ $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 的浮点值，必须使用 `$values.B` 中的 `Value` 字段。如果要对警报摘要中的浮点值进行人性化处理：

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

**无数据、运行时错误和超时**

如果警报规则中的查询未返回任何数据，或者由于数据来源错误或超时而失败，则使用该查询的任何阈值、Reduce 或 Math 表达式也将不返回任何数据或错误。当这种情况发生时，这些表达式将缺失 `$values`。最好在使用 RefID 之前检查 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>

如果规则使用经典条件而不是阈值、Reduce 和 Math 表达式，则 `$values` 变量将由 Ref ID 和条件在经典条件中的位置进行索引。例如，如果您有一个带有 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` 函数返回 ini 文件中配置的 Grafana 服务器的外部 URL。

**示例**

```
{{ externalURL }}
```

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

**graphLink**

`graphLink` 函数返回给定表达式和数据来源在 [Grafana 9 中的 Explore](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` 函数对十进制数字进行人性化处理。

**示例**

```
{{ 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` 函数将文本与正则表达式模式进行匹配。

**示例**

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

```
true
```

**pathPrefix**

`pathPrefix` 函数返回 ini 文件中配置的 Grafana 服务器的路径。

**示例**

```
{{ pathPrefix }}
```

```
/grafana
```

**tableLink**

`tableLink` 函数返回给定表达式和数据来源在 [Grafana 9 中的 Explore](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)。

警报规则的状态和运行状况可帮助您了解有关警报的几个关键状态指标。

有三个关键组件：*警报规则状态*、*警报实例状态*和*警报规则运行状况*。尽管相关，但每个组件传达的信息略有不同。

**警报规则状态**

警报规则可能处于以下任何状态：


| 州 | 说明 | 
| --- | --- | 
|  Normal  |  评估引擎返回的时间序列均未处于 `Pending` 或 `Firing` 状态。  | 
|  待定  |  评估引擎返回的时间序列中至少有一个处于 `Pending` 状态。  | 
|  触发  |  评估引擎返回的时间序列中至少有一个处于 `Firing` 状态。  | 

**注意**  
警报先过渡到 `pending`，然后过渡到 `firing`，因此至少需要两个评估周期才会触发警报。

**警报实例状态**

警报实例可能处于以下任何状态：


| 州 | 说明 | 
| --- | --- | 
|  Normal  |  警报的状态既不是触发也不是待处理，一切正常。  | 
|  待定  |  警报处于活动状态的时间少于配置的阈值持续时间。  | 
|  警报  |  警报处于活动状态的时间超过配置的阈值持续时间。  | 
|  NoData  |  在配置的时间窗口内未收到任何数据。  | 
|  错误  |  尝试评估警报规则时发生的错误。  | 

**警报规则运行状况**

警报规则可能具有以下运行状况之一：


| 州 | 说明 | 
| --- | --- | 
|  确定  |  评估警报规则时无错误。  | 
|  错误  |  在评估警报规则时发生错误。  | 
|  NoData  |  规则评估期间返回的至少一个时间序列中没有数据。  | 

**`NoData` 和 `Error` 的特殊警报**

当警报规则的评估产生 `NoData` 或 `Error` 状态时，Grafana Alerting 将生成具有以下附加标签的特殊警报：


| 标签 | 说明 | 
| --- | --- | 
|  alertname  |  `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 以及外部 Alertmanager 配置联系点。

您还可以使用通知模板来自定义联系点类型的通知消息。

**支持的联系点类型**

下表列出了 Grafana 支持的联系点类型。


| Name | Type | 
| --- | --- | 
|  Amazon SNS  |  `sns`  | 
|  OpsGenie  |  `opsgenie`  | 
|  Pager Duty  |  `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 使用 Alertmanager 发送触发和已解决警报的通知。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 发送通知。联系点可以是多个相同类型的集成，也可以是不同类型集成的组合。例如，联系点可以包含一个 Pager Duty 集成；一个 Pager SNS 和 Slack 集成；或一个 Pager Duty 集成、一个 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>

您可以使用静默将来自一个或多个触发规则的通知静音。静默不会阻止警报触发或解决，也不会在用户界面中隐藏触发警报。静默持续的时间取决于其持续时间，可按分钟、小时、天、月或年配置。

# 设置警报
<a name="v9-alerting-setup"></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**
+ [添加外部 Alertmanager](v9-alerting-setup-alertmanager.md)
+ [预置 Grafana Alerting 资源](v9-alerting-setup-provision.md)

# 添加外部 Alertmanager
<a name="v9-alerting-setup-alertmanager"></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 作为单一 Alertmanager 接收所有警报。然后，可以在 Grafana 中配置和管理此外部 Alertmanager。

添加 Alertmanager 后，您可以使用 Grafana Alerting UI 来管理静默、联系点和通知策略。通过这些页面中的下拉选项，您可以在不同的 Alertmanager 之间切换。

**注意**  
从 Grafana 9.2 开始，不推荐使用“警报”页面上“管理”选项卡中外部 Alertmanager 的 URL 配置。这将在未来版本中删除。

现在，应使用 Grafana 主导航菜单中的 Grafana 配置将外部 Alertmanager 配置为数据来源。这使您能够从 Grafana 中管理外部 Alertmanager 的联系点和通知策略，还可以加密以前通过 URL 配置外部 Alertmanager 时可见的 HTTP 基本身份验证凭证。

要添加外部 Alertmanager，请完成以下步骤。

1. 单击“配置”，然后单击“数据来源”。

1. 搜索 Alertmanager。

1. 根据需要，选择实现并填写页面上的字段。

   如果要预置数据来源，请将 `jsonData` 字段中的标志 `handleGrafanaManagedAlerts` 中设置为 `true`，以将 Grafana 管理的警报发送到此 Alertmanager。
**注意**  
支持 Prometheus、Grafana Mimir 和 Cortex 实现 Alertmanager。对于 Prometheus，Grafana Alerting UI 中的联系点和通知策略为只读。

1. 单击“保存并测试”。

# 预置 Grafana Alerting 资源
<a name="v9-alerting-setup-provision"></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 Alerting 预置使您能够以最适合贵组织的方式创建、管理和维护警报数据，从而简化此过程。

有两个选项可供选择：

1. 使用 Alerting Provisioning HTTP API 预置警报资源。
**注意**  
通常，您无法从 Grafana UI 编辑 API 预置的警报规则。  
要启用编辑功能，请在 API 中创建或编辑警报规则时将 x-disable-provenance标题添加到以下请求中：  

   ```
   POST /api/v1/provisioning/alert-rules
   PUT /api/v1/provisioning/alert-rules/{UID}
   ```

1. 使用 Terraform 预置警报资源。

**注意**  
目前，Grafana Alerting 的预置支持警报规则、联系点、静音定时和模板。使用文件预置或 Terraform 的预置警报资源只能在创建这些资源的来源中编辑，而不能从 Grafana 或任何其他来源中编辑。例如，如果您使用磁盘中的文件预置警报资源，则无法在 Terraform 或 Grafana 中编辑数据。

**Topics**
+ [使用 Terraform 创建和管理警报资源](v9-alerting-setup-provision-terraform.md)
+ [在 Grafana 中查看预置的警报资源](v9-alerting-setup-provision-view.md)

# 使用 Terraform 创建和管理警报资源
<a name="v9-alerting-setup-provision-terraform"></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)。

使用 Terraform 的 Grafana 提供程序管理警报资源并将其配置到 Grafana 系统。Terraform 提供程序对 Grafana Alerting 的支持使创建、管理和维护整个 Grafana Alerting 堆栈即代码变得更容易。

有关使用 Terraform 管理警报资源的更多信息，请参阅 Terraform 文档中的 [Grafana 提供程序](https://registry.terraform.io/providers/grafana/grafana/latest/docs)文档。

完成以下任务，使用 Terraform 创建和管理警报资源。

1. 创建 API 密钥以进行预置。

1. 配置 Terraform 提供程序。

1. 在 Terraform 中定义警报资源。

1. 运行 `terraform apply` 以预置警报资源。

## 先决条件
<a name="v9-alerting-setup-provision-tf-prerequisites"></a>
+ 确保你有 grafana/grafana [Terraform 提供商 1.27.0](https://registry.terraform.io/providers/grafana/grafana/1.28.0) 或更高版本。
+ 确保您使用的是 Grafana 9.1 或更高版本。如果您使用 Grafana 9 版本创建了 Amazon Managed Grafana 实例，则这种情况是正确的。

## 创建 API 密钥以进行预置
<a name="v9-alerting-setup-provision-tf-apikey"></a>

您可以[创建普通的 Grafana API 密钥](Using-Grafana-APIs.md)，使用 Grafana 对 Terraform 进行身份验证。大多数使用 API 密钥的现有工具都应自动支持新的 Grafana Alerting。有关创建用于 Terraform 的密钥的具体信息，请参阅[使用 Terraform 实现 Amazon Managed Grafana 自动化](https://aws-observability.github.io/observability-best-practices/recipes/recipes/amg-automation-tf/)。

**创建 API 密钥以进行预置**

1. 为 CI 管道创建一个新的服务账户。

1. 分配角色“访问警报规则 Provisioning API”。

1. 创建新的服务账户令牌。

1. 命名并保存令牌以在 Terraform 中使用。

或者，您可以使用基本身份验证。要查看所有支持的身份验证格式，请参阅 Terraform 文档中的 [Grafana 身份验证](https://registry.terraform.io/providers/grafana/grafana/latest/docs#authentication)。

## 配置 Terraform 提供程序
<a name="v9-alerting-setup-provision-tf-configure"></a>

Grafana Alerting 支持包含在 [Grafana Terraform 提供程序](https://registry.terraform.io/providers/grafana/grafana/latest/docs)中。

下面是一个可用于配置 Terraform 提供程序的示例。

```
terraform {
    required_providers {
        grafana = {
            source = "grafana/grafana"
            version = ">= 1.28.2"
        }
    }
}

provider "grafana" {
    url = <YOUR_GRAFANA_URL>
    auth = <YOUR_GRAFANA_API_KEY>
}
```

## 预置联系点和模板
<a name="v9-alerting-setup-provision-tf-contacts"></a>

联系点将警报堆栈与外部连接起来。这些联系点通知 Grafana 如何连接到外部系统，以及向何处发送通知。有超过 15 种不同的[集成](https://registry.terraform.io/providers/grafana/grafana/latest/docs/resources/contact_point#optional)可供选择。此示例使用了 Slack 联系点。

**预置联系点和模板**

1. 将此代码块复制到本地计算机上的 .tf 文件中。*<slack-webhook-url>*替换为你的 Slack webhook 网址（或其他联系人）

   此示例创建一个联系点，用于向 Slack 发送警报通知。

   ```
   resource "grafana_contact_point" "my_slack_contact_point" {
       name = "Send to My Slack Channel"
   
       slack {
           url = <slack-webhook-url>
           text = <<EOT
   {{ len .Alerts.Firing }} alerts are firing!
   
   Alert summaries:
   {{ range .Alerts.Firing }}
   {{ template "Alert Instance Template" . }}
   {{ end }}
   EOT
       }
   }
   ```

1. 在文本字段中输入通知文本。

   `text` 字段支持 [Go 样式的模板](https://pkg.go.dev/text/template)。这让您可以直接在 Terraform 中管理 Grafana Alerting 通知模板。

1. 运行 `terraform apply` 命令。

1. 转到 Grafana UI，查看联系点的详细信息。

   您无法从 UI 编辑通过 Terraform 预置的资源。这样可确保警报堆栈始终与代码保持同步。

1. 单击**测试**以验证联系点是否正常工作。

**注意**  
您可以在多个联系点重复使用相同的模板。在上面的示例中，使用语句 `{{ template "Alert Instance Template" . }}` 嵌入了共享模板。  
然后，可以在 Terraform 中单独管理此片段：  

```
resource "grafana_message_template" "my_alert_template" {
    name = "Alert Instance Template"

    template = <<EOT
{{ define "Alert Instance Template" }}
Firing: {{ .Labels.alertname }}
Silence: {{ .SilenceURL }}
{{ end }}
EOT
}
```

## 预置通知策略和路由
<a name="v9-alerting-setup-provision-tf-notifications"></a>

通知策略会通知 Grafana 如何路由警报实例，而不是路由到何处。这些策略使用标签和匹配器系统将触发警报连接到您之前定义的联系点。

**预置通知策略和路由**

1. 将此代码块复制到本地计算机上的 .tf 文件中。

   在此示例中，警报按 `alertname` 分组，这意味着来自同名警报的所有通知都将分组到同一条 Slack 消息中。

   如果要以不同的方式路由特定通知，可以添加子策略。子策略允许您根据标签匹配将路由应用于不同的警报。在此示例中，我们对标签为 a=b 的所有警报应用了静音定时。

   ```
   resource "grafana_notification_policy" "my_policy" {
       group_by = ["alertname"]
       contact_point = grafana_contact_point.my_slack_contact_point.name
   
       group_wait = "45s"
       group_interval = "6m"
       repeat_interval = "3h"
   
       policy {
           matcher {
               label = "a"
               match = "="
               value = "b"
           }
           group_by = ["..."]
           contact_point = grafana_contact_point.a_different_contact_point.name
           mute_timings = [grafana_mute_timing.my_mute_timing.name]
   
           policy {
               matcher {
                   label = "sublabel"
                   match = "="
                   value = "subvalue"
               }
               contact_point = grafana_contact_point.a_third_contact_point.name
               group_by = ["..."]
           }
       }
   }
   ```

1. 在 mute\$1timings 字段中，将静音定时与您的通知策略关联。

1. 运行 `terraform apply` 命令。

1. 转到 Grafana UI，查看通知策略的详细信息。
**注意**  
您无法从 UI 编辑通过 Terraform 预置的资源。这样可确保警报堆栈始终与代码保持同步。

1. 单击**测试**以验证通知点是否正常工作。

## 预置静音定时
<a name="v9-alerting-setup-provision-tf-mutetiming"></a>

静音定时允许在定义的时间段内将警报通知静音。

**预置静音定时**

1. 将此代码块复制到本地计算机上的 .tf 文件中。

   在此示例中，警报通知在周末处于静音状态。

   ```
   resource "grafana_mute_timing" "my_mute_timing" {
       name = "My Mute Timing"
   
       intervals {
           times {
             start = "04:56"
             end = "14:17"
           }
           weekdays = ["saturday", "sunday", "tuesday:thursday"]
           months = ["january:march", "12"]
           years = ["2025:2027"]
       }
   }
   ```

1. 运行 `terraform apply` 命令。

1. 转到 Grafana UI，查看静音定时的详细信息。

1. 使用 `mute_timings` 字段在通知策略中引用新创建的静音定时。这会将静音定时应用于部分或全部通知。
**注意**  
您无法从 UI 编辑通过 Terraform 预置的资源。这样可确保警报堆栈始终与代码保持同步。

1. 单击**测试**以验证静音定时是否正常工作。

## 预置警报规则
<a name="v9-alerting-setup-provision-tf-rules"></a>

[警报规则](v9-alerting-managerules.md)让您可以针对任何 Grafana 数据来源发出警报。这可以是您预置的数据来源，也可以在 Terraform 中与警报规则一起[定义数据来源](https://registry.terraform.io/providers/grafana/grafana/latest/docs/resources/data_source)。

**预置警报规则**

1. 创建要查询的数据来源和要存储规则的文件夹。

   在此示例中，使用 [配置用于测试 TestData 的数据源](testdata-data-source.md) 数据来源。

   您可以针对 Grafana 中的任何后端数据源定义警报。

   ```
   resource "grafana_data_source" "testdata_datasource" {
       name = "TestData"
       type = "testdata"
   }
   
   resource "grafana_folder" "rule_folder" {
       title = "My Rule Folder"
   }
   ```

1. 定义警报规则。

   有关警报规则的更多信息，请参阅[如何创建 Grafana 管理的警报](https://grafana.com/blog/2022/08/01/grafana-alerting-video-how-to-create-alerts-in-grafana-9/)。

1. 创建包含一条或多条规则的规则组。

   在此示例中，使用 `grafana_rule_group` 资源组。

   ```
   resource "grafana_rule_group" "my_rule_group" {
       name = "My Alert Rules"
       folder_uid = grafana_folder.rule_folder.uid
       interval_seconds = 60
       org_id = 1
   
       rule {
           name = "My Random Walk Alert"
           condition = "C"
           for = "0s"
   
           // Query the datasource.
           data {
               ref_id = "A"
               relative_time_range {
                   from = 600
                   to = 0
               }
               datasource_uid = grafana_data_source.testdata_datasource.uid
               // `model` is a JSON blob that sends datasource-specific data.
               // It's different for every datasource. The alert's query is defined here.
               model = jsonencode({
                   intervalMs = 1000
                   maxDataPoints = 43200
                   refId = "A"
               })
           }
   
           // The query was configured to obtain data from the last 60 seconds. Let's alert on the average value of that series using a Reduce stage.
           data {
               datasource_uid = "__expr__"
               // You can also create a rule in the UI, then GET that rule to obtain the JSON.
               // This can be helpful when using more complex reduce expressions.
               model = <<EOT
   {"conditions":[{"evaluator":{"params":[0,0],"type":"gt"},"operator":{"type":"and"},"query":{"params":["A"]},"reducer":{"params":[],"type":"last"},"type":"avg"}],"datasource":{"name":"Expression","type":"__expr__","uid":"__expr__"},"expression":"A","hide":false,"intervalMs":1000,"maxDataPoints":43200,"reducer":"last","refId":"B","type":"reduce"}
   EOT
               ref_id = "B"
               relative_time_range {
                   from = 0
                   to = 0
               }
           }
   
           // Now, let's use a math expression as our threshold.
           // We want to alert when the value of stage "B" above exceeds 70.
           data {
               datasource_uid = "__expr__"
               ref_id = "C"
               relative_time_range {
                   from = 0
                   to = 0
               }
               model = jsonencode({
                   expression = "$B > 70"
                   type = "math"
                   refId = "C"
               })
           }
       }
   }
   ```

1. 转到 Grafana UI 并查看您的警报规则。

   您可以查看是否触发警报规则。您还可以看到警报规则每个查询阶段的可视化效果。

   警报触发时，Grafana 会通过您定义的策略路由通知。

   例如，如果您选择 Slack 作为联系点，Grafana 的嵌入式 [Alertmanager](https://github.com/prometheus/alertmanager) 会自动向 Slack 发布消息。

# 在 Grafana 中查看预置的警报资源
<a name="v9-alerting-setup-provision-view"></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 中查看预置的资源**

1. 打开 Grafana 实例。

1. 导航到警报。

1. 单击警报资源文件夹，例如 Alert rules。

   预置的资源带有 **Provisioned** 标记，很明显这些资源不是手动创建的。

**注意**  
您无法从 Grafana 编辑预置的资源。只能通过更改配置文件并重新启动 Grafana 或执行热重载来更改资源属性。这样可以防止对资源进行更改，如果再次配置文件或执行热重载，这些更改会被覆盖。

# 将经典控制面板警报迁移到 Grafana Alerting
<a name="v9-alerting-use-grafana-alerts"></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 Alerting 的工作区，使用经典控制面板警报。要切换到新的 Grafana Alerting，必须选择启用此功能。

您可以使用、或亚马逊托管 Grafana API 将您的亚马逊托管 Grafana 实例配置为使用 Grafana 警报。 AWS 管理控制台 AWS CLI有关如何配置 Amazon Managed Grafana（包括打开或关闭 Grafana Alerting）的详细信息，请参阅 [配置 Amazon Managed Grafana 工作区](AMG-configure-workspace.md)。

**注意**  
使用 Grafana Alerting 时，在 Grafana（而不是 Prometheus）中定义的警报规则会向您的联系点发送多条通知。如果您使用的是原生 Grafana 警报，建议您继续使用经典控制面板警报，不要启用新的 Grafana Alerting 功能。如果您想查看 Prometheus 数据来源中定义的警报，那么建议您启用 Grafana Alerting，该功能只会针对在 Prometheus Alertmanager 中创建的警报发送一条通知。  
此限制已在支持 Grafana v10.4 及更高版本的 Amazon Managed Grafana 工作区中移除。

## 迁移到 Grafana Alerting 系统
<a name="v9-alerting-use-grafana-alerts-opt-in"></a>

开启 Grafana Alerting 后，现有的经典控制面板警报将以兼容 Grafana Alerting 的格式迁移。在 Grafana 实例的“警报”页面中，您可以查看迁移的警报和新警报。借助 Grafana Alerting，Grafana 管理的警报规则会在匹配时发送多条通知，而不是单个警报。

对经典控制面板警报和 Grafana 警报的读写权限受存储这些警报的文件夹的权限控制。在迁移过程中，经典控制面板警报权限与新规则权限匹配，如下所示：
+ 如果原始警报的控制面板拥有权限，则迁移会创建一个以 `Migrated {"dashboardUid": "UID", "panelId": 1, "alertId": 1}` 格式命名的文件夹，以匹配原始控制面板的权限（包括从该文件夹继承的权限）。
+ 如果没有控制面板权限，并且控制面板位于某个文件夹下，则规则将链接到该文件夹并继承其权限。
+ 如果没有控制面板权限，并且控制面板位于 General 文件夹下，则规则将链接到 General Alerting 文件夹并继承默认权限。

**注意**  
由于 Grafana Alerting 中没有 `NoData` 的 `Keep Last State` 选项，因此在经典规则迁移期间，此选项将变为 `NoData`。`Error` 处理的选项 `Keep Last State` 已迁移到新选项 `Error`。为了匹配 `Keep Last State` 的行为，在这两种情况下，在迁移过程中，Amazon Managed Grafana 会自动为每条警报规则创建一个静默，持续时间为一年。

通知通道将迁移到具有相应路由和接收器的 Alertmanager 配置。默认通知通道将作为联系点添加到默认路由。未与任何控制面板警报关联的通知通道将会转到 `autogen-unlinked-channel-recv` 路由。

### 限制
<a name="v9-alerting-use-grafana-alerts-limitations"></a>
+ Grafana Alerting 系统可从所有可用的 Prometheus、Loki 和 Alertmanager 数据来源检索规则。但可能无法从其他受支持的数据来源获取警报规则。
+ 在 Grafana 警报和经典控制面板警报之间来回迁移可能会导致一个系统支持的功能丢失数据，而另一个则不会。
**注意**  
如果您迁移回经典控制面板警报，则在启用 Grafana Alerting 时对警报配置进行的所有更改都将丢失，包括创建的任何新警报规则。

# 管理警报规则
<a name="v9-alerting-managerules"></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 Mimir 或 Loki 实例的警报规则。

**Topics**
+ [创建 Grafana 管理的警报规则](v9-alerting-managerules-grafana.md)
+ [创建 Grafana Mimir 或 Loki 管理的警报规则](v9-alerting-managerules-mimir-loki.md)
+ [创建 Grafana Mimir 或 Loki 管理的记录规则](v9-alerting-managerules-mimir-loki-recording.md)
+ [Grafana Mimir 或 Loki 规则组和命名空间](v9-alerting-managerules-mimir-loki-groups.md)
+ [查看和编辑警报规则](v9-alerting-managerules-view-edit.md)

# 创建 Grafana 管理的警报规则
<a name="v9-alerting-managerules-grafana"></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 管理的规则**

1. 在 Grafana 控制台的 Grafana 菜单中，选择**警报**（铃铛）图标，打开列出现有警报的**警报**页面。

1. 选择**新建警报规则**。

1. 在**步骤 1** 中，添加规则名称、类型和存储位置，如下所示：
   + 在**规则名称**中，添加描述性名称。此名称将显示在警报规则列表中。这也是根据此规则创建的每个警报实例的 `alertname` 标签。
   + 从**规则类型**下拉列表中，选择 **Grafana 管理的警报**。
   + 从**文件夹**下拉列表中，选择要存储规则的文件夹。如果未选择文件夹，规则将存储在 `General` 文件夹中。要创建文件夹，请选择下拉列表，并输入新文件夹名称。

1. 在**步骤 2** 中，添加要评估的查询和表达式。
   + 保留默认名称，或将鼠标悬停在其上方，选择编辑图标以更改名称。
   + 对于查询，请从下拉列表中选择一个数据来源。
   + 添加一个或多个[查询或表达式](v9-panels-query-xform-expressions.md)。
   + 对于每个表达式，可选择**经典条件**来创建单条警报规则，或从 **Math**、**Reduce** 和 **Resample** 选项中选择，为每个序列生成单独的警报。有关这些选项的详细信息，请参阅 [单维规则和多维规则](#v9-alerting-single-multi-rule)。
   + 选择**运行查询**，以验证查询是否成功。

1. 在**步骤 3** 中，添加条件。
   + 从**条件**下拉列表中，选择启动警报规则的查询或表达式。
   + 在**评估间隔**中，指定评估频率。必须是 10 秒的倍数。例如 `1m`、`30s`。
   + 在**评估时长**中，指定条件必须为 true 的持续时间，超过该时间后才会启动警报。
**注意**  
如果条件被违反，警报将进入 `Pending` 状态。如果条件在指定的持续时间保持为违反状态，警报将转入 `Firing` 状态。如果不再保持此状态，则恢复到 `Normal` 状态。
   + 在**配置无数据和错误处理**中，配置无数据情况下的警报行为。使用[处理无数据或错误的情况](#v9-alerting-rule-no-data-error)中的指南。
   + 选择**预览警报**，检查此时运行查询的结果。预览不包括无数据和错误处理条件。

1. 在**步骤 4** 中，添加与规则相关联的其他元数据。
   + 添加描述和摘要以自定义警报消息。使用 [标签和注释](v9-alerting-explore-labels.md) 中的指南。
   + 添加 Runbook 网址、面板、仪表板和警报 IDs。
   + 添加自定义标签。

1. 选择**保存**以保存规则，或者选择**保存并退出**，以保存规则并返回**警报**页面。

在创建规则后，您便可以为规则创建通知。有关通知的更多信息，请参阅 [管理警报通知](v9-alerting-managenotifications.md)。

## 单维规则和多维规则
<a name="v9-alerting-single-multi-rule"></a>

对于 Grafana 管理的警报规则，您可以创建具有经典条件的规则，也可以创建多维规则。

**单维规则（经典条件）**

使用经典条件表达式创建规则，可在满足条件时启动单个警报。对于返回多个序列的查询，Grafana 不会跟踪每个序列的警报状态。因此，即使满足多个序列的警报条件，Grafana 也只发送一个警报。

有关如何设置表达式格式的更多信息，请参阅 *Grafana 文档*中的 [Expressions](https://grafana.com/docs/grafana/next/panels/query-a-data-source/)。

**多维规则**

要为查询中返回的每个序列生成单独的警报实例，请创建多维规则。

**注意**  
由多维规则生成的每个警报实例都会计入警报总配额。达到警报配额后，不会对规则进行评估。有关多维规则配额的更多信息，请参阅 [达到配额错误](#v9-alerting-rule-quota-reached)。

要根据单条规则创建多个实例，请使用 `Math`、`Reduce`、或 `Resample` 表达式来创建多维规则。例如，您可以：
+ 为每个查询添加 `Reduce` 表达式，将所选时间范围内的值聚合为一个值。（[使用数字数据的规则](v9-alerting-explore-numeric.md)不需要）。
+ 添加包含规则条件的 `Math` 表达式。如果查询或归约表达式已经返回 0（表示规则不应启动警报）或正数（表示规则应启动警报），则无需进行此操作。

  一些示例：
  + `$B > 70`如果它应该在 B query/expression 的值大于 70 时启动警报。
  + `$B < $C * 100`：如果应该在 B 的值小于 C 的值乘以 100 时启动警报。如果要比较的查询在其结果中包含多个序列，那么对于来自不同查询的序列，如果它们具有相同的标签，或者其中一个序列的标签是另一个序列标签的子集，就会进行匹配。

**注意**  
Grafana 不支持使用模板变量的警报查询。有关更多信息，请访问社区页面：[Template variables are not supported in alert queries while setting up Alert](https://community.grafana.com/t/template-variables-are-not-supported-in-alert-queries-while-setting-up-alert/2514)。



**多维规则的性能注意事项**

每个警报实例都会计入警报配额。如果多维规则创建的实例超过警报配额所能容纳的数量，则不会对其进行评估，并且会返回配额错误。有关更多信息，请参阅 [达到配额错误](#v9-alerting-rule-quota-reached)。

多维警报可能会大幅影响 Grafana 工作区的性能，以及数据来源的性能（因为 Grafana 会查询数据来源，以评估警报规则）。在您尝试优化监控系统的性能时，以下注意事项可能会有所帮助。
+ **规则评估频率**：警报规则的**评估间隔**属性可控制规则评估的频率。我们建议使用可接受的最低评估频率。
+ **结果集基数**：使用规则创建的警报实例数量会影响其性能。假设您要在实例集的每台虚拟机上监控每个 API 路径的 API 响应错误。该集合的基数是路径数乘以路径数。 VMs您可以减少结果集的基数，例如，通过监控每台虚拟机的总错误数（而不是每台虚拟机每条路径的错误数）做到这一点。
+ **查询的复杂性**：对于数据来源可以快速处理和响应的查询，其消耗的资源更少。虽然这一考虑因素不如上述其他考虑因素重要，但如果您已尽可能降低了那些因素的影响，那么着眼于单个查询的性能可能会有所帮助。您还应该了解评估这些规则对数据来源的性能影响。通常，在监控数据库处理的查询中，警报查询占据了绝大多数，因此影响 Grafana 实例的负载因素也会影响这些警报查询。

## 达到配额错误
<a name="v9-alerting-rule-quota-reached"></a>

单个工作区中可以拥有的警报实例数量有配额限制。达到该数量后，您将无法再在该工作区中创建新的警报规则。对于多维警报，警报实例的数量可能会随时间变化。

处理警报实例时，请务必记住以下几点。
+ 如果您只创建单维规则，则每条规则都是一个警报实例。您可以在单个工作区中创建与警报实例配额数量相同的规则，但不能超过该数量。
+ 多维规则会创建多个警报实例，但在对警报实例进行评估之前，其数量是未知的。例如，如果您创建了跟踪 Amazon EC2 实例 CPU 使用率的警报规则，创建时可能有 50 个 EC2 实例（因此有 50 个警报实例），但如果您在一周后再添加 10 个 EC2 实例，则下次评估时将有 60 个警报实例。

  警报实例的数量在创建多维警报时评估，您无法创建出会立即超过警报实例配额的警报实例。由于警报实例的数量可能会发生变化，因此每次评估规则时，都会检查您的配额。
+ 在规则评估时，如果某条规则导致超出警报实例配额，那么，在对警报规则进行更新，使警报实例总数低于服务配额之前，不会评估该规则。发生这种情况时，您会收到一条警报通知，告知您已达到配额（该通知使用正在评估的规则的通知策略）。该通知包含一个 `Error` 注释，其值为 `QuotaReachedError`。
+ 导致 `QuotaReachedError` 的规则将停止评估。只有在进行更新，且更新后的评估本身不会导致 `QuotaReachedError` 时，才会恢复评估。未评估的规则会在 Grafana 控制台中显示**达到配额**错误。
+ 要减少警报实例的数量，您可以移除警报规则，或编辑多维警报，使其具有的警报实例变少（例如，为每台虚拟机上的错误设置一个警报，而不是为虚拟机中的每个 API 的错误设置一个警报）。
+ 要恢复评估，请更新警报并保存。您可以对警报进行更新，以减少警报实例的数量。或者，如果您做出了其他可减少警报实例数量的更改，也可以不做任何更改，直接保存警报。如果评估可以恢复，就会恢复。如果会导致另一个 `QuotaReachedError`，则无法保存。
+ 如果警报被保存，并且恢复了评估，同时也没有超过警报配额，**达到配额**错误可能会继续在 Grafana 控制台中显示一段时间（时间最长为其评估间隔），但是，警报规则评估确实会开始，如果达到规则阈值，将发送警报。
+ 有关警报配额以及其他配额的详细信息，请参阅 [Amazon Managed Grafana 的服务配额](AMG_quotas.md)。

## 处理无数据或错误的情况
<a name="v9-alerting-rule-no-data-error"></a>

选择在无数据或有错误时如何处理警报行为的选项。

下表列出了处理无数据的选项。


| 无数据选项 | 行为 | 
| --- | --- | 
|  无数据  |  创建警报 `DatasourceNoData`，将警报规则的名称和 UID，以及返回无数据的数据来源的 UID 作为标签。  | 
|  警报  |  将警报规则状态设置为 `Alerting`。  | 
|  OK  |  将警报规则状态设置为 `Normal`。  | 

下表列出了处理错误情况的选项。


| 错误或超时选项 | 行为 | 
| --- | --- | 
|  警报  |  将警报规则状态设置为 `Alerting`  | 
|  OK  |  将警报规则状态设置为 `Normal`  | 
|  错误  |  创建警报 `DatasourceError`，将警报规则的名称和 UID，以及返回无数据的数据来源的 UID 作为标签。  | 

# 创建 Grafana Mimir 或 Loki 管理的警报规则
<a name="v9-alerting-managerules-mimir-loki"></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 Mimir 或 Loki 实例创建警报规则。

**注意**  
Grafana Mimir 可以连接到 Amazon Managed Service for Prometheus 和 Prometheus 数据来源。

**先决条件**
+ 验证您是否拥有 Prometheus 数据来源的写入权限。如果没有，您将无法创建或更新 Cortex 管理的警报规则。
+ 对于 Grafana Mimir 和 Loki 数据来源，通过配置其各自的服务启用 ruler API。
  + **Loki**：`local` 规则存储类型是 Loki 数据来源的默认设置，仅支持查看规则。要编辑规则，请配置其他存储类型之一。
  + **Grafana Mimir**：使用旧前缀 `/api/prom`，而不是 `/prometheus`。Prometheus 数据来源同时支持 Grafana Mimir 和 Prometheus，并且 Grafana 预期 Query API 和 Ruler API 使用相同的 URL。您不能为 Ruler API 提供单独的 URL。

**注意**  
如果您不想管理特定 Loki 或 Prometheus 数据来源的警报规则，请转到其设置，并清除**通过警报用户界面管理警报**复选框。

**添加 Grafana Mimir 或 Loki 管理的警报规则**

1. 在 Grafana 控制台的 Grafana 菜单中，选择**警报**（铃铛）图标，打开列出现有警报的**警报**页面。

1. 选择**创建警报规则**。

1. 在**步骤 1** 中，选择规则类型和详细信息，如下所示：
   + 选择 **Mimir 或 Loki 警报**。
   + 在**规则名称**中，添加描述性名称。此名称将显示在警报规则列表中。这也是根据此规则创建的每个警报实例的 `alertname` 标签。
   + 从**选择数据来源**下拉列表中，选择 Prometheus 或 Loki 数据来源。
   + 从**命名空间**下拉列表中，选择现有的规则命名空间。否则，选择**新增**，然后输入名称以新建。命名空间可以包含一个或多个规则组，并且只能用于组织目的。有关更多信息，请参阅 [Cortex 或 Loki 规则组和命名空间](alert-rules.md#alert-rule-groups)。
   + 从**组**下拉列表中，选择所选命名空间内的现有群组。否则，选择**新增**，然后输入名称以新建。新创建的规则会附加到该组的末尾。组内的规则以固定时间间隔按顺序运行，评估时间相同。

1. 在**步骤 2** 中，添加要评估的查询。

   该值可以是 PromQL 或 LogQL 表达式。如果评估结果中至少有一个序列的值大于 0，则规则会启动警报。会为每个序列创建一个警报。

1. 在**步骤 3** 中，指定警报评估间隔。

   在条件的**时长**文本框中，指定条件必须保持为 true 的持续时间，超过该时间后才会启动警报。如果您指定 `5m`，则条件必须持续五分钟为 true，才会启动警报。
**注意**  
满足条件后，警报将进入 `Pending` 状态。如果条件在指定的持续时间保持为激活状态，警报将转入 `Firing` 状态。如果不再保持此状态，则恢复到 `Normal` 状态。

1. 在**步骤 4** 中，添加与规则相关联的其他元数据。
   + 添加描述和摘要以自定义警报消息。使用 [标签和注释](v9-alerting-explore-labels.md) 中的指南。
   + 添加 Runbook 网址、面板、仪表板和警报 IDs。
   + 添加自定义标签。

1. 选择**预览警报**，以评估规则，并查看会产生哪些警报。这将显示警报列表，其中包含每个警报的状态和值。

1. 选择**保存**以保存规则，或者选择**保存并退出**，以保存规则并返回**警报**页面。

在创建规则后，您便可以为规则创建通知。有关通知的更多信息，请参阅 [管理警报通知](v9-alerting-managenotifications.md)。

# 创建 Grafana Mimir 或 Loki 管理的记录规则
<a name="v9-alerting-managerules-mimir-loki-recording"></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 Mimir 或 Loki 实例创建和管理记录规则。记录规则会预先计算经常需要的表达式或计算成本高昂的表达式，并将结果保存为一组新的时间序列。查询这个新时间序列的速度更快，特别是对于控制面板而言，因为控制面板每次刷新时都会查询相同的表达式。

**先决条件**

对于 Grafana Mimir 和 Loki 数据来源，通过配置其各自的服务启用 ruler API。
+ **Loki**：`local` 规则存储类型是 Loki 数据来源的默认设置，仅支持查看规则。要编辑规则，请配置其他存储类型之一。
+ **Grafana Mimir**：将数据来源配置为指向 Grafana Mimir 时，请使用旧前缀 `/api/prom`，而不是 `/prometheus`。Prometheus 数据来源同时支持 Grafana Mimir 和 Prometheus，并且 Grafana 预期 Query API 和 Ruler API 使用相同的 URL。您不能为 Ruler API 提供单独的 URL。

**注意**  
如果您不想管理特定 Loki 或 Prometheus 数据来源的警报规则，请转到其设置，并清除**通过警报用户界面管理警报**复选框。

**添加 Grafana Mimir 或 Loki 管理的记录规则**

1. 在 Grafana 控制台的 Grafana 菜单中，选择**警报**（铃铛）图标，打开列出现有警报的**警报**页面。

1. 选择**创建警报规则**。

1. 在**步骤 1** 中，添加规则类型、规则名称和存储位置，如下所示：
   + 选择 **Mimir 或 Loki 记录规则**选项。
   + 在**规则名称**中，添加描述性名称。此名称将显示在警报规则列表中。这也是根据此规则创建的每个警报实例的 `alertname` 标签。
   + 从**选择数据来源**下拉列表中，选择 Prometheus 或 Loki 数据来源。
   + 从**命名空间**下拉列表中，选择现有的规则命名空间。否则，选择**新增**，然后输入名称以新建。命名空间可以包含一个或多个规则组，并且只能用于组织目的。有关更多信息，请参阅 [Cortex 或 Loki 规则组和命名空间](alert-rules.md#alert-rule-groups)。
   + 从**组**下拉列表中，选择所选命名空间内的现有群组。否则，选择**新增**，然后输入名称以新建。新创建的规则会附加到该组的末尾。组内的规则以固定时间间隔按顺序运行，评估时间相同。

1. 在**步骤 2** 中，添加要评估的查询。

   该值可以是 PromQL 或 LogQL 表达式。如果评估结果中至少有一个序列的值大于 0，则规则会启动警报。会为每个序列创建一个警报。

1. 在**步骤 3** 中，添加与规则相关联的其他元数据。
   + 添加描述和摘要以自定义警报消息。使用 [警报规则的注释和标签](alert-rules.md#alert-rule-labels) 中的指南。
   + 添加 Runbook 网址、面板、仪表板和警报 IDs。
   + 添加自定义标签。

1. 选择**保存**以保存规则，或者选择**保存并退出**，以保存规则并返回**警报**页面。

# Grafana Mimir 或 Loki 规则组和命名空间
<a name="v9-alerting-managerules-mimir-loki-groups"></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 Mimir 或 Loki 命名空间和规则组，并编辑组评估间隔。

**要编辑规则组或命名空间**

1. 在 Grafana 控制台的 Grafana 菜单中，选择**警报**（铃铛）图标，打开**警报**页面。

1. 导航到要编辑的规则组或命名空间中的规则。

1. 选择**编辑**（笔）图标。

1. 对规则组或命名空间做出更改。
**注意**  
对于命名空间，您只能编辑名称。对于规则组，您可以更改名称，或组内规则的评估时间间隔。例如，您可以选择 `1m` 让规则每分钟评估一次，或选择 `30s` 让规则每 30 秒评估一次。

1. 选择**保存更改**。

# 查看和编辑警报规则
<a name="v9-alerting-managerules-view-edit"></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 管理的规则，**Cortex/Loki** 部分列出了兼容 Prometheus 的数据来源的规则。您可以查看兼容 Prometheus 的数据来源的警报规则，但无法编辑。

Mimir/Cortex/Loki规则部分列出了 Mimir、Cortex 或 Loki 数据源的所有规则。本节还列出了云警报规则。

管理大量警报时，可使用扩展的警报规则搜索功能筛选文件夹、评估组和规则。此外，您还可以按标签、状态、类型和运行状况等属性筛选警报规则。

**注意**  
您可以查看预置警报的查询定义，但无法编辑。通过查看，您可以验证查询和规则定义是否正确，而无需返回预置存储库获取规则定义。

## 查看警报规则
<a name="v9-alerting-managerules-view"></a>

使用 Grafana 警报，您可以在一个页面中查看所有警报。

**查看警报详细信息**

1. 在 Grafana 控制台的 Grafana 菜单中，选择**警报**（铃铛）图标，打开**警报**页面。默认情况下，规则按数据来源类型分组显示。您还可以按每个警报的当前状态查看（下文将详细介绍）。

1. 在**查看方式**中，您可以选择自己喜欢的选项，在组视图和状态视图之间切换。

1. 选择行旁边的箭头，查看该行的详细信息。规则的详细信息包括规则标签、注释、数据来源和查询，以及由规则生成的警报实例列表。

**注意**  
有关了解警报详情的更多信息，请参阅 [警报规则的状态和运行状况](v9-alerting-explore-state.md)。

**组视图**

组视图显示按文件夹分组的 Grafana 警报规则以及按 `namespace` \$1 `group` 分组的 Loki 或 Prometheus 警报规则。这是默认的规则列表视图，用于管理规则。您可以展开每个组，查看该组中的规则列表。进一步展开规则，查看详细信息。您还可以展开操作按钮和规则产生的警报，查看其详细信息。

**状态视图**

状态视图显示按状态分组的警报规则。使用此视图可以大致了解哪些规则处于何种状态。可以展开每条规则查看其详细信息。其中包括操作按钮和由此规则生成的任何警报，而每个警报都可以进一步展开以查看其详细信息。

**筛选警报规则**

您可以通过多种方式筛选**警报**页面上显示的警报规则。
+ 您可以选择**选择数据来源**，然后选择要筛选的数据来源，筛选显示查询特定数据来源的规则。
+ 您可以在**按标签搜索**中选择搜索条件，按标签筛选。例如，您可以键入 `environment=production,region=~US|EU,severity!=warning` 来筛选美国和欧盟的生产警告。
+ 您可以选择**按状态筛选警报**，然后选择要查看的状态，筛选显示处于特定状态的规则。

## 编辑或删除警报规则
<a name="v9-alerting-managerules-edit"></a>

Grafana 管理的警报规则只能由对存储规则的文件夹具有编辑权限的用户编辑或删除。具有编辑者或管理员角色的用户可以编辑或删除外部 Mimir 或 Loki 实例的警报规则。

**编辑或删除规则**

1. 展开规则，直到可以看到**查看**、**编辑**和**删除**的规则控件。

1. 选择**编辑**以打开“创建规则”页面。按照创建规则的相同方式更新。有关详细信息，请参阅 [创建 Grafana 管理的警报规则](v9-alerting-managerules-grafana.md) 或 [创建 Grafana Mimir 或 Loki 管理的警报规则](v9-alerting-managerules-mimir-loki.md) 中的说明。

1. （可选）选择**删除**以删除规则。

## 导出警报规则
<a name="v9-alerting-managerules-export"></a>

您可以在 Grafana 工作区中选择**导出**，将规则导出为 YAML 或 JSON 格式。这让您可以选择定义新规则，然后将其导出。您可以使用 UI 创建规则，然后将其导出以在配置 API 或 terraform 脚本中使用。

**注意**  
Grafana 工作区和预置界面都支持此功能。

# 管理警报通知
<a name="v9-alerting-managenotifications"></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)。

选择发送警报通知的方式、时间和地点是设置警报系统的重要组成部分。这些决定将直接影响您快速解决问题的能力，并且不会错过任何重要的事情。

首先，定义*联系点*，这些联系点定义了向何处发送警报通知。联系点可以是一组用于匹配通知的目标。向联系点添加通知模板，以便在通知中实现重用和一致的消息传递。

接下来，创建*通知策略*，该策略包含一组规则，规定了警报在何处、何时以及如何发送到联系点。在通知策略中，您可以选择创建的一个联系点，来定义将警报通知发送到何处。向通知策略添加静音定时。*静音定时*是一个重复的时间间隔，在此期间您不希望发送任何通知。

评估警报规则时，警报规则会向 Alertmanager 发送警报实例：一个警报规则可以触发多个单独的*警报实例*。

Alertmanager 会收到这些警报实例，然后处理静音定时，对警报分组，并按照通知策略中的定义将通知发送到联系点。

**Topics**
+ [Alertmanager](v9-alerting-managenotifications-alertmanager.md)
+ [使用联系点](v9-alerting-contact-points.md)
+ [使用通知策略](v9-alerting-notification-policies.md)
+ [自定义通知](v9-alerting-notifications.md)
+ [静默 Prometheus 数据来源的警报通知](v9-alerting-silences.md)
+ [静音定时](v9-alerting-notification-muting.md)
+ [按警报组查看和筛选](v9-alerting-viewfiltergroups.md)
+ [查看通知错误](v9-alerting-viewnotificationerrors.md)

# Alertmanager
<a name="v9-alerting-managenotifications-alertmanager"></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)。

Alertmanager 让您可以快速高效地管理和响应警报。还可以接收警报、处理静音、抑制、分组和路由，通过您选择的渠道（如电子邮件或 Slack）发送通知。

在 Grafana 中，您可以使用 Grafana Alertmanager 或外部 Alertmanager。您也可以运行多个 Alertmanager，具体取决于您的设置和警报的生成位置。

**Grafana Alertmanager**

Grafana Alertmanager 是一个预先配置的内部 Alertmanager，如果您在本地或开源环境下运行 Grafana，默认情况下可供选择。

Grafana Alertmanager 可以接收来自 Grafana 的警报，但不能接收来自 Grafana 外部的警报，例如来自 Mimir 或 Loki 的警报。

**注意**  
Grafana Alertmanager 不支持抑制规则。

**外部 Alertmanager**

如果您想使用单个 Alertmanager 来接收所有 Grafana、Loki、Mimir 和 Prometheus 警报，可将 Grafana 设置为使用外部 Alertmanager。然后，可以在 Grafana 中配置和管理此外部 Alertmanager。

以下是两个示例，说明了您可能需要配置自己的外部 Alertmanager 并向其发送警报，而不是向 Grafana Alertmanager 发送警报的情况：

1. 您已经在自己的云基础设施中部署了本地 Alertmanager，并希望继续使用，因为您还有其他警报生成器，比如 Prometheus。

1. 您想同时使用 Prometheus 本地和托管 Grafana 将警报发送到云基础设施中运行的同一个 Alertmanager。

Alertmanager 位于“警报联系点”和“通知策略”页面的下拉菜单中。

如果要预置数据来源，请将 `jsonData` 字段中的标志 `handleGrafanaManagedAlerts` 中设置为 `true`，以将 Grafana 管理的警报发送到此 Alertmanager。

# 使用联系点
<a name="v9-alerting-contact-points"></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)。

使用联系点可定义当警报启动时，如何通知联系人。一个联系点可以有一个或多个联系点集成，例如 Amazon Simple Notification Service 或 Slack。启动警报后，将向联系点列出的所有联系点集成发送通知。（可选）使用[通知模板](v9-alerting-create-templates.md)可为联系点类型自定义通知消息。

**注意**  
您可以为 Grafana 管理的警报创建和编辑联系点。Alertmanager 警报的联系点为只读。

## 使用联系点
<a name="v9-alerting-working-contact-points"></a>

以下过程详细介绍了如何添加、编辑、测试和删除联系点。

**添加联系点**

1. 在 Grafana 控制台的 Grafana 菜单中，选择**警报**（铃铛）图标，打开**警报**页面。

1. 选择**联系点**，然后选择**新建联系点**。

1. 从 **Alertmanager** 下拉列表中，选择 Alertmanager。默认选择 Grafana Alertmanager。

1. 输入联系点的**名称**。

1. 从**联系点集成**中选择一种类型，并根据该类型选择必填字段。例如，如果您选择 Slack，请输入应联系的 Slack 频道和用户。

1. 如果您选择的联系点可用，请选择所需的**可选设置**来指定其他设置。

1. 在**通知设置**下，如果您不希望在警报得到解决时收到通知，可以选择**禁用已解决消息**。

1. 如果您的联系点需要更多联系点类型，则可以选择**添加联系点集成**，然后针对所需的每种联系点类型，重复上述步骤。

1. 选择**保存联系点**，保存您的更改。

**编辑联系点**

1. 选择**联系点**，以查看现有联系点列表。

1. 选择要编辑的联系点，然后选择**编辑**图标（笔）。

1. 进行任何必要的更改，然后选择**保存联系点**，以保存更改。

创建联系点后，您可以发送测试通知，以验证其配置是否正确。

**发送测试通知**

1. 选择**联系点**，以打开现有联系点列表。

1. 选择要测试的联系点，然后选择**编辑**图标（笔）。

1. 选择**测试**图标（纸飞机）。

1. 选择是发送预定义的测试通知，还是通过选择**自定义**，在测试通知中添加您自己的自定义注释和标签。

1. 选择**发送测试通知**，使用给定的联系点测试警报。

您可以删除通知策略不使用的联系点。

**删除联系点**

1. 选择**联系点**，以打开现有联系点列表。

1. 选择要删除的联系点，然后选择**删除**图标（垃圾桶）。

1. 在确认对话框中，选择**是，删除**。

**注意**  
如果通知策略正在使用该联系点，则必须先删除通知策略，或对其进行编辑以使用不同的联系点，然后再删除该联系点。

## 支持的通知程序列表
<a name="v9-alerting-contactpoint-supported-notifiers"></a>


|  Name  |  Type  | 
| --- | --- | 
| Amazon SNS  |  sns  | 
|  OpsGenie  |  opsgenie  | 
| Pager Duty  |  pagerduty  | 
| Slack  |  slack  | 
|  VictorOps  |  victorops  | 

# 使用通知策略
<a name="v9-alerting-notification-policies"></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)。

通知策略决定如何将警报路由到联系点。策略具有树形结构，其中每个策略都可以有一个或多个子策略。除了根策略外，每个策略还可以匹配特定的警报标签。每个警报先由根策略进行评估，然后由每个子策略进行评估。如果为特定策略启用了 `Continue matching subsequent sibling nodes` 选项，则即使有一个或多个匹配项，评估仍会继续。父策略的配置设置和联系点信息控制着与任何子策略都不匹配的警报的行为。根策略将管理所有与特定策略不匹配的警报。

**注意**  
您可以为 Grafana 托管的警报创建和编辑通知策略。Alertmanager 警报的通知策略是只读的。

**对通知进行分组**

分组将性质相似的警报通知归类到单个漏斗中。这样一来，当系统的许多部分同时发生故障，导致大量警报同时启动时，您就可以在大规模故障期间控制警报通知。

**分组示例**

假设有 100 个服务在不同的环境中连接到一个数据库。这些服务由标签 `env=environmentname` 区分。已设置警报规则，用于监控您的服务是否可以访问数据库。警报规则会创建名为 `alertname=DatabaseUnreachable` 的警报。

如果发生网络分区，有一半的服务无法再访问数据库，则会启动 50 个不同的警报。对于这种情况，您会希望收到列出受影响环境的单页通知（而不是 50 页）。

您可以将分组配置为 `group_by: [alertname]`（不使用 `env` 标签，该标签对于每个服务都不同）。完成此配置后，Grafana 会发送一条简要的通知，其中包含此警报规则的所有受影响环境。

**特殊组**

Grafana 有两个特殊组。默认组 `group_by: null` 会将*所有*警报分组中到一个组中。您也可以使用名为 `...` 的特殊标签，按所有标签对警报进行分组，从而有效地禁用分组，并将每个警报发送到其自己的组中。

## 使用通知
<a name="v9-alerting-notification-policies-working"></a>

以下过程演示了如何创建和管理通知策略。

**编辑根通知策略**

1. 在 Grafana 控制台的 Grafana 菜单中，选择**警报**（铃铛）图标，打开**警报**页面。

1. 选择**通知策略**。

1. 从 **Alertmanager** 下拉列表中，选择要编辑的 Alertmanager。

1. 在**根策略**部分，选择**编辑**图标（笔）。

1. 在**默认联系点**中，更新当警报规则与任何特定策略都不匹配时，应向其发送规则通知的联系点。

1. 在**分组依据**中，选择用于对警报进行分组的标签（或特殊组）。

1. 在**定时选项**中，选择以下选项。
   + **组等待**：在发送初始通知前，缓冲同一组警报的等待时间。默认值为 30 秒。
   + **组间隔**：一个组的两次通知之间的最短时间间隔。默认值为 5 分钟。
   + **重复间隔**：如果组内未添加新警报，在重新发送通知之前的最短时间间隔。默认为 4 小时。

1. 选择 **保存** 以保存您的更改。

**添加新的顶级特定策略**

1. 在 Grafana 控制台的 Grafana 菜单中，选择**警报**（铃铛）图标，打开**警报**页面。

1. 选择**通知策略**。

1. 从 **Alertmanager** 下拉列表中，选择要编辑的 Alertmanager。

1. 在**特定路由**部分，选择**新建特定策略**。

1. 在**匹配标签**部分，添加一个或多个匹配的警报标签。有关标签匹配的更多信息，请参阅本主题的后半部分。

1. 在**联系点**中，添加当警报与此特定策略匹配时，要向其发送通知的联系点。嵌套策略会覆盖此联系点。

1. （可选）启用**继续匹配后续同级节点**以继续匹配同级策略，即使警报与当前策略匹配后也是如此。启用此策略后，您可以收到关于同一警报的多个通知。

1. 可以选择**覆盖分组**，指定与根策略不同的分组。

1. 可以选择**覆盖一般定时**，以覆盖组通知策略中的定时选项。

1. 选择**保存策略**以保存您的更改。

**要添加嵌套策略**

1. 展开要在其下创建嵌套策略的特定策略。

1. 选择**添加嵌套策略**，然后添加详细信息（就和添加顶级特定策略时一样）。

1. 选择**保存策略**以保存您的更改。

**编辑特定策略**

1. 在**警报**页面，选择**通知策略**，打开列出现有策略的页面。

1. 选择要编辑的策略，然后选择**编辑**图标（笔）。

1. 进行任何更改（和添加顶级特定策略时一样）。

1. 选择**保存策略**。

**搜索策略**

您可以按*标签匹配程序*或*联系点*在策略树中进行搜索。
+ 要按联系点搜索，请在**按联系点搜索**字段中输入联系点的部分或全部名称。
+ 要按标签搜索，请在**按标签搜索**字段中输入有效的标签匹配程序。您可以输入多个匹配程序，以逗号分隔。例如，有效的匹配程序输入为 `severity=high, region=~EMEA|NA`。
**注意**  
按标签搜索时，所有匹配的策略都将完全匹配。不支持部分匹配和正则表达式匹配。

**标签匹配的工作原理**

如果警报的标签与策略中指定的所有*匹配标签*相匹配，则策略与警报相匹配。
+ **标签**：要匹配的标签名称。必须与警报的标签名称完全匹配。
+ **运算符**：用于将标签值与匹配标签值进行比较的运算符。可用的运算符有：
  + `=` 选择其值与提供的字符串完全匹配的标签。
  + `!=` 选择其值与提供的字符串不匹配的标签。
  + `=~` 选择其值与所提供字符串的正则表达式解释值相匹配的标签（提供的字符串被解释为正则表达式）。
  + `!=` 选择与提供的正则表达式不匹配的标签。
+ **值**：要与标签值匹配的值。可作为字符串或正则表达式进行匹配，具体取决于所选的运算符。

# 自定义通知
<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 的模板语言 [text/template](https://pkg.go.dev/text/template) 编写通知模板。

本节概述了 Go 的模板语言以及如何用 text/template 编写模板。

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

里面 text/template 有一个叫做 dot 的特殊光标，写成`.`了。您可以将此光标看作一个变量，其值会根据在模板中使用的位置而变化。例如，在通知模板 `.` 的开头引用 `ExtendedData` 对象，该对象包含多个字段，例如包括 `Alerts`、`Status`、`GroupLabels`、`CommonLabels`、`CommonAnnotations` 和 `ExternalURL`。但是，当在列表上的 `range` 中使用、在 `with` 中使用或编写要在其他模板中使用的功能模板时，dot 可能引用其他内容。您可以在 [创建通知模板](v9-alerting-create-templates.md) 中看到相关示例，在 [模板参考](v9-alerting-template-reference.md) 中看到所有数据和函数。

## 开始和结束标签
<a name="v9-go-openclosetags"></a>

在 text/template 中，模板以 `{{` 开头，以 `}}` 结尾，无论模板是打印变量还是运行 if 语句等控制结构。这与 Jinja 等其他模板语言不同，在 Jinja 中，打印变量使用 `{{` 和 `}}`，控制结构使用 `{%` 和 `%}`。

## Print（打印）
<a name="v9-go-print"></a>

要打印某项的值，请使用 `{{` 和 `}}`。您可以打印 dot 的值、dot 的字段、函数的结果和[变量](#v9-go-variables)的值。例如，要打印 `Alerts` 字段，其中 dot 引用 `ExtendedData`，您可以编写以下内容：

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

## 迭代警报
<a name="v9-go-iterate-alerts"></a>

要仅打印每个警报的标签，而不是有关警报的所有信息，可使用 `range` 在 `ExtendedData` 中迭代警报：

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

范围内的 dot 不再引用 `ExtendedData`，而是引用 `Alert`。您可以使用 `{{ .Labels }}` 打印每个警报的标签。之所以有效，是因为 `{{ range .Alerts }}` 会更改 dot，以引用警报列表中的当前警报。范围完成后，dot 将重置为范围开始之前的值，在本例中为 `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` 中的警报，使 dot 引用警报列表中的当前警报，然后在排序标签上使用第二个范围，使 dot 第二次更新以引用当前标签。在第二个范围内，使用 `.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 }}
```

## If 语句
<a name="v9-go-if"></a>

可在模板中使用 if 语句。例如，要在 `.Alerts` 中没有警报的情况下打印 `There are no alerts`，您可以编写以下内容：

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

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

With 与 if 语句类似，但又有所不同，`with` 会更新 dot 以引用 with 的值：

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

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

中的变量 text/template 必须在模板中创建。例如，要使用 dot 的当前值创建一个名为 `$variable` 的变量，您可以编写以下内容：

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

您可以在范围或 `with` 内使用 `$variable`，以引用定义变量时的 dot 值，而不是当前 dot 的值。

例如，您不能编写在第二个范围中使用 `{{ .Labels }}` 的模板，因为这里的 dot 引用的是当前标签，而不是当前警报：

```
{{ 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>

您可以在范围的开头定义 index 和 value 变量来获取范围内每个警报的索引：

```
{{ $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_values_list`、`__text_alert_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>

在模板中，dot 将引用传递给模板的值。

例如，如果向模板传递了触发警报列表，则 dot 引用该触发警报列表：

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

如果模板传递了警报的排序标签，则 dot 引用已排序标签的列表：

```
{{ 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>

正在 text/template 使用`{{-``-}}`并删除前导和尾随空格以及换行符。

例如，使用缩进和换行符来提高模板的可读性：

```
{{ 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_values_list`、`__text_alert_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. 点击保存。

   `{{ define "email.subject" }}`（其中 `email.subject` 是模板名称），`{{ end }}` 自动添加到内容的开头和结尾。

**创建包含多个模板的通知模板：**

1. 单击**添加模板**。

1. 输入整个通知模板的名称。例如 `email`。

1. 在内容字段中写入每个模板，包括每个模板开头和结尾的 `{{ define "name-of-template" }}` 和 `{{ end }}`。您可以为通知模板中的每个模板使用描述性名称，例如，`email.subject` 或 `email.message`。在这种情况下，不要重复使用您在上面输入的通知模板的名称。

   下面的部分展示了您可能创建的模板的详细示例。

1. 点击保存。

## 为电子邮件主题创建模板
<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。

例如，如果要发送包含此主题的电子邮件和包含标题 `1 firing alerts, 0 resolved alerts` 的 Slack 消息，则可以创建共享模板。

**创建共享模板**

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>

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


| 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\$1\$1  |  map[string]interface\$1\$1  |  将对象列表转换为带键的映射，例如 arg0、arg1。使用此函数可将多个参数传递给模板。  | 
|  `externalURL`  |  nothing  |  字符串  |  返回代表外部 URL 的字符串。  | 
|  `pathPrefix`  |  nothing  |  字符串  |  返回外部 URL 的路径。  | 

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


| 函数 | TemplateString | Input | 预期 | 
| --- | --- | --- | --- | 
|  humanize  |  \$1 humanize \$1value \$1  |  1234567.0  |  1.235M  | 
|  humanize1024  |  \$1 humanize1024 \$1value \$1  |  1048576.0  |  1Mi  | 
|  humanizeDuration  |  \$1 humanizeDuration \$1value \$1  |  899.99  |  14m 59s  | 
|  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 title \$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)” “我的.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  | 

# 静默 Prometheus 数据来源的警报通知
<a name="v9-alerting-silences"></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)。

对于外部警报管理器数据来源（包括 Amazon Managed Service for Prometheus），您可以通过*静默*来抑制警报通知。静默只会阻止创建通知：静默不会阻止评估警报规则，也不会阻止警报实例显示在用户界面中。当警报静默时，您可以指定抑制警报的时间范围。

您可以为外部 Alertmanager 数据来源配置静默。

**注意**  
要按固定的时间间隔或针对其他数据来源（例如，定期维护期间）抑制警报通知，请使用 [静音定时](v9-alerting-notification-muting.md) 而不是静默。

**添加静默**

1. 在 Grafana 控制台的 Grafana 菜单中，选择**警报**（铃铛）图标，打开**警报**页面。

1. 选择**静默**以打开列出现有 [使用联系点](v9-alerting-contact-points.md) 的页面。

1. 从 **Alertmanager** 下拉列表中选择外部 Alertmanager。

1. 选择**添加静默**。

1. 在**静默开始和结束**中选择开始和结束日期，以指示静默应何时生效和结束。

   除了设置结束时间之外，还可以在**持续时间**中指定强制静默的时长。这会自动更新**静默开始和结束**字段中的结束时间。

1. 在**名称**和**值**字段中，输入一个或多个*匹配标签*。匹配程序决定静默适用于哪些规则。在此过程之后，我们将详细介绍标签匹配。

1. （可选）添加**注释**，或修改**创建者**以设置静默的所有者。

1. 选择**创建**以创建静默。

您可以选择**编辑**图标（钢笔）来编辑现有静默。

**警报抑制的标签匹配**

创建静默时，可以创建一组*匹配标签*作为静默的一部分。这是一组关于标签的规则，标签必须匹配才能抑制警报。匹配标签由三部分组成：
+ **标签**：要匹配的标签名称。必须与警报的标签名称完全匹配。
+ **运算符**：用于将标签值与匹配标签值进行比较的运算符。可用的运算符有：
  + `=` 选择其值与提供的字符串完全匹配的标签。
  + `!=` 选择其值与提供的字符串不匹配的标签。
  + `=~` 选择其值与所提供字符串的正则表达式解释值相匹配的标签（提供的字符串被解释为正则表达式）。
  + `!=` 选择与提供的正则表达式不匹配的标签。
+ **值**：要与标签值匹配的值。可作为字符串或正则表达式进行匹配，具体取决于所选的运算符。

静默将在指定的结束日期结束，但您可以随时手动结束抑制。

**手动结束静默**

1. 在**警报**页面中，选择**静默**以查看现有静默列表。

1. 选择要结束的静默，然后选择**取消静默**。这将结束警报抑制。
**注意**  
取消静默会结束警报抑制，就像为当前时间设置的结束时间一样。已结束（自动或手动）的静默会保留并列出五天。您无法从列表中手动删除静默。

**创建指向静默创建表单的链接**

您可以创建一个指向静默创建表单的 URL，其中已填写详细信息。操作员可使用此表单在操作事件期间快速抑制警报。

创建指向静默表单的链接时，使用 `matchers` 查询参数来指定匹配的标签，使用 `comment` 查询参数来指定注释。`matchers` 参数需要使用表单中的一个或多个 `[label][operator][value]` 值（以逗号分隔）。

**示例 URL**

要链接到带有匹配标签 `severity=critical` 和 `cluster!~europe-.*` 以及注释 `Silencing critical EU alerts` 的静默表单，请使用如下 URL。*mygrafana*替换为您的 Grafana 实例的主机名。

```
https://mygrafana/alerting/silence/new?matchers=severity%3Dcritical%2Ccluster!~europe-*&comment=Silence%20critical%20EU%20alert
```

要链接到外部 Alertmanager 的新静默页面，请添加带有 Alertmanager 数据来源名称的 `alertmanager` 查询参数，比如 `alertmanager=myAlertmanagerdatasource`。

# 静音定时
<a name="v9-alerting-notification-muting"></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 数据来源的静音定时。

**静音定时与静默的对比**

下表重点说明了静音定时与静默之间的区别。


| 静音定时 | 静默 | 
| --- | --- | 
|  使用可重复发生的时间间隔定义。  |  有固定的开始时间和结束时间。  | 
|  创建后添加到通知策略中。  |  使用标签与警报进行匹配，以确定是否静默。  | 
|  可与 Grafana Alerting 和外部 Alertmanager 配合使用。  |  仅适用于外部 Alertmanager。  | 

**创建静音定时**

1. 在 Grafana 控制台的 Grafana 菜单中，选择**警报**（铃铛）图标，打开**警报**页面。

1. 选择**通知策略**。

1. 从 **Alertmanager** 下拉列表中，选择要编辑的 Alertmanager。

1. 在**静音定时**部分，选择**添加静音定时**按钮。

1. 选择要应用静音定时的时间间隔。

1. 选择**提交**，以创建静音定时。

**向通知策略添加静音定时**

1. 选择要向其添加静音定时的通知策略，然后选择**编辑**按钮。

1. 从**静音定时**下拉列表中，选择要添加到策略中的静音定时。

   选择**保存策略**按钮。

**时间间隔**

时间间隔是对时间范围的定义。如果警报在此时间间隔中启动，该警报将被抑制。使用 `:` 可支持范围（例如 `monday:thursday`）。静音定时可以包含多个时间间隔。时间间隔由多个字段组成（详细信息见下表），所有字段都必须匹配才能抑制警报。例如，如果指定一周中的天数为 `monday:friday`，时间范围为 8:00 到 9:00，则星期一至星期五的 8 到 9 点会抑制警报，但星期六的 8 到 9 点不会。
+ **时间范围**：一天中抑制通知的时间。包含**开始时间**和**结束时间**两个子字段。以时间 `14:30` 为例。时间以 24 小时制表示，采用 UTC 时区。
+ **星期几**：一周中的哪几天。可以是单日（例如 `monday`）、范围（例如 `monday:friday`），也可以是逗号分隔的多日列表（例如 `monday, tuesday, wednesday`）。
+ **月份**：要选择的月份。您可以用数字指定月份，也可以用完整的月份名称指定月份，例如 `1` 或 `january` 都是指定 1 月。您可以指定单个月份、月份范围，或以逗号分隔的月份列表。
+ **月中日期**：一个月中的哪几天。值范围为 `1` 到 `31`。负值可按相反顺序指定月中日期，因此 `-1` 代表月中最后一天。可以将月中日期指定为单日、日期范围，或用逗号分隔的多日列表。
+ **年份**：间隔的年份。例如 `2023:2025`。

这些元素中的每一个都可以是一个列表，并且必须满足元素中的至少一项才能匹配。因此，如果将年份设置为 `2023:2025, 2027`，那么 2023 年、2024 年、2025 年和 2027 年（2026 年除外）都满足条件。

如果字段留空，则任何时刻都将与该字段匹配。时刻必须与所有字段匹配，才能匹配完整的时间间隔。

如果要指定确切的持续时间，请指定该持续时间所需的所有选项。例如，如果您想为当月第一个星期一（3 月、6 月、9 月和 12 月）创建一个介于 12:00 和 24:00 UTC 之间的时间间隔，则您的时间间隔规范可以是：
+ 时间范围：
  + 开始时间：`12:00`
  + 结束时间：`24:00`
+ 星期几：`monday`
+ 月份：`3, 6, 9, 12`
+ 月中日期：`1:7`

# 按警报组查看和筛选
<a name="v9-alerting-viewfiltergroups"></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)。

警报组显示来自 Alertmanager 实例的分组警报。默认情况下，警报规则按通知策略中根策略的标签键进行分组。将常见警报规则分组到一个警报组中可以防止触发重复的警报规则。

您可以查看警报组，也可以筛选符合特定条件的警报规则。

**查看警报分组**

1. 在 Grafana 菜单中，单击**警报**（铃铛）图标以打开列出现有警报的“警报”页面。

1. 单击**警报组**，打开列出现有组的页面。

1. 从 **Alertmanager** 下拉菜单中，选择外部 Alertmanager 作为数据来源。

1. 从**自定义分组依据**下拉菜单中，选择标签组合，以查看默认分组以外的分组。这对于调试和验证通知策略分组非常有用。

如果警报不包含根策略分组或自定义分组中指定的标签，则会将警报添加到标题为 `No grouping` 的全包分组中。

**按标签筛选**
+ 在**搜索**中，输入现有标签，以查看与该标签匹配的警报。

  例如 `environment=production,region=~US|EU,severity!=warning`。

**按状态筛选**
+ 在**状态**中，从“活动”、“已抑制”或“未处理”状态中选择，以查看与所选状态匹配的警报。所有其他警报均已隐藏。

# 查看通知错误
<a name="v9-alerting-viewnotificationerrors"></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 支持此功能。

**查看通知错误**

1. 在 Grafana 菜单中，单击**警报**（铃铛）图标以打开列出现有警报的“警报”页面。

1. 选择**联系点**，以查看现有联系点列表。

   如果有任何联系点出现故障，屏幕右上角会显示一条消息，提醒用户注意存在错误以及错误数。

1. 单击某个联系点，查看该联系点的错误详情。

   如果将鼠标悬停在错误图标上，则会显示错误详情。

   如果联系点有多个集成，您会看到列出的每个集成的所有错误。

1. 在“运行状况”列中，检查通知的状态。

   可能是“正常”、“未尝试”或“错误”。