

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

# 使用您的 Grafana 工作区
<a name="AMG-working-with-Grafana-workspace"></a>

您可以在 Grafana 工作区中开展项目，以创建可视化和探索指标。针对您的指标设置和查询数据来源。在控制面板中创建面板，以查看指标。探索您的数据。创建针对指标的警报。

本节中的主题将介绍如何使用 Amazon Managed Grafana 工作区。

**注意**  
一些主题因工作区中 Grafana 的版本差异而有所不同。有关各版本的特定文档，请参阅 [使用 Grafana 版本 10](using-grafana-v10.md)、[使用 Grafana 版本 9](using-grafana-v9.md) 和 [使用 Grafana 版本 8](using-grafana-v8.md)。有关将工作区从一个版本升级到另一个版本的信息，请参阅 [更新工作区版本](AMG-workspace-version-update.md)。

**Topics**
+ [什么是 Grafana？](#what-is-grafana)
+ [连接到工作区](connect-to-workspace.md)
+ [用户、团队和权限](Grafana-administration-authorization.md)
+ [创建您的第一个控制面板](getting-started-grafanaui.md)
+ [使用插件扩展您的工作区](grafana-plugins.md)
+ [连接到数据来源](AMG-data-sources.md)
+ [使用 Grafana 版本 10](using-grafana-v10.md)
+ [使用 Grafana 版本 9](using-grafana-v9.md)
+ [使用 Grafana 版本 8](using-grafana-v8.md)
+ [更改首选项](change-your-grafana-preferences.md)
+ [收集信息以获得支持](support-bundles.md)
+ [经典控制面板警报](old-alerts-overview.md)

## 什么是 Grafana？
<a name="what-is-grafana"></a>

 Grafana 是一款开源的可视化和分析软件。无论您的指标存储在哪里，您都可以使用它实现对指标的查询、可视化、警报和探索。

 例如，如果您想查看应用程序的指标、日志和跟踪数据，您可以创建控制面板。如果您是公司的管理员，为多个团队管理 Grafana，则可能需要设置预置和身份验证。

 以下各节概述了您可以使用 Grafana 数据库做的事情，并提供了链接，让您了解更多信息。

### 探索指标和日志
<a name="explore-metrics-and-logs"></a>

 通过一次性或临时查询以及动态向下钻取来探索数据。您可以拆分视图，并排比较不同的时间范围、查询和数据来源。

 有关更多信息，请参阅 [Grafana 10 中的 Explore](v10-explore.md)。

### 警报
<a name="intro-alerts"></a>

 如果使用 Grafana Alerting，可以通过不同的警报通知器发送警报，包括以下：
+ Amazon SNS
+ PagerDuty
+ VictorOps
+ OpsGenie
+ Slack

有关更多信息，请参阅 [Grafana 10 版本中的警报](v10-alerts.md)。

### Annotations
<a name="intro-annotations"></a>

 使用来自不同数据来源的丰富事件可为图表添加注释。将鼠标悬停在事件上，可以查看完整的事件元数据和标签。

 此功能在 Grafana 中以图表标记的形式显示，有助于在出现问题时关联数据。您可以在选择图表时按下 **Ctrl** 键，然后输入一些文本，手动创建注释。或者，您也可以从任何数据来源获取数据。

 有关更多信息，请参阅 [对可视化进行注释](v10-dash-annotations.md)。

### 控制面板变量
<a name="intro-dashboard-variables"></a>

使用模板变量创建的控制面板可重复用于多种不同的应用场景。使用这些模板，值不会被硬编码。这意味着您可以将控制面板用于多台服务器。例如，如果您有一台生产服务器和一台测试服务器，可以在这两台服务器上使用相同的控制面板。

模板化可帮助您向下钻取数据。例如，您可以从所有数据向下钻取到北美数据，再向下钻取到德克萨斯数据，甚至更详细的数据。您还可以在组织内跨团队共享这些控制面板。如果您为热门数据来源创建了出色的控制面板模板，您也可以将其贡献给整个社区，供大家定制和使用。

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

# 连接到工作区
<a name="connect-to-workspace"></a>

在使用 Amazon Managed Grafana 工作区之前，您必须通过您设置的身份提供者登录，以连接到该工作区。如果您尚未通过某个身份提供者设置身份验证方法，请参阅 [在 Amazon Managed Grafana 工作区中对用户进行身份验证](authentication-in-AMG.md)，了解更多信息。

**注意**  
如果您尝试以编程方式连接到工作区，则必须使用 API 令牌。有关更多信息，请参阅 [使用令牌进行身份验证](authenticating-grafana-apis.md)。

**要登录到 Grafana 工作区**

1. 打开位于的亚马逊托管 Grafana 控制台，然后[https://console.aws.amazon.com/grafana/](https://console.aws.amazon.com/grafana/home/)登录。

1. 在页面左上角，选择菜单图标，然后选择**所有工作区**。

1. 选择要登录的工作区名称。

1. 在工作区详细信息页面中，选择 **Grafana 工作区 URL** 下显示的 URL。

1. 选择工作区 URL 会将您带到 Grafana 工作区控制台的登录页面。选择 “**登录方式**” AWS IAM Identity Center，然后输入电子邮件地址和密码。
**注意**  
注意如果您通过身份提供者设置了身份验证，登录按钮会有不同的文本和要求。

# 用户、团队和权限
<a name="Grafana-administration-authorization"></a>

Amazon Managed Grafana 中的权限可跨 Amazon Managed Grafana 控制台管理，也可直接在工作区内进行管理。
+ **用户**：用户[身份验证](authentication-in-AMG.md)在 IAM Identity Center 中进行，或在通过 Amazon Managed Grafana 控制台中的 SAML 设置的身份提供商中进行。
+ **角色访问权限**：您可以使用 Amazon Managed Grafana 控制台，向您的用户或组授予包含`User`、`Editor`或`Admin`角色的[访问权限](AMG-manage-users-and-groups-AMG.md)，从而向他们授予工作区的默认权限。
+ **组或团队**：您可以通过两种方式来创建用户组授予访问权限。您可以在您的身份提供商（或 IAM Identity Center）中创建组。然后，您可以在 Amazon Managed Grafana 控制台中向这些组授予访问权限，方法与用于用户的方法相同。或者您可以在 Grafana 工作区中创建[团队](Grafana-teams.md)，为他们提供您想要的角色。
+ **特定权限**：对于特定控制面板、文件夹或数据来源，如果要[覆盖按角色授予的权限](Grafana-permissions.md)，则可以移除默认权限，并将权限分配给特定的用户或团队。这是在 Grafana 工作区中完成的。

本节介绍如何在 Grafana 工作区中执行权限管理。

**Topics**
+ [Users](Grafana-users.md)
+ [用户角色](Grafana-user-roles.md)
+ [管理团队](Grafana-teams.md)
+ [使用权限](Grafana-permissions.md)

# Users
<a name="Grafana-users"></a>

在 Amazon Managed Grafana 中，您无需在 Grafana 工作区中添加用户。相反，您可以使用 IAM Identity Center 或身份提供商对用户进行身份验证，然后在 Amazon Managed Grafana 控制台中向用户授予访问 Amazon Managed Grafana 工作区的权限。有关更多信息，请参阅 [管理用户和组对 Amazon Managed Grafana 工作区的访问权限](AMG-manage-users-and-groups-AMG.md)。

# 用户角色
<a name="Grafana-user-roles"></a>

在 Amazon Managed Grafana 中，每位能够使用 Amazon Managed Grafana 工作区的用户都被分配到 Amazon Managed Grafana 控制台中的[三个](AMG-manage-users-and-groups-AMG.md)角色之一。
+ **管理员角色**：具有“管理员”角色的用户可以执行以下操作：
  + 可以添加、编辑和删除数据来源。
  + 可以添加和编辑用户和团队。
  + 可以添加、编辑和删除包含控制面板的文件夹。
  + 可以执行编辑者角色允许的所有操作。
+ **编辑者角色**：具有“编辑者”角色的用户可以执行以下操作：
  + 可以在他们有权访问的控制面板中查看、添加和编辑控制面板、面板和警报规则。可以在特定文件夹和控制面板上禁用此功能。
  + 可以创建、更新或删除播放列表。
  + 可以访问 Explore。
  + 可以添加、编辑和删除通知渠道。
  + 无法添加、编辑或删除数据来源。
  + 可以执行查看者角色允许的所有操作。
+ **查看者角色**：具有“查看者”角色的用户可以执行以下操作：
  + 可以查看他们有权访问的任何控制面板。可以在特定文件夹和控制面板上禁用此功能。
  + 无法创建、更新或删除播放列表。
  + 无法访问 Explore。
  + 无法添加、编辑和删除通知渠道。
  + 无法添加、编辑或删除数据来源。
  + 无法添加、编辑或删除控制面板或面板。
  + 无法管理其他用户或团队。

Amazon Managed Grafana 不支持从 Grafana 工作区进行用户分配和用户访问管理。如何管理用户和组访问权限取决于您是使用 IAM Identity Center 还是 SAML 进行身份验证：
+ 如果您的工作空间使用 IAM 身份中心进行身份验证，则可以使用 Amazon Managed Grafana 控制台 APIs 或分配角色。有关更多信息，请参阅 [管理用户和组对 Amazon Managed Grafana 工作区的访问权限](AMG-manage-users-and-groups-AMG.md)。
+ 如果您的工作区使用 SAML 进行身份验证，则用户角色只能由断言属性定义。有关更多信息，请参阅 [断言映射](authentication-in-AMG-SAML.md#AMG-SAML-Assertion-Mapping)。

# 管理团队
<a name="Grafana-teams"></a>

使用*团队*可以同时向一组用户授予权限。您还可以设置团队同步，以在 Grafana 工作区和授权提供商之间自动同步团队成员资格。

## 创建或移除团队
<a name="create-remove-team"></a>

创建团队以管理组中的用户。

**要创建团队**

1. 在边栏中，选择**配置**（齿轮）图标，然后选择**团队**。

1. 选择**新建团队**。

1. 对于**名称**，输入新团队的名称，然后选择**创建**。

**要移除团队**

1. 在边栏中，选择**配置**（齿轮）图标，然后选择**团队**。

1. 在团队名称的右侧，选择 **X**。

1. 要进行确认，请选择**删除**。

## 从团队添加或移除用户
<a name="team-add-remove-user"></a>

使用这些步骤将用户添加到团队或将其从团队中移除。

**要将用户添加到团队**

1. 在边栏中，选择**配置**（齿轮）图标，然后选择**团队**。

1. 选择要向其添加用户的团队。

1. 选择**添加成员**。

1. 在**添加团队成员**框中，选择要添加到团队的用户，然后选择**添加到团队**。

**要从团队移除用户**

1. 在边栏中，选择**配置**（齿轮）图标，然后选择**团队**。

1. 选择要从其中移除用户的团队。

1. 在用户名的右侧，选择 **X**。

1. 要进行确认，请选择**删除**。

## 使用团队同步
<a name="Grafana-team-sync"></a>

通过*团队同步*，您可以在 Grafana 中设置提供商的组和团队之间的同步。目前支持的授权提供商是 IAM Identity Center 和 SAML。

**要让 Grafana 团队与外部组同步。**

1. 在 Grafana 控制台中，导航到**配置**、**团队**。

1. 要与 IAM Identity Center 组同步，请输入 IAM Identity Center 组 ID。要与来自基于 SAML 的身份提供商的组同步，请在 Amazon Managed Grafana 工作区配置页面的 SAML 配置部分中的**断言属性组**字段中输入属性名称值。

1. 选择**添加组**。

# 使用权限
<a name="Grafana-permissions"></a>

您可以在 Amazon Managed Grafana 的 Grafana 工作区中执行的操作由与您的用户关联的*权限*定义。

Amazon Managed Grafana 使用三种权限：
+ 以 Grafana 管理员身份授予的权限
+ 与您所在团队中的成员资格相关的权限
+ 授予特定文件夹或控制面板的权限

可以根据您的管理员状态、分配给用户的控制面板或文件夹权限以及数据来源权限来向您授予权限。

## 控制面板和文件夹权限概述
<a name="dashboard-and-folder-permissions-overview"></a>

 通过使用控制面板和文件夹权限，您可以移除编辑者和查看者的基于角色的默认权限。然后，您可以将权限分配给特定的用户和团队。有关更多信息，请参阅 [控制面板和文件夹权限](dashboard-and-folder-permissions.md)。

## 数据来源权限概述
<a name="data-source-permissions-overview"></a>

默认情况下，任何用户都可以查询数据来源。例如，具有 `Viewer` 角色的用户可以向数据来源发出任何可能的查询，而不仅仅是他们有权访问的控制面板上存在的查询。

使用数据来源权限，您可以更改数据来源的默认权限，并可对查询权限进行限制以仅供特定的**用户**和**团队**使用。有关更多信息，请参阅 [数据来源权限](data-source-permissions.md)。

# 控制面板和文件夹权限
<a name="dashboard-and-folder-permissions"></a>

对于控制面板和控制面板文件夹，您可以使用**权限**页面移除**编辑者**和**查看者**基于角色的默认权限。在此页面，您可以为特定**用户**和**团队**添加和分配权限。

Amazon Managed Grafana 提供以下权限级别。权限因工作区支持的 Grafana 版本而异。

**对于支持版本 8 的工作区：**
+ `Admin`：可以编辑和创建控制面板以及编辑权限。还可以添加、编辑或删除文件夹。
+ `Edit`：可以编辑和创建控制面板。**不能**编辑文件夹或控制面板权限，也不能添加、编辑或删除文件夹。
+ `View`：只能查看现有的控制面板和文件夹。

**对于支持版本 9 及以上的工作区：**
+ `Admin`：可以创建、编辑或删除控制面板。可以添加、编辑或删除文件夹，也可以在文件夹中创建控制面板和子文件夹。管理员还可以更改控制面板和文件夹权限。
+ `Edit`：可以创建、编辑或删除控制面板。可以编辑或删除文件夹，也可以在文件夹中创建控制面板和子文件夹。编辑者**不能**更改文件夹或控制面板权限。
+ `View`：只能查看现有的控制面板和文件夹。

## 授予文件夹权限
<a name="grant-folder-permissions"></a>

**要授予文件夹权限**

1. 在侧边栏中，将鼠标悬停在**控制面板**（方形）图标上，然后选择**管理**。

1. 将鼠标悬停在文件夹上，然后选择**转到文件夹**。

1. 在**权限**选项卡中，请选择**添加权限**。

1. 在**添加权限**对话框中，选择**用户**、**团队**，或其中一个角色选项。如果您的工作区使用 Grafana 版本 10 或更新版本，请选择**用户、团队、服务账户或角色**。

1. 在第二个框中，选择要向其添加权限的用户、团队、服务账户或角色。如果您的工作区使用 Grafana 版本 9 或更早版本，并且您在上一步中选择了角色选项，则跳过此步骤。

1. 在第三个框中，选择要添加的权限。

1. 选择**保存**。

## 授予控制面板权限
<a name="grant-dashboard-permissions"></a>

**要授予控制面板权限**

1. 在控制面板的右上角，选择齿轮图标，进入**控制面板设置**。

1. 在**权限**选项卡中，请选择**添加权限**。

1. 在**添加权限**对话框中，选择**用户**、**团队**，或其中一个角色选项。如果您的工作区使用 Grafana 版本 10 或更新版本，请选择**用户、团队、服务账户或角色**。

1. 在第二个框中，选择要向其添加权限的用户、团队、服务账户或角色。如果您的工作区使用 Grafana 版本 9 或更早版本，并且您在上一步中选择了角色选项，则跳过此步骤。

1. 在第三个框中，选择要添加的权限。

1. 选择**保存**。

## 限制访问
<a name="restricting-access"></a>

 最高权限始终优先。
+  您不能覆盖具有 `Admin` 角色用户的权限。管理员始终可以访问所有内容。
+  如果存在权限级别更高的通用规则，那么权限级别较低的更具体权限将不会产生任何效果。您需要移除或降低该通用规则的权限级别。

## Amazon Managed Grafana 如何解析多个权限：示例
<a name="how-grafana-resolves-multiple-permissions---examples"></a>

以下示例展示了如何解析多个权限。

### 示例 1：`user1` 具有 `Editor` 角色
<a name="example-1-user1-has-the-editor-role"></a>

 控制面板的权限：
+  拥有 `Editor` 角色的每个人都可以编辑。
+  `user1` 可以查看。

 结果：`user1` 拥有编辑权限，因为最高权限始终优先。

### 示例 2：`user1` 具有查看者角色，并且是 `team1` 中的成员
<a name="example-2-user1-has-the-viewer-role-and-is-a-member-of-team1"></a>

 控制面板的权限：
+  拥有 `Viewer` 角色的每个人都可以查看。
+  `user1` 具有 `Editor` 角色，可以编辑。
+  `team1` 具有 `Admin` 角色。

 结果：`user1` 拥有管理员权限，因为最高权限始终优先。

### 示例 3：`user1` 拥有不同级别的多个权限
<a name="example-3"></a>

 控制面板的权限：
+  `user1` 具有 `Admin` 角色（继承自父文件夹）。
+  `user1` 具有 `Editor` 角色，可以编辑。

 结果：无法将权限覆盖为更低的级别。`user1` 拥有管理员权限，因为最高权限始终优先。

## Summary
<a name="summary"></a>
+  **查看**：只能查看现有的控制面板或文件夹。
+  如果存在权限级别更高的通用规则，那么权限级别较低的更具体权限将不会产生任何效果。

# 数据来源权限
<a name="data-source-permissions"></a>

默认情况下，任何用户都可以查询数据来源。例如，具有 `Viewer` 角色的用户可以向数据来源发出任何可能的查询，而不仅仅是他们有权访问的控制面板上存在的查询。

您可以使用数据来源权限来限制用户查询数据来源的访问权限。对于每个数据来源都有一个权限页面，您可以在其中启用或限制对特定**用户**和**团队**的查询权限。

## 启用数据来源权限
<a name="enable-data-source-permissions"></a>

默认情况下，启用数据来源的权限后，您可以将该数据来源的管理员和查询权限限制为管理员用户。您可以有选择地为特定用户和团队添加访问权限。

**要为数据来源启用权限**

1. 导航到**配置**、**数据来源**。对于支持 Grafana 版本 10 的工作区，请导航**连接**、**数据来源**。

1. 选择要启用其权限的数据来源。

1. 在**权限**选项卡上，选择**启用**。

**警告**  
如果您启用默认数据来源的权限，则权限中未列出的用户将无法调用查询。使用默认数据来源的面板将为这些用户返回 `Access denied to data source` 错误。

## 允许用户和团队查询数据来源
<a name="allow-users-and-teams-to-query-a-data-source"></a>

启用数据来源的权限后，默认情况下，只有管理员才能访问该数据来源。您可以为用户或团队分配查询权限。查询权限将允许查询数据来源的访问权限。

**要为用户和团队分配查询权限**

1. 导航到**配置**、**数据来源**。对于支持 Grafana 版本 10 的工作区，请导航**连接**、**数据来源**。

1. 选择要为其分配查询权限的数据来源。

1. 在**权限**选项卡中，请选择**添加权限**。

1. 选择**团队**或**用户**。对于支持 Grafana 版本 10 或更高版本的工作区，您也可以选择**服务账户**或**角色**。

1. 选择要向其授予查询访问权限的团队、用户、服务账户或角色，然后选择**保存**。

## 禁用数据来源权限
<a name="disable-data-source-permissions"></a>

如果您已为数据来源启用权限并希望将数据来源权限恢复为默认值，请按照以下步骤操作。

**注意**  
为数据来源创建的*所有*现有权限都将被删除。

**要禁用数据来源的权限**

1. 导航到**配置**、**数据来源**。对于支持 Grafana 版本 10 的工作区，请导航**连接**、**数据来源**。

1. 选择要禁用其权限的数据来源。

1. 在**权限**选项卡上，选择**禁用权限**。

# 创建您的第一个控制面板
<a name="getting-started-grafanaui"></a>

## 创建控制面板
<a name="create-a-dashboard"></a>

按照以下步骤，在 Grafana 控制台中创建控制面板。

**要创建您的第一个控制面板**

1. 选择左侧面板上的 \$1 图标，选择**创建控制面板**，然后选择**添加新控制面板**。

1. 在 “**新建 Dashboard/Edit 面板”** 视图中，选择 “**查询**” 选项卡。

1. 通过选择要查询的数据来源配置查询。例如，如果您将 **TestDB** 添加为数据来源，则会生成一个名为 Random Walk 控制面板的示例控制面板。

### 时间序列简介
<a name="introduction-to-time-series"></a>

 想象一下，您想知道外面的温度在一天中是如何变化的。您要每小时检查一次温度计，记下时间和当前温度。过一会之后，您就会得到与以下内容类似的数据。


|  时间  |  值  | 
| --- | --- | 
|  09:00  |  24°C  | 
|  10:00  |  26°C  | 
|  11:00  |  27°C  | 

 诸如此类的温度数据是*时间序列*的一个示例，即按时间排序的测量序列。表中的每一行都代表特定时间的一个单个测量值。

 当您想识别单个测量值时，表很有用，但它们可能会让人难以看到大局。时间序列更常见的可视化是*图形*，它将沿时间轴放置每个测量值。诸如图表之类的视觉表示可以更轻松地发现原本难以发现的数据模式和数据特征。

 其他时间序列示例包括：
+  CPU 和内存使用量 
+  传感器数据 
+  股市指数 

 虽然这些示例中的每一个示例都是一系列按时间顺序排列的测量值，但它们还具有其他共同的特性：
+  新数据以固定的间隔添加在末尾，例如，在 09:00、10:00、11:00 等时间每小时执行一次操作。
+  测量值在添加后很少更新。例如，昨天的温度不会更改。

 时间序列的功能很强大。它们允许您在任何时间点分析系统的状态，从而帮助您了解过去。时间序列可以告诉您，服务器在可用磁盘空间降至零后不久就崩溃了。

 时间序列还可以通过发现数据中的趋势来帮助您预测未来。例如，如果在过去的几个月中，注册用户数量每月增长 4％，则可以预测到年底您的用户群将有多大。

 有些时间序列的模式会在已知时段内重复发生。例如，白天的温度通常较高，然后在晚上降低。通过识别这些周期性或*季节性*时间序列，您可以对下一个周期做出自信的预测。如果您知道系统负载在每天 18:00 左右达到峰值，则可以在之前添加更多计算机。

#### 聚合时间序列
<a name="aggregating-time-series"></a>

 根据您要测量的内容，数据可能会有很大差异。如果您想与长于两次测量之间间隔的时间段进行比较，该怎么办？ 如果您每小时测量一次温度，每天最终会得到 24 个数据点。要比较历年 8 月份的温度，必须将 31 乘以 24 个数据点合并为一组。

 合并一组测量值的操作称为*聚合*。有以下几种方法可以聚合时间序列数据。下面是一些常见的方法：
+  **平均值**返回所有值的总和除以值的总数。
+  **最小值**和**最大值**返回集合中的最小值和最大值。
+  **总和**返回集合中所有值的总和 
+  **计数**返回集合中值的数量。

 例如，通过聚合一个月内的数据，可以确定 2017 年 8 月的平均温度比前一年温暖。如果您想看看哪个月份的温度最高，可以比较每个月的最高温度。

 如何聚合时间序列数据是一个重要的决定，这取决于您想用数据讲述怎样的故事。通常会使用不同的聚合以不同的方式可视化相同的时间序列数据。

#### 时间序列和监控
<a name="time-series-and-monitoring"></a>

 在 IT 行业中，收集时间序列数据通常是为了监控基础架构、硬件或应用程序事件之类的内容。机器生成的时间序列数据通常以较短的时间间隔收集，因此您可以在任何意外变化发生后立即做出反应。数据积累速度很快，因此拥有一种高效存储和查询数据的方法至关重要。因此，针对时间序列数据进行优化的数据库近年来越来越受欢迎。

##### 时间序列数据库
<a name="time-series-databases"></a>

 时间序列数据库（TSDB）是专门为时间序列数据设计的数据库。虽然可以使用任何常规数据库来存储测量值，但 TSDB 提供了一些有用的优化。

 Mod TSDBs ern 利用了这样一个事实，即测量值只会被追加，很少更新或删除。例如，每次测量的时间戳随时间变化不大，这会导致存储冗余数据。

 以下示例显示 Unix 时间戳序列。

```
1572524345, 1572524375, 1572524404, 1572524434, 1572524464
```

 从这些时间戳来看，它们都是从 `1572524` 开始，导致磁盘空间的使用不当。相反，您可以将每个后续时间戳存储为与第一个时间戳的差异或*增量*，如以下示例所示。

```
1572524345, +30, +29, +30, +30
```

您甚至可以通过计算这些增量的增量来更进一步优化，如以下示例所示。

```
1572524345, +30, -1, +1, +0
```

 如果定期进行测量，则大多数测量值 delta-of-deltas将为 0。由于进行了这样的优化，与其他数据库相比，占 TSDBs 用的空间要少得多。

 TSDB 的另一个特点是能够使用*标签*筛选测量值。每个数据点都标有一个标签，该标签添加了上下文信息，例如测量发生的位置。

 Grafana 支持 TSDBs 以下内容：
+  [Graphite](https://graphiteapp.org/) 
+  [InfluxDB](https://www.influxdata.com/products/influxdb-overview/) 
+  [Prometheus](https://prometheus.io/) 

  ```
  weather,location=us-midwest temperature=82 1465839830100400200
    |    -------------------- --------------  |
    |             |             |             |
    |             |             |             |
  +-----------+--------+-+---------+-+---------+
  |measurement|,tag_set| |field_set| |timestamp|
  +-----------+--------+-+---------+-+---------+
  ```

##### 收集时间序列数据
<a name="collecting-time-series-data"></a>

 现在您已经有地方可以存储您的时间序列，那么实际上是如何收集测量值的呢？ 要收集时间序列数据，通常需要在要监控的设备、计算机或实例上安装*收集器*。有些收集器是在考虑特定数据库的情况下开发的，有些则支持不同的输出目的地。

 下面是一些收集器的示例：
+  [collectd](https://collectd.org/) 
+  [statsd](https://github.com/statsd/statsd) 
+  [Prometheus exporters](https://prometheus.io/docs/instrumenting/exporters/) 
+  [Telegraf](https://github.com/influxdata/telegraf) 

 收集器要么将数据*推送*到数据库，要么让数据库从收集器中*提取*数据。每种方法都有自己的一些优缺点。


|   |  优点  |  缺点  | 
| --- | --- | --- | 
|  Push（推送）  |  更容易将数据复制到多个目标位置。 |  TSDB 无法控制发送多少数据。 | 
|  拉取  |  更好地控制数据摄取量和数据真实性。 |  防火墙或负载均衡器可能会使访问代理变得困难。 VPNs | 

 由于将每个测量值都写入数据库会导致效率低下，因此收集器会预先聚合数据并以定期间隔写入 TSDB。

### 时间序列维度
<a name="time-series-dimensions"></a>

 对于时间序列数据，数据通常是一组多个时间序列。许多 Grafana 数据来源都支持这种类型的数据。

 常见的情况是发出单个测量查询，并使用一个或多个附加属性作为维度。例如，您可以查询温度测量值和位置属性。在这种情况下，将从该单个查询返回多个序列，并且每个序列都具有唯一位置作为维度。

 要识别一组时间序列中的唯一序列，Grafana 在*标签*中存储维度。

#### 标签
<a name="labels"></a>

 Grafana 中的每个时间序列都有可选的标签。标签是一组用于标识维度的键值对。示例标签为 `{location=us}` 或 `{country=us,state=ma,city=boston}`。在一组时间序列中，每个序列都通过名称和标签组合进行标识。例如 `temperature {country=us,state=ma,city=boston}`。

 时间序列数据的不同来源具有本机存储的维度，或者具有能将数据提取到维度的常见存储模式。

 通常， TSDBs 本机支持维度。Prometheus 在*标签*中存储维度。在 Graphite 或 OpenTSDB 之 TSDBs 类中，改用*标签*这个词。

 在诸如 SQL 之类的表数据库中，这些维度通常是查询的 `GROUP BY` 参数。

#### 表格式的多个维度
<a name="multiple-dimensions-in-table-format"></a>

 在返回表响应的 SQL 或类似 SQL 的数据库中，其他维度通常是查询响应表中的列。

##### 单维度
<a name="single-dimension"></a>

 例如，请考虑类似于以下示例的查询：

```
SELECT BUCKET(StartTime, 1h), AVG(Temperature) AS Temp, Location FROM T
  GROUP BY BUCKET(StartTime, 1h), Location
  ORDER BY time asc
```

 该查询可能会返回一个包含三列的表。


|  StartTime  |  临时文件  |  位置  | 
| --- | --- | --- | 
|  09:00  |  24  |  LGA  | 
|  09:00  |  20  |  BOS  | 
|  10:00  |  26  |  LGA  | 
|  10:00  |  22  |  BOS  | 

 表格式为*长*格式的时间序列，也称为*高*。它有重复的时间戳，并在“位置”中重复值。在这种情况下，集合中的两个时间序列将被标识为 `Temp {Location=LGA}` 和 `Temp {Location=BOS}`。

 使用以下维度从集合中提取单个时间序列：
+ 时间类型列 `StartTime` 作为时间序列的时间索引
+ 以数字键入的列 `Temp` 作为序列名称
+ 用于生成标签的字符串类型 `Location` 列的名称和值，例如 location=LGA

##### 多个维度
<a name="multiple-dimensions"></a>

 如果更新了查询以按多个字符串列的格式进行选择和分组（例如，`GROUP BY BUCKET(StartTime, 1h), Location, Sensor`），则会添加一个额外的维度。


|  StartTime  |  临时文件  |  位置  |  传感器  | 
| --- | --- | --- | --- | 
|  09:00  |  24  |  LGA  |  A  | 
|  09:00  |  24.1  |  LGA  |  B  | 
|  09:00  |  20  |  BOS  |  A  | 
|  09:00  |  20.2  |  BOS  |  B  | 
|  10:00  |  26  |  LGA  |  A  | 
|  10:00  |  26.1  |  LGA  |  B  | 
|  10:00  |  22  |  BOS  |  A  | 
|  10:00  |  22.2  |  BOS  |  B  | 

 在本例中，代表维度的标签有两个键，这两个键基于两个字符串类型的列 `Location` 和 `Sensor`。数据将产生四个序列：
+ `Temp {Location=LGA,Sensor=A}`
+ `Temp {Location=LGA,Sensor=B}`
+ `Temp {Location=BOS,Sensor=A}`
+ `Temp {Location=BOS,Sensor=B}`

**注意**  
 **注意：**在 Grafana 中，不会以映射到多个警报的方式支持多个维度。相反，它们被视为单个警报的多个条件。

##### 多个值
<a name="multiple-values"></a>

 对于类似 SQL 的数据来源，可以选择多个数值列，无论是否使用其他字符串列作为维度；例如，`AVG(Temperature) AS AvgTemp, MAX(Temperature) AS MaxTemp`。如果与多个维度相结合，则可以生成多个序列。目前，选择多个值的目的在于进行可视化。

### 直方图和热图简介
<a name="introduction-to-histograms-and-heatmaps"></a>

 直方图是数字数据分布的图形表示。它将值分组为存储桶（有时也称为数据桶）。然后，它会计算每个存储桶中有多少个值。

 直方图不绘制实际值，而是绘制存储桶。每个条形代表一个存储桶，条形高度表示落入该存储桶间隔内的值的频率（例如计数）。

 直方图仅查看特定时间范围内的*值分布*。直方图的问题在于，您看不到分布随时间推移而出现的任何趋势或变化。这就是热图变得有用的地方。

#### 热图
<a name="heatmaps"></a>

 *热图*就像一段时间内的直方图，其中每个时间片都代表自己的直方图。它不使用条形高度来表示频率，而是使用单元格，对单元格的着色与存储桶中值的数量成比。

#### 预存入存储桶的数据
<a name="pre-bucketed-data"></a>

 许多数据来源都支持随时间变化的直方图，包括以下内容：
+ Amazon OpenSearch 服务（使用直方图存储桶聚合）
+ Prometheus（[直方图](https://prometheus.io/docs/concepts/metric_types/#histogram)指标类型和*格式化为*选项设置为**热图**）

通常，您可以使用任何数据来源，这些数据来源返回名称表示存储桶绑定的序列，或者返回按绑定升序排序的序列。

#### 原始数据与聚合数据
<a name="raw-data-vs-aggregated"></a>

 如果您将热图与常规时间序列数据（未预先放入存储桶）一起使用，请务必记住，您的数据通常由时间序列后端进行聚合。大多数时间序列查询不返回原始样本数据。相反，它们包括按时间间隔或 maxDataPoints 限制分组以及聚合函数（通常是平均值）。

 这取决于您查询的时间范围。重要的一点是，Grafana 执行的直方图分桶可能是在已经聚合和平均的数据上进行的。要获得更准确的热图，最好在指标收集期间进行分桶 OpenSearch，或者将数据存储在其他支持对原始数据进行直方图存储桶的数据源中。

 如果您在查询中按时间移除或降低分组（或提高 maxDataPoints）以返回更多数据点，则您的热图会更加准确。但这也会给您的 CPU 和内存带来沉重的负担。如果数据点的数量变得异常地大，则可能会导致停顿和崩溃。

# 使用插件扩展您的工作区
<a name="grafana-plugins"></a>

*Grafana 插件*增加的功能使用户能够连接到新数据来源或向工作区添加可视化或其他功能。基本上，插件有三种类型：
+ **面板插件**：面板插件增加了新的可视化类型，可在控制面板中使用。它们定义了数据在前端的呈现。
+ **数据来源插件**：数据来源插件与外部数据来源通信，并以 Grafana 可以使用的格式返回数据。
+ **应用程序插件**：应用程序，也称为应用程序插件。其中包括捆绑数据来源和面板，可以在您的 Grafana 工作区中提供整体一致的体验。

**注意**  
当 Amazon 确定某个插件经常出现故障或未被维护时，可能会将该插件从控制台的可用插件列表中移除。

对于支持版本 9 或更高版本的 Amazon Managed Grafana 工作区，您可以启用插件管理。这允许工作区管理员从*插件目录*安装或卸载插件。

## 使用插件目录查找插件
<a name="plugin-catalog"></a>

您的 Amazon Managed Grafana 工作区包括一个显示所有已安装插件的页面，以及可在工作区中安装的所有插件的列表。此页面是*插件目录*。除了默认安装的插件外，您还可以再安装多达 50 个插件。

可用的插件大致分为以下类别：
+ **AWS 数据源** — 这是一款由 Amazon Managed Grafana 提供的应用程序插件，用于轻松 AWS 发现您账户中的资源。此类插件是默认安装的。有关更多信息，请参阅 [使用 AWS 数据源插件查找 AWS 数据](aws-datasources-plugin.md)。
+ **核心插件**：这些插件默认在 Grafana 中提供。它们包括流行的数据来源和面板可视化。它们在插件目录中被标记为**核心**。它们是默认安装的，无法移除。
+ **Enterprise 插件**：这些插件可用于拥有 Enterprise 许可证的 Grafana 工作区。默认情况下，未安装这些插件。它们在插件目录中被标记为 **Enterprise**。只有拥有有效的 Enterprise 许可证才能安装这些插件。有关如何将工作区升级为 Enterprise 许可证的详细信息，请参阅 [管理对 Amazon Managed Grafana 企业插件的访问权限](AMG-workspace-manage-enterprise.md)。
+ **社区插件** — 这些插件来自各种来源，包括 Grafana Labs 等，为 Grafana 工作空间提供。 AWS在支持版本 9 或更高版本的 Grafana 工作区中，默认情况下不会安装这些插件（早期的工作区会自动安装其中的一些插件）。这些插件通常是开源插件。您可以安装或移除这些插件。
**注意**  
是否使用社区插件由您自行决定。作为您和 AWS之间的[责任共担模式](security.md)的一部分，对于这些第三方插件，您应该了解您在工作区中具体安装了什么。您还要对满足您的安全需求的插件负责。

**插件支持**

插件有多种来源，对它们的支持也各不相同。
+ **AWS 数据源插件**-此插件由提供并由支持 AWS。
+ **企业插件** — 两者 AWS 和 Grafana Labs 都支持企业插件——您可以通过任一支持团队提交问题。
+ **核心插件** — Amazon Managed Grafana 支持 AWS 或 Grafana Labs 提供的核心插件和其他插件。 AWS您可以在中提交问题以修复错误或 GitHub 进行改进，也可以通过或 G AWS rafana Labs 创建工作单。
+ **社区插件** — 通常 GitHub通过议题 AWS 或其他论坛支持不是由 Grafana Labs 创建的社区插件。在这些情况下，支持信息包含在插件目录中插件的详细信息中。

[您也可以通过[亚马逊托管 Grafana 或 Grafana](https://github.com/aws/amazon-managed-grafana-roadmap/issues) 的 GitHub 论坛提交插件问题。](https://github.com/grafana/grafana/issues)

**插件版本**

大多数插件都会定期更新。Amazon Managed Grafana 工作区中的插件目录显示了插件的最新版本，您可以选择要安装的版本。当插件的过时版本存在已知安全问题时，过时的版本将被移除而不再可用。

您也可以[更新](#update-plugin)已安装的插件。

**注意**  
有时，会提供新版本的插件来修复已安装插件中的安全问题。对于严重的问题，Amazon Managed Grafana 可能会自动将工作区中的插件更新到包含修复的版本。

## 使用插件目录管理插件
<a name="manage-plugins"></a>

您可以从插件目录中管理 Amazon Managed Grafana 工作区的插件。您只能在工作区内安装插件目录中列出的插件。

以下内容描述了使用插件目录的先决条件以及如何查找插件目录。

**先决条件**
+ 您必须拥有支持版本 9 的 [Amazon Managed Grafana](AMG-create-workspace.md) 工作区，并拥有可以登录该工作区的账户。
+ 工作区必须[已启用插件管理](AMG-configure-workspace.md)。
+ 您的用户账户必须是 [Amazon Managed Grafana 工作区的管理员](Grafana-user-roles.md)。
+ 要安装和使用 Enterprise 插件，必须先[升级到 Enterprise 许可证](AMG-workspace-manage-enterprise.md)。

**要查看插件目录**

1. 登录您的 Amazon Managed Grafana 工作区。

1. 从左侧菜单中选择**管理**，然后选择**插件**。此操作将打开插件目录。

1. 默认情况下，该插件目录会列出已安装的插件。要查看所有可用的插件，请在目录顶部的**状态**筛选器下选择**全部**。已安装的插件包含一个标有**已安装**的标签。

## 安装或移除插件
<a name="install-plugin"></a>

**注意**  
您必须满足前一节中的先决条件，否则您将无权修改插件。

**安装或移除 Grafana 插件**

1. 转到插件目录。

1. 默认情况下，该插件目录仅列出已安装的插件。要查看所有可用的插件，请在目录顶部的**状态**筛选器下选择**全部**。已安装的插件包含一个标有**已安装**的标签。

1. 选择要安装或卸载的插件。例如，如果要移除 *Datadog* 数据来源，请选择 **Datadog** 插件。

1. 在插件详细信息页面上，选择卸载或安装选项。

1. 安装插件后，可能需要几分钟的时间才能将更改同步到工作区的所有部分。最好等待几分钟后再使用新插件。

**注意**  
您可以在一个工作区中安装 50 个插件（除了默认的核心插件之外）。

## 更新插件
<a name="update-plugin"></a>

**要更新现有的 Grafana 插件**

1. 登录您的 Amazon Managed Grafana 工作区。

1. 从左侧菜单中选择**管理**，然后选择**插件**。此操作将打开插件目录，仅列出已安装的插件。

1. 选择要更新的插件。

1. 在插件详细信息页面上，检查是否有可用的更新。如果是，请选择更新插件的选项并选择要更新到的版本。
**注意**  
如果您看到有关您无权修改插件的提示，请确认您的工作区[已启用插件管理](AMG-configure-workspace.md)。您还必须是 Amazon Managed Grafana 工作区的[管理员](Grafana-user-roles.md)。

# 使用 AWS 数据源插件查找 AWS 数据
<a name="aws-datasources-plugin"></a>

AWS 提供了一个应用程序插件，可以更轻松地在 Amazon Managed Grafana 工作空间中发现和使用 AWS 资源作为数据源。*AWS 数据来源*插件默认安装在新工作区中。

 AWS 数据源插件需要访问您的资源以进行发现的权限。有关更多信息，请参阅 [所需的权限](#aws-ds-plugin-permissions)。

## 打开 AWS 数据源插件
<a name="aws-ds-plugin-open"></a>

**打开 AWS 数据源插件**

1. 登录您的 Amazon Managed Grafana 工作区。

1. 从左上角的**菜单**中，选择**应用程序**，然后选择 **AWS 数据来源**。

将出现 AWS 数据源插件界面，其中列出了您可以搜索资源的 AWS 服务。

## 发现资源
<a name="aws-ds-plugin-use"></a>

**要从您的资源中查找资源 AWS 账户**

1. 打开 AWS 数据源插件。

1. 从 AWS 服务列表中，选择要查找的资源以用作数据源的服务。例如，选择 **Amazon Managed Service for Prometheus**。这将带您进入**数据来源**选项卡，并为您选中**服务**。

1. 选择要在其中查找资源的地 AWS 区。例如，选择 `US East (N. Virginia)`。
**注意**  
要查找资源，插件必须具有访问该区域服务的适当[权限](#aws-ds-plugin-permissions)。

1. 某些服务在一个区域可能有多个资源。如果该区域有多个资源，则 AWS 数据源插件会提供一个列表供您选择。

   从资源列表（本例中为 Amazon Managed Service for Prometheus）中，选择要用作数据来源的资源。例如，选择 Amazon Managed Service for Prometheus 工作区会将该资源设置为数据来源。该数据来源已准备就绪，可在您的控制面板中使用，或在通过 Amazon Managed Grafana 进行监控时使用。

1. 您在该服务和区域中预置的资源将显示在页面底部。

   （可选）您可以选择**转到设置**，查看和编辑该数据来源的设置。

**注意**  
 AWS 数据源插件取决于工作区中安装的各个数据源插件。例如，如果要使用 AWS X-Ray 功能，必须从[插件目录](grafana-plugins.md#manage-plugins)安装 X-Ray 数据来源插件。

## 版本和更新插件
<a name="aws-ds-plugin-versions"></a>

 AWS 数据源插件会定期更新。与新工作区一起安装的版本通常不是最新版本。与工作区中安装的版本相比，较新的版本可能具有更多功能。例如，较新的版本可能支持其他 AWS 服务作为数据源。

要查看每个版本 AWS 的数据源插件的更改，可以查看[变更日志](https://grafana.com/grafana/plugins/aws-datasource-provisioner-app/?tab=changelog)。

要更新到较新版本的插件，请按照 [更新插件](grafana-plugins.md#update-plugin) 的标准说明进行操作。

**注意**  
如果您更新到较新版本 AWS 的数据源插件，则需要为不由 Amazon Managed Grafana 管理的新数据源提供额外的[权限](#aws-ds-plugin-permissions)。

## 所需的权限
<a name="aws-ds-plugin-permissions"></a>

 AWS 数据源插件需要权限才能访问您的 AWS 资源。最简单的方法是允许 Amazon Managed Grafana 为您管理权限。要了解如何为数据来源设置服务托管权限，请参阅 [管理数据来源和通知渠道的权限](AMG-datasource-and-notification.md)。默认情况下，Amazon Managed Grafana 可以管理数据源插件中包含 AWS 的资源的权限。 AWS 

如果您将 AWS 数据源插件更新到比工作空间中默认包含的版本更新的版本，则它可能会自动添加对权限不由 Amazon Managed Grafana 管理的 AWS 资源的支持。在这种情况下，您必须自己添加权限。例如，已添加到 AWS IoT TwinMaker 该插件的最新版本（版本 1.9.0）中，但这些权限不由亚马逊托管 Grafana 管理。

要详细了解任何特定数据来源的权限，请参阅 [连接到数据来源](AMG-data-sources.md) 部分提供的该数据来源的详细信息。例如，该[Connect 连接到 AWS IoT TwinMaker 数据源](AMG-iot-twinmaker.md)部分包含有关向亚马逊托管 Grafana 授予访问权限的详细信息。 AWS IoT TwinMaker

# 连接到数据来源
<a name="AMG-data-sources"></a>

Amazon Managed Grafana 支持许多不同的*数据来源*。数据来源是存储后端，您可以在 Grafana 中对其进行查询，以完成构建控制面板等操作。每个数据来源都有一个特定的查询编辑器，该编辑器针对该特定数据来源所公开的特征和能力定制。

每个数据来源的查询语言和能力都不同。您可以将多个数据来源的数据合并到一个控制面板上。

每个使用 Amazon Managed Grafana 的 AWS 账户都可以创建或配置许多数据源。某些数据来源要求您为该数据来源安装相应的插件。如果您为工作区升级到 Amazon Managed Grafana Enterprise 插件，您可能还需要安装企业数据来源的插件。以下部分描述了许多可用数据来源的详细信息，但 Grafana 社区有时会添加新的数据来源，这些数据来源可能会在工作区中的[插件目录](grafana-plugins.md#plugin-catalog)中提供。

**注意**  
为了帮助您发现账户中的 AWS 资源并设置用于查询这些资源的数据源，Amazon Managed Grafana 提供了。[使用 AWS 数据源插件查找 AWS 数据](aws-datasources-plugin.md)

## 特殊数据来源
<a name="AMG-data-sources-special"></a>

Amazon Managed Grafana 包括三种特殊的数据来源：
+ **Grafana**（在 Grafana 早期版本中称为 *TestDB*）：使用此内置数据来源可生成随机游走数据或列表文件。这对于测试可视化和运行实验非常有用。
+ **混合**：可用于在同一面板中查询多个数据来源。使用此数据来源时，您可以为添加的每个新查询指定一个数据来源。第一次查询使用的是您在选择**混合**前指定的数据来源。

   您不能将现有查询更改为使用混合数据来源。
+ **控制面板**：可用于使用相同控制面板中其他面板的结果集。

**重要**  
Amazon Managed Grafana 有数据来源超时限制，该限制可能会覆盖在数据来源上配置的任何超时限制。两个限制中较低的取代另一个限制。要了解 Amazon Managed Grafana 数据来源超时限制，请参阅 *AWS 一般参考* 中的 [Amazon Managed Grafana 服务配额](https://docs.aws.amazon.com/general/latest/gr/grafana-service.html#grafana-quotas)。

**Topics**
+ [特殊数据来源](#AMG-data-sources-special)
+ [如何使用亚马逊托管 Grafana AWS Organizations 进行数据源访问 AWS](AMG-and-Organizations.md)
+ [连接到内置数据来源](AMG-data-sources-builtin.md)
+ [连接到企业数据来源](AMG-data-sources-enterprise.md)

# 如何使用亚马逊托管 Grafana AWS Organizations 进行数据源访问 AWS
<a name="AMG-and-Organizations"></a>

使用 AWS Organizations，您可以集中管理多个 AWS 账户的数据源配置和权限设置。在 AWS 账户 使用 Amazon Managed Grafana 的工作空间中，您可以指定其他组织单位， AWS 使其数据源可在主账户中查看。

例如，您可以将组织中的一个账户用作 Amazon Managed Grafana *管理账户*，并赋予该账户访问组织中其他账户数据来源的权限。在管理账户中，列出拥有您要使用管理账户访问 AWS 的数据源的所有组织单位。这将自动创建设置这些数据来源所需的角色和权限策略，您可以在 Amazon Managed Grafana 工作区的 Grafana 控制台中看到这些策略。

有关 Organizations 的详细信息，请参阅[什么是 AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)。

Amazon Managed Grafana CloudFormation StackSets 使用自动创建亚马逊托管 Grafana 连接到组织 AWS Identity and Access Management 中的数据源所必需的 (IAM) 角色。 AWS 在 Amazon Managed Grafana 管理您的 IAM 策略以访问组织中的数据源之前，您必须在组织的管理账户中 AWS CloudFormation StackSets 启用。Amazon Managed Grafana 会在第一次需要时自动启用此功能。

## 与 AWS IAM Identity Center 和 Organizations 集成的部署方案
<a name="AMG-and-SSO-and-Organizations-scenarios"></a>

如果您同时使用亚马逊托管 Grafana AWS IAM Identity Center 和 Organizations，我们建议您使用以下三种情况之一在您的组织中创建亚马逊托管 Grafana 工作空间。对于每种场景，您都需要登录到具有足够权限的账户。有关更多信息，请参阅 [Amazon Managed Grafana 的示例策略](security_iam_id-based-policy-examples.md#security_iam_AMG-id-based-policy-examples)。

**独立账户**

独立账户是指不是 Organizations 中组织成员的 AWS 账户。如果您是第一次尝试 AWS ，则可能出现这种情况。

**在这种情况下，当您登录具有、 AWS IAM Identity Center 和管理员策略的账户时，Amazon Managed Grafana 会自动**AWSGrafanaAccountAdministrator**启用和组织。**AWSSSOMemberAccountAdministrator**AWSSSODirectory**有关更多信息，请参阅 [使用 IAM Identity Center 在单个独立账户中创建和管理 Amazon Managed Grafana 工作区和用户](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-create-workspace-standalone)。

**已在其中配置 IAM Identity Center 的现有组织成员账户**

要在成员账户中创建工作空间，您必须登录到具有**AWSGrafanaAccountAdministrator**AWSSSOMemberAccountAdministrator****、和 “**AWSSSODirectory管理员**” 策略的账户。有关更多信息，请参阅 [使用 IAM Identity Center 的成员账户中的 Grafana 管理员](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-admin-member)。

如果您在成员账户中创建工作空间，并且希望该工作空间能够访问组织中其他 AWS 账户的资源，则必须在工作空间中使用客户管理的权限。有关更多信息，请参阅 [客户管理的权限](AMG-manage-permissions.md#AMG-customer-managed)。

要使用服务管理权限允许工作空间访问组织中其他 AWS 账户的资源，您必须在组织的管理账户中创建工作空间。但是，在组织的管理账户中创建 Amazon Managed Grafana 工作区或其他资源并非最佳实践。有关 Organizations 最佳实践的更多信息，请参阅[管理账户的最佳实践](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_best-practices_mgmt-acct.html)。

**注意**  
如果您 AWS IAM Identity Center 在 2019 年 11 月 25 日之前在管理账户中启用，则还必须在管理账户中启用与 IAM Identity Center 集成的应用程序。您也可以先在管理账户中启用集成了 IAM Identity Center 的应用程序，再在成员账户中选择启用它们。要启用这些应用程序，请在 IAM Identity Center **设置**页面的“集成了 IAM Identity Center 的应用程序”部分，选择**启用访问权限**。有关更多信息，请参阅[启用集成了 IAM Identity Center 的应用程序](https://docs.aws.amazon.com/singlesignon/latest/userguide/app-enablement.html)。

**尚未在其中部署 IAM Identity Center 的现有组织成员账户**

在此场景中，请先以组织管理员身份登录，并在组织中启用 IAM Identity Center。然后，在组织的成员账户中创建 Amazon Managed Grafana 工作区。

如果您不是组织管理员，则必须联系 Organizations 管理员，要求其启用 IAM Identity Center。启用 IAM Identity Center 后，您就可以在成员账户中创建工作区。

如果您在成员账户中创建工作空间，并且希望该工作空间能够访问组织中其他 AWS 账户的资源，则必须在工作空间中使用客户管理的权限。有关更多信息，请参阅 [客户管理的权限](AMG-manage-permissions.md#AMG-customer-managed)。

要在成员账户中创建工作空间，您必须登录到具有**AWSGrafanaAccountAdministrator**AWSSSOMemberAccountAdministrator****、和 “**AWSSSODirectory管理员**” 策略的账户。有关更多信息，请参阅 [使用 IAM Identity Center 的成员账户中的 Grafana 管理员](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-admin-member)。

# 连接到内置数据来源
<a name="AMG-data-sources-builtin"></a>

每个 Amazon Managed Grafana 工作区都支持以下数据来源。

对于支持版本 9 及更新版本的工作区，默认情况下可能未安装其中某些数据来源。在所有安装中，都提供了核心数据来源，但非核心数据来源可能需要安装正确的 Grafana 插件。您可以为此处未列出的其他数据来源安装插件。有关管理插件的更多信息，请参阅 [使用插件扩展您的工作区](grafana-plugins.md)。

**Topics**
+ [Alertmanager](data-source-alertmanager.md)
+ [Amazon CloudWatch](using-amazon-cloudwatch-in-AMG.md)
+ [亚马逊 OpenSearch 服务](using-Amazon-OpenSearch-in-AMG.md)
+ [AWS IoT SiteWise](using-iotsitewise-in-AMG.md)
+ [AWS IoT TwinMaker](AMG-iot-twinmaker.md)
+ [Prometheus](prometheus-data-source.md)
+ [Amazon Timestream](timestream-datasource.md)
+ [Amazon Athena](AWS-Athena.md)
+ [Amazon Redshift](AWS-Redshift.md)
+ [AWS X-Ray](x-ray-data-source.md)
+ [Azure 监控器](using-azure-monitor-in-AMG.md)
+ [Graphite](using-graphite-in-AMG.md)
+ [Google Cloud Monitoring](using-google-cloud-monitoring-in-grafana.md)
+ [InfluxDB](using-influxdb-in-AMG.md)
+ [Jaeger](jaeger-data-source.md)
+ [Loki](using-loki-in-AMG.md)
+ [Microsoft SQL Server](using-microsoft-sql-server-in-AMG.md)
+ [MySQL](using-mysql-in-AMG.md)
+ [OpenSearch](using-opensearch-in-AMG.md)
+ [OpenTSDB](using-opentsdb-in-AMG.md)
+ [PostgreSQL](using-postgresql-in-AMG.md)
+ [Templ](tempo-data-source.md)
+ [TestData](testdata-data-source.md)
+ [Zipkin](zipkin-data-source.md)

# 连接到 AlertManager 数据来源
<a name="data-source-alertmanager"></a>

Grafana 内置了对 Prometheus Alertmanager 的支持。配置 Grafana Alerting 后，您可以使用 Grafana Alerting UI 来管理静默、联系人以及通知策略。这些页面中的下拉选项允许您在 Grafana 和任何已配置的 Alertmanager 数据来源之间切换。

**Alertmanager 实现**

支持通过 [Prometheus](https://prometheus.io/)、[Cortex](https://cortexmetrics.io/) 和 [Grafana Mimir](https://grafana.com/docs/mimir/latest/) 实现 Alertmanager。您可以在数据来源设置页面中指定实现。Prometheus 的联系人和通知策略在 Grafana Alerting UI 中是只读的，因为它不支持通过 HTTP API 更新配置。

## 配置 Alertmanager 数据来源
<a name="data-source-alertmanager-create"></a>

您可以配置 Alertmanager 数据来源以与 Grafana Alerting 配合使用。

**先决条件**

要配置 Alertmanager，您必须完成以下先决条件：
+ 一个 Prometheus 实例，该实例具有摄取的指标，并且至少配置了一条警报或记录规则。您将需要工作区的 URL。
+ 为 Amazon Managed Grafana 定义的权限，允许其从 Alertmanager 实现中访问您的警报、警报组、静默和联系人。

**配置 Alertmanager 数据来源**

1. 在 Grafana 控制台的 Grafana 菜单中，选择**配置**下的**数据来源**页面。

1. 选择**添加数据来源**，然后从数据来源类型列表中选择 **Alertmanager**。

1. 为您的新数据来源提供以下信息。
   + 对于**名称**，提供为数据来源选择的名称。
   + 对于**实现**，请选择您的 Alertmanager 实现：**Prometheus**、**Mimir** 或 **Cortex**。
   + 对于 **HTTP** 下的 **URL**，提供 Alertmanager URL。对于 Prometheus，这是附加了 `alertmanager` 的工作区 URL。例如 `https://myprometheus/workspaces/ws-example-1234-5678-abcd-xyz00000001/alertmanager`。
   + 在**身份验证**下，配置访问 Alertmanager 实现所需的身份验证详细信息。

1. 选择**保存并测试**以完成数据来源设置。

   如果您的数据来源设置正确，您将看到一条消息，提示**运行状况检查已通过**。

# Connect 连接到亚马逊 CloudWatch 数据源
<a name="using-amazon-cloudwatch-in-AMG"></a>

借助 Amazon Managed Grafana，您可以使用 Grafana AWS 工作空间控制台中的数据源配置选项将 CloudWatch 亚马逊添加为数据源。此功能通过发现您的现有 CloudWatch 帐户并管理访问所需的身份验证凭据的配置，简化了添加 CloudWatch 为数据源的过程 CloudWatch。您可以使用此方法来设置身份验证并添加 CloudWatch 为数据源。或者，您也可以使用与在自我管理的 Grafana 服务器上相同的方法，手动设置数据来源和必要的身份验证凭证。

**Topics**
+ [使用 AWS 数据源配置添加 CloudWatch 为数据源](adding-CloudWatch-AWS-config.md)
+ [手动添加 CloudWatch 为数据源](adding--CloudWatch-manual.md)
+ [使用 查询编辑器](CloudWatch-using-the-query-editor.md)
+ [精选控制面板](CloudWatch-curated-dashboards.md)
+ [模板化查询](cloudwatch-templated-queries.md)
+ [使用 ec2\$1instance\$1attribute 示例](cloudwatch-ec2-instance-attribute-examples.md)
+ [使用 JSON 格式的模板变量](cloudwatch-using-json-format-template-variables.md)
+ [定价](cloudwatch-pricing.md)
+ [服务配额](cloudwatch-service-quotas.md)
+ [跨账户可观测性](cloudwatch-cross-account.md)

# 使用 AWS 数据源配置添加 CloudWatch 为数据源
<a name="adding-CloudWatch-AWS-config"></a>

要使用 AWS 数据源配置，首先要使用 Amazon Managed Grafana 控制台启用服务托管 IAM 角色，这些角色向工作空间授予读取您的账户或整个组织单位中资源 CloudWatch 所必需的 IAM 策略。然后，您可以使用亚马逊托管 Grafana 工作空间控制台 CloudWatch 添加为数据源。

**使用 AWS 数据源配置添加 CloudWatch 为数据源**

1. 打开 Amazon Managed Grafana 控制台，其位于 [https://console.aws.amazon.com/grafana/](https://console.aws.amazon.com/grafana/home/)。

1. 在导航窗格中，选择菜单图标，然后选择**所有工作区**。

1. 选择工作区的名称。

1. 如果您在创建此工作空间时没有选择使用服务管理权限，请从使用客户托管权限更改为使用服务管理权限，以确保启用适当的 IAM 角色和策略以使用 Grafana 工作区控制台中的 AWS 数据源配置选项。为此，请按 **IAM 角色**选择编辑图标，然后选择**服务托管**、**保存更改**。有关更多信息，请参阅 [亚马逊托管 Grafana 数据源的权限和政策 AWS](AMG-manage-permissions.md)。

1. 选择**数据来源**选项卡。

1. 选中 **Amazon** 的复选框， CloudWatch然后选择**操作**、**启用服务托管策略**。

1. 再次选择**数据来源**选项卡。

1. **在亚马逊行中选择**在 Grafana 中配置**。 CloudWatch**

1. 如有必要，使用 IAM Identity Center 登录 Grafana 工作区控制台。

1. **在 Grafana 工作区控制台的导航栏上，选择图标 AWS ，然后AWS 选择服务。**CloudWatch****

1. 选择您希望 CloudWatch 数据源从中进行查询的默认区域。

1. 选择所需的账户，然后选择**添加数据来源**。

# 手动添加 CloudWatch 为数据源
<a name="adding--CloudWatch-manual"></a>

**手动添加 CloudWatch 数据源**

1. 在 Grafana 控制台侧面的菜单中，将鼠标悬停在**配置**（齿轮）图标上，然后选择**数据来源**。

1. 选择**添加数据来源**。

1. 选择**CloudWatch**数据源。如有必要，您可以在搜索框中键入 **CloudWatch**，帮助查找。

## CloudWatch 设置
<a name="settings-CloudWatch"></a>

以下 CloudWatch 设置适用。


| Name | 说明 | 
| --- | --- | 
|  `Name`  | 数据来源名称。您将在面板和查询中通过其名称查看数据来源。 | 
|  `Default`  | 将数据来源指定为新面板的预选数据来源。 | 
|  `Default Region`  | 在查询编辑器中设置区域。可根据每次查询进行更改。 | 
|  `Namespaces of Custom Metrics`  | 指定自定义 CloudWatch 指标的命名空间。可以包含多个命名空间，用逗号分隔。 | 
|  `Auth Provider`  | 指定要获取凭证的提供商。 | 
|  `Assume Role Arn`  | 指定要担任的角色的 Amazon 资源名称（ARN）。 | 
|  `External ID`  | （可选）指定外部 ID。如果您在使用外部 ID 创建的另一个角色中扮演角色 AWS 账户 ，则使用此选项。 | 
| `Timeout` | 专门为 CloudWatch 日志查询配置超时。 | 
| `X-Ray trace links` | 要在日志包含 `@xrayTraceId` 字段时自动在日志中添加链接，请在数据来源配置的 **X-Ray 跟踪链接**部分链接 X-Ray 数据来源。您必须已经配置了 [X-Ray 数据来源](x-ray-data-source.md)。 | 

### 身份验证
<a name="CloudWatch-authentication"></a>

要在亚马逊托管 Grafana CloudWatch 和之间启用身份验证，您可以使用亚马逊托管 Grafana 控制台快速创建所需的策略和权限。或者，您也可以使用与在自我管理的 Grafana 服务器上相同的方法，手动设置身份验证。

要使用 Amazon Managed Grafana 数据来源配置快速设置策略，请按照 [使用 AWS 数据源配置添加 CloudWatch 为数据源](adding-CloudWatch-AWS-config.md) 中的步骤进行操作。

要手动设置权限，请使用以下部分中的任何一种方法。

#### AWS 证书
<a name="CloudWatch-authentication-aws-credentials"></a>

有三种不同的身份验证方法。
+ **AWS SDK 默认**-使用在附加到您的工作空间的角色中定义的权限。有关更多信息，请参阅 [客户管理的权限](AMG-manage-permissions.md#AMG-customer-managed)。
+ **访问权限和私有密钥**：对应于 适用于 Go 的 AWS SDK `StaticProvider`。使用给定的访问密钥 ID 和私有密钥进行身份验证。此方法没有任何回退措施，如果提供的密钥对无效，则会失败。

#### IAM 角色
<a name="CloudWatch-authentication-iam-roles"></a>

 目前，所有访问 CloudWatch 均由Grafana后端使用官方SDK在服务器端完成。 AWS 如果您选择 *AWS SDK 默认*身份验证方法，并且您的 Grafana 服务器正在运行 AWS，则可以使用 IAM 角色自动处理身份验证。

 有关更多信息，请参阅 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)。

#### IAM 策略
<a name="CloudWatch-authentication-iam-policies"></a>

Grafana 需要通过 IAM 授予的权限才能 CloudWatch 读取指标和 EC2 标签、实例和区域。您可以将这些权限附加到 IAM 角色，并使用内置的 Grafana 支持来担任角色。

 以下代码示例展示了一个最基本的策略。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowReadingMetricsFromCloudWatch",
            "Effect": "Allow",
            "Action": [
                "cloudwatch:DescribeAlarmsForMetric",
                "cloudwatch:DescribeAlarmHistory",
                "cloudwatch:DescribeAlarms",
                "cloudwatch:ListMetrics",
                "cloudwatch:GetMetricStatistics",
                "cloudwatch:GetMetricData",
                "cloudwatch:GetInsightRuleReport"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowReadingLogsFromCloudWatch",
            "Effect": "Allow",
            "Action": [
                "logs:DescribeLogGroups",
                "logs:GetLogGroupFields",
                "logs:StartQuery",
                "logs:StopQuery",
                "logs:GetQueryResults",
                "logs:GetLogEvents"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowReadingTagsInstancesRegionsFromEC2",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeTags",
                "ec2:DescribeInstances",
                "ec2:DescribeRegions"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowReadingResourcesForTags",
            "Effect": "Allow",
            "Action": "tag:GetResources",
            "Resource": "*"
        },
        {
            "Sid": "AllowReadingAcrossAccounts",
            "Effect": "Allow",
            "Action": [
                "oam:ListSinks",
                "oam:ListAttachedLinks"
            ],
            "Resource": "*"
        }
    ]
}
```

------

#### 担任角色
<a name="CloudWatch-assuming-a-role"></a>

 `Assume Role ARN` 字段允许您指定要担任的 IAM 角色（如果有）。如果将此字段留空，则将直接使用所提供的凭证，并且关联的角色或用户应具有所需的权限。如果此字段不为空，则使用提供的凭证执行 `sts:AssumeRole` 调用。

# 使用 查询编辑器
<a name="CloudWatch-using-the-query-editor"></a>

Amazon Managed Grafana 中的 CloudWatch 数据源提供了一个强大的查询编辑器，允许您检索和分析来自向其发送数据的 AWS 各种服务的指标和日志。 CloudWatch查询编辑器支持两种不同的查询模式：指标搜索和 CloudWatch 日志。

指标的查询编辑器模式使用 CloudWatch API 来查找上传到的指标 CloudWatch。日志模式使用 CloudWatch 日志 APIs 来查找日志记录。每种模式都有自己专门的查询编辑器。您可使用编辑器顶部的查询模式开关，选择要查询的 API。

**Topics**
+ [使用指标查询编辑器](CloudWatch-using-the-metric-query-editor.md)
+ [使用 Amazon CloudWatch 日志查询编辑器](CloudWatch-using-the-logs-query-editor.md)

# 使用指标查询编辑器
<a name="CloudWatch-using-the-metric-query-editor"></a>

指标查询编辑器可让您构建两种类型的查询：**指标搜索**和**指标查询**。**指标查询**选项使用 CloudWatch 指标见解查询数据。

## 通用查询编辑器字段
<a name="metrics-insights-common-fields"></a>

 有三个字段是**指标搜索**和**指标查询**模式所共有的。

 **通用字段**

**Id**  
`GetMetricData` API 要求所有查询都具有唯一 ID。此字段可用于指定所选的 ID。ID 可以包括数字、字母和下划线，并且必须以小写字母开头。如果未指定 ID，Amazon Managed Grafana 会使用以下模式生成一个 ID：`query[refId of the current query row]`。例如，`queryA` 代表面板编辑器中的第一个查询行。

**周期**  
周期是与特定 CloudWatch 统计数据关联的时间长度。周期以秒为单位定义。有效值包括 1、5、10、30，或 60 的任意倍数。如果您将时间段字段留空或设置为`auto`，则它将根据时间范围和 CloudWatch 保留策略自动计算。使用的公式是 `time range in seconds / 2000`，然后在根据保留时间移除周期后，移动到预定义周期数组 [60, 300, 900, 3600, 21600, 86400] 中的下一个较高值。要查看 Amazon Managed Grafana 使用的周期，请在查询编辑器中选择**显示查询预览**。

**Alias**  
以下别名模式适用。      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/CloudWatch-using-the-metric-query-editor.html)

# 使用指标搜索选项
<a name="CloudWatch-using-the-metric-search"></a>

 要在**指标搜索**中创建有效查询，必须指定命名空间、指标名称和至少一份统计数据。如果开启了**精确匹配**，则还必须为要查询的指标指定所有维度。指标模式必须完全匹配。有关更多信息，请参阅[CloudWatch 搜索表达式语法](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/search-expression-syntax.html)。

如果禁用**精确匹配**，您可以指定任意数量的维度进行筛选。最多会返回 100 个符合筛选条件的指标。

## 使用维度通配符进行动态查询
<a name="dynamic-queries-using-dimension-wildcards"></a>

 您可以使用星号（`*`）通配符表示一个或多个维度值，以监控指标的动态列表。

 这可以帮助您监控 AWS 资源（例如 EC2 实例或容器）的指标。例如，当作为 auto Scaling 事件的一部分创建新实例时，它们将自动出现在图表中，而无需您跟踪新实例 IDs。这项功能目前仅限于检索不超过 100 个指标。您可以选择**显示查询预览**，查看自动构建可支持通配符的搜索表达式。

 默认情况下，搜索表达式的定义方式是，查询的指标必须与定义的维度名称完全匹配。这就意味着，在示例中，仅会返回只具有一个维度（其名称为 `InstanceId`）的指标。

 要包含定义了其他维度的指标，可以关闭**精确匹配**。即使不使用通配符，关闭**精确匹配**也会创建一个搜索表达式。Grafana 会搜索至少与命名空间、指标名称和所有已定义维度相匹配的任何指标。

## 多值模板变量
<a name="cloudwatch-multi-value-template-variables"></a>

 根据多值模板变量定义维度值时，会使用搜索表达式来查询匹配指标。这样就能在一次查询中使用多个模板变量。对于关闭了**精确匹配**选项的查询，也可以使用模板变量。

 搜索表达式目前的限制为 1024 个字符，因此如果值列表较长，查询可能会失败。如果要查询某个维度名称中有任何值的所有指标，建议使用星号（`*`）通配符，而不是 `All` 选项。

 只有维度值才支持使用多值模板变量。不支持对 `Region`、`Namespace` 或 `Metric Name` 使用多值模板变量。

## 指标数学表达式
<a name="cloudwatch-metric-math-expressions"></a>

 您可以使用数学函数对指标进行操作，从而创建新的时间序列 CloudWatch 指标。支持算术运算符、一元减法和其他函数，并且可以应用于指标。 CloudWatch 有关 CloudWatch 公制数学函数的更多信息，请参阅[使用公制数学](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html)。

 例如，要对指标应用算术运算，请为原始指标提供一个 ID（唯一字符串）。然后，您可以在新指标的 `Expression` 字段中使用此 ID 并对其应用算术运算。

 如果使用 `Expression` 字段引用另一个查询，例如 `queryA * 2`，则无法根据该查询创建警报规则。

## 周期
<a name="cloudwatch-period"></a>

 周期是指与特定 Amazon CloudWatch 统计数据关联的时间长度。周期以秒为单位定义。有效值包括 1、5、10、30，或 60 的任意倍数。

如果将周期字段留空或设置为**自动**，则会根据时间范围自动计算。使用的公式是 `time range in seconds / 2000`，然后它会移到预定义周期数组 `[60, 300, 900, 3600, 21600, 86400]` 中的下一个较高值。要查看 Amazon Managed Grafana 使用的周期，请在查询编辑器中选择**显示查询预览**。

## 从 Grafana 面板到控制台的深度链接 CloudWatch
<a name="deep-linking-from-grafana-panels-to-the-cloudwatch-console"></a>

 在面板中选择时间序列会显示一个上下文菜单，其中包含指向**在 CloudWatch 控制台中查看的**链接。选择该链接会打开一个新选项卡，该选项卡将带您进入 CloudWatch 控制台，并显示该查询的所有指标。如果您当前未登录 CloudWatch 控制台，则该链接会将您转到登录页面。提供的链接对任何指标都有效， AWS 账户 但只有在您登录到与 Grafana 中所选数据源对 AWS 账户 应的指标时，才会显示正确的指标。

 此功能不适用于基于指标数学表达式的指标。

# 使用指标查询选项查询 Met CloudWatch rics Insights 数据
<a name="CloudWatch-using-the-metric-query"></a>

**注意**  
Amazon CloudWatch 指标见解现为预览版。 CloudWatch 指标见解功能向所有人开放 AWS 账户。功能可能会发生变化。

 您可以通过在 CloudWatch 指标查询**编辑器中选择`metric query`模式来查询 Metrics Insight** s 数据。

 CloudWatch Metrics Insights 是一款功能强大的高性能 SQL 查询引擎，可用于大规模查询指标。它是一个快速、灵活、基于 SQL 的查询引擎，可用于实时识别所有 CloudWatch 指标中的趋势和模式。它使用一种 SQL 方言。有关 Metrics Insights 查询语法的更多信息，请参阅 [查询语法和关键字](#metrics-insights-syntax-keywords)。

## 查询语法和关键字
<a name="metrics-insights-syntax-keywords"></a>

CloudWatch Metrics Insights 使用 SQL 方言。下面的示例显示了查询语法。

```
SELECT FUNCTION(metricName)
FROM namespace | [ SCHEMA(namespace[, labelKey [, ...] ]) ]
     [ WHERE labelKey OPERATOR labelValue [AND|OR|([...])*] [, ...] ]
[ GROUP BY labelKey [, ...]]
[ ORDER BY FUNCTION() [DESC | ASC] ]
[ LIMIT number]
```

 关键字不区分大小写，但标识符区分大小写。标识符包括指标、命名空间和维度的名称。

 下表提供了查询关键字及其说明。


|  Keyword  |  说明  | 
| --- | --- | 
|  FUNCTION  |  必需。指定要使用的聚合函数，还可以指定要查询的指标的名称。有效值为 AVG、COUNT、MAX、MIN 和 SUM。 | 
|  MetricName   |  必需。例如 CPUUtilization。 | 
|  FROM  |  必需。指定指标源。您可以指定包含要查询的指标的指标命名空间，也可以指定 SCHEMA 表函数。一些命名空间示例包括 AWS/EC2 和 AWS/Lambda。 | 
|  SCHEMA  |  （可选）筛选查询结果，仅显示完全匹配的指标或不匹配的指标。 | 
|  WHERE  |  （可选）筛选结果，仅显示与指定表达式匹配的指标。例如 WHERE InstanceType \$1= 'c3.4xlarge'。 | 
|  GROUP BY  |  （可选）将查询结果分组为多个时间序列。例如 GROUP BY ServiceName。 | 
|  ORDER BY  |  （可选）指定要返回的时间序列顺序。选项有 ASC 和 DESC。 | 
|  LIMIT  |  （可选）限制要返回的时间序列数量。 | 

下面是一些示例：
+ 

  ```
  SELECT AVG(CPUUtilization) FROM "AWS/EC2" 
  ```

   匹配 `AWS/EC2` 命名空间中的所有 `CPUUtilization` 指标，忽略其维度，并返回一个聚合的时间序列。
+ 

  ```
  SELECT AVG(CPUUtilization) FROM SCHEMA("AWS/EC2")
  ```

   仅匹配 `AWS/EC2` 命名空间中未定义任何维度的 `CPUUtilization` 指标。
+ 

  ```
  SELECT AVG(CPUUtilization) FROM SCHEMA("AWS/EC2", InstanceId)
  ```

   仅匹配仅向 CloudWatch 一个维度报告的`CPUUtilization`指标`InstanceId`。
+ 

  ```
  SELECT SUM(RequestCount) FROM SCHEMA("AWS/ApplicationELB", LoadBalancer,
  AvailabilityZone)
  ```

   仅将报告的`RequestCount`指标`AWS/ApplicationELB`与正好两个维度相匹配，`LoadBalancer`和。 CloudWatch `AvailabilityZone`

 标签值必须用单引号括起来。

### 转义字符
<a name="escape-characters"></a>

在查询中，标签值必须始终放在单引号中。  例如 `SELECT MAX(CPUUtilization) FROM "AWS/EC2" WHERE AutoScalingGroupName = 'my-production-fleet'`。

 包含字母、数字和下划线（`_`）以外的字符的指标命名空间、指标名称和标签键必须放在双引号中。例如 `SELECT MAX("My.Metric")`。如果其本身包含双引号（如 `Bytes"Input"`），则必须用反斜线转义双引号，如 `SELECT AVG("Bytes\"Input\"")`。如果指标命名空间、指标名称或标签键包含的词为 Metrics Insights 中的保留关键字，则这些词也必须放在双引号中。例如，如果您有名为 `LIMIT` 的指标，您可以使用 `SELECT AVG("LIMIT")`。将任何命名空间、指标名称或标签（即使不包含保留关键字）放在双引号中也有效。

## 生成器模式和代码模式
<a name="metrics-insights-query-modes"></a>

您可以在 `Builder` 模式或 `Code` 模式下创建查询。

**要在 `Builder` 模式下创建查询**

1. 使用上表中的信息，浏览并选择指标命名空间、指标名称、筛选条件、分组和顺序选项。

1. 对于每个选项，请从可选的选项列表中进行选择。

**要在 `Code` 模式下创建查询**

1. 在代码编辑器中编写查询。

1. 要运行查询，请在代码编辑器中选择**运行查询**。

要在 `builder` 模式下创建查询：
+ 使用上表中的信息，浏览并选择指标命名空间、指标名称、筛选条件、分组和顺序选项。
+ 对于每个选项，请从可选的选项列表中进行选择。

Grafana 会根据您的选择自动构建 SQL 查询。

 要在 `code` 模式下创建查询：
+ 在代码编辑器中编写查询。
+ 要运行查询，请选择代码编辑器上的**运行查询**。

代码编辑器具有内置的自动完成功能，可为关键字、聚合、命名空间、指标、标签和标签值提供建议。输入空格、逗号或美元符号时，会显示建议。您也可以使用键盘组合键 `CTRL+Space`。

代码编辑器可以自动完成查询。但是，在代码编辑器中使用模板变量可能会干扰自动完成。

## CloudWatch 指标见解示例
<a name="goldeneye-examples"></a>

**注意**  
CloudWatch 指标见解处于开放预览状态。预览版对所有 AWS 账户开放，您无需申请访问权限。在宣布正式发布之前，可能会添加或更改功能。

本节包含有用的 M CloudWatch etrics Insights 查询示例，您可以直接复制和使用这些查询，也可以在查询编辑器中复制和修改这些查询。控制台中已经提供一些示例，您可以通过选择 **Metrics**（指标）视图中的 **Add query**（添加查询）来访问它们。

### EC2 示例
<a name="goldeneye-EC2-examples"></a>

 查看每个实例的 CPU 利用率指标

```
SELECT AVG(CPUUtilization)
FROM "AWS/EC2"
GROUP BY InstanceId
```

整个实例集的平均 CPU 利用率

```
SELECT AVG(CPUUtilization)
FROM SCHEMA("AWS/EC2", InstanceId)
```

 查看平均 CPU 利用率最高的 10 个实例 

```
SELECT MAX(CPUUtilization)
FROM "AWS/EC2"
GROUP BY InstanceId
LIMIT 10
```

查看 CPU 利用率最高的 10 个实例，由大到小排序

```
SELECT AVG(CPUUtilization)
FROM "AWS/EC2"
GROUP BY InstanceId
ORDER BY MAX() DESC
LIMIT 10
```

在本例中， CloudWatch 代理正在为每个应用程序收集一个 CPUUtilization 指标。此查询筛选特定应用程序名称的此指标的平均值。

```
SELECT AVG(CPUUtilization)
FROM "AWS/CWAgent"
WHERE ApplicationName = 'eCommerce'
SELECT AVG(ConcurrentExecutions)
FROM "AWS/Lambda"
```

查看平均执行时间最长的 10 个 Lambda 函数，由大到小排序

```
SELECT AVG(Duration)
FROM "AWS/Lambda"
GROUP BY FunctionName
ORDER BY MAX() DESC
LIMIT 10
```

查看 Lambda 执行时间的最大值、平均值和最小值

```
SELECT MAX(Duration)
FROM "AWS/Lambda"
```

### Application Load Balancer 示例
<a name="application-loadbalancer-examples"></a>

 查看具有以下维度的**LoadBalancer**指标 **AvailabilityZone**

```
SELECT SUM(RequestCount)
FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone)
```

查看具有活跃并发 TCP 连接数的指标。

```
SELECT AVG(ActiveConnectionCount)
FROM "AWS/ApplicationELB"
```

### Amazon EBS 示例
<a name="Amazon-elastic-block-store-examples"></a>

 查看卷平均写入字节数最多的 10 个卷，按降序排列

```
SELECT AVG(VolumeWriteBytes)
FROM "AWS/EBS"
GROUP BY VolumeId
ORDER BY MAX() DESC
LIMIT 10
```

查看 Amazon EBS 卷的平均写入时间

```
SELECT AVG(VolumeTotalWriteTime)
FROM "AWS/EBS"
```

查看 Amazon EBS 卷的平均空闲时间

```
SELECT AVG(VolumeIdleTime)
FROM "AWS/EBS"
View average burst balance per volume
SELECT AVG(BurstBalance)
FROM "AWS/EBS"
GROUP BY VolumeId
View average read bytes across Amazon EBS volumes
SELECT AVG(VolumeReadBytes)
FROM "AWS/EBS"
```

查看所有 Amazon EBS 卷的平均写入字节数

```
SELECT AVG(VolumeWriteBytes)
FROM "AWS/EBS"
```

### Amazon Simple Storage Service 示例
<a name="simple-storage-service-examples"></a>

 按存储桶名称查看平均延迟组

```
SELECT AVG(TotalRequestLatency)
FROM "AWS/S3"
GROUP BY BucketName
```

查看所有 Amazon S3 存储桶中每个存储桶的平均对象数量

```
SELECT AVG(NumberOfObjects)
FROM "AWS/S3"
GROUP BY BucketName
```

### Amazon Simple Notification Service 示例
<a name="Amazon-simple-notificaation-service-examples"></a>

一个例mazon-simple-notificaation-service子 

```
SELECT AVG(NumberOfMessagesPublished)
FROM "AWS/SNS"
```

查看每个主题名称的平均失败消息数量

```
SELECT AVG(NumberOfNotificationsFailed)
FROM "AWS/SNS"
GROUP BY TopicName
```

### AWS API 用法示例
<a name="AWS-API-usage-examples"></a>

 AWS APIs 按账户中的通话次数查看前 20 名 

```
SELECT COUNT(CallCount)
FROM "AWS/Usage"
WHERE "Type" = 'API'
GROUP BY "Service", "Resource"
ORDER BY SUM() DESC
LIMIT 20
```

## CloudWatch 指标见解限制
<a name="metrics-insights-limits"></a>

CloudWatch Metrics Insights 目前有以下限制：
+ 您只能查询最近三个小时的数据。
+ 单个查询可处理的指标不超过 10,000 个。这意味着，如果 `SELECT`、`FROM` 和 `WHERE` 子句匹配的指标超过 10000 个，查询只会处理找到的前 10000 个指标。
+ 单个查询可返回的时间序列不超过 500 个。这意味着，如果查询要处理的指标超过 500 个，查询结果中将不会返回所有指标。如果您使用 `ORDER BY` 子句，将对正在处理的所有指标进行排序，并根据您的 `ORDER BY` 子句，返回 500 个具有最高或最低值的指标。如果您不包括 `ORDER BY` 子句，则无法控制返回哪 500 个匹配的指标。
+ 每个 `GetMetricData` 操作只能有一个查询，但是您可以在控制面板中有多个小组件，每个小组件都包含一个查询。

# 使用 Amazon CloudWatch 日志查询编辑器
<a name="CloudWatch-using-the-logs-query-editor"></a>

 要查询 CloudWatch 日志，请选择要查询的区域和最多 20 个日志组。使用主输入区域编写查询。有关更多信息，请参阅[CloudWatch 日志见解查询语法](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html)。

 您还可以使用 Lo CloudWatch gs Insights 中的`stats`命令编写返回时序数据的查询。在 Explore 中进行 `stats` 查询时，必须确保处于“指标探索”模式。

 查询输入字段的右侧是一个 L CloudWatch ogs Insights 链接，用于打开包含您的查询的 L CloudWatch ogs Insights 控制台。如有必要，您可以在那里继续探索。

## 使用模板变量
<a name="cloudwatch-using-template-variables"></a>

 与其他几个数据源一样，该 CloudWatch 数据源支持在查询中使用模板变量。有关更多信息，请参阅 [模板和变量](templates-and-variables.md)。

## 从 Grafana 面板深度链接到日志控制台 CloudWatch
<a name="deep-linking-from-grafana-panels-to-the-cloudwatch-console-2"></a>

 如果要在 L CloudWatch ogs Insights 控制台中查看查询，请选择查询编辑器旁边的 **CloudWatch Logs Insights** 按钮。如果您当前未登录 CloudWatch 控制台，则该链接会将您转至登录页面。提供的链接对任何指标都有效， AWS 账户 但只有在您登录到与 Grafana 中所选数据源对 AWS 账户 应的指标时，才会显示正确的指标。

## 警报
<a name="cloudwatch-alerting"></a>

 例如，由于 CloudWatch 日志查询可以通过使用`stats`命令返回数字数据，因此支持警报。有关更多信息，请参阅 [Grafana Alerting](alerts-overview.md)。

# 精选控制面板
<a name="CloudWatch-curated-dashboards"></a>

 更新后的 CloudWatch 数据源附带了五种最受欢迎的 AWS 服务的预配置仪表板：
+  Amazon EC2 
+  Amazon Elastic Block Store 
+  AWS Lambda 
+  Amazon CloudWatch 日志 
+  Amazon Relational Database Service 

 要导入预先配置的仪表板，请转到 CloudWatch 数据源的配置页面，然后选择**仪表板**选项卡。为要使用的控制面板选择**导入**。要自定义控制面板，建议使用不同的名称保存控制面板，否则新版本的控制面板发布后会覆盖该控制面板。

# 模板化查询
<a name="cloudwatch-templated-queries"></a>

 您可以在指标查询中使用变量来代替服务器、应用程序和传感器名称等硬编码的详细信息。变量显示为控制面板顶部的下拉选择框。您可以使用这些下拉框来更改控制面板中显示的数据。

 有关模板功能和不同类型模板变量的介绍，请参阅 [模板](templates-and-variables.md#templates)。

## 查询变量
<a name="cloudwatch-query-variable"></a>

 CloudWatch 数据源提供了以下查询，您可以在**变量**编辑视图的**查询**字段中指定这些查询。您可以使用这些查询来填充变量的选项列表，如 `region`、`namespaces`、`metric names` 和 `dimension keys/values`。

 您可以在查询中指定 `default` 代替 `region`，以使用数据来源中配置的默认区域。


|  Name  |  说明  | 
| --- | --- | 
|  regions()  |  返回所有 AWS 区域的列表。 | 
|  namespaces()  |  返回支持的命名空间列表。 CloudWatch  | 
|  metrics(namespace, [region])  |  返回命名空间中的指标列表。（指定区域或对自定义指标使用 "default"。）  | 
|  dimension\$1keys(namespace)  |  返回命名空间中的维度键列表。 | 
|  dimension\$1values(region, namespace, metric, dimension\$1key, [filters])  |  返回与指定的 region、namespace、metric 或 dimension\$1key 匹配的维度值列表。或者，您也可以使用维度 filters 获得更具体的结果。 | 
|  ebs\$1volume\$1ids(region, instance\$1id)  |  返回与指定值 IDs region匹配的音量列表instance\$1id。 | 
|  ec2\$1instance\$1attribute(region, attribute\$1name, filters)  |  返回与指定的 region、attribute\$1name、filters 匹配的属性列表。 | 
|  resource\$1arns(region, resource\$1type, tags)  |  返回与指定regionresource\$1type、和 ARNs 匹配的列表tags。 | 
|  statistics()  |  返回所有标准统计数据的列表。 | 

 有关 CloudWatch 提供的指标的详细信息，请参阅[发布 CloudWatch 指标的AWS 服务](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aws-services-cloudwatch-metrics.html)。

### 模板化查询的示例
<a name="cloudwatch-examples-templated-queries"></a>

 下表显示了返回各个 AWS 服务的资源列表的维度查询示例。


|  Query  |  服务  | 
| --- | --- | 
|  dimension\$1values(us-east-1,AWS/ELB,RequestCount,LoadBalancerName)  |  Elastic Load Balancing  | 
|  dimension\$1values(us-east-1,AWS/ElastiCache,CPUUtilization,CacheClusterId)  |  亚马逊 ElastiCache  | 
|  dimension\$1values(us-east-1,AWS/Redshift,CPUUtilization,ClusterIdentifier)  |  Amazon Redshift  | 
|  dimension\$1values(us-east-1,AWS/RDS,CPUUtilization,DBInstanceIdentifier)  |  Amazon RDS  | 
|  dimension\$1values(us-east-1,AWS/S3,BucketSizeBytes,BucketName)  |  Amazon Simple Storage Service（Amazon S3）  | 
|  dimension\$1values(us-east-1,CWAgent,disk\$1used\$1percent,device,\$1"InstanceId":"\$1instance\$1id"\$1)  |  CloudWatch 代理人  | 
|  resource\$1arns(eu-west-1,elasticloadbalancing:loadbalancer,\$1"elasticbeanstalk:environment-name":["myApp-dev","myApp-prod"]\$1)  |  Elastic Load Balancing  | 
|  resource\$1arns(eu-west-1,ec2:instance,\$1"elasticbeanstalk:environment-name":["myApp-dev","myApp-prod"]\$1)  |  Amazon EC2  | 

# 使用 ec2\$1instance\$1attribute 示例
<a name="cloudwatch-ec2-instance-attribute-examples"></a>

## JSON 筛选条件
<a name="json-filters"></a>

 `ec2_instance_attribute` 查询接受 JSON 格式的 `filters`。您可以指定 `ec2:DescribeInstances` 的预定义筛选条件。请注意，实际的过滤是在Grafana中进行的 AWS，而不是在Grafana中进行的。

 下面的代码示例展示了筛选条件的语法。

```
{ filter_name1: [ filter_value1 ], filter_name2: [ filter_value2 ] }
```

 以下示例展示了 `ec2_instance_attribute()` 查询。

```
ec2_instance_attribute(us - east - 1, InstanceId, { 'tag:Environment': ['production'] });
```

## 选择属性
<a name="cloudwatch-selecting-attributes"></a>

 每个实例只能返回一个属性。可以选择任何扁平属性（即属性只有一个值，且不是对象或数组）。可使用以下扁平属性。
+  `AmiLaunchIndex` 
+  `Architecture` 
+  `ClientToken` 
+  `EbsOptimized` 
+  `EnaSupport` 
+  `Hypervisor` 
+  `IamInstanceProfile` 
+  `ImageId` 
+  `InstanceId` 
+  `InstanceLifecycle` 
+  `InstanceType` 
+  `KernelId` 
+  `KeyName` 
+  `LaunchTime` 
+  `Platform` 
+  `PrivateDnsName` 
+  `PrivateIpAddress` 
+  `PublicDnsName` 
+  `PublicIpAddress` 
+  `RamdiskId` 
+  `RootDeviceName` 
+  `RootDeviceType` 
+  `SourceDestCheck` 
+  `SpotInstanceRequestId` 
+  `SriovNetSupport` 
+  `SubnetId` 
+  `VirtualizationType` 
+  `VpcId` 

 可以通过在标签名称前加上 `Tags` 来选择标签。

 以下示例展示了 `ec2_instance_attribute()` 查询。

```
ec2_instance_attribute(us - east - 1, Tags.Name, { 'tag:Team': ['sysops'] });
```

# 使用 JSON 格式的模板变量
<a name="cloudwatch-using-json-format-template-variables"></a>

 一些查询接受 JSON 格式的筛选条件，而 Grafana 支持将模板变量转换为 JSON。

 如果是 `env = 'production', 'staging'`，则以下查询将返回 `Environment` 标签为 `production` 或 `staging` 的 EC2 实例的 ARN。

```
resource_arns(us-east-1, ec2:instance, {"Environment":${env:json}})
```

# 定价
<a name="cloudwatch-pricing"></a>

 Grafana 的亚马逊 CloudWatch 数据源使用`ListMetrics``GetMetricData` CloudWatch 和 API 调用来列出和检索指标。 CloudWatch 日志的定价基于通过 CloudWatch Logs Insights 查询获取、存档和分析的数据量。有关更多信息，请参阅 [Amazon CloudWatch 定价](https://aws.amazon.com/cloudwatch/pricing)。

 每次在查询编辑器中选择维度时，Grafana 都会发出 `ListMetrics` 请求。每当您在查询编辑器中更改查询时， GetMetricData 都会向发出一个新的请求。

 检索数据样本的 API 请求使用 `GetMetricData` 操作。此操作为 CloudWatch 公制数学提供了更好的支持。还支持在使用通配符或关闭**精确匹配**选项时自动生成搜索表达式。`GetMetricData` 操作会产生费用。有关更多信息，请参阅 [Amazon CloudWatch 定价](https://aws.amazon.com/cloudwatch/pricing)。

# 服务配额
<a name="cloudwatch-service-quotas"></a>

 AWS 为您的 AWS 账户中的资源、操作和项目定义配额或限制。根据控制面板中的查询数量和访问控制面板的用户数量，您可能会达到各种资源 CloudWatch 和 CloudWatch 日志资源的使用限制。请注意，配额是按账户和 AWS 区域定义的。如果您使用多个区域，或者设置了多个 CloudWatch 数据源来查询多个账户，则必须为每个账户和达到限制的每个区域申请增加配额。

 有关更多信息，请参阅 [ CloudWatch 服务配额](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_limits.html)。

# 跨账户可观测性
<a name="cloudwatch-cross-account"></a>

**警告**  
此功能要求您的 Grafana 工作区为版本 9 或更高版本。

该 CloudWatch 插件使您能够监控多个区域账户中的应用程序并对其进行故障排除。使用跨账户可观测性，您可以无缝搜索、可视化和分析指标与日志，不必担心账户边界问题。

要启用跨账户可观察性，请先在中将其启用 CloudWatch，然后在 role/user 正在运行的插件中添加适当的 IAM 操作。如果您的 Amazon Managed Grafana 工作区在 VPC 中运行，那么您还必须有一个 NAT 网关来支持互联网访问。
+ 要了解如何启用该功能，请参阅 A *mazon CloudWatch 用户*指南中的[CloudWatch 跨账户可观察性](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account.html)。
+ 以下操作是要为正在运行插件的用户添加的 role/user 正确 IAM 操作。

  ```
  {
  "Sid":  "AllowReadingAcrossAccounts",
  "Effect":  "Allow",
  "Action": [
    "oam:ListSinks",
    "oam:ListAttachedLinks"
  ],
  "Resource":  "*"
  }
  ```
+  CloudWatch 数据源的跨账户可观察性依赖于 Amazon CloudWatch 可观察性访问管理器。Observability Access Manager 不支持 VPC 端点。如果您的 Amazon Managed Grafana 工作空间在 VPC 内运行，那么您还必须拥有允许工作空间在互联网上 APIs 调用的 NAT 网关。

**注意**  
您还必须拥有 IAM 权限才能读取您尝试访问的账户中的 CloudWatch 数据。

# Connect 连接到亚马逊 OpenSearch 服务数据源
<a name="using-Amazon-OpenSearch-in-AMG"></a>

**注意**  
在支持版本 9 或更高版本的工作区中，此数据来源可能需要您安装相应的插件。有关更多信息，请参阅 [使用插件扩展您的工作区](grafana-plugins.md)。

借助 Amazon Managed Grafana，您可以使用 Grafana AWS 工作空间控制台中的数据源配置选项将 OpenSearch 亚马逊服务添加为数据源。该数据源支持运行 OpenSearch 集群的 OpenSearch 服务域以及传统的 Elasticsearch 集群。

 AWS 数据源配置选项通过发现您现有的 OpenSearch 服务帐户来简化将 OpenSearch 服务添加为数据源，并管理访问所需的身份验证凭据的配置 OpenSearch。您可以使用此方法设置身份验证并将 OpenSearch 服务添加为数据源，也可以使用与在自我管理的 Grafana 服务器上相同的方法手动设置数据源和必要的身份验证凭据。

 OpenSearch 服务数据源支持管道处理语言 (PPL)。有关 PPL 的更多信息，请参阅[使用管道处理语言查询 Amazon OpenSearch 服务数据](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/ppl-support.html)。

您可以使用 OpenSearch 服务数据源执行多种类型的简单或复杂 OpenSearch 查询，以便可视化存储在中的日志或指标 OpenSearch。您还可以使用存储在中的日志事件为图表添加注释。 OpenSearch

**Topics**
+ [使用 AWS 数据源配置将 OpenSearch 服务添加为数据源](ES-adding-AWS-config.md)
+ [手动将 Amazon OpenSearch 服务添加为数据源](ES-adding-the-data-source.md)
+ [OpenSearch 服务设置](#ES-settings)
+ [使用亚马逊 OpenSearch 服务数据源](ES-use-datasource.md)
+ [亚马逊 OpenSearch 服务无服务器](datasources-opensearch-serverless.md)
+ [跟踪支持](datasources-opensearch-traces.md)

# 使用 AWS 数据源配置将 OpenSearch 服务添加为数据源
<a name="ES-adding-AWS-config"></a>

要使用 AWS 数据源配置，首先要使用 Amazon Managed Grafana 控制台启用服务托管 IAM 角色，这些角色向工作空间授予读取您账户或整个组织单位中的服务资源 OpenSearch 所必需的 IAM 策略。然后，您可以使用亚马逊托管 Grafana 工作空间控制台 OpenSearch 将服务添加为数据源。

**使用 AWS 数据源配置将 OpenSearch 服务添加为数据源**

1. 打开 Amazon Managed Grafana 控制台，其位于 [https://console.aws.amazon.com/grafana/](https://console.aws.amazon.com/grafana/home/)。

1. 在页面左上角，选择菜单图标，然后选择**所有工作区**。

1. 选择工作区的名称。

1. 如果您在创建此工作空间时没有选择使用服务管理权限，请从使用客户托管权限更改为使用服务管理权限，以确保启用适当的 IAM 角色和策略以使用 Grafana 工作区控制台中的 AWS 数据源配置选项。为此，请按 **IAM 角色**选择编辑图标，然后选择**服务托管**、**保存更改**。有关更多信息，请参阅 [亚马逊托管 Grafana 数据源的权限和政策 AWS](AMG-manage-permissions.md)。

1. 选择**数据来源**选项卡。然后选中 **Amazon S OpenSearch er** vice 的复选框，然后选择**操作**、**启用服务托管策略**。

1. 再次选择 “**数据源**” 选项卡，然后在 “**亚马逊 OpenSearch **服务” 行**中选择 “在 Grafana 中配置**”。

1. 如有必要，使用 IAM Identity Center 登录 Grafana 工作区控制台。

1. **在 Grafana 工作区控制台的左侧导航栏中，选择图标，然后选择**AWS 服务， AWS 即亚马逊服务**。 OpenSearch **

1. 选择您希望 Amazon Managed Grafana 搜索以 OpenSearch 发现服务资源的区域，然后选择要添加的账户和 OpenSearch 服务域，配置索引设置，然后**选择**添加数据源。

# 手动将 Amazon OpenSearch 服务添加为数据源
<a name="ES-adding-the-data-source"></a>

**手动添加亚马逊 OpenSearch 服务数据源**

1.  在 Grafana 控制台的侧边菜单中，选择 **AWS** 图标，然后选择**数据来源**。

1. 选择**亚马逊 OpenSearch 服务**数据源。如有必要，您可以在搜索框中键入 **OpenSearch**，帮助查找。

1. 选择要从中搜索数据的**区域**。

1. 选择**添加数据来源**。

**注意**  
 如果您在侧边菜单中看不到**数据来源**链接，则表示您当前的用户没有 `Admin` 角色。

## OpenSearch 服务设置
<a name="ES-settings"></a>


|  Name  |  说明  | 
| --- | --- | 
|  Name  |  数据来源名称。您将在面板和查询中通过其名称查看数据来源。 | 
|  Default  |  默认数据来源意味着将为新面板预先选择该数据来源。 | 
|  Url  |  您的 OpenSearch 服务域的终端节点。端点采用以下格式: https://search-my-domain.us-east-1.es.amazonaws.com. | 
|  Access  |  服务器（默认）= 必须可从 Grafana 后端/服务器访问 URL。浏览器 = 必须可在浏览器中访问 URL。 | 

 访问模式控制对数据来源请求的处理方式。如果没有其他说明，服务器应该是首选方式。

### 服务器访问模式（默认）
<a name="ES-server-access-mode-default"></a>

 所有请求都是从浏览器向 Grafana 后端或服务器发出的，后端或服务器会将请求转发到数据来源，从而规避了可能的跨源资源共享（CORS）要求。如果选择此访问模式，则必须可以从 Grafana 后端或服务器访问 URL。

### 浏览器（直接）访问
<a name="ES-browser-direct-access"></a>

Amazon Managed Grafana 不支持浏览器直接访问。

### 索引设置
<a name="ES-index-settings"></a>

 在这里，您可以为指定默认值`time field`并指定 OpenSearch 索引的名称。您可以对索引名称或通配符使用时间模式。

### OpenSearch/弹性搜索版本
<a name="OpenSearch-version"></a>

在版本下拉菜单中指定您的版本 OpenSearch 或旧版 Elasticsearch 版本。版本很重要，因为每个版本的查询组成方式不同。目前，Grafana 支持 1.0.x OpenSearch 。支持的 Elasticsearch 版本有 `2.0+`、`5.0+`、`5.6+`、`6.0+` 和 `7.0+`。值 `5.6+` 表示版本 5.6 或更高版本，但低于 6.0。值 `6.0+` 表示版本 6.0 或更高版本，但低于 7.0。最后，`7.0+` 表示版本 7.0 或更高版本，但低于 8.0。

### 最小时间间隔
<a name="ES-min-time-interval"></a>

按时间间隔自动分组的下限。建议设置以写入频率；例如，如果您的数据每分钟写入一次，则为 `1m`。此选项也可以 overridden/configured 位于仪表板面板的数据源选项下。此值的格式**必须**为数字，后跟有效的时间标识符；例如，`1m`（1 分钟）或 `30s`（30 秒）。支持以下时间标识符。


|  标识符  |  说明  | 
| --- | --- | 
|  y  |  Year  | 
|  M  |  Month  | 
|  w  |  周  | 
|  d  |  天  | 
|  h  |  小时  | 
|  m  |  分钟  | 
|  s  |  秒  | 
|  ms  |  毫秒  | 

### 日志
<a name="ES-logs-beta"></a>

在 [Explore](explore.md) 中可视化日志时，可选择从数据来源设置页面配置 `Message field name` 和 `Level field name` 这两个参数，以确定日志消息和日志级别将使用哪些字段。

 例如，如果您使用 Filebeat 的默认设置将日志传送到 OpenSearch 服务，则以下配置应该起作用。
+  **消息字段名称：**message 
+  **级别字段名称：**fields.level 

### 数据链接
<a name="ES-data-links"></a>

 数据链接可根据指定字段创建链接，该链接可在 Explore 的日志视图中访问。

 每个数据链接配置由以下部分组成：
+ **字段**：数据链接使用的字段名称。
+ **URL/查询**：如果是外部链接，则输入完整的链接 URL。如果是内部链接，则此输入将用作目标数据来源的查询。在这两种情况下，您都可以使用 `${__value.raw }` 宏从字段中插值。
+ **内部链接**：选择此选项以确定是内部链接还是外部链接。如果是内部链接，您可以使用数据来源选择器选择目标数据来源。仅支持跟踪数据来源。

# 使用亚马逊 OpenSearch 服务数据源
<a name="ES-use-datasource"></a>

## 指标查询编辑器
<a name="ES-metric-query-editor"></a>

 OpenSearch 查询编辑器允许您选择多个指标并按多个术语或筛选条件进行分组。使用右侧的加号和减号图标 add/remove 查看指标或按子句分组。一些指标和 group by 子句具有选项。选择选项文本展开行，以查看和编辑指标或分组依据选项。

## 使用管道处理语言（PPL）
<a name="ES-PPL"></a>

Amazon S OpenSearch ervice 数据源支持管道处理语言 (PPL)，该语言支持更简单但强大的查询和可视化功能。 OpenSearchPPL 使客户无需撰写冗长的 OpenSearch 域特定语言 (DSL) 语句或使用 JSON 对象编写查询即可浏览和查找数据。使用 PPL，您可以将查询写成一组由管道分隔的命令，类似于 UNIX 管道。

以下面的示例 DSL 查询为例：

```
GET opensearch_sample_data_logs/_search{"from":0,"size":0,"timeout":"1m","query":{"bool":{"should":[{"term":{"response.keyword":{"value":"404","boost":1}}},{"term":{"response.keyword":{"value":"503","boost":1}}}],"adjust_pure_negative":true,"boost":1}},"sort":[{"_doc":{"order":"asc"}}],"aggregations":{"composite_buckets":{"composite":{"size":1000,"sources":[{"host":{"terms":{"field":"host.keyword","missing_bucket":true,"order":"asc"}}},{"response":{"terms":{"field":"response.keyword","missing_bucket":true,"order":"asc"}}}]},"aggregations":{"request_count":{"value_count":{"field":"request.keyword"}},"sales_bucket_sort":{"bucket_sort":{"sort":[{"request_count":{"order":"desc"}}],"size":10}}}}}}>
```

前面的 DSL 查询可以替换为以下 PPL 命令，该命令简洁易懂。

```
source = opensearch_sample_data_logs | where response='404' or response='503' | stats count(request) as request_count by host, response | sort –request_count
```

有关 PPL 的更多信息，请参阅[使用管道处理语言查询 Amazon OpenSearch 服务数据](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/ppl-support.html)。

## 序列命名和别名模式
<a name="ES-series-naming-and-alias-patterns"></a>

 您可以使用 `Alias` 输入字段控制时间序列的名称。


|  模式  |  说明  | 
| --- | --- | 
|  \$1\$1term fieldname\$1\$1  |  替换为术语 Group By 的值。 | 
|  \$1\$1metric\$1\$1  |  替换为指标名称（例如 Average、Min、Max）。 | 
|  \$1\$1field\$1\$1  |  替换为指标字段名称。 | 

## 管道指标
<a name="ES-pipeline-metrics"></a>

*一些指标聚合称为管道聚合；例如，*移动平均*线和衍生物。* OpenSearch 管道指标需要另一个指标作为依据。使用指标旁边的眼睛图标可隐藏指标，使其不显示在图表中。这对于查询中仅包含用于管道指标的指标很有用。

## 模板化
<a name="ES-templating"></a>

 您可以在指标查询中使用变量来代替服务器、应用程序和传感器名称等硬编码的内容。变量显示为控制面板顶部的下拉选择框。您可以使用这些下拉框来更改控制面板中显示的数据。

 有关模板化和模板变量的更多信息，请参阅 [模板和变量](templates-and-variables.md)。

### 查询变量
<a name="ES-query-variable"></a>

 OpenSearch *服务数据源支持两种类型的查询，您可以在查询变量的*查询*字段中使用。*该查询是使用自定义 JSON 字符串编写的。


|  Query  |  说明  | 
| --- | --- | 
|  \$1"find": "fields", "type": "keyword"\$1  |  返回索引类型为 keyword 的字段名称列表。 | 
|  \$1"find": "terms", "field": "@hostname", "size": 1000\$1  |  使用术语聚合返回字段的值列表。查询将使用当前控制面板的时间范围作为查询的时间范围。 | 
|  \$1"find": "terms", "field": "@hostname", "query": '<lucene query>'\$1  |  使用术语聚合和指定的 Lucene 查询筛选条件返回字段的值列表。查询将使用当前控制面板的时间范围作为查询的时间范围。 | 

术语查询的默认大小限制为 500。要设置自定义限制，请在查询中设置大小属性。您可以在查询中使用其他变量。以下代码示例显示了一个名为 `$host` 的变量的查询定义。

```
{"find": "terms", "field": "@hostname", "query": "@source:$source"}
```

在前面的示例中，我们在查询定义中使用了另一个名为 `$source` 的变量。每当您使用下拉列表更改 `$source` 变量的当前值时，它都会启动 `$host` 变量的更新。更新后，`$host` 变量仅包含按（在本例中为 `@source` 文档属性）筛选的主机名。

默认情况下，这些查询按术语顺序返回结果（然后可以按字母顺序或数字顺序对任何变量进行排序）。要生成按文档计数排序的术语列表（前 N 个值列表），请添加 `doc_count` 的 `orderBy` 属性。这将自动选择降序排序。可通过设置 `order: "asc"` 将 `asc` 与 doc\$1count（后 N 个值列表）结合使用，但不建议这样做，因为会增加文档计数的误差。要使术语按文档计数顺序排列，请将变量的**排序**下拉列表设置为**禁用**。或者，您也可以使用**按字母顺序**对其重新排序。

```
{"find": "terms", "field": "@hostname", "orderBy": "doc_count"}
```

### 在查询中使用变量
<a name="ES-using-variables-in-queries"></a>

 共有两种语法：
+  `$<varname>` 示例：@hostname:\$1hostname 
+  `[[varname]]` 示例：@hostname:[[hostname]] 

 为什么是两种？ 第一种语法更容易读写，但不能在词中间使用变量。启用*多值*或*包含所有值*选项后，Grafana 会将标签从纯文本转换为兼容 Lucene 的条件。

 在前面的示例中，我们有一个 lucene 查询，该查询使用名为 `$hostname` 的变量根据 `@hostname` 属性筛选文档。同时使用了*术语*分组依据字段输入框中的变量。这让您可以使用变量快速更改数据的分组方式。

## Annotations
<a name="ES-annotations"></a>

您可以使用注释在图形上叠加丰富的事件信息。您可以使用控制面板菜单或注释视图添加注释查询。Grafana 可以查询 OpenSearch 任何索引中的注解事件。有关更多信息，请参阅 [Annotations](dashboard-annotations.md)。


|  名称  |  说明  | 
| --- | --- | 
|  Query  |  您可以将搜索查询留空，也可以指定 Lucene 查询。 | 
|  Time  |  时间字段的名称；必须是日期字段。 | 
|  Time End  |  时间结束字段的可选名称必须是日期字段。如果设置，注释将被标记为介于 time 和 time-end 之间的区域。 | 
|  Text  |  事件描述字段。 | 
|  Tags  |  用于事件标签的可选字段名称（可以是数组或 CSV 字符串）。 | 

## 查询 日志
<a name="ES-querying-logs-beta"></a>

 在 “浏览” 中可以查询和显示来自 OpenSearch 的日志数据。要显示您的日志，请选择 OpenSearch 服务数据源，然后根据需要输入 Lucene 查询。有关更多信息，请参阅 [Explore](explore.md)。

### 日志查询
<a name="ES-log-queries"></a>

 返回结果后，日志面板会显示日志行列表和条形图，其中 x 轴显示时间，y 轴显示频率或计数。

### 筛选日志消息
<a name="ES-filter-log-messages"></a>

 或者，在查询字段中输入 Lucene 查询以筛选日志消息。例如，如果使用默认的 Filebeat 设置，则可以使用 `fields.level:error` 仅显示错误日志消息。

# 亚马逊 OpenSearch 服务无服务器
<a name="datasources-opensearch-serverless"></a>

**注意**  
OpenSearch 服务无服务器支持仅适用于运行 Grafana 9.4 及更高版本的 Grafana 工作空间。

您可以使用 OpenSearch 服务数据源通过亚马逊托管 Grafana 访问亚马逊 OpenSearch 服务无服务器数据。数据访问权限由数据访问策略控制。以下示例展示了允许用户查询特定的集合和索引的策略。请务必将 *`collection_name`*、*`index_name`* 和 *`principal_arn`* 替换为适用于您的用例的正确值。

```
[
  {
    "Rules": [
      {
        "Resource": ["collection/{collection_name}"],
        "Permission": ["aoss:DescribeCollectionItems"],
        "ResourceType": "collection"
      },
      {
        "Resource": ["index/{collection_name}/{index_name}"],
        "Permission": ["aoss:DescribeIndex", "aoss:ReadDocument"],
        "ResourceType": "index"
      }
    ],
    "Principal": ["principal_arn"],
    "Description": "read-access"
  }
]
```

# 跟踪支持
<a name="datasources-opensearch-traces"></a>

该 OpenSearch 插件支持以表格形式查看跟踪列表，并支持在 Trace View 中**查看单个跟踪**，用于显示跟踪跨度的时间表。

**注意**  
只有使用 Lucene 查询才能查询 OpenSearch 轨迹。  
跟踪支持仅适用于支持 9.4 或更高版本的 Grafana 工作区。

要创建显示所有跟踪的查询，请使用带空白查询的 Lucene 查询类型 `Traces`。如有必要，请选择**表**可视化类型。

在表中选择跟踪 ID 将在跟踪视图中打开该跟踪。

要创建显示单条跟踪的查询，请使用查询 `traceid: {traceId}`，并在必要时选择**跟踪**可视化类型。

# Connect 连接到 AWS IoT SiteWise 数据源
<a name="using-iotsitewise-in-AMG"></a>

**注意**  
在支持版本 9 或更高版本的工作区中，此数据来源可能需要您安装相应的插件。有关更多信息，请参阅 [使用插件扩展您的工作区](grafana-plugins.md)。

 借助 Amazon Managed Grafana，您可以使用 Grafana 工作空间控制台 AWS 中的数据源配置选项将其 AWS IoT SiteWise 添加为数据源。此功能通过发现您的现有 AWS IoT SiteWise 帐户并管理访问所需的身份验证凭据的配置，简化了添加 AWS IoT SiteWise 为数据源的过程 AWS IoT SiteWise。您可以使用此方法设置身份验证，将 AWS IoT SiteWise 添加为数据来源，也可以使用与自我管理的 Grafana 服务器上相同的方法手动设置数据来源和必要的身份验证凭证。

**Topics**
+ [使用 AWS 数据源配置添加 AWS IoT SiteWise 为数据源](IoTSiteWise-adding-AWS-config.md)
+ [手动添加 AWS IoT SiteWise 数据源](iotsitewise-add-the-data-source.md)
+ [AWS IoT SiteWise 设置](#iotsitewise-settings)
+ [使用 AWS IoT SiteWise 数据源](IoTSiteWise-using.md)

# 使用 AWS 数据源配置添加 AWS IoT SiteWise 为数据源
<a name="IoTSiteWise-adding-AWS-config"></a>

要使用 AWS 数据源配置，首先要使用 Amazon Managed Grafana 控制台启用服务托管 IAM 角色，这些角色向工作空间授予读取您的账户或整个组织单位中资源 AWS IoT SiteWise 所必需的 IAM 策略。然后，您可以使用 Amazon Managed Grafana 工作区控制台，将 AWS IoT SiteWise 添加为数据来源。

**使用 AWS 数据源配置添加 AWS IoT SiteWise 为数据源**

1. 打开 Amazon Managed Grafana 控制台，其位于 [https://console.aws.amazon.com/grafana/](https://console.aws.amazon.com/grafana/home/)。

1. 在页面左上角，选择菜单图标，然后选择**所有工作区**。

1. 选择工作区的名称。

1. 如果您在创建此工作空间时没有选择使用服务管理权限，请从使用客户托管权限更改为使用服务管理权限，以确保启用适当的 IAM 角色和策略以使用 Grafana 工作区控制台中的 AWS 数据源配置选项。为此，请按 **IAM 角色**选择编辑图标，然后选择**服务托管**、**保存更改**。有关更多信息，请参阅 [亚马逊托管 Grafana 数据源的权限和政策 AWS](AMG-manage-permissions.md)。

1. 选择**数据来源**选项卡。然后选中 **AWS IoT** 的复选框 SiteWise，然后选择**操作**、**启用服务托管策略**。

1. **再次选择**数据源**选项卡，然后在物联网行中选择**在 Grafana 中AWS 配置**。 SiteWise**

1. 如有必要，使用 IAM Identity Center 登录 Grafana 工作区控制台。

1. **在 Grafana 工作空间控制台的左侧导航栏中，选择图标，然后选择**AWS 服务**， AWS 即物联网。 SiteWise**

1. 选择要从中查询 AWS IoT SiteWise 数据源的默认区域，选择帐户，然后选择**添加数据源**。

# 手动添加 AWS IoT SiteWise 数据源
<a name="iotsitewise-add-the-data-source"></a>

**手动添加 AWS IoT SiteWise 数据源**

1.  在 Grafana 控制台侧边菜单中，将鼠标悬停在**配置**（齿轮）图标上，然后选择**数据来源**。

1. 选择**添加数据来源**。

1. 选择**AWS 物联网 SiteWise**数据源。如有必要，您可以在搜索框中键入 **SiteWise**，帮助查找。

## AWS IoT SiteWise 设置
<a name="iotsitewise-settings"></a>


|  Name  |  说明  | 
| --- | --- | 
|  Name  |  数据来源名称。您将在面板和查询中通过其名称查看数据来源。 | 
|  身份验证提供商  |  指定要获取凭证的提供商。 | 
|  默认区域  |  在查询编辑器中用于设置区域（可根据每个查询进行更改）。 | 
|  凭证配置文件名称  |  指定要使用的配置文件名称（如果使用 \$1/.aws/credentials 文件）；默认留空。 | 
|  代入角色 Arn  |  指定要代入的角色的 ARN。 | 
|  端点（可选）  |  如果必须指定备用服务端点。 | 

# 使用 AWS IoT SiteWise 数据源
<a name="IoTSiteWise-using"></a>

有关如何使用 AWS IoT SiteWise 数据源的信息，请参阅 Github 上的[AWS IoT SiteWise 数据源](https://github.com/grafana/iot-sitewise-datasource/blob/main/src/README.md)。

# Connect 连接到 AWS IoT TwinMaker 数据源
<a name="AMG-iot-twinmaker"></a>

**注意**  
在支持版本 9 或更高版本的工作区中，此数据来源可能需要您安装相应的插件。有关更多信息，请参阅 [使用插件扩展您的工作区](grafana-plugins.md)。

 借助 Amazon Managed Grafana，您可以 AWS IoT TwinMaker在 Grafana 工作空间中添加强大的工业数据分析服务作为应用程序和数据源。借助 AWS IoT TwinMaker，您可以创建最终用户的 3D 数字双胞胎应用程序来监控工业运营。这项服务使开发人员能够更快地创建现实世界系统的数字副本，帮助更多客户意识到数字双胞胎在优化运营方面的潜力。 AWS IoT TwinMaker f AWS IoT TwinMaker or Grafana 提供自定义面板、仪表板模板和用于连接数字双胞胎数据的数据源。

# 手动添加 AWS IoT TwinMaker 数据源
<a name="twinmaker-add-the-data-source"></a>

## 先决条件
<a name="twinmaker-prerequisites"></a>

在开始之前，请确保您可以**AWS IoT TwinMaker**从中访问 AWS 账户。

 要了解如何为您的工作空间 IAM 角色添加访问权限 AWS IoT TwinMaker，请参阅[AWS IoT TwinMaker 向您的工作空间用户角色添加权限](AMG-iot-twinmaker.md#twinmaker-add-permission)。

**要添加 AWS IoT TwinMaker 数据源，请执行以下操作：**

1. 确保您的用户角色是管理员或编辑者。

1.  在 Grafana 控制台侧边菜单中，将鼠标悬停在**配置**（齿轮）图标上，然后选择**数据来源**。

1. 选择**添加数据来源**。

1. 选择**AWS IoT TwinMaker**数据源。如有必要，您可以在搜索框中键入 **TwinMaker**，帮助查找。

1. 此操作将打开**连接详细信息**页面。按照配置 [AWS IoT TwinMaker 连接详细信息设置](AMG-iot-twinmaker.md#twinmaker-connection-details) 的步骤操作。

## AWS IoT TwinMaker 向您的工作空间用户角色添加权限
<a name="twinmaker-add-permission"></a>

**要 AWS IoT TwinMaker 向您的工作空间用户角色添加权限，请在 Amazon Managed Grafana 工作空间 TwinMaker 和控制面板角色之间担任角色权限。**

1. 转到 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 手动创建控制面板角色。有关创建控制面板角色的更多信息，请参阅 [手动创建 Grafana 控制面板 AWS IoT TwinMaker 角色](#iot-twinmaker-dashboard-role)。

## AWS IoT TwinMaker 连接详细信息设置
<a name="twinmaker-connection-details"></a>

**配置连接详细信息设置**

1.  在**连接详细信息**菜单中，选择身份验证提供者（推荐：**Workspace IAM 角色**）。

1.  选择要查询的**默认区域**。

1.  在**TwinMaker 设置**中，输入工作 AWS IoT TwinMaker空间名称。

# 使用 AWS IoT TwinMaker 数据源
<a name="IoT-twinmaker-using"></a>

有关如何使用 AWS IoT TwinMaker 数据源的信息，请参阅上的 [AWS IoT TwinMakerDatasource](https://github.com/grafana/grafana-iot-twinmaker-app)。 GitHub

## 手动创建 Grafana 控制面板 AWS IoT TwinMaker 角色
<a name="iot-twinmaker-dashboard-role"></a>

**手动创建 Grafana 控制面板 AWS IoT TwinMaker 角色**

1. 登录 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在摘要中找到您的 Amazon Managed Grafana 工作区角色。其格式如下：

   ```
    AmazonGrafanaServiceRole-random_ID
   ```

1. 将下面的内联策略附加到该角色：

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Action": "sts:AssumeRole",
           "Resource": "arn:aws:iam::111122223333:role/TwinMakerDashboardRole"
       }
   }
   ```

------

1. 为每个控制面板角色添加新的内联策略。或者，在资源行上添加角色的 Amazon **资源**名称 (ARNs) 列表。

1. 在 IAM 控制台中找到您的控制面板角色。它应该有一个 `SceneViewer` 策略，还可以选择一个 `VideoPlayer` 策略。

1. 选择**信任关系**选项卡。

1. 选择**编辑信任关系**。

1. 输入以下政策，*AMGWorkspaceRoleArn*替换为账户中的 Arn：

------
#### [ JSON ]

****  

   ```
      {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "AWS": "AMGWorkspaceRoleARN"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

------

## AWS IoT TwinMaker 政策示例
<a name="AMG-TM-policy"></a>

以下是您可以附加到仪表板角色的最低 AWS IoT TwinMaker 策略。您必须根据自己的资源替换 AWS IoT TwinMaker 工作空间 ARN 和 ID 以及 Amazon S3 存储桶 ARN 的值。

# 连接到 Amazon Managed Service for Prometheus 和开源 Prometheus 数据来源
<a name="prometheus-data-source"></a>

 在 Amazon Managed Grafana 中，Prometheus 数据来源支持使用自行管理的 Prometheus 服务器和 Amazon Managed Service for Prometheus 作为数据来源。有关 Amazon Managed Service for Prometheus 的详细信息，请参阅[什么是 Amazon Managed Service for Prometheus？](https://docs.aws.amazon.com/prometheus/latest/userguide/what-is-Amazon-Managed-Service-Prometheus.html)

 通过 Amazon Managed Grafana，您可以使用 Grafana 工作区控制台中的 AWS 数据来源配置选项，将 Amazon Managed Service for Prometheus 工作区添加为数据来源。此功能通过发现现有的 Amazon Managed Service for Prometheus 账户以及管理访问 Amazon Managed Service for Prometheus 所需的身份验证凭证的配置，从而简化了将 Amazon Managed Service for Prometheus 添加为数据来源的过程。

**注意**  
您可以通过 [配置 Alertmanager 数据来源](data-source-alertmanager.md#data-source-alertmanager-create)，在统一的 Grafana Alerting 界面中查看您的 Prometheus 警报。

**Topics**
+ [使用 AWS 数据源配置将适用于 Prometheus 的亚马逊托管服务添加为数据源](AMP-adding-AWS-config.md)
+ [手动添加 Prometheus 数据来源](prometheus-manually-adding.md)
+ [使用 Prometheus 数据来源](using-prometheus-datasource.md)
+ [Amazon Managed Service for Prometheus 警报的可视化](amp-configure-alerts.md)
+ [配置示例](amp-configure-exemplars.md)

# 使用 AWS 数据源配置将适用于 Prometheus 的亚马逊托管服务添加为数据源
<a name="AMP-adding-AWS-config"></a>

要使用 AWS 数据源配置，首先要使用 Amazon Managed Grafana 控制台启用服务托管 IAM 角色，这些角色向工作空间授予读取账户或整个组织单位中适用于 Prometheus 的亚马逊托管服务资源所必需的 IAM 策略。然后使用 Amazon Managed Grafana 工作区控制台将 Amazon Managed Service for Prometheus 添加为数据来源。

**使用 AWS 数据源配置将适用于 Prometheus 的亚马逊托管服务添加为数据源**

1. 打开 Amazon Managed Grafana 控制台，其位于 [https://console.aws.amazon.com/grafana/](https://console.aws.amazon.com/grafana/home/)。

1. 在页面左上角，选择菜单图标，然后选择**所有工作区**。

1. 选择工作区的名称。

1. 如果您在创建此工作空间时没有选择使用服务管理权限，请从使用客户托管权限更改为使用服务管理权限，以确保启用适当的 IAM 角色和策略以使用 Grafana 工作区控制台中的 AWS 数据源配置选项。为此，请按 **IAM 角色**选择编辑图标，然后选择**服务托管**、**保存更改**。有关更多信息，请参阅 [亚马逊托管 Grafana 数据源的权限和政策 AWS](AMG-manage-permissions.md)。

1. 选择**数据来源**选项卡。然后，选择 **Amazon Managed Service for Prometheus** 复选框，再依次选择**操作**、**启用服务托管策略**。

1. 再次选择**数据来源**选项卡，然后在 **Amazon Managed Service for Prometheus** 行中选择**在 Grafana 中配置**。

1. 如有必要，使用 IAM Identity Center 登录 Grafana 工作区控制台。

1. **在 Grafana 工作区控制台的左侧导航栏中，选择图标，然后选择**AWS 服务** P AWS rometheus。**

1. 选择您希望 Amazon Managed Grafana 搜索以发现 Amazon Managed Service for Prometheus 工作区的区域，然后选择要添加的账户和 Amazon Managed Service for Prometheus 工作区，再选择**添加数据来源**。

# 手动添加 Prometheus 数据来源
<a name="prometheus-manually-adding"></a>

**要手动添加 Prometheus 数据来源**

1.  在 Grafana 控制台侧边菜单中，将鼠标悬停在**管理**菜单项（或 Grafana v8 中的**配置**（齿轮）图标）上，然后选择**数据来源**。

1. 选择**添加数据来源**。

1. 选择 **Prometheus** 数据来源。如有必要，您可以在搜索框中键入 **Prometheus**，帮助查找。

# 使用 Prometheus 数据来源
<a name="using-prometheus-datasource"></a>

## Prometheus 设置
<a name="prometheus-settings"></a>


|  Name  |  说明  | 
| --- | --- | 
|  Name  |  数据来源名称。您将在面板和查询中通过其名称查看数据来源。 | 
|  Default  |  默认数据来源意味着将为新面板预先选择该数据来源。 | 
|  Url  |  Prometheus 服务器的 URL，例如 https://prometheus.example.org:9090。 | 
|  Access  |  服务器（默认）= 必须可从 Grafana 后端/服务器访问 URL。 | 
|  Basic Auth  |  启用对 Prometheus 数据来源的基本身份验证。 | 
|  User  |  用于基本身份验证的用户名。 | 
|  Password  |  用于基本身份验证的密码。 | 
|  Scrape interval  |  将其设置为 Prometheus 中配置的典型抓取和评估间隔。默认值为 15 秒。 | 
|  Disable metrics lookup  |  选中此选项将禁用指标选择器和查询字段自动完成中的 metric/label 支持。如果您在使用较大的 Prometheus 实例时遇到性能问题，这会有所帮助。 | 
|  Custom Query Parameters  |  在 Prometheus 查询 URL 中添加自定义参数。例如，timeout、partial\$1response、dedup 或 max\$1source\$1resolution。应使用 "&" 将多个参数连接在一起。 | 

## Prometheus 查询编辑器
<a name="prometheus-query-editor"></a>

 以下部分提供了控制面板和 Explore 中 Prometheus 查询编辑器的信息和选项。

### 控制面板中的查询编辑器
<a name="query-editor-in-dashboards"></a>

 在编辑模式下打开图形，方法是选择标题，然后选择**编辑**（或在面板上暂停时按 **e** 键）。


|  Name  |  说明  | 
| --- | --- | 
|  Query expression  |  有关 Prometheus 查询表达式的更多信息，请参阅 [Prometheus 文档](https://prometheus.io/docs/querying/basics/)。 | 
|  Legend format  |  使用名称或模式控制时间序列的名称。例如，\$1\$1hostname\$1\$1 替换为标签 hostname 的标签值。 | 
|  Min step  |  [Prometheus 范围查询的 `step` 参数](https://prometheus.io/docs/prometheus/latest/querying/api/#range-queries)以及 \$1\$1\$1interval 和 \$1\$1\$1rate\$1interval 变量的附加下限。该限制是绝对的，不受分辨率设置的影响。 | 
|  Resolution  |  1/1 设置了 \$1\$1\$1interval 变量以及 [Prometheus 范围查询的 `step` 参数](https://prometheus.io/docs/prometheus/latest/querying/api/#range-queries)，使每个像素对应一个数据点。为了获得更好的性能，请使用较低的分辨率。1/2 每隔一个像素仅检索一个数据点，而 1/10 每 10 个像素检索一个数据点。请注意，最小时间间隔和最小步长都限制了 \$1\$1\$1interval 和 step 的最终值。 | 
|  Metric lookup  |  在此输入字段中搜索指标名称。 | 
|  Format as  |  在 Table、Time series 或 Heatmap 之间切换。Table 仅在表面板中起作用。Heatmap 适用于在热图面板上显示直方图类型的指标。其将累积直方图转换为常规直方图，并按存储桶边界对序列进行排序。 | 
|  Instant  |  执行 "instant" 查询，仅返回 Prometheus 为请求的时间序列抓取的最新值。Instant 查询返回结果的速度比正常范围查询快得多。使用这些结果来查找标签集。 | 
|  Min time interval  |  将该值乘以分辨率设置的分母，为 \$1\$1\$1interval 变量和 [Prometheus 范围查询的 `step` 参数](https://prometheus.io/docs/prometheus/latest/querying/api/#range-queries)设置下限。默认为数据来源选项中设置的抓取间隔。 | 

**注意**  
 Amazon Managed Grafana 会修改查询的请求日期，使其与动态计算的步骤保持一致。这样可确保指标数据一致显示，但可能会导致图形右边缘出现小的数据间隙。

#### 控制面板中的即时查询
<a name="prometheus-instant-queries-in-dashboards"></a>

 Prometheus 数据来源允许运行即时查询，仅查询最新值。您可以在表面板中可视化结果，以查看时间序列的所有可用标签。

 即时查询结果仅包含每个序列的一个数据点。借助序列覆盖，可在图形面板中显示结果。要在图形中显示为最新值点，请添加序列覆盖并选择 `Points > true`。要在整个图形中显示一条水平线，请添加序列覆盖并选择 `Transform > constant`。有关序列覆盖的更多信息，请参阅 [序列覆盖](graph-panel.md#graph-panel-series-overrides)。

### Explore 中的查询编辑器
<a name="p-query-editor-in-explore"></a>


|  Name  |  说明  | 
| --- | --- | 
|  Query expression  |  有关 Prometheus 查询表达式的更多信息，请参阅 [Prometheus 文档](https://prometheus.io/docs/querying/basics/)。 | 
|  Step  |  [Prometheus 范围查询的 `Step` 参数](https://prometheus.io/docs/prometheus/latest/querying/api/#range-queries)。此处可以使用时间单位，例如：5s、1m、3h、1d、1y。如果未指定单位，默认单位为 s（秒）。 | 
|  Query type  |  Range、Instant 或者 Both。运行范围查询时，查询结果将以图形和表的形式显示。即时查询仅返回 Prometheus 为请求的时间序列抓取的最新值，并显示在表中。如果选择二者，则同时运行即时查询和范围查询。范围查询结果以图形的形式显示，即时查询结果以表的形式显示。 | 

## 指标浏览器
<a name="prometheus-metrics-browser"></a>

通过指标浏览器，您可以快速查找指标并选择相关标签来构建基本查询。打开浏览器后，您将看到所有可用的指标和标签。如果 Prometheus 实例支持，则每个指标都将以工具提示的形式显示 HELP 和 TYPE。

选择指标时，浏览器会缩小可用标签的范围，仅显示适用于该指标的标签。然后，您可以选择一个或多个标签，可用标签值显示在底部的列表中。为每个标签选择一个或多个值，以缩小查询范围。

**注意**  
如果您不记得开头的指标名称，也可以先选择几个标签，缩小列表范围，然后再查找相关标签值。

指标浏览器中的所有列表上方都有一个搜索字段，可快速筛选与特定字符串匹配的指标或标签。值部分只有一个搜索字段。其筛选适用于所有标签，以帮助您在选择标签后跨标签查找值，例如，在标签 app、job、job\$1name 中，只有一个标签可能具有您要查找的值。

如果对查询感到满意，请单击“使用查询”来运行查询。**用作速率查询**按钮可在查询中添加 rate(...)[\$1\$1\$1interval]，来帮助编写计数器指标查询。“验证选择器”按钮将向 Prometheus 核实该选择器有多少时间序列可用。

### 限制
<a name="metrics-browser-limitations"></a>

指标浏览器的硬限制为 10000 个标签（键）和 50000 个标签值（包括指标名称）。如果 Prometheus 实例返回更多结果，浏览器将继续运行。但是，如果超过最大限制，结果集将被截断。

## 模板化
<a name="p-templating"></a>

 您可以在指标查询中使用变量来代替服务器、应用程序和传感器名称等硬编码。变量显示为控制面板顶部的下拉选择框。您可以使用这些下拉框来更改控制面板中显示的数据。

 有关模板化和模板变量的更多信息，请参阅 [模板和变量](templates-and-variables.md)。

### 查询变量
<a name="p-query-variable"></a>

 *查询*类型的变量允许您查询 Prometheus 以获取指标、标签或标签值的列表。Prometheus 数据来源插件提供了以下函数，您可以在**查询**输入字段中使用。


|  Name  |  说明  | 
| --- | --- | 
|  label\$1names()  |  返回标签名称列表。 | 
|  label\$1values(label)  |  返回每个指标中 label 的标签值列表。 | 
|  label\$1values(metric, label)  |  返回指定指标中 label 的标签值列表。 | 
|  metrics(metric)  |  返回匹配指定 metric 正则表达式的指标列表。 | 
|  query\$1result(query)  |  返回 query 的 Prometheus 查询结果列表。 | 

 有关*指标名称*、*标签名称*和*标签值*的信息，请参阅 [Prometheus 文档](https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels)。

#### 使用间隔和范围变量
<a name="p-using-interval-and-range-variables"></a>

**注意**  
 仅从 Grafana v5.3 开始支持 `$__range`、`$__range_s` 和 `$__range_ms`。

 您可以在查询变量中使用一些全局变量：`$__interval`、`$__interval_ms`、`$__range`、`$__range_s` 和 `$__range_ms`。有关更多信息，请参阅 [全局变量](variables-types.md#global-variables)。由于 `label_values` 函数不支持查询，因此当需要筛选变量查询时，可以很方便地将其与 `query_result` 函数配合使用。

 要在更改控制面板上的时间范围时获得正确的实例，请确保将变量的 `refresh` 触发器设置为 `On Time Range Change`。

以下代码示例显示了如何根据控制面板中显示的时间范围内的平均 QPS，用最繁忙的 5 个请求实例填充变量。

```
Query: query_result(topk(5, sum(rate(http_requests_total[$__range])) by (instance)))
Regex: /"([^"]+)"/
```

 以下代码示例显示了如何使用 `$__range_s` 在控制面板中显示的时间范围内，用具有特定状态的实例填充变量。

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

### 使用 `$__rate_interval` 变量
<a name="p-using-__rate_interval-variable"></a>

 `$__rate_interval` 变量旨在用于 rate 函数。定义为最大值（`$__interval` \$1 *抓取间隔*，4 \$1 *抓取间隔*）。*抓取间隔*是最小步长设置（又名 query\$1interval，每个 PromQL 查询的设置）（如已设置），否则为 Prometheus 数据来源中设置的*抓取间隔*（但忽略面板中的任何最小间隔设置，因为后者由分辨率设置修改）。

### 在查询中使用变量
<a name="p-using-variables-in-queries"></a>

 共有两种语法：
+  `$<varname>` 示例：rate(http\$1requests\$1total\$1job=\$1"\$1job"\$1[5m]) 
+  `[[varname]]` 示例：rate(http\$1requests\$1total\$1job=\$1"[[job]]"\$1[5m]) 

 为什么是两种？ 第一种语法更容易读写，但不能在词中间使用变量。启用*多值*或*包含所有值*选项后，Grafana 会将标签从纯文本转换为兼容正则表达式的字符串。这意味着必须使用 `=~` 而不是 `=`。

## Annotations
<a name="p-annotations"></a>

 您可以使用注释在图形上叠加丰富的事件信息。您可以使用控制面板菜单或注释视图添加注释查询。有关更多信息，请参阅 [Annotations](dashboard-annotations.md)。

 Prometheus 支持两种查询注释的方式。
+  常规指标查询 
+  Prometheus 查询待处理和触发警报。有关更多信息，请参阅[运行时检查警报](https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/#inspecting-alerts-during-runtime)。

 step 选项可用于限制查询返回的事件数量。

# Amazon Managed Service for Prometheus 警报的可视化
<a name="amp-configure-alerts"></a>

通过为已连接的 Prometheus 数据来源配置 Alertmanager 数据来源，您可以在 Amazon Managed Grafana 中可视化 Amazon Managed Service for Prometheus 或 Prometheus 的警报。

**先决条件**

要配置 Alertmanager，以与 Amazon Managed Service for Prometheus 一起使用，您必须拥有以下先决条件：
+ 一个 [Amazon Managed Service for Prometheus](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-onboard-create-workspace.html) 实例，该实例具有摄取的指标，并且至少配置了一条警报或记录规则。**您需要工作空间的 URL（从适用于 Prometheus 的亚马逊托管服务中的工作空间详细信息中可以看到终端节点 URL。** 工作空间 URl 是终端节点 URL（末尾没有）。`api/v1/remote_write`
+ 使用[配置为数据来源](prometheus-data-source.md)的 Prometheus 实例[创建](AMG-create-workspace.md)的 Amazon Managed Grafana 工作区。
+ Amazon Managed Grafana 必须具有以下权限才能访问您的 Prometheus 资源。您必须将其添加到 [亚马逊托管 Grafana 数据源的权限和政策 AWS](AMG-manage-permissions.md) 中所述的服务管理策略或客户管理策略中。
  + `aps:ListRules`
  + `aps:ListAlertManagerSilences`
  + `aps:ListAlertManagerAlerts`
  + `aps:GetAlertManagerStatus`
  + `aps:ListAlertManagerAlertGroups`
  + `aps:PutAlertManagerSilences`
  + `aps:DeleteAlertManagerSilence`

**要配置 Alertmanager 数据来源，以便与 Amazon Managed Service for Prometheus 一起使用**

1. 在 Grafana 控制台的 Grafana 菜单中，选择**配置**下的**数据来源**页面。

1. 选择**添加数据来源**，然后从数据来源类型列表中选择 **Alertmanager**。

1. 为您的新数据来源提供以下信息。
   + 对于**实现**，选择 **Prometheus**。
   + 在 **HTTP** 下，对于 **URL**，提供 Prometheus 工作区的 URL，并附加 `alertmanager`。例如 `https://aps-workspaces.us-east1.amazonaws.com/workspaces/ws-example-1234-5678-abcd-xyz00000001/alertmanager`。
   + 在**身份验证**下，开启 **SigV4Auth**。这会告诉 Grafana 对请求使用 [AWS 身份验证](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)。
   + 例如，在 **Sigv4Auth 详细信息**下的**默认区域**中，提供您的 Prometheus 实例所在的区域，例如 `us-east-1`。

1. 选择**保存并测试**以完成数据来源设置。

   如果您的数据来源设置正确，您将看到一条消息，提示**运行状况检查已通过**。

**要将新的 Alertmanager 数据来源连接到 Prometheus 数据来源**

1. 在 Grafana 控制台的 Grafana 菜单中，选择**配置**下的**数据来源**页面。

1. 选择您原来的 Amazon Managed Service for Prometheus 数据来源，并开启**通过警报用户界面管理警报**的切换开关。

1. 选择**保存并测试**，以完成数据来源的配置。

# 配置示例
<a name="amp-configure-exemplars"></a>

**注意**  
此功能需要 Prometheus 2.26 或更高版本。  
Amazon Managed Service for Prometheus 不支持示例。

您可以在 Explore 和“控制面板”中将示例数据与指标一起显示。示例将来自特定事件的更高基数元数据与传统的时间序列数据相关联。

您可以通过为示例添加链接，在数据来源设置中配置示例。您可以在 URL 中使用宏。例如，您可以创建一个 URL，如 `https://example.com/${__value.raw}`。

# 连接到 Amazon Timestream 数据来源
<a name="timestream-datasource"></a>

**注意**  
在支持版本 9 或更高版本的工作区中，此数据来源可能需要您安装相应的插件。有关更多信息，请参阅 [使用插件扩展您的工作区](grafana-plugins.md)。

 借助 Amazon Managed Grafana，您可以使用 Grafana AWS 工作空间控制台中的数据源配置选项将 Amazon Timestream 添加为数据源。此功能通过发现您现有的 Timestream 账户，简化了将 Timestream 添加为数据来源的过程，并可管理访问 Timestream 所需身份验证凭证的配置。您可以使用此方法设置身份验证，将 Timestream 添加为数据来源，也可以使用与自我管理的 Grafana 服务器上相同的方法手动设置数据来源和必要的身份验证凭证。



# 使用 AWS 数据源配置将 Timestream 添加为数据源
<a name="Timestream-adding-AWS-config"></a>

要使用 AWS 数据源配置，首先要使用 Amazon Managed Grafana 控制台启用服务托管 IAM 角色，这些角色向工作空间授予读取账户或整个组织单位中的 Timestream 资源所必需的 IAM 策略。然后，您可以使用 Amazon Managed Grafana 工作区控制台，将 Timestream 添加为数据来源。

**使用 AWS 数据源配置将 Timestream 添加为数据源**

1. 打开 Amazon Managed Grafana 控制台，其位于 [https://console.aws.amazon.com/grafana/](https://console.aws.amazon.com/grafana/home/)。

1. 在页面左上角，选择菜单图标，然后选择**所有工作区**。

1. 选择工作区的名称。

1. 如果您在创建此工作空间时没有选择使用服务管理权限，请从使用客户托管权限更改为使用服务管理权限，以确保启用适当的 IAM 角色和策略以使用 Grafana 工作区控制台中的 AWS 数据源配置选项。为此，请按 **IAM 角色**选择编辑图标，然后选择**服务托管**、**保存更改**。有关更多信息，请参阅 [亚马逊托管 Grafana 数据源的权限和政策 AWS](AMG-manage-permissions.md)。

1. 选择**数据来源**选项卡。选中 **Amazon Timestream** 的复选框，然后依次选择**操作**、**启用服务托管策略**。

1. 再次选择**数据来源**选项卡，然后在 **Amazon Timestream** 行中选择**在 Grafana 中配置**。

1. 如有必要，使用 IAM Identity Center 登录 Grafana 工作区控制台。

1. 在 Grafana 工作区控制台的左侧导航栏中，**选择应用程序，AWS 然后选择****数据**源（在 Grafana v8 中，从左侧菜单中选择图标）。 AWS 

1. 选择 **AWS 服务**选项卡，然后选择 **Timestream**。

1. 选择您希望 **Timestream** 数据来源从中进行查询的默认区域，选择账户，然后选择**添加数据来源**。

# 手动添加 Timestream 数据来源
<a name="timestream-add-the-data-source"></a>

**要手动添加 Timestream 数据来源**

1.  在 Grafana 控制台侧边菜单中，将鼠标悬停在**配置**（齿轮）图标上，然后选择**数据来源**。

1. 选择**添加数据来源**。

1. 选择 **Amazon Timestream** 数据来源。如有必要，您可以在搜索框中键入 **Timestream**，帮助查找。

## Timestream 设置
<a name="timestream-settings"></a>


|  Name  |  说明  | 
| --- | --- | 
|  Name  |  数据来源名称。您将在面板和查询中通过其名称查看数据来源。 | 
|  身份验证提供商  |  指定要获取凭证的提供商。 | 
|  默认区域  |  在查询编辑器中用于设置区域（可根据每个查询进行更改）。 | 
|  凭证配置文件名称  |  指定要使用的配置文件名称（如果使用 \$1/.aws/credentials 文件），默认留空。 | 
|  代入角色 Arn  |  指定要代入的角色的 ARN。 | 
|  端点（可选）  |  如果必须指定备用服务端点。 | 

### 身份验证
<a name="timestream-authentication"></a>

 本节介绍了可用于 Amazon Timestream 数据来源的不同类型的身份验证。

#### AWS 证书示例
<a name="timestream-example-aws-credentials"></a>

 在 Amazon Managed Grafana 中，不能使用凭证文件方法进行身份验证。

# 使用 Timestream 数据来源
<a name="timestream-query-editor"></a>

## 查询编辑器
<a name="timestream-query-editor"></a>

 除了前面列出的宏和任何控制面板模板变量之外，查询编辑器还接受 Timestream 语法。

 **按 Ctrl\$1空格**键打开建议。 IntelliSense 

## 宏
<a name="timestream-macros"></a>

 为了简化语法并允许动态部分（如日期范围筛选器），查询可包含宏。


|  宏示例  |  说明  | 
| --- | --- | 
|  *\$1\$1\$1database* |  指定所选数据库。这将使用数据来源配置中的默认值，或查询编辑器中的显式值。 | 
|  *\$1\$1\$1table*  |  指定所选数据库。这将使用数据来源配置中的默认值，或查询编辑器中的显式值。 | 
|  *\$1\$1\$1measure*  |  指定所选度量。这将使用数据来源配置中的默认值，或查询编辑器中的显式值。 | 
|  *\$1\$1\$1timeFilter*  |  替换为表达式，该表达式可将时间限制在控制面板范围内  | 
|  *\$1\$1\$1interval\$1ms*  |  替换为数字，该数字表示图形中单个像素应覆盖的时间量。 | 

# 连接到 Amazon Athena 数据来源
<a name="AWS-Athena"></a>

**注意**  
在支持版本 9 或更高版本的工作区中，此数据来源可能需要您安装相应的插件。有关更多信息，请参阅 [使用插件扩展您的工作区](grafana-plugins.md)。

**注意**  
 本指南假设您在使用 Athena 数据来源之前，已熟悉 Amazon Athena 服务。

借助 Amazon Managed Grafana，您可以使用 Grafana 工作空间控制台中的数据源配置选项将 Athena 添加为 AWS 数据源。此功能通过发现您现有的 Athena 账户，简化了将 Athena 添加为数据来源的过程，并可管理访问 Athena 所需身份验证凭证的配置。您可以使用此方法设置身份验证，将 Athena 添加为数据来源，也可以使用与自我管理的 Grafana 服务器上相同的方法手动设置数据来源和必要的身份验证凭证。



 需要满足一些先决条件，Amazon Managed Grafana 才能访问 Athena。有关与使用 Athena 数据来源相关的先决条件，请参阅 [先决条件](Athena-prereq.md)。

# 先决条件
<a name="Athena-prereq"></a>

要使用 Amazon Managed Grafana for Athena 的托管策略，请在配置 Athena 数据来源之前完成以下任务：
+ 用 `GrafanaDataSource: true` 标记您的 Athena 工作组。
+ 创建名称以 `grafana-athena-query-results-` 开头的 S3 存储桶。此策略提供了所需的权限，可将查询结果写入符合该命名约定的 S3 存储桶。

用于访问 Athena 查询底层数据来源的 Amazon S3 权限不包含在此托管策略中。您必须手动为 Amazon S3 存储桶添加必要的权限 case-by-case。有关更多信息，请参阅此指南中 [Amazon Managed Grafana 中的基于身份的策略示例](https://docs.aws.amazon.com/grafana/latest/userguide/security_iam_id-based-policy-examples.html)。

# 使用 AWS 数据源配置将 Amazon Athena 添加为数据源
<a name="Athena-adding-AWS-config"></a>

## 先决条件
<a name="Athena-prerequisites"></a>
+ 已在您的环境中安装和配置 [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)。
+ 您可以通过自己的账户访问 Athena。

要使用 AWS 数据源配置，请先前往 Amazon Managed Grafana 控制台启用服务托管 IAM 角色，这些角色向工作空间授予读取您的账户或整个组织单位中的 Athena 资源所必需的 IAM 策略。然后，您可以使用 Amazon Managed Grafana 工作区控制台，将 Athena 添加为数据来源。

# 使用 AWS 数据源配置将 Athena 添加为数据源


1.  确保您的用户角色是管理员或编辑者。

1.  从 Amazon Managed Grafana 控制台中选择要使用的工作空间，网址为。[https://console.aws.amazon.com/grafana/](https://console.aws.amazon.com/grafana/home/)

1. 如果您在创建此工作空间时没有选择使用服务管理权限，请从使用客户托管权限更改为使用服务管理权限，以确保启用适当的 IAM 角色和策略以使用 Grafana 工作区控制台中的 AWS 数据源配置选项。为此，请按 **IAM 角色**选择编辑图标，然后选择**服务托管**、**保存更改**。有关更多信息，请参阅 [亚马逊托管 Grafana 数据源的权限和政策 AWS](AMG-manage-permissions.md)。

1. 选择**数据来源**选项卡。然后选中 **Amazon Athena** 的复选框，然后依次选择**操作**、**启用服务托管策略**。

1. 再次选择**数据来源**选项卡，然后在 **Amazon Athena** 行中选择**在 Grafana 中配置**。

1. 如有必要，使用 IAM Identity Center 登录 Grafana 工作区控制台。用户应将 Athena 访问策略附加到用户/角色才能访问 Athena 数据来源。有关更多信息，请参阅[AWS 托管策略： AmazonGrafanaAthenaAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonGrafanaAthenaAccess)。

1. **在 Grafana 工作区控制台的左侧导航栏中，选择 AWS 下方的图标（有两个），然后从 “数据源” 菜单中选择 **Athena**。**

1. 选择您希望 Athena 数据来源从中进行查询的默认区域，然后选择所需的账户，选择**添加数据来源**。

1.  按照 [**Athena 详细信息**设置](#Athena-settings) 中的步骤配置 **Athena 详细信息**

## **Athena 详细信息**设置
<a name="Athena-settings"></a>

**配置 **Athena 详情**设置**

1.  在**连接详细信息**菜单中，选择身份验证提供者（推荐：**Workspace IAM 角色**）。

1.  选择您的 Athena 账户所在的目标 Athena 数据来源。如果未选择任何数据来源，下拉列表中会有一个默认数据来源。

   要创建新的 Athena 账户，请按照 [Athena 入门](https://docs.aws.amazon.com/athena/latest/ug/getting-started.html)中的说明进行操作。

1.  在上面选择的数据来源中选择目标 Athena 数据库。

1.  选择工作组。默认为**主要**。

1.  如果您的工作组尚未配置输出位置，请指定用于查询结果的 S3 存储桶和文件夹。例如，`s3://grafana-athena-plugin-test-data/query-result-output/ `

1.  选择**保存并测试**。

# 手动添加 Athena 数据来源
<a name="Athena-add-the-data-source"></a>

## 先决条件
<a name="Athena-prerequisites2"></a>
+ 已在您的环境中安装和配置 [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)。
+  您可以通过自己的账户访问 **Amazon Athena**。

**要手动添加 Athena 数据来源：**

1.  在 Grafana 控制台侧边菜单中，将鼠标悬停在**配置**（齿轮）图标上，然后选择**数据来源**。

1. 选择**添加数据来源**。

1. 选择 **AWS Athena** 数据来源。如有必要，您可以在搜索框中键入 **Athena**，帮助查找。

1.  在**连接详细信息**菜单中，配置身份验证提供者（推荐：**Workspace IAM 角色**） 

1.  选择您的目标 Athena 数据来源、数据库和工作组。

   要创建新的 Athena 账户，请按照 [Athena 入门](https://docs.aws.amazon.com/athena/latest/ug/getting-started.html)中的说明进行操作。

1.  如果您的工作组尚未配置输出位置，请指定用于查询结果的 S3 存储桶和文件夹。例如 `s3://grafana-athena-plugin-test-data/query-result-output/ `。

1.  选择**保存并测试**。

以下是 **Athena 详细信息**设置的示例。

![\[Athena 详细信息示例\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/athena.png)


# 使用 Athena 数据来源
<a name="Athena-using-the-data-source"></a>

## IAM 策略
<a name="Athena-policies"></a>

 Grafana 需要通过 IAM 授予权限才能读取 Athena 指标。您可以将这些权限附加到 IAM 角色，并利用 Grafana 的内置支持来担任这些角色。请注意，在将数据来源添加到 Grafana 之前，您需要为角色[配置所需的策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。添加数据来源需要管理员或编辑者角色。[AWS 托管策略： AmazonGrafanaAthenaAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonGrafanaAthenaAccess) 一节中定义了内置的 Amazon Grafana Athena 访问策略。

## 查询 Athena 数据
<a name="Athena-query"></a>

Athena 数据来源提供了标准的 SQL 查询编辑器。Amazon Managed Grafana 包含一些宏来帮助编写更复杂的时间序列查询。

宏


|  宏  |  说明  |  示例  |  输出示例  | 
| --- | --- | --- | --- | 
|  \$1\$1\$1dateFilter(column)  |  \$1\$1\$1dateFilter 创建了一个条件筛选器，根据面板的日期范围选择数据（使用 column）。 |  \$1\$1\$1date(my\$1date)  | my\$1date BETWEEN date '2017-07-18' AND date '2017-07-18' | 
|  \$1\$1\$1parseTime(column,format)  |  \$1\$1\$1parseTime 按给定的格式将 varchar 转换为时间戳。 |  \$1\$1\$1parseTime(eventtime, 'yyyy-MM-dd''T''HH:mm:ss''Z')  | parse\$1datetime(time,'yyyy-MM-dd''T''HH:mm:ss''Z') | 
|  \$1\$1\$1timeFilter(column,format)  |  \$1\$1\$1timeFilter 创建了一个条件，根据面板的时间范围筛选数据（使用 column）。第二个参数用于选择性地将列从 varchar 解析为具有特定格式的时间戳。 | \$1\$1\$1timeFilter(time, 'yyyy-MM-dd HH:mm:ss') | TIMESTAMP time BETWEEN TIMESTAMP '2017-07-18T11:15:52Z' AND TIMESTAMP '2017-07-18T11:15:52Z' | 
|  \$1\$1\$1timeFrom()  |  \$1\$1\$1timeFrom 输出面板时间范围的当前开始时间，并加上引号。 | \$1\$1\$1timeFrom() | TIMESTAMP '2017-07-18 11:15:52' | 
|  \$1\$1\$1timeTo()  |  \$1\$1\$1timeTo  输出面板时间范围的当前结束时间，并加上引号。 | \$1\$1\$1timeTo() | TIMESTAMP '2017-07-18 11:15:52' | 
|  \$1\$1\$1timeGroup(column, '1m', format)  |  \$1\$1\$1timeGroup  对时间戳进行分组，使得图表上的每个周期只有 1 个点。第三个参数用于选择性地将列从 varchar 解析为具有特定格式的时间戳。 | \$1\$1\$1timeGroup(time,'5m','yyyy-MM-dd''T''HH:mm:ss.SSSSSS''Z') | FROM\$1UNIXTIME(FLOOR(TO\$1UNIXTIME(parse\$1datetime(time,'yyyy-MM-dd''T''HH:mm:ss.SSSSSS''Z'))/300)\$1300) | 
|  \$1\$1\$1table  |   \$1\$1\$1table 返回在表选择器中选择的表。 | \$1\$1\$1table | my\$1table | 
|  \$1\$1\$1column  |  \$1\$1\$1column 返回在列选择器中选择的列（它需要一个表）。 | \$1\$1\$1column  | col1  | 

**可视化**

Athena 中的大多数查询都可以通过表可视化得到最好地展示。查询以表的形式显示返回数据。如果可以查询，则可以将结果显示为表。

此示例返回表可视化的结果：

```
SELECT {column_1}, {column_2} FROM {table};
```

**时间序列/图表可视化**

对于时间序列和图表可视化，您必须：
+ 选择 `date` 或 `datetime` 类型的列。`date` 列必须按升序排列（使用 `ORDER BY column ASC`）。
+ 还必须选择数字列。

**检查查询**

Amazon Managed Grafana 支持 Athena 不支持的宏，这意味着将查询直接复制并粘贴到 Athena 中可能无法运行。要查看可直接在 Athena 中运行的完整插值查询，请单击**查询检查器**按钮。完整的查询显示在**查询**选项卡下。

## 模板和变量
<a name="using-Athena-templates-variables"></a>

有关添加 Athena 查询变量的更多信息，请参阅 [添加查询变量](variables-types.md#add-a-query-variable)。使用 Athena 数据来源作为可用查询的数据来源。

从 Athena 表中查询的任何值都可用作变量。避免选择过多的值，因为这会导致性能问题。

创建变量后，您可以在 Athena 查询中通过使用 [变量语法](templates-and-variables.md#variable-syntax) 来使用它。有关变量的更多信息，请参阅 [模板和变量](templates-and-variables.md)。

## Annotations
<a name="using-Athena-annotations"></a>

使用 [Annotations](dashboard-annotations.md) 可以在图表上叠加丰富的事件信息。您可以通过选择面板添加注释，也可以使用**控制面板**菜单的**注释**视图，通过添加注释查询来添加注释。

自动添加注释的示例查询：

```
SELECT
  time as time,
  environment as tags,
  humidity as text
FROM
  tableName
WHERE
  $__dateFilter(time) and humidity > 95
```

下表为可用于呈现注释的列提供了说明：


|  Name  |  说明  | 
| --- | --- | 
|  Time  |  date/time 字段的名称。可以是具有本机 SQL date/time 数据类型或纪元值的列。 | 
|  Timeend  |  结束 date/time 字段的可选名称。可以是具有本机 SQL date/time 数据类型或纪元值的列。（Grafana v6.6\$1）  | 
|  Text  |  事件描述字段。 | 
|  Tags  |  用于事件标签的可选字段名称，显示为以逗号分隔的字符串。 | 

## 异步查询数据支持
<a name="athena-async-query"></a>

Amazon Managed Grafana 中的 Athena 查询以异步方式处理，以避免超时。异步查询使用单独的请求启动查询，然后检查查询进度，最后获取结果。这样可以避免长时间运行的查询发生超时。

## 查询结果重用
<a name="athena-query-reuse"></a>

可以重复使用之前查询的结果来提高查询性能。要启用查询重用，请在查询编辑器的**查询结果重用**部分启用它。必须为每个要重用查询的查询执行此操作。

**注意**  
此功能要求您的 Athena 实例使用引擎版本 3。有关详细信息，请参阅《Amazon Athena 用户指南》**中的[更改 Athena 引擎版本](https://docs.aws.amazon.com/athena/latest/ug/engine-versions-changing.html)。

# 连接到 Amazon Redshift 数据来源
<a name="AWS-Redshift"></a>

**注意**  
在支持版本 9 或更高版本的工作区中，此数据来源可能需要您安装相应的插件。有关更多信息，请参阅 [使用插件扩展您的工作区](grafana-plugins.md)。

**注意**  
 本指南假设用户在使用 Amazon Redshift 数据来源之前已熟悉 Amazon Redshift 服务。

借助 Amazon Managed Grafana，您可以使用 Grafana AWS 工作空间控制台中的数据源配置选项将 Amazon Redshift 添加为数据源。此功能通过发现您现有的 Amazon Redshift 账户，简化了将 Amazon Redshift 添加为数据来源的过程，并可管理访问 Amazon Redshift 所需身份验证凭证的配置。您可以使用此方法设置身份验证，将 Amazon Redshift 添加为数据来源，也可以使用与自我管理的 Grafana 服务器上相同的方法手动设置数据来源和必要的身份验证凭证。

需要满足一些先决条件，Amazon Managed Grafana 才能访问 Amazon Redshift。有关与使用 Amazon Redshift 数据来源相关的先决条件，请参阅 [先决条件](Redshift-prereq.md)。

# 先决条件
<a name="Redshift-prereq"></a>

要使用亚马逊托管 Grafana 的托 AWS 管策略，请在配置 Amazon Redshift 数据源之前完成以下任务：
+ 使用 `GrafanaDataSource: true` 标记 Amazon Redshift 集群。否则，它将无法访问。
+ 通过以下互斥方式之一创建数据库凭证：
  + 如果要使用默认机制（临时凭证选项）对 Redshift 数据库进行身份验证，则必须创建一个名为 `redshift_data_api_user` 的数据库用户。
  + 如果要使用来自 Secrets Manager 的凭证，则必须使用 `RedshiftQueryOwner: true` 标记密钥。有关更多信息，请参阅本指南中 [Amazon Managed Grafana 中的基于身份的策略示例](https://docs.aws.amazon.com/grafana/latest/userguide/security_iam_id-based-policy-examples.html)。

# 使用 AWS 数据源配置将 Amazon Redshift 添加为数据源
<a name="Redshift-configure"></a>

# 使用 AWS 数据源配置将 Amazon Redshift 添加为数据源


1.  确保您的用户角色是管理员或编辑者。

1.  从 Amazon Managed Grafana 控制台中选择要使用的工作空间，网址为。[https://console.aws.amazon.com/grafana/](https://console.aws.amazon.com/grafana/home/)

1. 如果您在创建此工作空间时没有选择使用服务管理权限，请从使用客户托管权限更改为使用服务管理权限，以确保启用适当的 IAM 角色和策略以使用 Grafana 工作区控制台中的 AWS 数据源配置选项。为此，请按 **IAM 角色**选择编辑图标，然后选择**服务托管**、**保存更改**。有关更多信息，请参阅 [亚马逊托管 Grafana 数据源的权限和政策 AWS](AMG-manage-permissions.md)。

1. 选择**数据来源**选项卡。然后选中 **Amazon Redshift** 的复选框，并选择**操作**、**启用服务托管策略**。

1. 再次选择**数据来源**选项卡，然后在 **Amazon Redshift** 行中选择**在 Grafana 中配置**。

1. 如有必要，使用 IAM Identity Center 登录 Grafana 工作区控制台。

1. 在 Grafana 工作区控制台的左侧导航栏中，选择位置靠下的 AWS 图标（有两个图标），然后选择 **Redshift**。

1. 选择您希望 Amazon Redshift 数据来源从中进行查询的默认区域，然后选择所需的账户，然后选择**添加数据来源**。

1.  按照 [**连接详细信息**设置](Redshift-config.md#Redshift-connection-details)中的步骤配置**连接详细信息**。

# 手动添加 Amazon Redshift 数据来源
<a name="Redshift-add-the-data-source"></a>

## 先决条件
<a name="Redshift-prerequisites"></a>
+  您可以通过自己的账户访问 **Amazon Redshift**。

**要添加 Amazon Redshift 数据来源，请执行以下操作：**

1. 将附加[AmazonRedshiftAccessPolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonGrafanaRedshiftAccess)到您的工作空间用户角色。

1. 确保您的用户角色是管理员或编辑者。

1.  从 Amazon Managed Grafana 控制台中选择要处理的工作空间，网址为。[https://console.aws.amazon.com/grafana/](https://console.aws.amazon.com/grafana/home/)

1.  在 Grafana 控制台侧边菜单中，将鼠标悬停在**配置**（齿轮）图标上，然后选择**数据来源**。

1. 选择**添加数据来源**。

1. 选择 **AWS Redshift** 数据来源。如有必要，您可以在搜索框中键入 **Redshift**，帮助查找。

1. 此操作将打开**连接详细信息**页面。按照配置 [**连接详细信息**设置](Redshift-config.md#Redshift-connection-details) 的步骤操作。

# 配置 Amazon Redshift
<a name="Redshift-config"></a>

 将 Amazon Redshift 数据来源添加到工作区后，按以下方式配置 Amazon Redshift 设置：

## 先决条件
<a name="Redshift-prerequisites"></a>
+  您可以通过自己的账户访问 **Amazon Redshift**。

## **连接详细信息**设置
<a name="Redshift-connection-details"></a>

**配置连接详细信息设置**

1.  在**连接详细信息**菜单中，选择身份验证提供者（推荐：**Workspace IAM 角色**）。

1.  选择要查询的**默认区域**。

## **身份验证**设置
<a name="Redshift-Authentication"></a>

**配置**身份验证**设置**

1.  在**身份验证**菜单中，选择**临时凭证**或 **AWS Secrets Manager** 选项卡作为您的访问凭证提供者。有关临时证书和 S AWS ecrets Manager 的详细信息，请参阅 [AWS 托管策略： AmazonGrafanaRedshiftAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonGrafanaRedshiftAccess)

1.  如果您选择默认的**临时凭证**，请按照以下步骤操作。如果您选择 **AWS Secrets Manager**，请在输入字段中输入您的 **AWS Secrets Manager** 凭证。

1.  选择在 Amazon Redshift 中创建的集群的**集群标识**。

   有关 Redshift 集群的更多信息，请参阅 [Redshift 连接](https://docs.aws.amazon.com/redshift/latest/gsg/connection.html)。

1.  选择您的目标 Redshift 数据库。

1.  选择您为上述集群创建的数据库用户。

1.  选择**保存并测试**。

以下是**临时凭证**设置的示例。

![\[临时凭证示例\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/redshift.png)


以下是 **AWS Secrets Manager** 菜单的示例。

![\[Secrets Manager 示例\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/secretsmanager.png)


# 使用 Amazon Redshift 数据来源
<a name="Redshift-using-the-data-source"></a>

## IAM 策略
<a name="Redshift-policies"></a>

 Grafana 需要使用 IAM 授予的权限才能读取 Redshift 指标。您可以将这些权限附加到 IAM 角色，并利用 Grafana 的内置支持来担任这些角色。[AWS 托管策略： AmazonGrafanaRedshiftAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonGrafanaRedshiftAccess) 这一节中定义了内置的 Amazon Grafana Redshift 访问策略。

## 查询 Amazon Redshift 数据
<a name="Redshift-query"></a>

 Amazon Redshift 数据来源提供了标准的 SQL 查询编辑器。Amazon Managed Grafana 包含一些宏来帮助编写更复杂的时间序列查询。

宏


|  宏  |  说明  |  输出示例  | 
| --- | --- | --- | 
|  \$1\$1\$1timeEpoch(column)  |  \$1\$1\$1timeEpoch 将由表达式替换，以转换为 UNIX 时间戳并将列重命名为时间  |  UNIX\$1TIMESTAMP(dateColumn) as "time"  | 
|  \$1\$1\$1timeFilter(column)  |  \$1\$1\$1timeFilter 创建根据面板的时间范围筛选数据（使用column）的条件  |  time BETWEEN '2017-07-18T11:15:52Z' AND '2017-07-18T11:15:52Z'  | 
|  \$1\$1\$1timeFrom()  |  \$1\$1\$1timeFrom 输出面板范围的当前开始时间，并加上引号  | '2017-07-18T11:15:52Z' | 
|  \$1\$1\$1timeTo()  |  \$1\$1\$1timeTo 输出面板范围的当前结束时间，并加上引号  | '2017-07-18T11:15:52Z' | 
|  \$1\$1\$1timeGroup(column, '1m')  |  \$1\$1\$1timeGroup 对时间戳进行分组，以便图表上的每个周期只有 1 个点  | floor(extract(epoch from time)/60)\$160 AS "time" | 
|  \$1\$1\$1schema  |  \$1\$1\$1schema  使用选定的架构  | public | 
|  \$1\$1\$1table  |   \$1\$1\$1table 从给定的 \$1\$1\$1schema 输出一个表（默认情况下它使用公共架构）  | sales | 
|  \$1\$1\$1column  |  \$1\$1\$1column 从当前 \$1\$1\$1table 输出列  | date  | 
|  \$1\$1\$1unixEpochFilter(column)  |  使用指定列名将 \$1\$1\$1unixEpochFilter 替换为时间范围筛选器，其中时间表示为 Unix 时间戳  |   column >= 1624406400 AND column <= 1624410000  | 
|  \$1\$1\$1unixEpochGroup(column)  |  \$1\$1\$1unixEpochGroup 与 \$1\$1\$1timeGroup 相同，但这仅针对存储为 Unix 时间戳的时间  | floor(time/60)\$160 AS "time" | 

**可视化**

Redshift 中的大多数查询最好用表可视化来表示。任何查询都将在表中显示数据。如果某个内容可以被查询到，那么就可以将其放入表中。

此示例返回表可视化的结果：

```
SELECT {column_1}, {column_2} FROM {table};
```

**时间序列和图表可视化**

对于时间序列和图表可视化，有一些要求需要满足：
+ 必须选择 `date` 或 `datetime` 类型的列。
+ `date` 列必须按升序排列（使用 `ORDER BY column ASC`）。
+ 必须选择数字列。

要绘制更合理的图表，请确保使用 `$__timeFilter` 和 `$__timeGroup` 宏。

**时间序列查询示例：**

```
SELECT
  avg(execution_time) AS average_execution_time,
  $__timeGroup(start_time, 'hour'),
  query_type
FROM
  account_usage.query_history
WHERE
  $__timeFilter(start_time)
group by
  query_type,start_time
order by
  start_time,query_type ASC;
```

**填充方式**

Grafana 还会使用一些默认值自动完成没有值的帧。要配置此值，请在查询编辑器中更改**填充值**。

**检查查询**

由于 Grafana 支持 Redshift 不支持的宏，因此可以在查询检查器中看到完全呈现的查询（可以直接复制并粘贴到 Redshift 中）。要查看完整的插值查询，请选择**查询检测器**菜单，**查询**选项卡上会显示完整的查询。

## 模板和变量
<a name="using-redshift-templates-variables"></a>

有关如何添加新的 Redshift 查询变量的详细信息，请参阅[添加查询变量](variables-types.md#add-a-query-variable)。使用您的 Redshift 数据来源作为可用查询的数据来源。

从 Amazon Redshift 表中查询的任何值都可以用作变量。请务必避免选择太多值，因为这可能会导致性能问题。

创建变量后，您可以通过使用 [变量语法](templates-and-variables.md#variable-syntax) 在 Redshift 查询中使用该变量。有关变量的更多信息，请参阅 [模板和变量](templates-and-variables.md)。

## Annotations
<a name="using-redshift-annotations"></a>

[Annotations](dashboard-annotations.md)允许您将丰富的事件信息叠加在图表之上。您可以通过选择面板来添加注释，也可以通过使用从**控制面板**菜单打开的**注释**视图添加注释查询来添加注释。

自动添加注释的查询示例：

```
SELECT
  time as time,
  environment as tags,
  humidity as text
FROM
  $__table
WHERE
  $__timeFilter(time) and humidity > 95
```

下表代表的是呈现注释时考虑的列的值：


|  Name  |  说明  | 
| --- | --- | 
|  Time  |  日期或时间字段的名称。可以是具有原生 SQL 日期或时间数据类型或纪元值的列。 | 
|  Timeend  |  结束日期或时间字段的可选名称。可以是具有原生 SQL 日期或时间数据类型或纪元值的列。 | 
|  Text  |  事件描述字段。 | 
|  Tags  |  用于事件标签的可选字段名称，显示为以逗号分隔的字符串。 | 

# Connect 连接到 AWS X-Ray 数据源
<a name="x-ray-data-source"></a>

**注意**  
在支持版本 9 或更高版本的工作区中，此数据来源可能需要您安装相应的插件。有关更多信息，请参阅 [使用插件扩展您的工作区](grafana-plugins.md)。

 添加 AWS X-Ray 为数据源，然后构建仪表板或使用 Explore with X-Ray 查看跟踪、分析或见解。

 借助 Amazon Managed Grafana，您可以使用 Grafana AWS 工作空间控制台中的数据源配置选项将 X-Ray 添加为数据源。此功能通过发现您现有的 X-Ray 账户，简化了将 X-Ray 添加为数据来源的过程，并可管理访问 X-Ray 所需身份验证凭证的配置。您可以使用此方法设置身份验证，将 X-Ray 添加为数据来源，也可以使用与自我管理的 Grafana 服务器上相同的方法手动设置数据来源和必要的身份验证凭证。

**Topics**
+ [使用 AWS 数据源配置将 X-Ray 添加为数据源](xray-adding-AWS-config.md)
+ [手动添加 X-Ray 数据来源](xray-add-the-data-source.md)
+ [X-Ray 设置](#xray-settings)
+ [使用 X-Ray 数据来源](xray-using.md)

# 使用 AWS 数据源配置将 X-Ray 添加为数据源
<a name="xray-adding-AWS-config"></a>

要使用 AWS 数据源配置，首先要使用 Amazon Managed Grafana 控制台启用服务管理的 IAM 角色，这些角色向工作空间授予读取账户或整个组织单位中的 X-Ray 资源所必需的 IAM 策略。然后，您可以使用 Amazon Managed Grafana 工作区控制台，将 X-Ray 添加为数据来源。

**使用 AWS 数据源配置将 X-Ray 添加为数据源**

1. 打开 Amazon Managed Grafana 控制台，其位于 [https://console.aws.amazon.com/grafana/](https://console.aws.amazon.com/grafana/home/)。

1. 在页面左上角，选择菜单图标，然后选择**所有工作区**。

1. 选择工作区的名称。

1. 如果您在创建此工作空间时没有选择使用服务管理权限，请从使用客户托管权限更改为使用服务管理权限，以确保启用适当的 IAM 角色和策略以使用 Grafana 工作区控制台中的 AWS 数据源配置选项。为此，请按 **IAM 角色**选择编辑图标，然后选择**服务托管**、**保存更改**。有关更多信息，请参阅 [亚马逊托管 Grafana 数据源的权限和政策 AWS](AMG-manage-permissions.md)。

1. 选择**数据来源**选项卡。然后选中 **AWS X-Ray** 的复选框，选择**操作**和**启用服务管理的策略**。

1. 再次选择**数据来源**选项卡，然后在 **AWS X-Ray** 行中选择**在 Grafana 中配置**。

1. 如有必要，使用 IAM Identity Center 登录 Grafana 工作区控制台。

1. **在 Grafana 工作区控制台的左侧导航栏中，选择图标，然后选择 AWS **AWS 服务** X-Ray。**

1. 选择您希望 X-Ray 数据来源从中查询的默认区域，选择账户，然后选择**添加数据来源**。

# 手动添加 X-Ray 数据来源
<a name="xray-add-the-data-source"></a>

**手动添加 X-Ray 数据来源**

1.  在 Grafana 控制台侧边菜单中，将鼠标悬停在**配置**（齿轮）图标上，然后选择**数据来源**。

1. 选择**添加数据来源**。

1. 选择 **X-Ray** 数据来源。如有必要，您可以在搜索框中键入 **X-Ray**，帮助查找。

## X-Ray 设置
<a name="xray-settings"></a>


|  Name  |  说明  | 
| --- | --- | 
|  Name  |  数据来源名称。您将在面板和查询中通过其名称查看数据来源。 | 
|  默认  |  默认数据来源意味着将为新面板预先选择该数据来源。 | 
|  默认区域  |  在查询编辑器中用于设置区域（可根据每个查询进行更改）。 | 
|  身份验证提供商  |  指定要获取凭证的提供商。 | 
|  凭证配置文件名称  |  指定要使用的配置文件名称（如果使用 \$1/.aws/credentials 文件），默认留空。 | 
|  代入角色 Arn  |  指定要代入的角色的 ARN。 | 
|  外部 ID  |  如果您在使用外部 ID 创建的另一个账户中代入角色，请在此处指定外部 ID。 | 

### 身份验证
<a name="xray-authentication"></a>

本节介绍了可用于 X-Ray 数据来源的不同类型的身份验证。

#### IAM 角色
<a name="xray-iam-roles"></a>

 目前，所有对 X-Ray 的访问都是在服务器端使用官方 SDK 在 Grafana 工作空间后端完成的。 AWS 如果您的 Grafana 服务器正在运行 AWS，则可以使用 IAM 角色，身份验证将自动处理。

 有关更多信息，请参阅 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)。

### IAM 策略
<a name="xray-iam-policies"></a>

 Grafana 需要通过 IAM 授予的权限才能读取 X-Ray 数据和 EC2。tags/instances/regions您可以将这些权限附加到 IAM 角色，并使用内置的 Grafana 支持来担任角色。

 以下代码示例展示了一个最基本的策略。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "xray:BatchGetTraces",
                "xray:GetTraceSummaries",
                "xray:GetTraceGraph",
                "xray:GetGroups",
                "xray:GetTimeSeriesServiceStatistics",
                "xray:GetInsightSummaries",
                "xray:GetInsight",
                "ec2:DescribeRegions"
            ],
            "Resource": "*"
        }
    ]
}
```

------

#### AWS 证书示例
<a name="xray-example-aws-credentials"></a>

 在 Amazon Managed Grafana 中，不能使用凭证文件方法。

# 使用 X-Ray 数据来源
<a name="xray-using"></a>

## 查询编辑器
<a name="xray-query-editor"></a>

 编辑器中最重要的字段是查询类型。有四种查询类型：
+  跟踪列表（输入的痕迹 AWS） 
+  Trace Statistics 
+  追踪分析（中的分析 AWS） 
+  见解 

## Trace List
<a name="xray-trace-list"></a>

 Trace List 类型允许搜索以表形式显示的跟踪。在第一列中选择跟踪 ID 会在右侧打开跟踪。注意编辑器中的查询字段。您可以编写查询、筛选表达式，也可以插入显示在跟踪视图中的单个跟踪 ID。有关筛选表达式的更多详细信息，请参阅 [AWS X-Ray 文档](https://docs.aws.amazon.com/xray/latest/devguide/xray-console-filters.html)。

**注意**  
 跟踪列表仅显示前 1000 条跟踪。

## Trace Statistics
<a name="xray-trace-statistics"></a>

 在 Trace Statistics 中，您可以看到一个图形和一个表，其中显示了有关错误、故障、限制、成功和总数的信息。您可以使用查询编辑器中的列字段，仅查看指定的列。

## 跟踪分析
<a name="xray-trace-analytics"></a>

 在 Trace Analytics 中，您对以下表进行可视化。
+  根本原因 
  +  响应时间 
    +  根本原因服务（路径中的最后一个服务） 
    +  路径（多条路径） 
  +  错误 
    +  根本原因服务（路径中的最后一个服务） 
    +  路径 
    +  错误消息 
  +  故障 
    +  根本原因服务（路径中的最后一个服务） 
    +  路径 
    +  错误消息 
+  最终用户影响 
+  URL 
+  HTTP 状态代码 

## 见解
<a name="xray-insights"></a>

 在 Insights 中，您可以查看 Insights 的摘要表。选择， InsightId 将带您进入 AWS 管理控制台。

## 警报
<a name="xray-alerting"></a>

 由于 X-Ray 查询可以返回数值数据，因此支持警报。有关更多信息，请参阅 [Grafana Alerting](alerts-overview.md)。

# 连接到 Azure Monitor 数据来源
<a name="using-azure-monitor-in-AMG"></a>

 Azure Monitor 数据来源支持 Azure 云中的多种服务：
+  **Azure Monitor 服务**是一个平台服务，提供了监控 Azure 资源的单一来源。有关更多信息，请参阅 [查询 Azure Monitor 服务](#query-the-azure-monitor-service)。
+  **Application Insights 服务器**是一项可扩展的应用程序性能管理（APM）服务，适用于多个平台上的网络开发人员，可用于监控实时网络应用程序，并自动检测性能异常。有关更多信息，请参阅 [查询 Application Insights Analytics 服务](#query-the-application-insights-analytics-service)。
+  **Azure Log Analytics**（或 Azure Logs）允许访问 Azure Monitor 收集的日志数据。有关更多信息，请参阅 [查询 Azure Log Analytics 服务](#querying-the-azure-log-analytics-service)。
+  通过 **Application Insights Analytics 服务**，使用与 Azure Log Analytics 相同的查询语言来查询 [Application Insights 数据](https://docs.microsoft.com/en-us/azure/azure-monitor/app/analytics)。有关更多信息，请参阅 [查询 Application Insights Analytics 服务](#query-the-application-insights-analytics-service)。

## 添加数据来源
<a name="azure-add-the-data-source"></a>

 数据来源可以访问来自四种不同服务的指标。您可以配置对所用服务的访问权限。如果在 Azure Entra ID 中设置了相同的凭证，也可以对多个服务使用相同的凭证。
+  [注册 Microsoft Entra 应用程序并创建服务主体](https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-create-service-principal-portal) 

1.  从 Grafana 主菜单访问后，可立即在“数据来源”部分添加新安装的数据来源。接下来，选择右上角的**添加数据来源**按钮。Azure Monitor 数据来源可供在数据来源列表的“云”部分中选择。

1.  在名称字段中，Grafana 会自动填写数据来源的名称：`Azure Monitor` 或 `Azure Monitor - 3` 之类的名称。如果要配置多个数据来源，请将名称改为信息更丰富的名称。

1.  如果使用的是 Azure Monitor，则需要从 Azure 门户获取四条信息（有关详细说明，请参阅前面提供的链接）：
   +  **租户 Id**（Azure Entra ID、属性、目录 ID） 
   +  **客户端 Id**（Azure Entra ID、应用程序注册、选择应用程序、应用程序 ID） 
   +  **客户端密钥**（Azure Entra ID、应用程序注册、选择应用程序、密钥） 
   +  **默认订阅 Id**（订阅、选择订阅、概述、订阅 ID） 

1.  将这四项粘贴到 Azure Monitor API 详细信息部分的字段中。
   +  每次查询都可以更改订阅 Id。保存数据来源并刷新页面，以查看可用于指定客户端 Id 的订阅列表。

1.  如果您还使用 Azure Log Analytics 服务，则必须指定这两个配置值或重用上一步中的客户端 Id 和密钥。
   +  客户端 Id（Azure Entra ID、应用程序注册、选择应用程序、应用程序 ID） 
   +  客户端密钥（Azure Entra ID、应用程序注册、选择应用程序、密钥、创建密钥、使用客户端密钥） 

1.  如果使用的是 Application Insights，则需要从 Azure 门户获取两条信息（有关详细说明，请参阅前面提供的链接）：
   +  应用程序 ID 
   +  API 密钥 

1.  将这两项粘贴到 Application Insights API 详细信息部分的相应字段中。

1.  选择**保存并测试**按钮，测试配置详细信息是否正确。

 或者，在步骤 4 中，如果要创建新的 Azure Entra ID 应用程序，请使用 [Azure CLI](https://docs.microsoft.com/en-us/cli/azure/?view=azure-cli-latest)：

```
az ad sp create-for-rbac -n "http://localhost:3000"
```

## 选择服务
<a name="azure-choose-a-service"></a>

 在面板的查询编辑器中，选择 Azure Monitor 数据来源后，第一步是选择服务。共有四个选项：
+  `Azure Monitor` 
+  `Application Insights` 
+  `Azure Log Analytics` 
+  `Insights Analytics` 

 查询编辑器会根据您选择的选项而变化。Azure Monitor 为默认。

## 查询 Azure Monitor 服务
<a name="query-the-azure-monitor-service"></a>

 Azure Monitor 服务为您运行的所有 Azure 服务提供指标。这有助于了解 Azure 上应用程序的运行情况，并主动发现影响应用程序的问题。

 如果 Azure Monitor 凭证允许访问多个订阅，请先选择相应的订阅。

 您可以从服务中获取的指标示例如下：
+  `Microsoft.Compute/virtualMachines - Percentage CPU` 
+  `Microsoft.Network/networkInterfaces - Bytes sent` 
+  `Microsoft.Storage/storageAccounts - Used Capacity` 

 查询编辑器允许查询多个维度以获取支持这些维度的指标。支持多个维度的指标是 [Azure Monitor 支持的指标列表](https://docs.microsoft.com/en-us/azure/azure-monitor/platform/metrics-supported)中列出的指标，这些指标的**维度**列中列出了一个或多个值。

### 对 Azure Monitor 使用别名格式化图例键
<a name="format-legend-keys-with-aliases-for-azure-monitor"></a>

 Azure Monitor API 的默认图例格式为：

 `metricName{dimensionName=dimensionValue,dimensionTwoName=DimensionTwoValue}` 

 这些格式可能很长，但您可以使用别名进行更改。在**图例格式**字段中，可以任意组合以下别名。

 Azure Monitor 示例：
+  `Blob Type: {{ blobtype }}` 
+  `{{ resourcegroup }} - {{ resourcename }}` 

### Azure Monitor 的别名模式
<a name="alias-patterns-for-azure-monitor"></a>
+  `{{ resourcegroup }}` = 替换为资源组的值 
+  `{{ namespace }}` = 替换为命名空间的值（例如，microsoft.compute/VirtualMachines） 
+  `{{ resourcename }}` = 替换为资源名称的值 
+  `{{ metric }}` = 替换为指标名称（例如，CPU 百分比） 
+  `{{ dimensionname }}`= *7.1\$1 版本的旧版（为了向后兼容）替换为*第一个维度（按键/标签排序） key/label （例如 blobtype） 
+  `{{ dimensionvalue }}`= *7.1\$1 版本的旧版（为了向后兼容）*替换为第一维度的值（按键/标签排序）（例如，）BlockBlob 
+  `{{ arbitraryDim }}`= *在 7.1\$1 版本中可用*，替换为相应维度的值。 （例如，`{{ blobtype }}`变成 BlockBlob） 

### 为 Azure Monitor 创建模板变量
<a name="create-template-variables-for-azure-monitor"></a>

 您可以在指标查询中使用变量来代替服务器、应用程序和传感器名称等硬编码。变量显示为控制面板顶部的下拉选择框。您可以使用这些下拉框来更改控制面板中显示的数据。

 请注意，Azure Monitor 服务尚不支持多个值。要可视化多个时间序列（例如，server1 和 server2 的指标），请添加多个查询，这样就可以在同一图形或同一表中查看。

 Azure Monitor 数据来源插件提供以下查询，您可以在变量编辑视图的**查询**字段中指定这些查询。您可以将其用来填充变量的选项列表。


|  Name  |  说明  | 
| --- | --- | 
|  Subscriptions()  |  返回订阅列表。 | 
|  ResourceGroups()  |  返回资源组列表。 | 
|  ResourceGroups(12345678-aaaa-bbbb-cccc-123456789aaa)  |  返回指定订阅的资源组列表。 | 
|  Namespaces(aResourceGroup)  |  返回指定资源组的命名空间列表。 | 
|  Namespaces(12345678-aaaa-bbbb-cccc-123456789aaa, aResourceGroup)  |  返回指定资源组和订阅的命名空间列表。 | 
|  ResourceNames(aResourceGroup, aNamespace)  |  返回资源名称列表。 | 
|  ResourceNames(12345678-aaaa-bbbb-cccc-123456789aaa, aResourceGroup, aNamespace)  |  返回指定订阅的资源名称列表。 | 
|  MetricNamespace(aResourceGroup, aNamespace, aResourceName)  |  返回指标命名空间列表。 | 
|  MetricNamespace(12345678-aaaa-bbbb-cccc-123456789aaa, aResourceGroup, aNamespace, aResourceName)  |  返回指定订阅的指标命名空间列表。 | 
|  MetricNames(aResourceGroup, aNamespace, aResourceName)  |  返回指标名称列表。 | 
|  MetricNames(12345678-aaaa-bbbb-cccc-123456789aaa, aResourceGroup, aNamespace, aResourceName)  |  返回指定订阅的指标名称列表。 | 

 示例：
+  资源组查询：`ResourceGroups()`
+  传入指标名称变量：`Namespaces(cosmo)`
+  链接模板变量：`ResourceNames($rg, $ns)`
+  请勿引用参数：`MetricNames(hg, Microsoft.Network/publicIPAddresses, grafanaIP)`

 有关模板化和模板变量的更多信息，请参阅 [模板](templates-and-variables.md#templates)。

### 支持的 Azure Monitor 指标列表
<a name="list-of-supported-azure-monitor-metrics"></a>

 并非 Azure Monitor API 返回的所有指标都具有值。为了方便建立查询，Grafana 数据来源列出了受支持的 Azure Monitor 指标，并忽略了永远不会有值的指标。随着新服务和指标添加到 Azure 云，此列表会定期更新。

### Azure Monitor 警报
<a name="azure-monitor-alerting"></a>

 Azure Monitor 服务支持 Grafana Alerting。这不是 Azure Alerts 支持。有关 Grafana Alerting 的更多信息，请参阅 [Grafana Alerting](alerts-overview.md)。

## 查询 Application Insights 服务
<a name="query-the-application-insights-service"></a>

### 对 Application Insights 使用别名格式化图例键
<a name="formatting-legend-keys-with-aliases-for-application-insights"></a>

 默认图例格式为：

 `metricName{dimensionName=dimensionValue,dimensionTwoName=DimensionTwoValue}` 

 在图例格式字段中，可以任意组合以下别名。

 Application Insights 示例：
+  `city: {{ client/city }}` 
+  `{{ metric }} [Location: {{ client/countryOrRegion }}, {{ client/city }}]` 

### Application Insights 的别名模式
<a name="alias-patterns-for-application-insights"></a>
+  `{{ groupbyvalue }}`= 从 *Grafana 7.1\$1 开始的 Legacy（为了向后兼容）替换为第一个维度 key/label （按*键/标签排序） 
+  `{{ groupbyname }}`= *Grafana 7.1\$1 版本的旧版（为了向后兼容）替换为*第一维度的值（按键/标签排序）（例如，）BlockBlob 
+  `{{ metric }}` = 替换为指标名称（例如，requests/count） 
+  `{{ arbitraryDim }}` = *在 7.1\$1 版中可用*替换为相应维度的值（例如，`{{ client/city }}` 变为 Chicago） 

### Application Insights 的筛选表达式
<a name="filter-expressions-for-application-insights"></a>

 过滤器字段采用 OData 筛选表达式。

 示例：
+  `client/city eq 'Boydton'` 
+  `client/city ne 'Boydton'` 
+  `client/city ne 'Boydton' and client/city ne 'Dublin'` 
+  `client/city eq 'Boydton' or client/city eq 'Dublin'` 

### 对 Application Insights 使用变量进行模板化
<a name="templating-with-variables-for-application-insights"></a>

 在变量编辑视图的**查询**字段中使用以下查询之一。

 有关模板化和模板变量的更多信息，请参阅 [模板](templates-and-variables.md#templates)。


|  Name  |  说明  | 
| --- | --- | 
|  AppInsightsMetricNames()  |  返回指标名称列表。 | 
|  AppInsightsGroupBys(aMetricName)  |  返回指定指标名称的 group by 子句列表。 | 

 示例：
+  指标名称查询：`AppInsightsMetricNames()`
+  传入指标名称变量：`AppInsightsGroupBys(requests/count)`
+  链接模板变量：`AppInsightsGroupBys($metricnames)`

### Application Insights 警报
<a name="application-insights-alerting"></a>

 Application Insights 支持 Grafana Alerting。这不是 Azure Alerts 支持。有关 Grafana Alerting 的更多信息，请参阅 [Grafana Alerting](alerts-overview.md)。

## 查询 Azure Log Analytics 服务
<a name="querying-the-azure-log-analytics-service"></a>

 查询是用新的 [Azure Log Analytics（或 KustoDB）查询语言](https://docs.microsoft.com/en-us/azure/azure-monitor/log-query/query-language)编写的。Log Analytics 查询可以格式化为时间序列数据或表数据。

 如果您的凭证允许访问多个订阅，请在输入查询之前选择相应的订阅。

### 时间序列查询
<a name="azure-time-series-queries"></a>

 时间序列查询适用于图表面板和其他面板，例如面 SingleStat 板。每个查询必须至少包含一个日期时间列和一个数值列。结果必须按日期时间列以升序排序。

 以下代码示例显示了一个查询，该查询返回按小时分组的聚合计数。

```
Perf
| where $__timeFilter(TimeGenerated)
| summarize count() by bin(TimeGenerated, 1h)
| order by TimeGenerated asc
```

 查询还可以包含一个或多个非数字/非日期时间列，这些列被视为维度，并成为响应中的标签。例如，返回按小时、计算机和分组的汇总计数的查询 CounterName。

```
Perf
| where $__timeFilter(TimeGenerated)
| summarize count() by bin(TimeGenerated, 1h), Computer, CounterName
| order by TimeGenerated asc
```

 您还可以选择其他数值列（包含或不包含多个维度）。例如，按小时获取计数和平均值 CounterName、计算机和 InstanceName：

```
Perf
| where $__timeFilter(TimeGenerated)
| summarize Samples=count(), ["Avg Value"]=avg(CounterValue)
    by bin(TimeGenerated, $__interval), Computer, CounterName, InstanceName
| order by TimeGenerated asc
```

**注意**  
 **提示**：在前面的查询中，使用了 Kusto 语法和 `Samples=count()``["Avg Value"]=...` 来重命名这些列，第二种语法允许空格。这会更改 Grafana 使用的指标名称。因此，序列图例和表列等内容将与您指定的内容匹配。在本例中，显示的是 `Samples` 而不是 `_count`。

### 表查询
<a name="azure-table-queries"></a>

 表查询主要用于表面板，显示列和行的列表。此示例查询返回包含六个指定列的行。

```
AzureActivity
| where $__timeFilter()
| project TimeGenerated, ResourceGroup, Category, OperationName, ActivityStatus, Caller
| order by TimeGenerated desc
```

### 格式化 Log Analytics 的显示名称
<a name="format-the-display-name-for-log-analytics"></a>

 默认显示名称格式为：

 `metricName{dimensionName=dimensionValue,dimensionTwoName=DimensionTwoValue}` 

 可使用显示名称字段选项对此进行自定义。

### Azure Log Analytics 宏
<a name="azure-log-analytics-macros"></a>

 为了便于编写查询，Grafana 提供了几个宏，供您在查询的 where 子句中使用：
+  `$__timeFilter()`：扩展到 `TimeGenerated ≥ datetime(2018-06-05T18:09:58.907Z) and` `TimeGenerated ≤ datetime(2018-06-05T20:09:58.907Z)`，其中 from 和 to 日期时间来自 Grafana 时间选择器。
+  `$__timeFilter(datetimeColumn)`：扩展到 `datetimeColumn ≥ datetime(2018-06-05T18:09:58.907Z) and` `datetimeColumn ≤ datetime(2018-06-05T20:09:58.907Z)`，其中 from 和 to 日期时间来自 Grafana 时间选择器。
+  `$__timeFrom()`：从 Grafana 选择器返回 From 日期时间。示例：`datetime(2018-06-05T18:09:58.907Z)`。
+  `$__timeTo()`：从 Grafana 选择器返回 From 日期时间。示例：`datetime(2018-06-05T20:09:58.907Z)`。
+  `$__escapeMulti($myVar)`：与包含非法字符的多值模板变量一起使用。如果 `$myVar` 有以下两个值作为字符串 `'\\grafana-vm\Network(eth0)\Total','\\hello!'`，则扩展为：`@'\\grafana-vm\Network(eth0)\Total', @'\\hello!'`。如果使用单值变量，则不需要此宏，而是转义内联变量：`@'\$myVar'`.
+  `$__contains(colName, $myVar)`：与多值模板变量一起使用。如果 `$myVar` 具有值 `'value1','value2'`，则宏将扩展为：`colName in ('value1','value2')`。

   如果使用**全部**选项，请选中**包括全部选项**复选框，然后在**自定义全部值**字段中输入以下值：**all**。如果 `$myVar` 具有值 `all`，则宏将扩展为 `1 == 1`。对于具有多种选项的模板变量，可不构建大型 "where..in" 子句，以提高查询性能。

### Azure Log Analytics 内置变量
<a name="azure-log-analytics-builtin-variables"></a>

 还有一些 Grafana 变量可在 Azure Log Analytics 查询中使用：
+  `$__interval`：Grafana 会计算可用于在查询中按时间分组的最小时间粒度。这将返回一个时间粒度（如 `5m` 或 `1h`），可在 bin 函数中使用；例如，`summarize count() by bin(TimeGenerated, $__interval)`。有关间隔变量的更多信息，请参阅 [添加间隔变量](variables-types.md#add-an-interval-variable)。

### 对 Azure Log Analytics 使用变量进行模板化
<a name="templating-with-variables-for-azure-log-analytics"></a>

 任何返回值列表的 Log Analytics 查询都可以在变量编辑视图的**查询**字段中使用。Log Analytics 还有一个 Grafana 函数，可返回工作区列表。

 有关模板和模板变量的更多信息，请参阅 [模板和变量](templates-and-variables.md)。


|  Name  |  说明  | 
| --- | --- | 
|  workspaces()  |  返回默认订阅的工作区列表。 | 
|  workspaces(12345678-aaaa-bbbb-cccc-123456789aaa)  |  返回指定订阅的工作区列表（参数可以带引号或不带引号）。 | 

 下表显示了变量查询示例。


|  Query  |  说明  | 
| --- | --- | 
|  subscriptions()  |  返回 Azure 订阅列表。 | 
|  workspaces()  |  返回默认订阅的工作区列表。 | 
|  workspaces("12345678-aaaa-bbbb-cccc-123456789aaa")  |  返回指定订阅的工作区列表。 | 
|  workspaces("\$1subscription")  |  使用订阅参数的模板变量。 | 
|  workspace("myWorkspace").Heartbeat \$1\$1 distinct Computer  |  返回虚拟机列表。 | 
|  workspace("\$1workspace").Heartbeat \$1\$1 distinct Computer  |  返回具有模板变量的虚拟机列表。 | 
|  workspace("\$1workspace").Perf \$1\$1 distinct ObjectName  |  返回 Perf 表中的对象列表。 | 
|  workspace("\$1workspace").Perf \$1\$1 where ObjectName == "\$1object" \$1\$1 distinct CounterName  |  返回 Perf 表中的指标名称列表。 | 

 以下代码示例显示了使用变量的时间序列查询。

```
Perf
| where ObjectName == "$object" and CounterName == "$metric"
| where TimeGenerated >= $__timeFrom() and TimeGenerated <= $__timeTo()
| where  $__contains(Computer, $computer)
| summarize avg(CounterValue) by bin(TimeGenerated, $__interval), Computer
| order by TimeGenerated asc
```

### 从 Grafana 面板到 Azure 门户中 Log Analytics 查询编辑器的深层链接
<a name="deep-linking-from-grafana-panels-to-the-log-analytics-query-editor-in-azure-portal"></a>

 在面板中选择一个时间序列，以查看上下文菜单，其中包含**在 Azure 门户中查看**的链接。选择该链接将在 Azure 门户中打开 Azure Log Analytics 查询编辑器，并从 Grafana 面板运行查询。

 如果您当前未登录 Azure 门户，则该链接将打开登录页面。提供的链接对任何账户都有效，但仅当您的账户有权访问查询中指定的 Azure Log Analytics 工作区时，才会显示查询。

### Azure Log Analytics 警报
<a name="azure-log-analytics-alerting"></a>

 Application Insights 支持 Grafana Alerting。这不是 Azure Alerts 支持。有关 Grafana 工作区中警报的更多信息，请参阅 [Grafana Alerting](alerts-overview.md)。

## 查询 Application Insights Analytics 服务
<a name="query-the-application-insights-analytics-service"></a>

 如果将服务类型更改为 **Insights Analytics**，则可以使用与 Log Analytics 服务类似的编辑器。此服务还使用 Kusto 语言，因此查询数据的说明与 [查询 Azure Log Analytics 服务](#querying-the-azure-log-analytics-service) 相同，只是改为查询 Application Insights Analytics 数据。

# 连接到 Graphite 数据来源
<a name="using-graphite-in-AMG"></a>

 Grafana 具有高级 Graphite 查询编辑器，可让您快速浏览指标空间、添加函数、更改函数参数等等。编辑器可处理所有类型的 Graphite 查询。甚至可以通过使用查询引用来处理复杂的嵌套查询。

## Graphite 设置
<a name="graphite-settings"></a>

 要访问 Graphite 设置，请将鼠标悬停在**配置**（齿轮）图标上，选择**数据来源**，然后选择 Graphite 数据来源。


|  Name  |  说明  | 
| --- | --- | 
|  Name  |  数据来源名称。您将在面板和查询中通过其名称查看数据来源。 | 
|  Default  |  默认数据来源意味着将为新面板预先选择该数据来源。 | 
|  URL  |  graphite-web 或 graphite-api 安装的 HTTP 协议、IP 和端口。 | 
|  Access  |  服务器（默认）= 必须可从 Grafana 后端/服务器访问 URL。 | 
|  Auth  |  | 
|  Basic Auth  |  启用对数据来源的基本身份验证。 | 
|  User  |  用于基本身份验证的用户名。 | 
|  Password  |  用于基本身份验证的密码。 | 
|  Custom HTTP Headers  |  选择添加标头以添加自定义 HTTP 标头。 | 
|  Header  |  输入自定义标头名称。 | 
|  Value  |  输入自定义标头值。 | 
|  Graphite details  |  | 
|  Version  |  选择 Graphite 版本。 | 
|  Type  |  选择 Graphite 类型。 | 

 访问模式控制对数据来源请求的处理方式。如果没有其他说明，服务器应该是首选方式。

### 服务器访问模式（默认）
<a name="graphite-server-access-mode-default"></a>

 所有请求都是从浏览器向 Amazon Managed Grafana 发出的，Amazon Managed Grafana 会将请求转发到数据来源，从而规避了可能的跨源资源共享（CORS）要求。如果选择此访问模式，则必须可以从 Amazon Managed Grafana 访问 URL。

### 浏览器访问模式
<a name="graphite-browser-access-mode"></a>

 Amazon Managed Grafana 不支持浏览器直接访问 Graphite 数据来源。

## Graphite 查询编辑器
<a name="graphite-query-editor"></a>

 Grafana 包含一个特定于 Graphite 的查询编辑器，可帮助您构建查询。

 要查看发送到 Graphite 的查询原始文本，请选择**切换文本编辑模式**（铅笔）图标。

### 选择要查询的指标
<a name="graphite-choose-metrics-to-query"></a>

 选择**选择指标**以浏览指标空间。开始后，您可以使用指针或键盘箭头键继续操作。您可以选择通配符，然后继续。

### 函数
<a name="graphite-functions"></a>

 要添加函数，请选择**函数**旁边的加号图标。您可以搜索此函数或从菜单中选择。选择一个函数后，该函数将被添加，而焦点将位于第一个参数的文本框中。要编辑或更改参数，请将其选中，该函数将变成一个文本框。要删除函数，请选择函数名称，然后选择 x 图标。

 某些函数（如 `aliasByNode`）支持第二个可选参数。要添加参数，请将鼠标悬停在第一个参数上，然后选择出现的 `+` 符号。要移除第二个可选参数，请选择该参数，并将其留空。编辑器会将其移除。

### 对标签排序
<a name="graphite-sort-labels"></a>

 如果想要一致的排序，请使用 `sortByName`。如果在多个图形上使用相同的标签，而其排序方式和使用的颜色又不同，就会很麻烦。要解决此问题，请使用 `sortByName()`。

### 嵌套查询
<a name="graphite-nested-queries"></a>

 您可以通过查询所在的行*字母*来引用查询（类似于 Microsoft Excel）。如果向图形中添加第二个查询，则可以键入 \$1A 来引用第一个查询。这是一种构建复合查询的便捷方法。

### 使用通配符避免多次查询
<a name="avoiding-many-queries-by-using-wildcards"></a>

 有时，您可能希望在同一个图形上查看多个时间序列。例如，您可能想查看计算机 CPU 使用情况。最初创建图形时，您可以为每个时间序列添加一个查询，如 `cpu.percent.user.g`、`cpu.percent.system.g` 等。这会导致对数据来源进行 *n* 次查询，效率低下。

 为了提高效率，可以在搜索中使用通配符，在一次查询中返回所有时间序列。例如 `cpu.percent.*.g`。

### 修改表或图表中的指标名称
<a name="modify-the-metric-name-in-my-tables-or-charts"></a>

 使用 `alias` 函数更改 Grafana 表或图形上的指标名称；如 `aliasByNode()` 或 `aliasSub()`。

## 点合并
<a name="graphite-point-consolidation"></a>

 所有 Graphite 指标都经过合并，这样 Graphite 返回的数据点就不会多于图形中的像素。默认情况下，合并是使用 `avg` 函数完成的。您可以通过添加 Graphite consolidateBy 函数来控制 Graphite 合并指标的方式。

**注意**  
 这意味着图例汇总值（最大值、最小值、总计）不能同时全部正确。这些值由 Grafana 在客户端计算。根据合并函数，一次只能有一两个是正确的。

## 合并时间序列
<a name="graphite-combine-time-series"></a>

 要合并时间序列，请在**函数**列表中选择**合并**。

## 数据探索和标签
<a name="data-exploration-and-tags"></a>

 在 Graphite 中，一切都采用标签形式。

 浏览数据时，将使用先前选择的标签来筛选剩余的结果集。要选择数据，需要使用 `seriesByTag` 函数，该函数使用标签表达式（`=`、`!=`、`=~`、`!=~`）来筛选时间序列。

 当您选择标签时，Grafana 查询生成器会自动为您执行此操作。

**注意**  
 **提示：**对于高基数标签，正则表达式搜索可能很慢，所以先尝试使用其他标签来缩小搜索范围。先从特定的名称或命名空间开始有助于减少结果。

## 模板变量
<a name="graphite-template-variables"></a>

 您可以在指标查询中使用变量来代替服务器、应用程序和传感器名称等硬编码。变量显示为控制面板顶部的下拉选择框。您可以使用这些下拉框来更改控制面板中显示的数据。

 有关模板化和模板变量的更多信息，请参阅 [模板和变量](templates-and-variables.md)。

 要使用标签值创建变量，请使用 Grafana 函数 `tags` 和 `tag_values`。


|  Query  |  说明  | 
| --- | --- | 
|  tags()  |  返回所有标签。 | 
|  tags(server=\$1backend\$1\$1)  |  仅返回与筛选条件表达式匹配的序列中出现的标签。 | 
|  tag\$1values(server)  |  返回指定标签的标签值。 | 
|  tag\$1values(server, server=\$1backend\$1\$1)  |  返回与这些表达式匹配的序列中指定标签出现的筛选标签值。 | 
|  tag\$1values(server, server=\$1backend\$1\$1, app=\$1\$1\$1apps:regex\$1)  |  多个筛选条件表达式和表达式可以包含其他变量。 | 

 有关更多详细信息，请参阅[有关标签自动完成 API 的 Graphite 文档](https://graphite.readthedocs.io/en/latest/tags.html#auto-complete-support)。

### 查询变量
<a name="graphite-query-variable"></a>

 您在查询字段中指定的查询应为指标查找类型的查询。例如，`prod.servers.*` 之类的查询将使用通配符位置中存在的所有可能值填充变量。

 您也可以创建嵌套变量，在其定义中使用其他变量。例如，`apps.$app.servers.*` 在其查询定义中使用变量 `$app`。

#### 使用 `__searchFilter` 筛选查询变量结果
<a name="using-__searchfilter-to-filter-query-variable-results"></a>

 在查询字段中使用 `__searchFilter`，根据您在下拉选择框中输入的内容筛选查询结果。如果不输入任何内容，则 `__searchFilter` 的默认值为 `*`，如果作为正则表达式的一部分，则为 ``。

 以下示例显示了当用户在下拉选择框中输入文本时，如何使用 `__searchFilter` 作为查询字段的一部分来启用 `server` 搜索。

 Query 

```
apps.$app.servers.$__searchFilter
```

 TagValues 

```
tag_values(server, server=~${__searchFilter:regex})
```

### 变量使用
<a name="variable-usage"></a>

 您可以在指标节点路径中使用变量，也可以将变量用作函数的参数。

 共有两种语法：
+  `$<varname>` 示例：apps.frontend.\$1server.requests.count 
+  `${varname}` 示例：apps.frontend.\$1\$1server\$1.requests.count 

 为什么是两种？ 第一种语法更容易读写，但不能在词中间使用变量。在表达式中使用第二种语法，比如 `my.server${serverNumber}.count`。

### 标签查询中的变量使用
<a name="variable-usage-in-tag-queries"></a>

 标签查询中的多值变量使用 Grafana 5.0 中引入的变量高级格式语法：`{var:regex}`。非标签查询将对多值变量使用默认的 glob 格式。

 以下代码示例显示了具有正则表达式格式并使用 Equal Tilde 运算符 `=~` 的标签表达式。

```
server=~${servers:regex}
```

 有关更多信息，请参阅 [高级变量格式选项](templates-and-variables.md#advanced-variable-format-options)。

## Annotations
<a name="graphite-annotations"></a>

 您可以使用注释在图形上叠加丰富的事件信息。您可以通过控制面板菜单/注释视图添加注释查询。有关更多信息，请参阅 [Annotations](dashboard-annotations.md)。

 Graphite 支持两种查询注释的方式：
+ 常规指标查询。为此，您可以使用 **Graphite 查询**文本框。
+ Graphite 事件查询。为此，您可以使用 `Graphite event tags` 文本框，并指定标签或通配符（留空也可以）。

# 连接到 Google Cloud Monitoring 数据来源
<a name="using-google-cloud-monitoring-in-grafana"></a>

**注意**  
 在 Grafana 的早期版本中，此数据来源被命名为 Google Stackdriver。

 添加 Google Cloud Monitoring 数据来源，以便为您的 Google Cloud Monitoring 指标构建控制面板。

## 添加数据来源
<a name="google-adding-the-data-source"></a>

1.  选择顶部标题中的 Grafana 图标，打开侧边菜单。

1.  在侧边菜单的**控制面板**链接下，您应该可以找到**数据来源**链接。

1.  选择顶部标题中的 **\$1 添加数据来源**按钮。

1.  从**类型**下拉列表中选择 **Google Cloud Monitoring**。

1.  上传或粘贴服务账户密钥文件。有关创建服务账户密钥文件的步骤，请参阅本文档稍后的部分。

**注意**  
 如果您在侧边菜单中看不到**数据来源**链接，则说明您当前的用户没有`Admin`角色。


|  Name  |  说明  | 
| --- | --- | 
|  Name  |  数据来源名称。您将在面板和查询中通过其名称引用数据来源。 | 
|  Default  |  默认数据来源意味着将为新面板预先选择该数据来源。 | 
|  Service Account Key  |  GCP 项目的服务账户密钥文件。有关如何创建该文件的说明，请参阅本文档稍后的部分。 | 

## 身份验证
<a name="google-authentication"></a>

 可通过两种方式对 Google Cloud Monitoring 插件进行身份验证
+ 上传 Google JWT 文件
+ 从 Google 元数据服务器自动检索凭证

后一个选项仅在 GCE 虚拟机上运行 Grafana 时可用。

### 使用 Google 服务账户密钥文件
<a name="using-a-google-service-account-key-file"></a>

 要使用 Google Cloud Monitoring API 进行身份验证，您必须为要显示其数据的项目创建 Google Cloud Platform（GCP）服务账户。Grafana 数据来源与一个 GCP 项目集成。要可视化来自多个 GCP 项目的数据，必须为每个 GCP 项目创建一个数据来源。

#### 启用 APIs
<a name="google-enable-apis"></a>

 APIs 必须先启用以下选项：
+  [Monitoring API](https://console.cloud.google.com/apis/library/monitoring.googleapis.com) 
+  [Cloud Resource Manager API](https://console.cloud.google.com/apis/library/cloudresourcemanager.googleapis.com) 

 选择列出的链接，然后选择**启用**按钮。

#### 为项目创建 GCP 服务账户
<a name="create-a-gcp-service-account-for-a-project"></a>

1.  导航到 “[APIs和服务凭证” 页面](https://console.cloud.google.com/apis/credentials)。

1.  选择**创建凭据** dropdown/button 并选择**服务帐号密钥**选项。

    \$1\$1< docs-imagebox img=”/img/docs/v71/cloudmonitoring\$1create\$1service\$1account\$1button.png “class= “docs-image—no-shadow” caption= “创建服务账户按钮” >\$1\$1 

1.  在**创建服务账户密钥**页面上，选择密钥类型 `JSON`。然后，在**服务账户**下拉列表中，选择**新建服务账户**选项。

    \$1\$1< docs-imagebox img=”/img/docs/v71/cloudmonitoring\$1create\$1service\$1account\$1key.png “class= “docs-image—no-shadow” caption= “创建服务账户密钥” >\$1\$1 

1.  一些新的字段将会出现。在**服务账户名称**字段中填写服务账户的名称，然后从**角色**下拉列表中选择**监控查看者**角色。

    \$1\$1< docs-imagebox img=”/img/docs/v71/cloudmonitoring\$1service\$1account\$1choose\$1role.png “class= “docs-image—no-shadow” caption= “选择角色” >\$1\$1 

1.  选择**创建**按钮。一个 JSON 密钥文件将会创建并下载到您的计算机上。将此文件存储在安全的地方，因为其允许访问 Google Cloud Monitoring 数据。

1.  将其上传到数据来源**配置**页面上的 Grafana。您可以上传文件或粘贴文件内容。

    \$1\$1< docs-imagebox img=”/img/docs/v71/cloudmonitoring\$1grafana\$1upload\$1key.png “class= “docs-image—no-shadow” caption= “将服务密钥文件上传到 Grafana” >\$1\$1 

1.  文件内容将会加密并保存在 Grafana 数据库中。上传文件后不要忘记保存！

    \$1\$1< docs-imagebox img=”/img/docs/v71/cloudmonitoring\$1grafana\$1key\$1uploaded.png “class= “docs-image—no-shadow” caption= “服务密钥文件已上传到 Grafana” >\$1\$1 

## 使用 查询编辑器
<a name="google-using-the-query-editor"></a>

 Google Cloud Monitoring 查询编辑器让您可以构建两种类型的查询：**指标**和**服务级别目标（SLO）**。两种类型都将返回时间序列数据。

### 指标查询
<a name="google-metric-queries"></a>

 指标查询编辑器允许您 group/aggregate 按标签和时间选择指标，并使用过滤器指定要在结果中显示哪个时间序列。

 要创建指标查询，请按照以下步骤操作：

1.  在**查询类型**下拉列表中选择**指标**选项。

1.  从**项目**下拉列表中选择一个项目。

1.  从**服务**下拉列表中选择 Google Cloud Platform 服务。

1.  从**指标**下拉列表中选择一个指标。

1.  要添加或移除 filter 或 group by 子句，请使用筛选条件和分组依据部分中的加号和减号图标。此为可选步骤。

 Google Cloud Monitoring 指标具有不同的类型（GAUGE、DELTA、CUMULATIVE），并且这些类型支持不同的聚合选项（reducer 和 aligner）。Grafana 查询编辑器显示所选指标的可用聚合方法列表，并在选择指标时设置默认 reducer 和 aligner。查询编辑器还会自动选择 Y 轴的单位。

#### 筛选条件
<a name="google-filter"></a>

 要添加筛选条件，请选择加号图标，选择要筛选的字段，然后输入筛选条件值。例如，输入 `instance_name = grafana-1`。您可以选择筛选条件名称，然后选择 `--remove filter--` 来移除筛选条件。

##### 简单通配符
<a name="google-simple-wildcards"></a>

 当运算符设置为 `=` 或 `!=` 时，可将通配符添加到筛选条件值字段。例如，`us-*` 捕获所有以 "us-" 开头的值，`*central-a` 捕获所有以 "central-a" 结尾的值，而 `*-central-*` 捕获具有子字符串 `central-` 的所有值。简单通配符比正则表达式的开销更小。

##### 正则表达式
<a name="google-regular-expressions"></a>

 当运算符设置为 `=~` 或 `!=~` 时，可将正则表达式添加到筛选条件值字段。例如，`us-central[1-3]-[af]` 匹配所有以 "us-central" 开头的值，后跟 1 到 3 之间的数字、短划线以及 "a" 或 "f"。创建正则表达式时，不需要使用前导和尾部斜杠。

#### 聚合
<a name="google-aggregation"></a>

 您可以使用“聚合”字段根据常见统计数据合并时间序列。有关聚合的更多信息，请参阅[聚合选项](https://cloud.google.com/monitoring/charts/metrics-selector#aggregation-options)。

 `Aligner` 字段让您可以在相同的按时间间隔分组之后对齐多个时间序列。有关 aligner 的更多信息，请参阅[对齐指标选择器](https://cloud.google.com/monitoring/charts/metrics-selector#alignment)。

##### 对齐周期和按时间分组
<a name="alignment-periodgroup-by-time"></a>

 如果选择聚合，`Alignment Period` 将会按时间对指标分组。默认情况下，使用 GCP Google Cloud Monitoring 默认分组（从而将 Grafana 中的图形与 Google Cloud Monitoring UI 中的图形进行比较）。该选项称为 `cloud monitoring auto`，默认值为：
+  对于时间范围 < 23 小时，则为 1m 
+  对于时间范围 >= 23 小时且 < 6 天，则为 5m 
+  对于时间范围 >= 6 天，则为 1h 

 另一个自动选项是 `grafana auto`。这将根据所选的时间范围和图形面板的宽度自动设置按时间分组。有关更多信息，请参阅 [添加间隔变量](variables-types.md#add-an-interval-variable)。

 也可以选择按固定时间间隔分组，如 `1h` 或 `1d`。

#### 分组依据
<a name="google-group-by"></a>

 按资源或指标标签分组，以减少时间序列的数量，并按分组依据聚合结果。例如，按 instance\$1name 分组以查看计算实例的聚合指标。

##### 元数据标签
<a name="google-metadata-labels"></a>

 资源元数据标签包含在 Google Cloud 中唯一地标识资源的信息。仅当元数据标签是时间序列请求中**分组依据**分段的一部分时，才会在时间序列响应中返回元数据标签。由于没有用于检索元数据标签的 API，因此无法使用适用于所选服务和指标的元数据标签填充“分组依据”下拉列表。但**分组依据**字段下拉列表含有预定义的常见系统标签列表。

 用户标签无法预定义，但可以在**分组依据**字段中手动输入。如果**分组依据**分段中包含元数据标签、用户标签或系统标签，则可以根据标签创建筛选条件，并在**别名**字段扩展其值。

#### 别名模式
<a name="google-alias-patterns"></a>

 您可以使用“别名依据”字段控制图例键的格式。默认情况下显示指标名称和标签。可能很长且难以阅读。在别名字段中使用以下模式，您可以根据需要设置图例键的格式。

#### 指标类型模式
<a name="metric-type-patterns"></a>


|  别名模式  |  说明  |  示例结果  | 
| --- | --- | --- | 
|  \$1\$1metric.type\$1\$1  |  返回完整的指标类型。 |  compute.googleapis.com/instance/cpu/utilization  | 
|  \$1\$1metric.name\$1\$1  |  返回指标名称部分。 |  instance/cpu/utilization  | 
|  \$1\$1metric.service\$1\$1  |  返回服务部分。 |  compute  | 

#### 标签模式
<a name="google-label-patterns"></a>

 在“分组依据”下拉列表中，您可以查看指标列表和指标的资源标签。可使用别名模式将其包含在图例键中。


|  别名模式格式  |  说明  |  别名模式示例  |  示例结果  | 
| --- | --- | --- | --- | 
|  \$1\$1metric.label.xxx\$1\$1  |  返回指标标签值。 |  \$1\$1metric.label.instance\$1name\$1\$1  |  grafana-1-prod  | 
|  \$1\$1resource.label.xxx\$1\$1  |  返回资源标签值。 |  \$1\$1resource.label.zone\$1\$1  |  us-east1-b  | 
|  \$1\$1metadata.system\$1labels.xxx\$1\$1  |  返回元数据系统标签值。 |  \$1\$1metadata.system\$1labels.name\$1\$1  |  grafana  | 
|  \$1\$1metadata.user\$1labels.xxx\$1\$1  |  返回元数据用户标签值。 |  \$1\$1metadata.user\$1labels.tag\$1\$1  |  production  | 

 示例别名依据：`{{metric.type}} - {{metric.label.instance_name}}`

 示例结果：`compute.googleapis.com/instance/cpu/usage_time - server1-prod`

 还可以解析受监控资源类型的名称。


|  别名模式格式  |  说明  |  示例结果  | 
| --- | --- | --- | 
|  \$1\$1resource.type\$1\$1  |  返回受监控资源类型的名称。 |  gce\$1instance  | 

 示例别名依据：`{{resource.type}} - {{metric.type}}`

 示例结果：`gce_instance - compute.googleapis.com/instance/cpu/usage_time`

### SLO 查询
<a name="slo-service-level-objective-queries"></a>

**注意**  
 SLO 查询仅在 Grafana v7.0\$1 中可用 

Google Cloud Monitoring 数据来源中的 SLO 查询生成器允许以时间序列格式显示 SLO 数据。要了解服务监控的基本概念，请参阅 Google Cloud Monitoring [官方文档](https://cloud.google.com/monitoring/service-monitoring)。

#### 创建 SLO 查询
<a name="how-to-create-an-slo-query"></a>

 要创建 SLO 查询，请按照以下步骤操作：

1.  在**查询类型**下拉列表中选择**服务级别目标（SLO）**选项。

1.  从**项目**下拉列表中选择一个项目。

1.  从**服务**下拉列表中选择 [SLO 服务](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/services)。

1.  从 **SLO** 下拉列表中选择 [SLO](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/services.serviceLevelObjectives)。

1.  从**选择器**下拉列表中选择[时间序列选择器](https://cloud.google.com/monitoring/service-monitoring/timeseries-selectors#ts-selector-list)。

 Grafana 中显示了时间序列选择器的友好名称。下表显示了从友好名称到服务监控文档中使用的系统名称的映射。


|  选择器下拉列表值  |  使用相应的时间序列选择器  | 
| --- | --- | 
|  SLI 值  |  select\$1slo\$1health  | 
|  SLO 合规性  |  select\$1slo\$1compliance  | 
|  SLO 错误预算剩余  |  select\$1slo\$1budget\$1fraction  | 

#### SLO 查询的别名模式
<a name="alias-patterns-for-slo-queries"></a>

 您可以使用“别名依据”字段控制 SLO 查询图例键的格式。


|  别名模式  |  说明  |  示例结果  | 
| --- | --- | --- | 
|  \$1\$1project\$1\$1  |  返回 GCP 项目名称。 |  myProject  | 
|  \$1\$1service\$1\$1  |  返回服务名称。 |  myService  | 
|  \$1\$1slo\$1\$1  |  返回 SLO。 |  latency-slo  | 
|  \$1\$1selector\$1\$1  |  返回选择器。 |  select\$1slo\$1health  | 

#### SLO 查询的对齐周期和按时间分组
<a name="alignment-periodgroup-by-time-for-slo-queries"></a>

 SLO 查询使用与指标查询相同的对齐周期功能。有关更多信息，请参阅 [指标查询](#google-metric-queries)。

## 模板化
<a name="google-templating"></a>

 您可以在指标查询中使用变量来代替服务器、应用程序和传感器名称等硬编码。变量显示为控制面板顶部的下拉选择框。您可以使用这些下拉框来更改控制面板中显示的数据。

 有关模板化和模板变量的更多信息，请参阅 [模板和变量](templates-and-variables.md)。

### 查询变量
<a name="google-query-variable"></a>

 您可以使用*查询*类型的变量查询 Google Cloud Monitoring，以获取各种类型的数据。Google Cloud Monitoring 数据来源插件提供了以下 `Query Types`。


|  Name  |  说明  | 
| --- | --- | 
|  Metric Types  |  返回可用于指定服务的指标类型名称列表。 | 
|  Labels Keys  |  返回指定指标中 metric label 和 resource label 的键列表。 | 
|  Labels Values  |  返回指定指标中标签的值列表。 | 
|  Resource Types  |  返回指定指标的资源类型列表。 | 
|  Aggregations  |  返回指定指标的聚合列表（跨序列 reducer）。 | 
|  Aligners  |  返回指定指标的 aligner 列表（按序列 aligner）。 | 
|  Alignment periods  |  返回 Grafana 的 Google Cloud Monitoring 查询编辑器中可用的所有对齐周期列表。 | 
|  Selectors  |  返回可用于 SLO（服务级别目标）查询的选择器列表。 | 
|  SLO Services  |  返回可用于 SLO 查询的 Service Monitoring 服务列表。 | 
|  Service Level Objectives (SLO)  |  返回指定 SLO 服务的 SLO 列表。 | 

### 在查询中使用变量
<a name="google-using-variables-in-queries"></a>

 共有两种语法：
+  `$<varname>` 示例：`metric.label.$metric_label`
+  `[[varname]]` 示例：`metric.label.[[metric_label]]`

 为什么是两种？ 第一种语法更容易读写，但不能在词中间使用变量。启用*多值*或*包含所有值*选项后，Grafana 会将标签从纯文本转换为兼容正则表达式的字符串，这意味着您必须使用 `=~` 而不是 `=`。

## Annotations
<a name="google-annotations"></a>

 您可以使用注释在图形上叠加丰富的事件信息。您可以通过控制面板菜单/注释视图添加注释查询。注释呈现的开销很大，因此必须限制返回的行数。目前尚不支持显示 Google Cloud Monitoring 注释和事件，但其能够与 Google Cloud Monitoring 中的[自定义指标](https://cloud.google.com/monitoring/custom-metrics/)配合使用。

有关注释的详细信息，请参阅[Annotations](dashboard-annotations.md)。

 使用注释的查询编辑器，您可以选择指标和筛选条件。**标题**和**文本**字段支持模板化，可使用从查询返回的数据。例如，“标题”字段可能包含以下文本：

 `{{metric.type}} has value: {{metric.value}}` 

 示例结果：`monitoring.googleapis.com/uptime_check/http_status has this value: 502`

### 注解查询编辑器的模式
<a name="patterns-for-the-annotation-query-editor"></a>


|  别名模式格式  |  说明  |  别名模式示例  |  示例结果  | 
| --- | --- | --- | --- | 
|  \$1\$1metric.value\$1\$1  |  指标/点的值。 |  \$1\$1metric.value\$1\$1  |  555  | 
|  \$1\$1metric.type\$1\$1  |  返回完整的指标类型。 |  \$1\$1metric.type\$1\$1  |  compute.googleapis.com/instance/cpu/utilization  | 
|  \$1\$1metric.name\$1\$1  |  返回指标名称部分。 |  \$1\$1metric.name\$1\$1  |  instance/cpu/utilization  | 
|  \$1\$1metric.service\$1\$1  |  返回服务部分。 |  \$1\$1metric.service\$1\$1  |  compute  | 
|  \$1\$1metric.label.xxx\$1\$1  |  返回指标标签值。 |  \$1\$1metric.label.instance\$1name\$1\$1  |  grafana-1-prod  | 
|  \$1\$1resource.label.xxx\$1\$1  |  返回资源标签值。 |  \$1\$1resource.label.zone\$1\$1  |  us-east1-b  | 

## 从 Grafana 面板到 Google Cloud Console 中 Metrics Explorer 的深层链接
<a name="deep-linking-from-grafana-panels-to-the-metrics-explorer-in-google-cloud-console"></a>

**注意**  
 此功能仅适用于指标查询。

 在面板中选择一个时间序列，即可看到一个上下文菜单，其中包含指向“在 Google Cloud Console 的 Metrics Explorer 中查看”的链接。选择此链接将在 Google Cloud Console 中打开 Metrics Explorer，并从其中的 Grafana 面板运行查询。此链接会先将用户导航到 Google Account Chooser。成功选择账户后，用户将被重定向到 Metrics Explorer。提供的链接对任何账户都有效，但仅当您的账户有权访问查询中指定的 GCP 项目时，才会显示查询。

# 连接到 InfluxDB 数据来源
<a name="using-influxdb-in-AMG"></a>

 Grafana 为 InfluxDB 附带提供了一个功能丰富的数据来源插件。该插件包括自定义查询编辑器，支持注释和查询模板。

## 添加数据来源
<a name="influxdb-add-the-data-source"></a>

1.  选择顶部标题中的 Grafana 图标，打开侧边菜单。

1.  在侧边菜单的**控制面板**链接下，您应该可以找到名为**数据来源**的链接。

1.  选择顶部标题中的 **\$1 添加数据来源**按钮。

1.  从**类型**下拉列表中选择 **InfluxDB**。

1.  从**查询语言**列表中选择 **InfluxQL** 或 **Flux**。

**注意**  
 如果您在侧边菜单中看不到**数据来源**链接，则表示您当前的用户没有 `Admin` 角色。

# 连接到 Jaeger 数据来源
<a name="jaeger-data-source"></a>

 Jaeger 数据源提供开源 end-to-end分布式跟踪。

## 添加数据来源
<a name="jaeger-adding-the-data-source"></a>

 要访问 Jaeger 设置，请选择**配置**（齿轮）图标，然后选择**数据来源**，并选择 **Jaeger**。


|  Name  |  说明  | 
| --- | --- | 
|  Name  |  数据来源名称。您将在面板、查询和 Explore 中通过其名称查看数据来源。 | 
|  Default  |  默认数据来源意味着将为新面板预先选择该数据来源。 | 
|  URL  |  Jaeger 实例的 URL；例如，http://localhost:16686。 | 
|  Access  |  服务器（默认）= 必须可从 Grafana 后端/服务器访问 URL。 | 
|  Basic Auth  |  启用对 Jaeger 数据来源的基本身份验证。 | 
|  User  |  用于基本身份验证的用户名。 | 
|  Password  |  用于基本身份验证的密码。 | 

## 查询跟踪
<a name="jaeger-query-traces"></a>

 您可以通过 Explore 查询和显示来自 Jaeger 的跟踪。有关更多信息，请参阅 [Explore](explore.md)。

 Jaeger 查询编辑器允许您直接按跟踪 ID 进行查询，也可以从跟踪选择器中选择跟踪。要按跟踪 ID 进行查询，请将该 ID 插入到文本输入中。

 使用轨迹选择器从在 Explore 中选择的时间范围内记录的所有跟踪中选取特定的跟踪。跟踪选择器有三个嵌套级别：1. 选择您感兴趣的服务。1. 特定操作是所选服务的一部分。1. 发生所选操作的特定跟踪，由根操作名称和跟踪持续时间表示。

## 链接到日志的跟踪 ID
<a name="linking-trace-id-from-logs"></a>

 通过配置带有内部链接的派生字段，您可以从 Loki 中的日志链接到 Jaeger 跟踪。有关更多信息，请参阅 [派生字段](using-loki-in-AMG.md#loki-derived-fields)。

# 连接到 Loki 数据来源
<a name="using-loki-in-AMG"></a>

 Loki 数据来源提供对 Loki（Grafana 的日志聚合系统）的访问权限。

## 添加数据来源
<a name="loki-adding-the-data-source"></a>

1.  打开 Grafana 工作区，确保您已登录。

1.  在**配置**链接下的侧边菜单中，您应该可以找到**数据来源**链接。

1.  选择顶部的**添加数据来源**按钮。

1.  从数据来源列表中选择 **Loki**。

**注意**  
 如果您在侧边菜单中看不到**数据来源**链接，则表示您当前的用户没有 `Admin` 角色。


|  Name  |  说明  | 
| --- | --- | 
|  Name  |  数据来源名称。您将在面板、查询和 Explore 中通过其名称查看数据来源。 | 
|  Default  |  默认数据来源意味着将为新面板预先选择该数据来源。 | 
|  URL  | Loki 实例的 URL；例如，http://localhost:3100。这可以是 Amazon EC2 主机的网址，也可以是 Amazon EKS 集群前面的应用程序负载均衡器或 Loki 实例的任何其他 URL。 | 
|  Maximum lines  |  Loki 返回的日志行数上限（默认为 1000）。如果在 Explore 中显示日志时浏览器运行缓慢，则减小此值。 | 

### 派生字段
<a name="loki-derived-fields"></a>

 您可以使用*派生字段*配置执行以下操作：
+  添加从日志消息中解析的字段。
+  添加使用字段值的链接。

 您可以使用此功能直接从日志链接到跟踪后端，或者如果日志行中存在 userId，则链接到用户配置文件页面。这些链接显示在日志详细信息中。有关更多信息，请参阅 [标签和检测到的字段](explore.md#labels-and-detected-fields)。

每个派生字段由以下部分组成：
+  **名称**：在日志详细信息中显示为标签。
+  **正则表达式**：一种正则表达式模式，可在日志消息上运行，并捕获其中部分内容作为新字段的值。只能包含一个捕获组。
+  **URL/查询**：如果是外部链接，则输入完整的链接 URL。如果是内部链接，则此输入将用作目标数据来源的查询。在这两种情况下，您都可以使用 `${__value.raw }` 宏从字段中插值。
+  **内部链接**：选择此选项以确定是内部链接还是外部链接。如果是内部链接，您可以使用数据来源选择器选择目标数据来源。仅支持跟踪数据来源。

 您可以使用调试部分来查看字段提取的内容以及 URL 是如何插值的。选择**显示示例日志消息**以显示文本区域，您可以在其中输入日志消息。

 带有链接的新字段显示在日志详细信息中。

## 查询 日志
<a name="loki-querying-logs"></a>

 可通过 Explore 以及可视化中的日志面板查询和显示 Loki 的日志数据。选择 Loki 数据来源，然后输入 LogQL 查询以显示日志。有关 LogQL 的更多信息，请参阅 [LogQL](https://grafana.com/docs/loki/latest/logql/)。

### 日志查询
<a name="loki-log-queries"></a>

 日志查询由两部分组成：**日志流选择器**和**搜索表达式**。出于性能考虑，必须先为日志流选择日志标签。

 查询字段旁边的 Logs Explorer（**日志标签**按钮）显示可用日志流的标签列表。另一种编写查询的方法是使用查询字段的自动完成功能。先键入左大括号 `{`，自动完成菜单将建议标签列表。按 **Enter** 键运行查询。

 返回结果后，日志面板会显示日志行列表和条形图，其中 x 轴显示时间，y 轴显示频率/计数。

### 日志流选择器
<a name="log-stream-selector"></a>

 对于查询表达式的标签部分，用大括号 `{}` 括起来，然后使用键值语法选择标签。多个标签表达式用逗号分隔：

 `{app="mysql",name="mysql-backup"}` 

 目前支持以下标签匹配运算符：
+  `=` 完全相等。
+  `!=` 不等于。
+  `=~` 正则表达式匹配。
+  `!~` 正则表达式不匹配。

 示例：
+  `{name=~"mysql.+"}` 
+  `{name!~"mysql.+"}` 

 添加标签选择器的另一种方法是在表部分选择标签旁边的**筛选器**，将标签添加到查询表达式。这甚至适用于多个查询，并将标签选择器添加到每个查询。

### 搜索表达式
<a name="loki-search-expression"></a>

 编写日志流选择器后，您可以编写搜索表达式来进一步筛选结果。搜索表达式可以是文本或正则表达式。

 示例查询：
+  `{job="mysql"} |= "error"` 
+  `{name="kafka"} |~ "tsdb-ops.*io:2003"` 
+  `{instance=~"kafka-[23]",name="kafka"} != "kafka.server:type=ReplicaManager"` 

 筛选运算符可以链接起来，并按顺序筛选表达式。生成的日志行将满足所有筛选条件。

 示例 

 `{job="mysql"} |= "error" != "timeout"` 

 目前支持以下筛选类型。
+  `|=` 行包含字符串。
+  `!=` 行不包含字符串。
+  `|~` 行匹配正则表达式。
+  `!~` 行不匹配正则表达式。

**注意**  
 有关 LogQL（Loki 的查询语言）的更多信息，请参阅 [Loki LogQL](https://grafana.com/docs/loki/latest/logql/)。

## 日志上下文
<a name="loki-log-context"></a>

 使用上述搜索表达式时，您现在可以检索筛选结果的相关上下文。通过选择筛选行上的 `Show Context` 链接，可以调查您感兴趣的日志消息之前和之后的日志消息。

## 模板化
<a name="loki-templating"></a>

 您可以在指标查询中使用变量来代替服务器、应用程序和传感器名称等硬编码。变量显示为控制面板顶部的下拉选择框。您可以使用这些下拉框来更改控制面板中显示的数据。

 有关模板化和模板变量的更多信息，请参阅 [模板和变量](templates-and-variables.md)。

## Annotations
<a name="loki-annotations"></a>

 您可以使用任何非指标 Loki 查询作为注释来源。日志内容将用作注释文本，日志流标签将用作标签，因此无需额外的映射。

# 连接到 Microsoft SQL Server 数据来源
<a name="using-microsoft-sql-server-in-AMG"></a>

 使用 Microsoft SQL Server（MSSQL）数据来源查询和可视化来自任何 Microsoft SQL Server 2005 或更高版本（包括 Microsoft Azure SQL 数据库）的数据。

**重要**  
Grafana 版本 8.0 更改了 Microsoft SQL Server、Postgres 和 MySQL 数据帧的底层数据结构。因此，时间序列查询结果将以宽格式返回。有关更多信息，请参阅 Grafana 数据帧文档中的[宽格式](https://grafana.com/developers/plugin-tools/introduction/data-frames#wide-format)。  
要使可视化效果和以前一样，您可能需要进行一些手动迁移。Github 上记录了一个解决方案，网址为 [Postgres/MySQL/MSSQL：v8.0 中与时间序列查询和数据列排序相关的重大更改](https://github.com/grafana/grafana/issues/35534)。

## 添加数据来源
<a name="mssql-adding-the-data-source"></a>

1.  选择顶部标题中的 Grafana 图标，打开侧边菜单。

1.  在**配置**链接下的侧边菜单中，您应该可以找到**数据来源**链接。

1.  选择顶部标题中的 **\$1 添加数据来源**按钮。

1.  从**类型**下拉列表中选择 **Microsoft SQL Server**。

### 数据来源选项
<a name="mssql-data-source-options"></a>


|  Name  |  说明  | 
| --- | --- | 
|  Name  |  数据来源名称。您将在面板和查询中通过其名称查看数据来源。 | 
|  Default  |  默认数据来源意味着将为新面板预先选择该数据来源。 | 
|  Host  |  您的 MSSQL 实例的 IP address/hostname 和可选端口。如果省略端口，则将使用默认的 1433。 | 
|  Database  |  MSSQL 数据库的名称。 | 
|  User  |  数据库用户的登录名/用户名。 | 
|  Password  |  数据库用户密码。 | 
|  Encrypt  |  此选项决定是否或在多大程度上与服务器协商安全 SSL TCP/IP 连接，默认false（Grafana v5.4\$1）。 | 
|  Max open  |  数据库的最大打开连接数，默认为 unlimited（Grafana v5.4\$1）。 | 
|  Max idle  |  空闲连接池中的最大连接数，默认为 2（Grafana v5.4\$1）。 | 
|  Max lifetime  |  连接可重复使用的最长时间（秒），默认为 14400/4 小时。 | 

### 最小时间间隔
<a name="mssql-min-time-interval"></a>

 `$_interval` `$_interval_ms` 变量的下限。建议设置以写入频率，例如，如果您的数据每分钟写入一次，则为 `1m`。此选项也可以 overridden/configured 位于仪表板面板的数据源选项下。此值的格式**必须**为数字，后跟有效的时间标识符；例如，`1m`（1 分钟）或 `30s`（30 秒）。支持以下时间标识符。


|  标识符  |  说明  | 
| --- | --- | 
|  y  |  Year  | 
|  M  |  Month  | 
|  w  |  周  | 
|  d  |  天  | 
|  h  |  小时  | 
|  m  |  分钟  | 
|  s  |  秒  | 
|  ms  |  毫秒  | 

### 数据库用户权限
<a name="mssql-database-user-permissions-important"></a>

**重要**  
 添加数据来源时指定的数据库用户只能获得对要查询的指定数据库和表的 SELECT 权限。Grafana 不会验证查询是否安全。查询可以包含任何 SQL 语句。例如，可以运行 `DELETE FROM user;` 和 `DROP TABLE user;` 之类的语句。为了防止这种情况，强烈建议您创建具有受限权限的特定 MSSQL 用户。

 以下示例代码显示了如何创建具有受限权限的特定 MSSQL 用户。

```
 CREATE USER grafanareader WITH PASSWORD 'password'
 GRANT SELECT ON dbo.YourTable3 TO grafanareader
```

 确保用户没有从公有角色获得任何不需要的权限。

### 已知问题
<a name="mssql-known-issues"></a>

 如果您使用的是旧版本的 Microsoft SQL Server，比如 2008 和 2008R2，则可能需要禁用加密才能连接。如果可能，建议您使用最新的服务包，以获得最佳兼容性。

## 查询编辑器
<a name="mssql-query-editor"></a>

 在图形、Singlestat 或表面板编辑模式的“指标”选项卡中，您可以找到 MSSQL 查询编辑器。要进入编辑模式，请选择面板标题，然后选择“编辑”。您可以使用编辑器定义 SQL 查询以选择要可视化的数据。

1.  选择*格式化为* `Time series`（用于图形或 Singlestat 面板等）或 `Table`（用于表面板等）。

1.  这是您编写 SQL 查询的实际编辑器。

1.  在查询编辑器下方显示 MSSQL 的帮助部分。

1.  显示运行的 SQL 查询。在成功运行查询后最先可用。

1.  添加一个额外的查询，其中显示额外的查询编辑器。

## 宏
<a name="mssql-macros"></a>

 为了简化语法并允许动态部分（如日期范围筛选器），查询可包含宏。


|  宏示例  |  说明  | 
| --- | --- | 
|  \$1\$1\$1time(dateColumn)  |  将替换为表达式，以将列重命名为 time。例如，dateColumn as time。 | 
|  \$1\$1\$1timeEpoch(dateColumn)  |  将替换为表达式，将 DATETIME 列类型转换为 Unix 时间戳，并将其重命名为 time。例如，DATEDIFF(second, "1970-01-01", dateColumn) AS time。 | 
|  \$1\$1\$1timeFilter(dateColumn)  |  将替换为使用指定列名的时间范围筛选条件。例如，dateColumn BETWEEN "2017-04-21T05:01:17Z" AND "2017-04-21T05:06:17Z"。 | 
|  \$1\$1\$1timeFrom()  |  将替换为当前活动时间选择的开始时间。例如，"2017-04-21T05:01:17Z"。 | 
|  \$1\$1\$1timeTo()  |  将替换为当前活动时间选择的结束时间。例如，"2017-04-21T05:06:17Z"。 | 
|  \$1\$1\$1timeGroup(dateColumn,'5m'[, fillvalue])  |  将替换为 GROUP BY 子句中可用的表达式。如果 fillValue 为 NULL 或浮点值，则会自动用该值填充时间范围内的空序列。例如，CAST(ROUND(DATEDIFF(second, "1970-01-01", time\$1column)/300.0, 0) as bigint)\$1300。 | 
|  \$1\$1\$1timeGroup(dateColumn,'5m', 0)  |  与前面相同，但带有填充参数，序列中缺失的点将由 Grafana 添加，0 将用作值。 | 
|  \$1\$1\$1timeGroup(dateColumn,'5m', NULL)  |  与上面相同，但 NULL 将用作缺失点的值。 | 
|  \$1\$1\$1timeGroup(dateColumn,'5m', previous)  |  与上面相同，但如果未看到任何值，则该序列中的前一个值将用作填充值，但使用 NULL（仅适用于 Grafana 5.3\$1）。 | 

 在面板编辑模式下，查询编辑器有一个**生成式 SQL** 链接，并在查询运行后显示。选择之后，将会展开并显示运行的原始插值 SQL 字符串。

## 表查询
<a name="mssql-table-queries"></a>

 如果查询选项设置为**格式化为****表**，则基本上可以执行任何类型的 SQL 查询。表面板将自动显示查询返回的任何列和行的结果。

 以下示例代码显示了一个数据库表。

```
CREATE TABLE [event] (
  time_sec bigint,
  description nvarchar(100),
  tags nvarchar(100),
)
```

```
CREATE TABLE [mssql_types] (
  c_bit bit, c_tinyint tinyint, c_smallint smallint, c_int int, c_bigint bigint, c_money money, c_smallmoney smallmoney, c_numeric numeric(10,5),
  c_real real, c_decimal decimal(10,2), c_float float,
  c_char char(10), c_varchar varchar(10), c_text text,
  c_nchar nchar(12), c_nvarchar nvarchar(12), c_ntext ntext,
  c_datetime datetime,  c_datetime2 datetime2, c_smalldatetime smalldatetime, c_date date, c_time time, c_datetimeoffset datetimeoffset
)

INSERT INTO [mssql_types]
SELECT
  1, 5, 20020, 980300, 1420070400, '$20000.15', '£2.15', 12345.12,
  1.11, 2.22, 3.33,
  'char10', 'varchar10', 'text',
  N'☺nchar12☺', N'☺nvarchar12☺', N'☺text☺',
  GETDATE(), CAST(GETDATE() AS DATETIME2), CAST(GETDATE() AS SMALLDATETIME), CAST(GETDATE() AS DATE), CAST(GETDATE() AS TIME), SWITCHOFFSET(CAST(GETDATE() AS DATETIMEOFFSET), '-07:00')
```

 以下示例代码显示了一个查询。

```
SELECT * FROM [mssql_types]
```

 您可以使用常规 `AS` SQL 列选择语法来控制表面板列的名称，如以下示例代码所示。

```
SELECT
  c_bit as [column1], c_tinyint as [column2]
FROM
  [mssql_types]
```

 生成的表面板：

## 时间序列查询
<a name="mssql-time-series-queries"></a>

 如果将**格式化为**设置为**时间序列**，例如在图形面板中使用，查询必须有一个名为 `time` 的列，该列返回 SQL 日期时间或任何表示 Unix 纪元（秒）的数字数据类型。您可以返回一个名为 `metric` 的列，该列用作值列的指标名称。除 `time` 和 `metric` 之外的任何列都被视为值列。如果省略 `metric` 列，则值列的名称为指标名称。您可以选择多个值列，每个值列都将使用其名称作为指标。如果返回多个值列和一个名为的 `metric` 列，则此列将用作序列名称的前缀。

 时间序列查询的结果集必须按时间排序。

 以下示例代码显示了一个数据库表。

```
CREATE TABLE [event] (
  time_sec bigint,
  description nvarchar(100),
  tags nvarchar(100),
)
```

```
CREATE TABLE metric_values (
  time datetime,
  measurement nvarchar(100),
  valueOne int,
  valueTwo int,
)

INSERT metric_values (time, measurement, valueOne, valueTwo) VALUES('2018-03-15 12:30:00', 'Metric A', 62, 6)
INSERT metric_values (time, measurement, valueOne, valueTwo) VALUES('2018-03-15 12:30:00', 'Metric B', 49, 11)
...
INSERT metric_values (time, measurement, valueOne, valueTwo) VALUES('2018-03-15 13:55:00', 'Metric A', 14, 25)
INSERT metric_values (time, measurement, valueOne, valueTwo) VALUES('2018-03-15 13:55:00', 'Metric B', 48, 10)
```

 以下示例代码显示了一个 `value` 列和一个 `metric` 列。

```
SELECT
  time,
  valueOne,
  measurement as metric
FROM
  metric_values
WHERE
  $__timeFilter(time)
ORDER BY 1
```

 在图形面板中使用上述查询时，将生成两个名为 `Metric A` 和 `Metric B` 的序列，其值 `valueOne` 和 `valueTwo` 绘制在 `time` 上。

 以下示例代码显示了多个 `value` 列。

```
SELECT
  time,
  valueOne,
  valueTwo
FROM
  metric_values
WHERE
  $__timeFilter(time)
ORDER BY 1
```

 在图形面板中使用上述查询时，将生成两个名为 `Metric A` 和 `Metric B` 的序列，其值 `valueOne` 和 `valueTwo` 绘制在 `time` 上。

 以下示例代码演示了如何使用 \$1\$1\$1TimeGroup 宏。

```
SELECT
  $__timeGroup(time, '3m') as time,
  measurement as metric,
  avg(valueOne)
FROM
  metric_values
WHERE
  $__timeFilter(time)
GROUP BY
  $__timeGroup(time, '3m'),
  measurement
ORDER BY 1
```

 在图形面板中使用上述查询时，将生成两个名为 `Metric A` 和 `Metric B` 的序列，其值 `valueOne` 和 `valueTwo` 绘制在 `time` 上。在三分钟的窗口中，任何两个序列缺少一个值，都会在这两条线之间呈现一条线。您会注意到，右侧的图形永远不会下降到零。

 以下示例代码演示了如何使用 \$1\$1\$1TimeGroup 宏并将填充参数设置为零。

```
SELECT
  $__timeGroup(time, '3m', 0) as time,
  measurement as metric,
  sum(valueTwo)
FROM
  metric_values
WHERE
  $__timeFilter(time)
GROUP BY
  $__timeGroup(time, '3m'),
  measurement
ORDER BY 1
```

 在图形面板中使用此查询时，结果是两个名为 `Metric A` 和 `Metric B` 的序列，其中 `valueTwo` 的总和绘制在 `time` 上。在三分钟窗口内缺少值的任何序列都将具有零值，可在右侧的图形中看到此值。

## 模板化
<a name="mssql-templating"></a>

 您可以在指标查询中使用变量来代替服务器、应用程序和传感器名称等硬编码。变量显示为控制面板顶部的下拉选择框。您可以使用这些下拉框来更改控制面板中显示的数据。

 有关模板化和模板变量的更多信息，请参阅 [模板和变量](templates-and-variables.md)。

### 查询变量
<a name="mssql-query-variable"></a>

 如果添加 `Query` 类型的模板变量，则可以编写一个 MSSQL 查询，该查询可以返回测量名称、键名或键值等显示为下拉选择框的内容。

 例如，如果在模板变量 *Query* 设置中指定了这样的查询，则会有一个变量，其中包含表中 `hostname` 列的所有值的。

```
SELECT hostname FROM host
```

 查询可以返回多列，Grafana 会自动根据这些列创建一个列表。例如，以下查询将返回一个列表，其中包含来自 `hostname` 和 `hostname2` 的值。

```
SELECT [host].[hostname], [other_host].[hostname2] FROM host JOIN other_host ON [host].[city] = [other_host].[city]
```

 另一种选择是可以创建 key/value 变量的查询。该查询应返回名为 `__text` 和 `__value` 的两列。`__text` 列值应该是唯一的（如果它不是唯一的，则使用第一个值）。下拉列表中的选项包含文本和值，允许将友好名称作为文本，将 id 作为值。以 `hostname` 作为文本，以 `id` 作为值的示例查询：

```
SELECT hostname __text, id __value FROM host
```

 您还可以创建嵌套变量。例如，您还有一个名为 `region` 的变量。然后，您可以让主机变量仅显示来自当前所选区域的主机，并使用以下查询（如果 `region` 是多值变量，则使用 `IN` 比较运算符而不是 `=` 与多个值匹配）。

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

### 在查询中使用变量
<a name="mssql-using-variables-in-queries"></a>

**注意**  
 仅当模板变量是 `multi-value` 时，才会引用模板变量值。

 如果该变量是多值变量，则使用 `IN` 比较运算符而不是 `=` 与多个值匹配。

 共有两种语法：

 `$<varname>` 名为 `hostname` 的模板变量的示例：

```
SELECT
  atimestamp time,
  aint value
FROM table
WHERE $__timeFilter(atimestamp) and hostname in($hostname)
ORDER BY atimestamp
```

 `[[varname]]` 名为 `hostname` 的模板变量的示例：

```
SELECT
  atimestamp as time,
  aint as value
FROM table
WHERE $__timeFilter(atimestamp) and hostname in([[hostname]])
ORDER BY atimestamp
```

#### 关闭多值变量的引用
<a name="mssql-disabling-quoting-for-multi-value-variables"></a>

 Grafana 会自动为多值变量创建带引号、以逗号分隔的字符串。例如，如果选择 `server01` 和 `server02`，则其格式为：`'server01', 'server02'`。要关闭引用，请对变量使用 csv 格式选项。

 `${servers:csv}` 

 有关变量格式选项的更多信息，请参阅 [模板和变量](templates-and-variables.md)。

## Annotations
<a name="mssql-annotations"></a>

 您可以使用注释在图形上叠加丰富的事件信息。您可以通过控制面板菜单/注释视图添加注释查询。有关更多信息，请参阅 [Annotations](dashboard-annotations.md)。

 **列：**


|  Name  |  说明  | 
| --- | --- | 
|  time  |  date/time 字段的名称。可以是具有原生 SQL date/time 数据类型或纪元值的列。 | 
|  timeend  |  结束 date/time 字段的可选名称。可以是具有原生 SQL date/time 数据类型或纪元值的列。 | 
|  text  |  事件描述字段。 | 
|  tags  |  用于事件标签的可选字段名称，显示为以逗号分隔的字符串。 | 

 以下示例代码显示了数据库表。

```
CREATE TABLE [events] (
  time_sec bigint,
  description nvarchar(100),
  tags nvarchar(100),
)
```

 我们还使用 [时间序列查询](#mssql-time-series-queries) 中定义的数据库表。

 以下示例代码演示了一个查询，该查询使用具有纪元值的 time 列。

```
SELECT
  time_sec as time,
  description as [text],
  tags
FROM
  [events]
WHERE
  $__unixEpochFilter(time_sec)
ORDER BY 1
```

 以下示例代码演示了一个区域查询，该查询使用具有纪元值的 time 和 timeend 列。

```
SELECT
  time_sec as time,
  time_end_sec as timeend,
  description as [text],
  tags
FROM
  [events]
WHERE
  $__unixEpochFilter(time_sec)
ORDER BY 1
```

 以下示例代码显示了使用原生 SQL date/time 数据类型的时间列的查询。

```
SELECT
  time,
  measurement as text,
  convert(varchar, valueOne) + ',' + convert(varchar, valueTwo) as tags
FROM
  metric_values
WHERE
  $__timeFilter(time_column)
ORDER BY 1
```

## 存储过程支持
<a name="stored-procedure-support"></a>

 存储过程已经过验证，可以正常工作。但在某些边缘情况下，可能无法按您的预期工作。表、时间序列和注释查询应支持存储过程，前提是您使用与前面各节所述相同的列命名，并以相同的格式返回数据。

 宏函数在存储过程中不起作用。

### 示例
<a name="mssql-examples"></a>

 对于以下示例，数据库表是在时间序列查询中定义的。假设您要在图形面板中可视化四个序列，例如 `valueOne`、`valueTwo` 和 `measurement` 列的任意组合。右侧的图形面板直观地展示了我们想要实现的目标。要解决此问题，您必须使用两个查询：

 以下示例代码显示了第一个查询。

```
SELECT
  $__timeGroup(time, '5m') as time,
  measurement + ' - value one' as metric,
  avg(valueOne) as valueOne
FROM
  metric_values
WHERE
  $__timeFilter(time)
GROUP BY
  $__timeGroup(time, '5m'),
  measurement
ORDER BY 1
```

 以下示例代码显示了第二个查询。

```
SELECT
  $__timeGroup(time, '5m') as time,
  measurement + ' - value two' as metric,
  avg(valueTwo) as valueTwo
FROM
  metric_values
GROUP BY
  $__timeGroup(time, '5m'),
  measurement
ORDER BY 1
```

#### 使用纪元格式时间的存储过程
<a name="mssql-stored-procedure-using-time-in-epoch-format"></a>

 您可以定义一个存储过程，该过程将返回在图形面板中呈现四个序列所需的所有数据，如上所示。在此情况下，存储过程接受两个参数 `@from` 和 `@to`，数据类型为 `int`，这应该是纪元格式的时间范围（from-to），用于筛选从存储过程返回的数据。

 这模仿了 select 和 group by 表达式中的 `$__timeGroup(time, '5m')`，这就是为什么需要大量冗长的表达式。如果需要，可将其提取到 MSSQL 函数中。

```
CREATE PROCEDURE sp_test_epoch(
  @from int,
  @to   int
)   AS
BEGIN
  SELECT
    cast(cast(DATEDIFF(second, {d '1970-01-01'}, DATEADD(second, DATEDIFF(second,GETDATE(),GETUTCDATE()), time))/600 as int)*600 as int) as time,
    measurement + ' - value one' as metric,
    avg(valueOne) as value
  FROM
    metric_values
  WHERE
    time >= DATEADD(s, @from, '1970-01-01') AND time <= DATEADD(s, @to, '1970-01-01')
  GROUP BY
    cast(cast(DATEDIFF(second, {d '1970-01-01'}, DATEADD(second, DATEDIFF(second,GETDATE(),GETUTCDATE()), time))/600 as int)*600 as int),
    measurement
  UNION ALL
  SELECT
    cast(cast(DATEDIFF(second, {d '1970-01-01'}, DATEADD(second, DATEDIFF(second,GETDATE(),GETUTCDATE()), time))/600 as int)*600 as int) as time,
    measurement + ' - value two' as metric,
    avg(valueTwo) as value
  FROM
    metric_values
  WHERE
    time >= DATEADD(s, @from, '1970-01-01') AND time <= DATEADD(s, @to, '1970-01-01')
  GROUP BY
    cast(cast(DATEDIFF(second, {d '1970-01-01'}, DATEADD(second, DATEDIFF(second,GETDATE(),GETUTCDATE()), time))/600 as int)*600 as int),
    measurement
  ORDER BY 1
END
```

 然后，您可以对图形面板使用以下查询。

```
DECLARE
  @from int = $__unixEpochFrom(),
  @to int = $__unixEpochTo()

EXEC dbo.sp_test_epoch @from, @to
```

#### 使用日期时间格式的时间存储过程
<a name="mssql-stored-procedure-using-time-in-datetime-format"></a>

 您可以定义一个存储过程，该过程将返回在图形面板中呈现四个序列所需的所有数据，如上所示。在此情况下，存储过程接受两个参数 `@from` 和 `@to`，数据类型为 `datetime`，这应该是时间范围（from-to），用于筛选从存储过程返回的数据。

 这模仿了 select 和 group by 表达式中的 `$__timeGroup(time, '5m')`，这就是为什么需要大量冗长的表达式。如果需要，可将其提取到 MSSQL 函数中。

```
CREATE PROCEDURE sp_test_datetime(
  @from datetime,
  @to   datetime
)   AS
BEGIN
  SELECT
    cast(cast(DATEDIFF(second, {d '1970-01-01'}, time)/600 as int)*600 as int) as time,
    measurement + ' - value one' as metric,
    avg(valueOne) as value
  FROM
    metric_values
  WHERE
    time >= @from AND time <= @to
  GROUP BY
    cast(cast(DATEDIFF(second, {d '1970-01-01'}, time)/600 as int)*600 as int),
    measurement
  UNION ALL
  SELECT
    cast(cast(DATEDIFF(second, {d '1970-01-01'}, time)/600 as int)*600 as int) as time,
    measurement + ' - value two' as metric,
    avg(valueTwo) as value
  FROM
    metric_values
  WHERE
    time >= @from AND time <= @to
  GROUP BY
    cast(cast(DATEDIFF(second, {d '1970-01-01'}, time)/600 as int)*600 as int),
    measurement
  ORDER BY 1
END
```

 然后，您可以对图形面板使用以下查询。

```
DECLARE
  @from datetime = $__timeFrom(),
  @to datetime = $__timeTo()

EXEC dbo.sp_test_datetime @from, @to
```

## 警报
<a name="mssql-alerting"></a>

 时间序列查询应在警报条件下工作。警报规则条件尚不支持表格式查询。

# 连接到 MySQL 数据来源
<a name="using-mysql-in-AMG"></a>

 添加 MySQL 数据来源，以便从 MySQL 兼容的数据库中查询数据并将其可视化。

**重要**  
Grafana 版本 8.0 更改了 MySQL、Postgres 和 Microsoft SQL Server 数据来源数据帧的底层数据结构。因此，时间序列查询结果将以宽格式返回。有关更多信息，请参阅 Grafana 数据帧文档中的[宽格式](https://grafana.com/developers/plugin-tools/introduction/data-frames#wide-format)。  
要使可视化效果和以前一样，您可能需要进行一些手动迁移。Github 上记录了一个解决方案，网址为 [Postgres/MySQL/MSSQL：v8.0 中与时间序列查询和数据列排序相关的重大更改](https://github.com/grafana/grafana/issues/35534)。

## 添加数据来源
<a name="mysql-adding-the-data-source"></a>

1.  选择顶部标题中的 Grafana 图标，打开侧边菜单。

1.  在侧边菜单的**控制面板**链接下，您应该可以找到名为**数据来源**的链接。

1.  选择顶部标题中的 **\$1 添加数据来源**按钮。

1.  从**类型**下拉列表中选择 **MySQL**。

### 数据来源选项
<a name="mysql-data-source-options"></a>


|  Name  |  说明  | 
| --- | --- | 
|  Name  |  数据来源名称。您将在面板和查询中通过其名称查看数据来源。 | 
|  Default  |  默认数据来源意味着将为新面板预先选择该数据来源。 | 
|  Host  |  您的 MySQL 实例的 IP address/hostname 和可选端口。 | 
|  Database  |  MySQL 数据库的名称。 | 
|  User  |  数据库用户的登录名/用户名。 | 
|  Password  |  数据库用户密码。 | 
|  Max open  |  数据库的最大打开连接数，默认为 unlimited（Grafana v5.4\$1）。 | 
|  Max idle  |  空闲连接池中的最大连接数，默认为 2（Grafana v5.4\$1）。 | 
|  Max lifetime  |  连接可重复使用的最长时间（秒），默认为 14400/4 小时。此值应始终低于 MySQL（Grafana v5.4\$1）中配置的 [wait\$1timeout](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_wait_timeout)。 | 

### 最小时间间隔
<a name="mysql-min-time-interval"></a>

 `$_interval` `$_interval_ms` 变量的下限。建议设置以写入频率，例如，如果您的数据每分钟写入一次，则为 `1m`。此选项也可以在 overridden/configured 仪表板面板的数据源选项下方。此值的格式**必须**为数字，后跟有效的时间标识符；例如，`1m`（1 分钟）或 `30s`（30 秒）。支持以下时间标识符。


|  标识符  |  说明  | 
| --- | --- | 
|  y  |  Year  | 
|  M  |  Month  | 
|  w  |  周  | 
|  d  |  天  | 
|  h  |  小时  | 
|  m  |  分钟  | 
|  s  |  秒  | 
|  ms  |  毫秒  | 

### 数据库用户权限
<a name="database-user-permissions-important"></a>

**重要**  
 添加数据来源时指定的数据库用户只能获得对要查询的指定数据库和表的 SELECT 权限。Grafana 不会验证查询是否安全。查询可以包含任何 SQL 语句。例如，可以运行 `USE otherdb;` 和 `DROP TABLE user;` 之类的语句。为了防止这种情况，强烈建议您创建具有受限权限的特定 MySQL 用户。

 以下代码示例显示了如何创建具有受限权限的特定 MySQL 用户。

```
 CREATE USER 'grafanaReader' IDENTIFIED BY 'password';
 GRANT SELECT ON mydatabase.mytable TO 'grafanaReader';
```

 要授予对更多数据库和表的访问权限，可以根据需要使用通配符（`*`）代替数据库或表。

## 查询编辑器
<a name="mysql-query-editor"></a>

 在面板的编辑模式下，您可以在“指标”选项卡中找到 MySQL 查询编辑器。要进入编辑模式，请选择面板标题，然后选择**编辑**。

 在面板编辑模式下，查询编辑器有一个**生成式 SQL** 链接，并在查询运行后显示。选择之后，将会展开并显示运行的原始插值 SQL 字符串。

### 选择表、时间列和指标列（FROM）
<a name="select-table-time-column-and-metric-column-from"></a>

 当您首次进入编辑模式或添加新查询时，Grafana 将尝试在查询生成器中预填充第一个包含时间戳列和数字列的表。

 在 FROM 字段中，Grafana 建议使用配置数据库中的表。要在数据库用户有权访问的其他数据库中选择表或视图，您可以手动输入完全限定名称（database.table），例如 `otherDb.metrics`。

 “时间”列字段引用保存时间值的列的名称。为指标列字段选择值是可选项。如果选择一个值，则“指标”列字段将用作序列名称。

 指标列建议仅包含文本数据类型（text、tinytext、mediumtext、longtext、varchar、char）的列。如果要将具有不同数据类型的列作为指标列，则可以通过强制转换 `CAST(numericColumn as CHAR)` 输入列名称。您也可以在指标列字段中输入任意 SQL 表达式，这些表达式的计算结果为文本数据类型，例如 `CONCAT(column1, " ", CAST(numericColumn as CHAR))`。

### 列和聚合函数（SELECT）
<a name="columns-and-aggregation-functions-select"></a>

 在 `SELECT` 行中，您可以指定要使用的列和函数。在列字段中，您可以编写任意表达式来代替列名称，例如 `column1 * column2 / column3`。

 如果使用聚合函数，则必须对结果集分组。如果添加聚合函数，编辑器将自动添加 `GROUP BY time`。

 选择加号按钮并从菜单中选择 `Column`，即可添加更多值列。多个值列将在图形面板中绘制为单独的序列。

### 筛选数据（WHERE）
<a name="mysql-filter-data-where"></a>

 要添加筛选条件，请选择 `WHERE` 条件右侧的加号图标。您可以选择筛选条件，然后选择 `Remove` 来移除筛选条件。当前所选时间范围的筛选条件会自动添加到新查询中。

### 分组依据
<a name="mysql-group-by"></a>

 要按时间或任何其他列分组，请选择 GROUP BY 行末尾的加号图标。建议下拉列表将仅显示当前所选表的文本列，但可以手动输入任何列。您可以在项目上进行选择，然后选择 `Remove` 来移除组。

 如果添加任何分组，则所有选定的列都必须应用聚合函数。添加分组时，查询生成器会自动向所有没有聚合函数的列添加聚合函数。

#### 填充缺失值
<a name="mysql-gap-filling"></a>

 按时间分组时，Grafana 可以填充缺失值。time 函数接受两个参数。第一个参数是要作为分组依据的时间窗口，第二个参数是您希望 Grafana 填充缺失项目的值。

### 文本编辑器模式（原始）
<a name="mysql-text-editor-mode-raw"></a>

 选择汉堡包图标并选择**切换编辑器模式**或在查询下方选择**编辑 SQL**，即可切换到原始查询编辑器模式。

**注意**  
 如果使用原始查询编辑器，请确保您的查询至少具有 `ORDER BY time` 和返回时间范围的筛选条件。

## 宏
<a name="mysql-macros"></a>

 为了简化语法并允许动态部分（如日期范围筛选器），查询可包含宏。


|  宏示例  |  说明  | 
| --- | --- | 
|  \$1\$1\$1time(dateColumn)  |  将替换为一个表达式，以转换为 UNIX 时间戳，并将列重命名为 time\$1sec；例如，UNIX\$1TIMESTAMP(dateColumn) as time\$1sec。 | 
|  \$1\$1\$1timeEpoch(dateColumn)  |  将替换为一个表达式，以转换为 UNIX 时间戳，并将列重命名为 time\$1sec；例如，UNIX\$1TIMESTAMP(dateColumn) as time\$1sec。 | 
|  \$1\$1\$1timeFilter(dateColumn)  |  将替换为使用指定列名的时间范围筛选条件。例如，dateColumn BETWEEN FROM\$1UNIXTIME(1494410783) AND FROM\$1UNIXTIME(1494410983)。 | 
|  \$1\$1\$1timeFrom()  |  将替换为当前活动时间选择的开始时间。例如，FROM\$1UNIXTIME(1494410783)。 | 
|  \$1\$1\$1timeTo()  |  将替换为当前活动时间选择的结束时间。例如，FROM\$1UNIXTIME(1494410983)。 | 
|  \$1\$1\$1timeGroup(dateColumn,'5m')  |  将替换为 GROUP BY 子句中可用的表达式。例如，cast(cast(UNIX\$1TIMESTAMP(dateColumn)/(300) as signed)300 as signed),\$1  | 
|  \$1\$1\$1timeGroup(dateColumn,'5m', 0)  |  与前一行相同，但带有填充参数，序列中缺失的点将由 Grafana 添加，0 将用作值。 | 
|  \$1\$1\$1timeGroup(dateColumn,'5m', NULL)  |  与上面相同，但 NULL 将用作缺失点的值。 | 
|  \$1\$1\$1timeGroup(dateColumn,'5m', previous)  |  与上面相同，但如果未看到任何值，则该序列中的前一个值将用作填充值，但使用 NULL（仅适用于 Grafana 5.3\$1）。 | 
|  \$1\$1\$1timeGroupAlias(dateColumn,'5m')  |  将替换为与 \$1\$1\$1timeGroup 相同的内容，但增加了列别名（仅在 Grafana 5.3\$1 中可用）。 | 
| \$1\$1\$1unixEpochFilter(dateColumn) | 将使用指定列名替换为时间范围筛选条件，其中时间表示为 Unix 时间戳 例如 dateColumn > 1494410783 AND dateColumn < 1494497183。 | 
| \$1\$1\$1unixEpochFrom() | 将替换为当前活动时间选择的开始时间，作为 Unix 时间戳。例如 1494410783。 | 
| \$1\$1\$1unixEpochTo() | 将替换为当前活动时间选择的结束时间，作为 Unix 时间戳。例如 1494497183。 | 
| \$1\$1\$1unixEpochNanoFilter(dateColumn) | 将使用指定列名替换为时间范围筛选条件，其中时间表示为纳秒时间戳。例如 dateColumn > 1494410783152415214 AND dateColumn < 1494497183142514872。 | 
| \$1\$1\$1unixEpochNanoFrom() | 将替换为当前活动时间选择的开始时间，作为纳秒时间戳。例如 1494410783152415214。 | 
| \$1\$1\$1unixEpochNanoTo() | 将替换为当前活动时间选择的结束时间，作为纳秒时间戳。例如 1494497183142514872。 | 
| \$1\$1\$1unixEpochGroup(dateColumn,"5m", [fillmode]) | 与 \$1\$1\$1timeGroup 相同，但时间存储为 Unix 时间戳（仅在 Grafana 5.3\$1 中可用）。 | 
| \$1\$1\$1unixEpochGroupAlias(dateColumn,"5m", [fillmode])` | 与上面相同，但也增加了列别名（仅在 Grafana 5.3\$1 中可用）。 | 

 在面板编辑模式下，查询编辑器有一个**生成式 SQL** 链接，并在查询运行后显示。选择之后，将会展开并显示运行的原始插值 SQL 字符串。

## 表查询
<a name="mysql-table-queries"></a>

 如果**格式化为**查询选项设置为**表**，则基本上可以执行任何类型的 SQL 查询。表面板将自动显示查询返回的任何列和行的结果。

 以下代码显示了一个示例查询。

```
SELECT
  title as 'Title',
  user.login as 'Created By' ,
  dashboard.created as 'Created On'
 FROM dashboard
INNER JOIN user on user.id = dashboard.created_by
WHERE $__timeFilter(dashboard.created)
```

 您可以使用常规 `as` SQL 列选择语法来控制表面板列的名称。

## 时间序列查询
<a name="mysql-time-series-queries"></a>

 如果将**格式化为**设置为**时间序列**，例如在图形面板中使用，查询必须有一个名为 `time` 的列，该列返回 SQL 日期时间或任何表示 Unix 纪元的数字数据类型。除 `time` 和 `metric` 之外的任何列都被视为值列。您可以返回一个名为 `metric` 的列，该列用作值列的指标名称。如果返回多个值列和一个名为的 `metric` 列，则此列将用作序列名称的前缀（仅在 Grafana 5.3\$1 中可用）。

 时间序列查询的结果集必须按时间排序。

 以下代码示例显示了多个 `metric` 列。

```
SELECT
  $__timeGroup(time_date_time,'5m'),
  min(value_double),
  'min' as metric
FROM test_data
WHERE $__timeFilter(time_date_time)
GROUP BY time
ORDER BY time
```

 以下代码示例显示了如何使用 \$1\$1\$1timeGroup 宏中的填充参数将空值转换为零。

```
SELECT
  $__timeGroup(createdAt,'5m',0),
  sum(value_double) as value,
  measurement
FROM test_data
WHERE
  $__timeFilter(createdAt)
GROUP BY time, measurement
ORDER BY time
```

 以下代码示例显示了多个列。

```
SELECT
  $__timeGroup(time_date_time,'5m'),
  min(value_double) as min_value,
  max(value_double) as max_value
FROM test_data
WHERE $__timeFilter(time_date_time)
GROUP BY time
ORDER BY time
```

不支持基于时间范围和面板宽度按时间进行动态分组。

## 模板化
<a name="mysql-templating"></a>

 您可以在指标查询中使用变量来代替服务器、应用程序和传感器名称等硬编码。变量显示为控制面板顶部的下拉选择框。您可以使用这些下拉框来更改控制面板中显示的数据。

 有关模板化和模板变量的更多信息，请参阅 [模板](templates-and-variables.md#templates)。

### 查询变量
<a name="mysql-query-variable"></a>

 如果添加 `Query` 类型的模板变量，则可以编写一个 MySQL 查询，该查询可以返回测量名称、键名或键值等显示为下拉选择框的内容。

 例如，如果在模板变量 *Query* 设置中指定了这样的查询，则会有一个变量，其中包含表中 `hostname` 列的所有值的。

```
SELECT hostname FROM my_host
```

 查询可以返回多列，Grafana 会自动根据这些列创建一个列表。例如，以下查询将返回一个列表，其中包含来自 `hostname` 和 `hostname2` 的值。

```
SELECT my_host.hostname, my_other_host.hostname2 FROM my_host JOIN my_other_host ON my_host.city = my_other_host.city
```

 要在查询中使用依赖于时间范围的宏（如 `$__timeFilter(column)`），必须将模板变量的刷新模式设置为*时间范围更改时*。

```
SELECT event_name FROM event_log WHERE $__timeFilter(time_column)
```

 另一种选择是可以创建 key/value 变量的查询。该查询应返回名为 `__text` 和 `__value` 的两列。`__text` 列值应该是唯一的（如果不是唯一的，则使用第一个值）。下拉列表中的选项将具有文本和值，因此您可以将友好名称作为文本，将 ID 作为值。

以下代码示例显示了一个以 `hostname` 作为文本，以 `id` 作为值的查询。

```
SELECT hostname AS __text, id AS __value FROM my_host
```

 您还可以创建嵌套变量。例如，您还有一个名为 `region` 的变量。然后，您可以让主机变量仅显示来自当前所选区域的主机，并使用以下查询（如果 `region` 是多值变量，则使用 `IN` 比较运算符而不是 `=` 与多个值匹配）。

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

#### 使用 `__searchFilter` 筛选查询变量结果
<a name="using-__searchfilter-to-filter-results-in-query-variable"></a>

 在查询字段中使用 `__searchFilter`，根据用户在下拉选择框中输入的内容筛选查询结果。当用户未输入任何内容时，`__searchFilter` 的默认值为 `%`。

**注意**  
 请务必用引号将 `__searchFilter` 表达式括起来，因为 Grafana 不会为您执行此操作。

 以下示例显示了当用户在下拉选择框中键入时，如何使用 `__searchFilter` 作为查询字段的一部分来启用 `hostname` 搜索。

```
SELECT hostname FROM my_host  WHERE hostname LIKE '$__searchFilter'
```

### 在查询中使用变量
<a name="using-variables-in-queries-2"></a>

 从 Grafana 4.3.0 到 4.6.0，模板变量总是自动引用，因此如果是字符串值，请不要在 where 子句中用引号将其括起来。

 从 Grafana 4.7.0 开始，只有当模板变量为 `multi-value` 时，才会引用模板变量值。

 如果该变量是多值变量，则使用 `IN` 比较运算符而不是 `=` 与多个值匹配。

 共有两种语法：

 `$<varname>` 名为 `hostname` 的模板变量的示例：

```
SELECT
  UNIX_TIMESTAMP(atimestamp) as time,
  aint as value,
  avarchar as metric
FROM my_table
WHERE $__timeFilter(atimestamp) and hostname in($hostname)
ORDER BY atimestamp ASC
```

 `[[varname]]` 名为 `hostname` 的模板变量的示例：

```
SELECT
  UNIX_TIMESTAMP(atimestamp) as time,
  aint as value,
  avarchar as metric
FROM my_table
WHERE $__timeFilter(atimestamp) and hostname in([[hostname]])
ORDER BY atimestamp ASC
```

#### 关闭多值变量的引用
<a name="disabling-quoting-for-multi-value-variables"></a>

 Grafana 会自动为多值变量创建带引号、以逗号分隔的字符串。例如，如果选择 `server01` 和 `server02`，则其格式为：`'server01', 'server02'`。要关闭引用，请对变量使用 csv 格式选项。

 `${servers:csv}` 

 有关变量格式选项的更多信息，请参阅 [高级变量格式选项](templates-and-variables.md#advanced-variable-format-options)。

## Annotations
<a name="mysql-annotations"></a>

 您可以使用注释在图形上叠加丰富的事件信息。您可以通过控制面板菜单/注释视图添加注释查询。有关更多信息，请参阅 。

 以下示例代码演示了一个查询，该查询使用具有纪元值的 time 列。

```
SELECT
  epoch_time as time,
  metric1 as text,
  CONCAT(tag1, ',', tag2) as tags
FROM
  public.test_data
WHERE
  $__unixEpochFilter(epoch_time)
```

以下示例代码演示了一个区域查询，该查询使用具有纪元值的 time 和 timeend 列。

**注意**  
 仅在 Grafana v6.6\$1 中可用。

```
SELECT
  epoch_time as time,
  epoch_timeend as timeend,
  metric1 as text,
  CONCAT(tag1, ',', tag2) as tags
FROM
  public.test_data
WHERE
  $__unixEpochFilter(epoch_time)
```

 以下示例代码显示了使用原生 SQL date/time 数据类型的时间列的查询。

```
SELECT
  native_date_time as time,
  metric1 as text,
  CONCAT(tag1, ',', tag2) as tags
FROM
  public.test_data
WHERE
  $__timeFilter(native_date_time)
```


|  Name  |  说明  | 
| --- | --- | 
|  time  |  date/time 字段的名称。可以是具有本机 SQL date/time 数据类型或纪元值的列。 | 
|  timeend  |  结束 date/time 字段的可选名称。可以是具有本机 SQL date/time 数据类型或纪元值的列。 | 
|  text  |  事件描述字段。 | 
|  tags  |  用于事件标签的可选字段名称，显示为以逗号分隔的字符串。 | 

## 警报
<a name="mysql-alerting"></a>

 时间序列查询应在警报条件下工作。警报规则条件尚不支持表格式查询。

# Connect 连接到 OpenSearch 数据源
<a name="using-opensearch-in-AMG"></a>

**注意**  
在支持版本 9 或更高版本的工作区中，此数据来源可能需要您安装相应的插件。有关更多信息，请参阅 [使用插件扩展您的工作区](grafana-plugins.md)。

借助 Amazon Managed Grafana，您可以添加[OpenSearch](https://opensearch.org/docs/)开源（或传统的 Elasticsearch）作为数据源。您可以执行多种类型的简单或复杂 OpenSearch 查询，以可视化存储在中的日志或指标 OpenSearch。您还可以使用存储在中的日志事件为图表添加注释。 OpenSearch

## OpenSearch 作为数据源添加
<a name="opensearch-adding-the-data-source"></a>

**注意**  
为了能够添加 OpenSearch 数据源，你需要将你的 Grafana IAM 账户添加到 ALL\$1ACCESS 和 SECURITY\$1MANAGER 角色中。

1.  选择顶部标题中的 Grafana 图标，打开侧边菜单。

1.  在侧边菜单的**控制面板**链接下，您应该可以找到名为**数据来源**的链接。

1.  选择顶部标题中的 **\$1 添加数据来源**按钮。

1.  **OpenSearch**从 “**类型**” 下拉列表中选择。

**注意**  
 如果您在侧边菜单中看不到**数据来源**链接，则表示您当前的用户没有 `Admin` 角色。


|  Name  |  说明  | 
| --- | --- | 
|  Name  |  数据来源名称。您将在面板和查询中通过其名称查看数据来源。 | 
|  Default  |  默认数据来源意味着将为新面板预先选择该数据来源。 | 
|  Url  |  您的 OpenSearch 服务器的 HTTP 协议、IP 和端口。 | 
|  Access  |  服务器（默认）= 必须可从 Grafana 后端/服务器访问 URL。浏览器 = 必须可在浏览器中访问 URL。 | 

 访问模式控制对数据来源请求的处理方式。如果没有其他说明，服务器应该是首选方式。

### 服务器访问模式（默认）
<a name="opensearch-server-access-mode-default"></a>

 所有请求都是从浏览器向 Grafana 后端或服务器发出的，后端或服务器会将请求转发到数据来源，从而规避了可能的跨源资源共享（CORS）要求。如果选择此访问模式，则必须可以从 Grafana 后端或服务器访问 URL。

### 浏览器（直接）访问
<a name="opensearch-browser-direct-access"></a>

 Amazon Managed Grafana 不支持通过浏览器直接访问数据源。 OpenSearch

### 索引设置
<a name="opensearch-index-settings"></a>

 在这里，您可以为指定默认值`time field`并指定 OpenSearch 索引的名称。您可以对索引名称或通配符使用时间模式。

### OpenSearch/Elasticsearch
<a name="opensearch-version"></a>

在版本下拉菜单中指定您的版本 OpenSearch 或旧版 Elasticsearch 版本。版本很重要，因为每个版本的查询组成方式不同。目前，Grafana 支持 1.0.x OpenSearch 。支持的 Elasticsearch 版本有 `2.0+`、`5.0+`、`5.6+`、`6.0+` 和 `7.0+`。值 `5.6+` 表示版本 5.6 或更高版本，但低于 6.0。值 `6.0+` 表示版本 6.0 或更高版本，但低于 7.0。最后，`7.0+` 表示版本 7.0 或更高版本，但低于 8.0。

### 最小时间间隔
<a name="opensearch-min-time-interval"></a>

 按时间间隔自动分组的下限。建议设置以写入频率；例如，如果您的数据每分钟写入一次，则为 `1m`。此选项也可以在 overridden/configured 仪表板面板的数据源选项下方。此值的格式**必须**为数字，后跟有效的时间标识符；例如，`1m`（1 分钟）或 `30s`（30 秒）。支持以下时间标识符。


|  标识符  |  说明  | 
| --- | --- | 
|  y  |  Year  | 
|  M  |  Month  | 
|  w  |  周  | 
|  d  |  天  | 
|  h  |  小时  | 
|  m  |  分钟  | 
|  s  |  秒  | 
|  ms  |  毫秒  | 

### 日志
<a name="opensearch-logs-beta"></a>

在 [Explore](explore.md) 中可视化日志时，可选择从数据来源设置页面配置 `Message field name` 和 `Level field name` 这两个参数，以确定日志消息和日志级别将使用哪些字段。

 例如，如果您使用 Filebeat 的默认设置将日志传送到 OpenSearch，则以下配置应该起作用。
+  **消息字段名称：**message 
+  **级别字段名称：**fields.level 

### 数据链接
<a name="opensearch-data-links"></a>

 数据链接可根据指定字段创建链接，该链接可在 Explore 的日志视图中访问。

 每个数据链接配置由以下部分组成：
+ **字段**：数据链接使用的字段名称。
+ **URL/查询**：如果是外部链接，则输入完整的链接 URL。如果是内部链接，则此输入将用作目标数据来源的查询。在这两种情况下，您都可以使用 `${__value.raw }` 宏从字段中插值。
+ **内部链接**：选择此选项以确定是内部链接还是外部链接。如果是内部链接，您可以使用数据来源选择器选择目标数据来源。仅支持跟踪数据来源。

## 使用 OpenSearch 数据源
<a name="opensearch-use-datasource"></a>

### 指标查询编辑器
<a name="opensearch-metric-query-editor"></a>

 OpenSearch 查询编辑器允许您选择多个指标并按多个术语或筛选条件进行分组。使用右侧的加号和减号图标 add/remove 查看指标或按子句分组。一些指标和 group by 子句具有选项。选择选项文本展开行，以查看和编辑指标或分组依据选项。

### 序列命名和别名模式
<a name="opensearch-series-naming-and-alias-patterns"></a>

 您可以通过 `Alias` 输入字段控制时间序列的名称。


|  模式  |  说明  | 
| --- | --- | 
|  \$1\$1term fieldname\$1\$1  |  替换为术语 Group By 的值。 | 
|  \$1\$1metric\$1\$1  |  替换为指标名称（例如 Average、Min、Max）。 | 
|  \$1\$1field\$1\$1  |  替换为指标字段名称。 | 

### 管道指标
<a name="opensearch-pipeline-metrics"></a>

*一些指标聚合称为管道聚合；例如，*移动平均*线和衍生物。* OpenSearch 管道指标需要另一个指标作为依据。使用指标旁边的眼睛图标可隐藏指标，使其不显示在图表中。这对于查询中仅包含用于管道指标的指标很有用。

### 模板化
<a name="opensearch-templating"></a>

您可以在指标查询中使用变量来代替服务器、应用程序和传感器名称等硬编码的内容。变量显示为控制面板顶部的下拉选择框。您可以使用这些下拉框来更改控制面板中显示的数据。

 有关模板化和模板变量的更多信息，请参阅 [模板和变量](templates-and-variables.md)。

#### 查询变量
<a name="opensearch-query-variable"></a>

 OpenSearch *数据源支持两种类型的查询，您可以在 “查询变量” 的 “*查询*” 字段中使用。*该查询是使用自定义 JSON 字符串编写的。


|  Query  |  说明  | 
| --- | --- | 
|  \$1"find": "fields", "type": "keyword"\$1  |  返回索引类型为 keyword 的字段名称列表。 | 
|  \$1"find": "terms", "field": "@hostname", "size": 1000\$1  |  使用术语聚合返回字段的值列表。查询将使用当前控制面板的时间范围作为查询的时间范围。 | 
|  \$1"find": "terms", "field": "@hostname", "query": '<lucene query>'\$1  |  使用术语聚合和指定的 Lucene 查询筛选条件返回字段的值列表。查询将使用当前控制面板的时间范围作为查询的时间范围。 | 

术语查询的默认大小限制为 500。要设置自定义限制，请在查询中设置大小属性。您可以在查询中使用其他变量。以下代码示例显示了一个名为 `$host` 的变量的查询定义。

```
{"find": "terms", "field": "@hostname", "query": "@source:$source"}
```

在前面的示例中，我们在查询定义中使用了另一个名为 `$source` 的变量。只要通过下拉列表更改 `$source` 变量的当前值，就会启动 `$host` 变量更新。更新后，`$host` 变量仅包含按（在本例中为 `@source` 文档属性）筛选的主机名。

默认情况下，这些查询按术语顺序返回结果（然后可以按字母顺序或数字顺序对任何变量进行排序）。要生成按文档计数排序的术语列表（前 N 个值列表），请添加 `doc_count` 的 `orderBy` 属性。这将自动选择降序排序。可通过设置 `order: "asc"` 将 `asc` 与 doc\$1count（后 N 个值列表）结合使用，但不建议这样做，因为会增加文档计数的误差。要使术语按文档计数顺序排列，请将变量的**排序**下拉列表设置为**禁用**。或者，您也可以使用**按字母顺序**对其重新排序。

```
{"find": "terms", "field": "@hostname", "orderBy": "doc_count"}
```

#### 在查询中使用变量
<a name="opensearch-using-variables-in-queries"></a>

 共有两种语法：
+  `$<varname>` 示例：@hostname:\$1hostname 
+  `[[varname]]` 示例：@hostname:[[hostname]] 

 为什么是两种？ 第一种语法更容易读写，但不能在词中间使用变量。启用*多值*或*包含所有值*选项后，Grafana 会将标签从纯文本转换为兼容 Lucene 的条件。

 在前面的示例中，我们有一个 lucene 查询，该查询使用名为 `$hostname` 的变量根据 `@hostname` 属性筛选文档。同时使用了*术语*分组依据字段输入框中的变量。这让您可以使用变量快速更改数据的分组方式。

### Annotations
<a name="opensearch-annotations"></a>

您可以使用注释在图形上叠加丰富的事件信息。您可以通过控制面板菜单或注释视图添加注释查询。Grafana 可以查询 OpenSearch 任何索引中的注解事件。有关更多信息，请参阅 [Annotations](dashboard-annotations.md)。


|  名称  |  说明  | 
| --- | --- | 
|  Query  |  您可以将搜索查询留空，也可以指定 Lucene 查询。 | 
|  Time  |  时间字段的名称；必须是日期字段。 | 
|  Time End  |  时间结束字段的可选名称必须是日期字段。如果设置，注释将被标记为介于 time 和 time-end 之间的区域。 | 
|  Text  |  事件描述字段。 | 
|  Tags  |  用于事件标签的可选字段名称（可以是数组或 CSV 字符串）。 | 

### 查询 日志
<a name="opensearch-querying-logs-beta"></a>

 在 “浏览” 中可以查询和显示来自 OpenSearch 的日志数据。要显示您的日志，请选择 OpenSearch 数据源，然后根据需要输入 Lucene 查询。有关更多信息，请参阅 [Explore](explore.md)。

#### 日志查询
<a name="opensearch-log-queries"></a>

 返回结果后，日志面板会显示日志行列表和条形图，其中 x 轴显示时间，y 轴显示频率或计数。

#### 筛选日志消息
<a name="opensearch-filter-log-messages"></a>

 或者，在查询字段中输入 Lucene 查询以筛选日志消息。例如，如果使用默认的 Filebeat 设置，则可以使用 `fields.level:error` 仅显示错误日志消息。

# 连接到 OpenTSDB 数据来源
<a name="using-opentsdb-in-AMG"></a>

 Amazon Managed Grafana 提供对 OpenTSDB 的高级支持。

## 添加数据来源
<a name="opentsdb-adding-the-data-source"></a>

1.  选择顶部标题中的 Grafana 图标，打开侧边菜单。

1.  在侧边菜单的**控制面板**链接下，您应该可以找到名为**数据来源**的链接。

1.  选择顶部标题中的 **\$1 添加数据来源**按钮。

1.  从**类型**下拉列表中选择 **OpenTSDB**。

**注意**  
 如果您在侧边菜单中看不到**数据来源**链接，则表示您当前的用户没有 `Admin` 角色。


|  Name  |  说明  | 
| --- | --- | 
|  Name  |  数据来源名称。您将在面板和查询中通过其名称查看数据来源。 | 
|  Default  |  默认数据来源意味着将为新面板预先选择该数据来源。 | 
|  Url  |  OpenTSDB 服务器的 HTTP 协议、ip 和端口（默认端口通常为 4242）。 | 
|  Access  |  服务器（默认）= 必须可从 Grafana 后端/服务器访问 URL。 | 
|  Version  |  版本 = OpenTSDB 版本，<=2.1 或 2.2。 | 
|  Resolution  |  OpenTSDB 中的指标可以具有秒级或毫秒级分辨率的数据点。 | 

## 查询编辑器
<a name="opentsdb-query-editor"></a>

 选择标题，在编辑模式下打开图形。如果数据来源的版本为 <=2.1 或 =2.2，则查询编辑器会有所不同。在早期版本中，只能使用标签来查询 OpenTSDB。但在新版本中，可使用筛选条件和标签来查询 OpenTSDB。OpenTSDB 2.2 中还引入了填充策略。

**注意**  
 使用 OpenTSDB 2.2 数据来源来时，务必使用筛选条件或标签，因为二者是互斥的。如果同时使用，可能会产生奇怪的结果。

### 使用自动完成建议
<a name="auto-complete-suggestions"></a>

 一旦键入指标名称、标签名称和标签值，就会看到突出显示的自动完成建议。只有在启用 OpenTSDB 建议 API 的情况下，自动完成功能才会起作用。

## 模板化查询
<a name="opentsdb-templating-queries"></a>

 您可以在指标查询中使用变量来代替服务器、应用程序和传感器名称等硬编码。变量显示为控制面板顶部的下拉选择框。您可以使用这些下拉框来更改控制面板中显示的数据。

 有关模板化和模板变量的更多信息，请参阅 [模板和变量](templates-and-variables.md)。

### 查询变量
<a name="opentsdb-query-variable"></a>

 OpenTSDB 数据来源支持模板变量查询。这意味着您可以创建从 OpenTSDB 获取值的模板变量。例如，指标名称、标签名称或标签值。

 将 OpenTSDB 与 `query` 类型的模板变量一起使用时，可使用以下语法查找。


|  Query  |  说明  | 
| --- | --- | 
|  metrics(prefix)  |  返回带有特定前缀的指标名称（可以为空）。 | 
|  tag\$1names(cpu)  |  返回特定 cpu 指标的标签名称（即键）。 | 
|  tag\$1values(cpu, hostname)  |  返回指标 cpu 和标签键主机名的标签值。 | 
|  suggest\$1tagk(prefix)  |  返回带有特定前缀（可以为空）的所有指标的标签名称（即键）。 | 
|  suggest\$1tagv(prefix)  |  返回带有特定前缀（可以为空）的所有指标的标签值。 | 

 如果在 `Preview of values` 部分没有看到填充的模板变量，则必须在 OpenTSDB 服务器设置中启用 `tsd.core.meta.enable_realtime_ts`。此外，要在 OpenTSDB 中填充现有时间序列数据的元数据，您必须在 OpenTSDB 服务器上运行 `tsdb uid metasync`。

### 嵌套模板
<a name="nested-templating"></a>

 一个模板变量可用于筛选其他模板变量的标签值。第一个参数是指标名称，第二个参数是您需要查找标签值的标签键，然后是所有其他依赖模板变量。下面举例说明了如何使嵌套模板查询成功运行。


|  Query  |  说明  | 
| --- | --- | 
|  tag\$1values(cpu, hostname, env=\$1env)  |  返回 cpu 指标的标签值、选定环境标签值和标签键主机名。 | 
|  tag\$1values(cpu, hostname, env=\$1env, region=\$1region)  |  返回 cpu 指标的标签值、选定环境标签值、选定区域标签值和标签键主机名。 | 

 有关 OpenTSDB 指标查询的更多信息，请参阅 [OpenTSDB 文档](https://opentsdb.net/docs/build/html/index.html) 

# 连接到 PostgreSQL 数据来源
<a name="using-postgresql-in-AMG"></a>

 您可以使用 PostgreSQL 数据来源查询和可视化 Amazon Aurora PostgreSQL 数据库中的数据。

**重要**  
*Grafana 版本 8* 更改了 Postgres、MySQL 和 Microsoft SQL Server 数据来源数据帧的底层数据结构。因此，时间序列查询结果将以宽格式返回。有关更多信息，请参阅 Grafana 数据帧文档中的[宽格式](https://grafana.com/developers/plugin-tools/introduction/data-frames#wide-format)。要使可视化效果像版本 8 之前一样，您可能需要进行一些手动迁移。Github 上记录了一个解决方案，网址为 [Postgres/MySQL/MSSQL：v8.0 中与时间序列查询和数据列排序相关的重大更改](https://github.com/grafana/grafana/issues/35534)。  
在 *Grafana 版本 9* 中，PostgreSQL 数据来源设置连接到数据库的根证书的方式与以前的版本不同。如果将工作区从版本 8 更新到版本 9，则可能需要更改连接方式。请参阅[排查与更新后的工作区相关的问题](AMG-workspace-version-update-troubleshoot.md)了解更多信息。

## 添加数据来源
<a name="postgresql-adding-the-data-source"></a>

1.  选择顶部标题中的 Grafana 图标，打开侧边菜单。

1.  在**配置**图标下的侧边菜单中，您应该可以找到**数据来源**链接。

1.  选择顶部标题中的 **\$1 添加数据来源**按钮。

1.  从**类型**下拉列表中选择 **PostgreSQL**。

### 数据来源选项
<a name="postgresql-data-source-options"></a>


|  Name  |  说明  | 
| --- | --- | 
|  Name  |  数据来源名称。您将在面板和查询中通过其名称查看数据来源。 | 
|  Default  |  默认数据来源意味着将为新面板预先选择该数据来源。 | 
|  Host  |  您的 PostgreSQL 实例的 IP address/hostname 和可选端口。请勿包含数据库名称。否则，连接到 Postgres 的连接字符串不正确，会导致错误。 | 
|  Database  |  PostgreSQL 数据库的名称。 | 
|  User  |  数据库用户的登录名/用户名。 | 
|  Password  |  数据库用户密码  | 
|  SSL Mode  |  此选项决定是否或以什么优先级与服务器协商安全 SSL TCP/IP 连接。 | 
|  Max open  |  数据库的最大打开连接数，默认为 unlimited（Grafana v5.4\$1）。 | 
|  Max idle  |  空闲连接池中的最大连接数，默认为 2（Grafana v5.4\$1）。 | 
|  Max lifetime  |  连接可重复使用的最长时间（秒），默认为 14400/4 小时（Grafana v5.4\$1）。 | 
|  Version  |  此选项决定了查询生成器中哪些函数可用（仅在 Grafana 5.3\$1 中可用）。 | 
|  TimescaleDB  |  TimescaleDB 是一个作为 PostgreSQL 扩展而构建的时间序列数据库。如果启用，Grafana 将在 \$1\$1\$1timeGroup 宏中使用 time\$1bucket，并在查询生成器中显示 TimescaleDB 特定的聚合函数（仅在 Grafana 5.3\$1 中可用）。 | 

### 最小时间间隔
<a name="postgresql-min-time-interval"></a>

 `$_interval` `$_interval_ms` 变量的下限。建议设置以写入频率，例如，如果您的数据每分钟写入一次，则为 `1m`。此选项也可以在 overridden/configured 仪表板面板的数据源选项下方。此值的格式**必须**为数字，后跟有效的时间标识符；例如，`1m`（1 分钟）或 `30s`（30 秒）。支持以下时间标识符。


|  标识符  |  说明  | 
| --- | --- | 
|  y  |  Year  | 
|  M  |  Month  | 
|  w  |  周  | 
|  d  |  天  | 
|  h  |  小时  | 
|  m  |  分钟  | 
|  s  |  秒  | 
|  ms  |  毫秒  | 

### 数据库用户权限
<a name="postgresql-database-user-permissions-important"></a>

**重要**  
 添加数据来源时指定的数据库用户只能获得对要查询的指定数据库和表的 SELECT 权限。Grafana 不会验证查询是否安全。查询可以包含任何 SQL 语句。例如，可以运行 `DELETE FROM user;` 和 `DROP TABLE user;` 之类的语句。为了防止这种情况，强烈建议您创建具有受限权限的特定 PostgreSQL 用户。

以下示例代码显示了如何创建具有受限权限的特定 PostgreSQL 用户。

```
 CREATE USER grafanareader WITH PASSWORD 'password';
 GRANT USAGE ON SCHEMA schema TO grafanareader;
 GRANT SELECT ON schema.table TO grafanareader;
```

 确保用户没有从公有角色获得任何不需要的权限。

## 查询编辑器
<a name="postgresql-query-editor"></a>

 在图形或 Singlestat 面板编辑模式的“指标”选项卡中，您可以找到 PostgreSQL 查询编辑器。要进入编辑模式，请选择面板标题，然后选择编辑。

 在面板编辑模式下，查询编辑器有一个**生成式 SQL** 链接，并在查询运行后显示。选择之后，将会展开并显示运行的原始插值 SQL 字符串。

### 选择表、时间列和指标列（FROM）
<a name="postgresql-select-table-time-column-and-metric-column-from"></a>

 当您首次进入编辑模式或添加新查询时，Grafana 将尝试在查询生成器中预填充第一个包含时间戳列和数字列的表。

 在 FROM 字段中，Grafana 会建议使用数据库用户 `search_path` 中的表。要选择 `search_path` 中没有的表或视图，可以手动输入完全限定名称（schema.table），例如 `public.metrics`。

 “时间”列字段引用保存时间值的列的名称。为指标列字段选择值是可选项。如果选择一个值，则“指标”列字段将用作序列名称。

 指标列建议仅包含文本数据类型（char、varchar、text）的列。要将具有不同数据类型的列作为指标列，可以通过强制转换 `ip::text` 输入列名称。您也可以在指标列字段中输入任意 SQL 表达式，这些表达式的计算结果为文本数据类型，例如 `hostname || ' ' || container_name`。

### 列、窗口和聚合函数（SELECT）
<a name="columns-window-and-aggregation-functions-select"></a>

 在 `SELECT` 行中，您可以指定要使用的列和函数。在列字段中，您可以编写任意表达式来代替列名称，例如 `column1 * column2 / column3`。

 查询编辑器中的可用函数取决于您在配置数据来源时选择的 PostgreSQL 版本。如果使用聚合函数，则必须对结果集分组。如果添加聚合函数，编辑器将自动添加 `GROUP BY time`。

编辑器尝试简化和统一这部分查询。

选择加号按钮并从菜单中选择**列**，即可添加更多值列。多个值列将在图形面板中绘制为单独的序列。

### 筛选数据（WHERE）
<a name="postgresql-filter-data-where"></a>

 要添加筛选条件，请选择 `WHERE` 条件右侧的加号图标。您可以选择筛选条件，然后选择**移除**来移除筛选条件。当前所选时间范围的筛选条件会自动添加到新查询中。

### 分组依据
<a name="postgresql-group-by"></a>

 要按时间或任何其他列分组，请选择 GROUP BY 行末尾的加号图标。建议下拉列表将仅显示当前所选表的文本列，但可以手动输入任何列。您可以在项目上进行选择，然后选择**移除**来移除组。

 如果添加任何分组，则所有选定的列都必须应用聚合函数。添加分组时，查询生成器会自动向所有没有聚合函数的列添加聚合函数。

#### 填充缺失值
<a name="postgresql-gap-filling"></a>

 按时间分组时，Amazon Managed Grafana 可以填充缺失值。time 函数接受两个参数。第一个参数是要作为分组依据的时间窗口，第二个参数是您希望 Grafana 填充缺失项目的值。

### 文本编辑器模式（原始）
<a name="postgresql-text-editor-mode-raw"></a>

 选择汉堡包图标并选择**切换编辑器模式**或在查询下方选择**编辑 SQL**，即可切换到原始查询编辑器模式。

**注意**  
 如果使用原始查询编辑器，请确保您的查询至少具有 `ORDER BY time` 和返回时间范围的筛选条件。

## 宏
<a name="postgresql-macros"></a>

 可在查询中使用宏来简化语法，并允许使用动态部分。


|  宏示例  |  说明  | 
| --- | --- | 
|  \$1\$1\$1time(dateColumn)  |  将替换为一个表达式，以转换为 UNIX 时间戳，并将列重命名为 time\$1sec。例如，UNIX\$1TIMESTAMP(dateColumn) as time\$1sec。 | 
|  \$1\$1\$1timeEpoch(dateColumn)  |  将替换为一个表达式，以转换为 UNIX 时间戳，并将列重命名为 time\$1sec。例如，UNIX\$1TIMESTAMP(dateColumn) as time\$1sec。 | 
|  \$1\$1\$1timeFilter(dateColumn)  |  将替换为使用指定列名的时间范围筛选条件。例如，dateColumn BETWEEN FROM\$1UNIXTIME(1494410783) AND FROM\$1UNIXTIME(1494410983)。 | 
|  \$1\$1\$1timeFrom()  |  将替换为当前活动时间选择的开始时间。例如，FROM\$1UNIXTIME(1494410783)。 | 
|  \$1\$1\$1timeTo()  |  将替换为当前活动时间选择的结束时间。例如，FROM\$1UNIXTIME(1494410983)。 | 
|  \$1\$1\$1timeGroup(dateColumn,'5m')  |  将替换为 GROUP BY 子句中可用的表达式。例如，cast(cast(UNIX\$1TIMESTAMP(dateColumn)/(300) as signed)300 as signed),\$1  | 
|  \$1\$1\$1timeGroup(dateColumn,'5m', 0)  |  与前一行相同，但带有填充参数，序列中缺失的点将由 Grafana 添加，0 将用作值。 | 
|  \$1\$1\$1timeGroup(dateColumn,'5m', NULL)  |  与上面相同，但 NULL 将用作缺失点的值。 | 
|  \$1\$1\$1timeGroup(dateColumn,'5m', previous)  |  与上面相同，但如果未看到任何值，则该序列中的前一个值将用作填充值，但使用 NULL（仅适用于 Grafana 5.3\$1）。 | 
|  \$1\$1\$1timeGroupAlias(dateColumn,'5m')  |  与 \$1\$1\$1timeGroup 相同，但增加了列别名  | 
|  \$1\$1\$1unixEpochFilter(dateColumn) |  将使用指定列名替换为时间范围筛选条件，其中时间表示为 Unix 时间戳 例如，\$1dateColumn > 1494410783 AND dateColumn < 1494497183\$1  | 
| \$1\$1\$1unixEpochFrom()`  | \$1 将替换为当前活动时间选择的开始，作为 Unix 时间戳。例如，\$11494410783\$1 | 
| \$1\$1\$1unixEpochTo() | 将替换为当前活动时间选择的结束时间，作为 Unix 时间戳。例如，\$11494497183\$1 | 
| \$1\$1\$1unixEpochNanoFilter(dateColumn) | 将使用指定列名替换为时间范围筛选条件，其中时间表示为纳秒时间戳。例如，\$1dateColumn > 1494410783152415214 AND dateColumn < 1494497183142514872\$1 | 
| \$1\$1\$1unixEpochNanoFrom() | 将替换为当前活动时间选择的开始时间，作为纳秒时间戳。例如，\$11494410783152415214\$1 | 
| \$1\$1\$1unixEpochNanoTo() | 将替换为当前活动时间选择的结束时间，作为纳秒时间戳。例如，\$11494497183142514872\$1 | 
| \$1\$1\$1unixEpochGroup(dateColumn,"5m", [fillmode]) | 与 \$1\$1\$1timeGroup 相同，但时间存储为 Unix 时间戳。 | 

## 表查询
<a name="postgresql-table-queries"></a>

 如果查询选项设置为**格式化为表**，则基本上可以执行任何类型的 SQL 查询。表面板将自动显示查询返回的任何列和行的结果。

 您可以使用常规 `as` SQL 列选择语法来控制表面板列的名称。

## 时间序列查询
<a name="postgresql-time-series-queries"></a>

 如果将**格式化为**设置为 `Time series`，例如在图形面板中使用，查询必须有一个名为 `time` 的列，该列返回 SQL 日期时间或任何表示 Unix 纪元的数字数据类型。除 `time` 和 `metric` 之外的任何列都被视为值列。您可以返回一个名为 `metric` 的列，该列用作值列的指标名称。如果返回多个值列和一个名为的 `metric` 列，则此列将用作序列名称的前缀。

 时间序列查询的结果集必须按时间排序。

 以下示例代码显示了一个 `metric` 列。

```
SELECT
  $__timeGroup("time_date_time",'5m'),
  min("value_double"),
  'min' as metric
FROM test_data
WHERE $__timeFilter("time_date_time")
GROUP BY time
ORDER BY time
```

 以下代码示例显示了如何使用 \$1\$1\$1timeGroup 宏中的填充参数将空值转换为零。

```
SELECT
  $__timeGroup("createdAt",'5m',0),
  sum(value) as value,
  measurement
FROM test_data
WHERE
  $__timeFilter("createdAt")
GROUP BY time, measurement
ORDER BY time
```

 以下示例代码显示了多个列。

```
SELECT
  $__timeGroup("time_date_time",'5m'),
  min("value_double") as "min_value",
  max("value_double") as "max_value"
FROM test_data
WHERE $__timeFilter("time_date_time")
GROUP BY time
ORDER BY time
```

## 模板化
<a name="postgresql-templating"></a>

 您可以在指标查询中使用变量来代替服务器、应用程序和传感器名称等硬编码。变量显示为控制面板顶部的下拉选择框。您可以使用这些下拉框来更改控制面板中显示的数据。

 有关模板化和模板变量的更多信息，请参阅 [模板](templates-and-variables.md#templates)。

### 查询变量
<a name="postgresql-query-variable"></a>

 如果添加 `Query` 类型的模板变量，则可以编写一个 PostgreSQL 查询，该查询可以返回测量名称、键名或键值等显示为下拉选择框的内容。

 例如，如果在模板变量 *Query* 设置中指定了这样的查询，则会有一个变量，其中包含表中 `hostname` 列的所有值的。

```
SELECT hostname FROM host
```

 查询可以返回多列，Grafana 会自动根据这些列创建一个列表。例如，以下查询将返回一个列表，其中包含来自 `hostname` 和 `hostname2` 的值。

```
SELECT host.hostname, other_host.hostname2 FROM host JOIN other_host ON host.city = other_host.city
```

 要在查询中使用依赖于时间范围的宏（如 `$__timeFilter(column)`），必须将模板变量的刷新模式设置为*时间范围更改时*。

```
SELECT event_name FROM event_log WHERE $__timeFilter(time_column)
```

 另一种选择是可以创建 key/value 变量的查询。该查询应返回名为 `__text` 和 `__value` 的两列。`__text` 列值应该是唯一的（如果不是唯一的，则使用第一个值）。下拉列表中的选项包含文本和值，允许将友好名称作为文本，将 id 作为值。以 `hostname` 作为文本，以 `id` 作为值的示例查询：

```
SELECT hostname AS __text, id AS __value FROM host
```

 您还可以创建嵌套变量。使用名为 `region` 的变量，可以让主机变量仅显示当前所选区域的主机。以下代码示例显示了这样的查询（如果 `region` 是多值变量，则使用 `IN` 比较运算符而不是 `=` 与多个值匹配）。

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

#### 使用 `__searchFilter` 筛选查询变量结果
<a name="postgresql-using-__searchfilter-to-filter-results-in-query-variable"></a>

 在查询字段中使用 `__searchFilter`，根据用户在下拉选择框中输入的内容筛选查询结果。当用户未输入任何内容时，`__searchFilter` 的默认值为 `%`。

**注意**  
 请务必用引号将 `__searchFilter` 表达式括起来，因为 Grafana 不会为您执行此操作。

 以下示例显示了当用户在下拉选择框中键入时，如何使用 `__searchFilter` 作为查询字段的一部分来启用 `hostname` 搜索。

```
SELECT hostname FROM my_host  WHERE hostname LIKE '$__searchFilter'
```

### 在查询中使用变量
<a name="postgresql-using-variables-in-queries"></a>

 仅当模板变量是 `multi-value` 时，才会引用模板变量值。

 如果该变量是多值变量，则使用 `IN` 比较运算符而不是 `=` 与多个值匹配。

 共有两种语法：

 `$<varname>` 名为 `hostname` 的模板变量的示例：

```
SELECT
  atimestamp as time,
  aint as value
FROM table
WHERE $__timeFilter(atimestamp) and hostname in($hostname)
ORDER BY atimestamp ASC
```

 `[[varname]]` 名为 `hostname` 的模板变量的示例：

```
SELECT
  atimestamp as time,
  aint as value
FROM table
WHERE $__timeFilter(atimestamp) and hostname in([[hostname]])
ORDER BY atimestamp ASC
```

#### 关闭多值变量的引用
<a name="postgresql-disabling-quoting-for-multi-value-variables"></a>

 Amazon Managed Grafana 会自动为多值变量创建带引号、以逗号分隔的字符串。例如，如果选择 `server01` 和 `server02`，则其格式为：`'server01', 'server02'`。要关闭引用，请对变量使用 csv 格式选项。

 `${servers:csv}` 

 有关变量格式选项的更多信息，请参阅 [模板和变量](templates-and-variables.md)。

## Annotations
<a name="postgresql-annotations"></a>

 使用注释在图形上叠加丰富的事件信息。您可以通过控制面板菜单/注释视图添加注释查询。有关更多信息，请参阅 [Annotations](dashboard-annotations.md)。

 以下示例代码演示了一个查询，该查询使用具有纪元值的 time 列。

```
SELECT
  epoch_time as time,
  metric1 as text,
  concat_ws(', ', metric1::text, metric2::text) as tags
FROM
  public.test_data
WHERE
  $__unixEpochFilter(epoch_time)
```

 以下示例代码演示了一个区域查询，该查询使用具有纪元值的 time 和 timeend 列。

**注意**  
 仅在 Grafana v6.6\$1 中可用。

```
SELECT
  epoch_time as time,
  epoch_time_end as timeend,
  metric1 as text,
  concat_ws(', ', metric1::text, metric2::text) as tags
FROM
  public.test_data
WHERE
  $__unixEpochFilter(epoch_time)
```

 以下示例代码显示了使用原生 SQL date/time 数据类型的时间列的查询。

```
SELECT
  native_date_time as time,
  metric1 as text,
  concat_ws(', ', metric1::text, metric2::text) as tags
FROM
  public.test_data
WHERE
  $__timeFilter(native_date_time)
```


|  Name  |  说明  | 
| --- | --- | 
|  time  |  date/time 字段的名称。可以是具有本机 SQL date/time 数据类型或纪元值的列。 | 
|  timeend  |  结束 date/time 字段的可选名称。可能是具有原生 SQL date/time 数据类型或时代值的列（Grafana v6.6\$1）。 | 
|  text  |  事件描述字段。 | 
|  tags  |  用于事件标签的可选字段名称，显示为以逗号分隔的字符串。 | 

## 警报
<a name="postgresql-alerting"></a>

 时间序列查询应在警报条件下工作。警报规则条件尚不支持表格式查询。

# 连接到 Tempo 数据来源
<a name="tempo-data-source"></a>

 Tempo 是 Grafana Labs 提供的高容量、最低依赖关系跟踪存储、OSS 跟踪解决方案。

## 添加数据来源
<a name="tempo-adding-the-data-source"></a>

 要访问 Tempo 设置，请选择**配置**（齿轮）图标，然后选择**数据来源**，并选择 **Tempo**。


|  名称  |  描述  | 
| --- | --- | 
|  Name  |  用于在面板、查询和 Explore 中引用数据来源的名称。 | 
|  Default  |  默认数据来源意味着将为新面板预先选择该数据来源。 | 
|  URL  |  Tempo 实例的 URL；例如 http://tempo。 | 
|  Basic Auth  |  启用对 Tempo 数据来源的基本身份验证。 | 
|  User  |  用于基本身份验证的用户名。 | 
|  Password  |  用于基本身份验证的密码。 | 

## 日志跟踪
<a name="tempo-trace-to-logs"></a>

 这是日志跟踪功能的配置。当前的目标数据来源必须是 Loki。有关更多信息，请参阅 [跟踪集成](explore.md#tracing-integration)。
+ **数据来源**：目标数据来源。
+ **标签**：将在 Loki 查询中使用的标签。默认值为 `'cluster', 'hostname', 'namespace', pod'`
+ **跨度开始时间偏移**：Loki 查询的开始时间基于跨度开始时间的偏移。要延伸到过去，您需要使用负值。此处可以使用时间单位，例如 5s、1m、3h。默认值是 0。
+ **跨度结束时间偏移**：Loki 查询的结束时间基于跨度结束时间的偏移。此处可以使用时间单位，例如 5s、1m、3h。默认值是 0。

## 查询跟踪
<a name="tempo-query-traces"></a>

 您可以通过 Explore 查询和显示来自 Tempo 的跟踪。如果您在数据来源配置页面中设置了日志跟踪设置，则可以搜索跟踪。要查找要可视化的跟踪，请使用 Loki 查询编辑器。要获得搜索结果，必须配置指向此数据来源的派生字段。

要查询特定的跟踪，请选择 TraceID 查询类型，然后将该 ID 输入到“跟踪 ID”字段。

## 链接到日志的跟踪 ID
<a name="tempo-linking-trace-id-from-logs"></a>

 您可以通过配置内部链接，从 Loki 或 Elastic 中的日志链接到 Tempo 跟踪。有关更多信息，请参阅 [派生字段](using-loki-in-AMG.md#loki-derived-fields)。

# 配置用于测试 TestData 的数据源
<a name="testdata-data-source"></a>

Grafana 附带 TestData 了一个数据源，该数据源可以为任何面板创建模拟的时间序列数据。您可以使用它来构建自己的虚假和随机时间序列数据，并将其呈现在任何面板中，这有助于您验证控制面板功能并安全轻松地共享数据。

**配置数据来源**

**要访问的数据源配置 TestData**

1. 选择**配置**（齿轮）图标。

1. 选择**数据来源**。

1. 选择**TestData**。

除了所有数据来源通用的最基本选项外，数据来源不提供任何设置：


|  Name  |  说明  | 
| --- | --- | 
|  `Name`  |  面板、查询和 Explore 中的数据来源的名称。  | 
|  `Default`  |  是否将预先选择以下数据来源用于新面板。  | 

**创建模拟数据**

添加了 TestData 数据源，您的 Grafana 实例的用户可以在任何指标面板中将其用作数据源，并且它将根据 TestData 您选择的场景提供您可以使用的模拟数据。

**选择一个场景**

 TestData 数据源不提供查询编辑器，而是帮助您选择为面板生成模拟数据的**场景**。

您可以为每个场景分配一个**别名**，而且许多场景都有自己的选项，这些选项会在场景被选中时会出现。

**可用场景：**
+ **注释**
+ **条件错误**
+ **CSV 内容**
+ **CSV 文件**
+ **CSV 指标值**
+ **超出范围的数据点**
+ **指数热图存储桶数据**
+ **Grafana API**
+ **Grafana Live**
+ **线性热图存储桶数据**
+ **加载 Apache 箭头数据**
+ **日志**
+ **无数据点**
+ **节点图**
+ **可预测的 CSV 波次**
+ **可预测的脉冲**
+ **随机漫步**
+ **随机漫步（有错误）**
+ **随机漫步表**
+ **原始画面**
+ **模拟**
+ **慢速查询**
+ **流式处理客户端**
+ **表静态**
+ **美国生成的数据**

**导入预先配置的控制面板**

TestData 还提供了一个仪表板示例。

**要导入示例控制面板**

1. 导航到数据来源的配置页面。

1. 选择**控制面板**选项卡。

1. 在**简单流式处理示例**控制面板中选择**导入**。

**要自定义导入的控制面板：**

要自定义导入的控制面板，我们建议您将它保存在不同的名称下。如果不这样做，升级 Grafana 可能会使用新版本覆盖自定义控制面板。

**使用测试数据报告问题**

如果您向 GrafanaLabs 上报告了 GitHub 涉及使用或呈现时间序列数据的问题，我们强烈建议您使用此数据源来复制该问题。这使开发人员可以更轻松地复现并解决您的问题。

# 连接到 Zipkin 数据来源
<a name="zipkin-data-source"></a>

 Zipkin 是一个开源的分布式跟踪系统。添加 Zipkin 数据来源，以便在 Amazon Managed Grafana 的 Explore 中查询跟踪 

## 添加数据来源
<a name="zipkin-adding-the-data-source"></a>

 要访问 Zipkin 设置，请选择**配置**（齿轮）图标，然后选择**数据来源**，并选择 **Zipkin**。


|  Name  |  说明  | 
| --- | --- | 
|  Name  |  数据来源名称。您将在面板、查询和 Explore 中通过其名称查看数据来源。 | 
|  Default  |  默认数据来源意味着将为新面板预先选择该数据来源。 | 
|  URL  |  Zipkin 实例的 URL；例如，http://localhost:9411。 | 
|  Access  |  服务器（默认）= 必须可从 Grafana 后端/服务器访问 URL。 | 
|  Basic Auth  |  启用对 Zipkin 数据来源的基本身份验证。 | 
|  User  |  用于基本身份验证的用户名。 | 
|  Password  |  用于基本身份验证的密码。 | 

## 查询跟踪
<a name="zipkin-query-traces"></a>

 可通过 Explore 查询和显示来自 Zipkin 的跟踪。

 Zipkin 查询编辑器允许您直接按跟踪 ID 进行查询，也可以从跟踪选择器中选择跟踪。要按跟踪 ID 进行查询，请将该 ID 插入到文本输入中。

 使用轨迹选择器从在 Explore 中选择的时间范围内记录的所有跟踪中选取特定的跟踪。跟踪选择器有三个嵌套级别：1. 选择您感兴趣的服务。1. 特定操作是所选服务的一部分。发生所选操作的特定跟踪，由根操作名称和跟踪持续时间表示。

## 跟踪 UI 中的数据映射
<a name="zipkin-data-mapping-in-the-trace-ui"></a>

 Zipkin 注释在跟踪视图中显示为日志，注释值显示在注释键下。

## 链接到日志的跟踪 ID
<a name="zipkin-linking-trace-id-from-logs"></a>

 通过配置带有内部链接的派生字段，您可以从 Loki 中的日志链接到 Zipkin 跟踪。有关更多信息，请参阅 [派生字段](using-loki-in-AMG.md#loki-derived-fields)。

# 连接到企业数据来源
<a name="AMG-data-sources-enterprise"></a>

已升级到 Amazon Managed Grafana Enterprise 插件的工作区支持以下数据来源。有关更多信息，请参阅 [管理对 Enterprise 插件的访问](upgrade-to-enterprise-plugins.md)。

企业插件会定期更新。这既包括更新现有插件，有时也包括提供新的数据来源。以下文档可能不包括所有可用的数据来源。有关 Amazon Managed Grafana Enterprise 插件支持的当前企业插件列表，请参阅 *Grafana 文档*中的 [Grafana Enterprise 插件](https://grafana.com/docs/plugins/)。

对于支持版本 9 及更新版本的工作区，默认情况下不再安装企业数据来源。您必须安装正确的数据来源插件。您可以为所有企业数据来源安装插件，包括此处未列出的任何数据来源。您也可以选择更新已安装插件的版本。有关管理插件的更多信息，请参阅 [使用插件扩展您的工作区](grafana-plugins.md)。

**Topics**
+ [AppDynamics](appdynamics-AMG-datasource.md)
+ [Databricks](AMG-databricks-datasource.md)
+ [Datadog](AMG-datadog-datasource-plugin.md)
+ [Dynatrace](dynatrace-AMG-datasource.md)
+ [GitLab](gitlab-AMG-datasource.md)
+ [Honeycomb](honeycomb-AMG-datasource.md)
+ [Jira](jira-AMG-datasource.md)
+ [MongoDB](AMG-mongodb-datasource.md)
+ [New Relic](new-relic-data-source.md)
+ [Oracle Database](oracle-datasource-AMG.md)
+ [Salesforce](salesforce-AMG-datasource.md)
+ [SAP HANA](saphana-AMG-datasource.md)
+ [ServiceNow](grafana-enterprise-servicenow-datasource.md)
+ [Snowflake](snowflake-datasource-for-AMG.md)
+ [Splunk](splunk-datasource.md)
+ [Splunk 基础设施监控](AMG-datasource-splunkinfra.md)
+ [Wavefront](wavefront-datasource-for-AMG.md)

# Connect 连接到 AppDynamics 数据源
<a name="appdynamics-AMG-datasource"></a>

 Amazon Managed Grafana AppDynamics 的数据源使您能够使用其指标 API 查询指标 AppDynamics ，并在 Grafana 控制面板中将其可视化。

**注意**  
此数据来源仅适用于 Grafana Enterprise。有关更多信息，请参阅 [管理对 Enterprise 插件的访问](upgrade-to-enterprise-plugins.md)。  
此外，在支持版本 9 或更高版本的工作区中，此数据来源可能需要您安装相应的插件。有关更多信息，请参阅 [使用插件扩展您的工作区](grafana-plugins.md)。

## 数据来源配置说明
<a name="note-on-the-datasource-config"></a>

 使用服务器（代理）进行访问（以避免 CORS 和用户查看您的密码）和基本身份验证。请记住，用户名应为“user@account”（即 your.name@customer1 或 my\$1user@saas\$1account\$1name）。

 使用以下步骤配置密码：

1.  导航到 [https://accounts.appdynamics.com/订阅](https://accounts.appdynamics.com/subscriptions) 

1.  在您的订阅行中，选择**名称**列中的链接。

1.  选择页面顶部的选项卡，导航至**许可证详细信息**。

1.  “访问密钥”字段有一个**显示**按钮。选择**显示**按钮以显示访问密钥。

1.  将访问密钥复制到 Grafana 配置页面“基本身份验证详细信息”的“密码”字段中。

 使用以下步骤为 Amazon Managed Grafana 设置用户和角色。

1.  在中 AppDynamics，导航到 “设置”、“管理”。

1.  选择**角色**选项卡，然后选择“\$1”按钮创建新角色，例如，`grafana_readonly.`。

1.  在“创建角色”部分的**账户**选项卡中，添加 `View Business Flow` 权限。

1.  在**应用程序**选项卡中，选中**查看**复选框，以允许 Grafana 查看应用程序数据。

1.  在**数据库**选项卡中，选中**查看**复选框，以允许 Grafana 查看数据库数据。

1.  在**应用程序**选项卡中，选中**可以查看所有应用程序的数据**复选框，以允许 Grafana 查看应用程序分析数据。

1.  在“管理”页面的**用户**选项卡中，创建新用户，例如，`grafana`。将新用户（或该用户所属的组）分配给您刚刚创建的角色，例如，`grafana_readonly`。

## 模板化
<a name="appdynamics-templating"></a>

 目前支持的模板查询有：

1.  `Applications`（所有应用程序） 

1.  `AppName.BusinessTransactions`（全部 BTs 用于应用程序名称） 

1.  `AppName.Tiers`（应用程序名称的所有层级） 

1.  `AppName.Nodes`（应用程序名称的所有节点） 

1.  `AppName.TierName.BusinessTransactions`（全部 BTs 适用于特定等级） 

1.  `AppName.TierName.Nodes`（特定层级的所有节点） 

1.  `AppName.Path.<Any Metric Path>`（可以指定任何指标路径） 

## 图例键
<a name="legend-keys"></a>

 图例键的默认值可能很长，但这种格式可以自定义。

 通过选择 `App on legend` 选项，可以在图例键前加上应用程序名称。例如：`MyApp - Overall Application Performance|Average Response Time (ms)`。

 如果查询的是单一统计数据或其他看不到图例键的面板，请选择“显示元数据”选项，以查看查询的图例键（也称为别名）是什么。

 “图例”下拉列表有三个选项：`Full Path`、`Segments` 和 `Custom`。

### 图例选项 - 完整路径
<a name="legend-option---full-path"></a>

 图例键是完整的指标路径，例如，`Overall Application Performance|Average Response Time (ms)`。

### 图例选项 - 分段
<a name="legend-option---segments"></a>

 指标名称由分段组成。您可以选择要显示哪些分段。

 例如，对于以下指标名称：

 `Errors|mywebsite|Error|Errors per Minute` 

 在“分段”字段中输入 `2,4` 将返回 `mywebsite|Errors per minute`。

 索引从 1 开始，因此 `1` 会返回 `Errors`。

### 图例选项 - 自定义
<a name="legend-option---custom"></a>

 通过将文本与以下别名模式相结合，创建自定义图例，以便能够混合指标元数据。
+  `{{app}}` 返回应用程序名称 
+  `{{1}}` 返回指标路径中的分段。

   例如，指标：`Overall Application Performance|Average Response Time (ms)` 有两个分段。`{{1}}` 返回第一个分段，`{{2}}` 返回第二个分段。

 图例键模式和生成的图例键示例：
+  `custom legend key` => `custom legend key` 
+  `App: {{app}} MetricPart2: {{2}}` => `App: myApp MetricPart2: Average Response Time (ms)` 

# 连接到 Databricks 数据来源
<a name="AMG-databricks-datasource"></a>

Databricks 数据来源使您能够在 Amazon Managed Grafana 中查询和可视化 Databricks 数据。它包括一个 SQL 编辑器，用于对查询进行格式化和颜色编码。

**注意**  
此数据来源仅适用于 Grafana Enterprise。有关更多信息，请参阅 [管理对 Enterprise 插件的访问](upgrade-to-enterprise-plugins.md)。  
此外，在支持版本 9 或更高版本的工作区中，此数据来源可能需要您安装相应的插件。有关更多信息，请参阅 [使用插件扩展您的工作区](grafana-plugins.md)。

## 添加 Databricks 数据来源
<a name="AMG-databricks-add-datasource"></a>

请按照以下步骤在 Grafana 控制台中添加 Databricks 数据来源。

**要添加 Databricks 数据来源**

1. 选择顶部标题中的 Grafana 图标，打开侧边菜单。

1. 在侧边菜单的**控制面板**链接下，选择**数据来源**。
**注意**  
如果没有看到**数据来源**链接，说明您没有 Grafana 的 `Admin` 角色。

1. 选择顶部标题中的 **\$1 添加数据来源**按钮。

1. 从**类型**下拉列表中选择 **Databricks**。
**注意**  
如果您没有看到 Databricks 选项，但又需要它，则必须升级到 Grafana Enterprise。

1. 选择用于连接和编辑数据的选项。

## 使用 Databricks 数据来源时的注意事项
<a name="AMG-databricks-notes"></a>

**时间序列**

在查询中添加 `datetime` 字段时，可以选择时间序列可视化。该字段将用作序列的时间戳。如果字段不包含特定时区，Grafana 将假定时间为 UTC 时间。

**多行时间序列**

要创建多行时间序列可视化，查询必须按以下顺序包含至少三个字段。

1. 别名为 `time` 的 `datetime` 字段。

1. `GROUP BY` 的值。

1. 一个或多个要可视化的指标值。

以下是一个将返回多行时间序列选项的查询示例。

```
SELECT log_time AS time, machine_group, avg(disk_free) AS avg_disk_free
FROM mgbench.logs1
GROUP BY machine_group, log_time
ORDER BY log_time
```

# 连接到 Datadog 数据来源
<a name="AMG-datadog-datasource-plugin"></a>

 Datadog 数据来源使您能够在 Amazon Managed Grafana 中可视化来自 Datadog 监控服务的指标。

**注意**  
此数据来源仅适用于 Grafana Enterprise。有关更多信息，请参阅 [管理对 Enterprise 插件的访问](upgrade-to-enterprise-plugins.md)。  
此外，在支持版本 9 或更高版本的工作区中，此数据来源可能需要您安装相应的插件。有关更多信息，请参阅 [使用插件扩展您的工作区](grafana-plugins.md)。

## 用法
<a name="datadog-usage"></a>

### 缓存
<a name="datadog-caching"></a>

 对于进行大量查询的大型控制面板，Datadog API 可能会限制其速率（达到 Datadog API 允许的每小时最大 API 调用次数）。缓存功能可将唯一查询缓存 60 秒。该时间间隔可在配置页面上更改为更长或更短。

### 查询编辑器
<a name="datadog-query-editor"></a>

 很简单易用，只需选择聚合和指标。如果要筛选结果，请选择一个或多个标签。

 Datadog 数据来源支持 Datadog 查询编辑器支持的所有高级函数。从下拉列表中选择，然后通过选择函数名称进行排列。

 **“按别名”字段用法选项**：
+  在“按别名”字段中输入别名。
+  使用作用域变量：
  +  `$__metric` = 替换为指标名称 
  +  `$__display_name` = 替换为指标名称 
  +  `$__expression` = 替换为完整的指标表达式 
  +  `$__aggr` = 替换为指标聚合函数（例如，avg、max、min、sum） 
  +  `$__scope` = 替换为指标范围（例如，region、site、env、host） 
+  使用正则表达式：
  +  在`/you regexp here/flags`格式化的 “别名 RegExp” 字段中输入您的正则表达式。
  +  如果 “Alias by” 字段为空，则将使用连接 RegExp 结果。指标表达式为 = 的示例`avg:system.load.5{*}`：“Alias by” 字段输入：“" "Alias RegExp" 字段输入：`avg:(.+)\.(\d)`结果：`system.load, 5`
  +  在“按别名”字段中使用 `$<group_number>` 变量。指标表达式为 = 的示例`avg:system.load.5{*}`：“别名依据” 字段输入：`$1: $2 seconds`“别名 RegExp” 字段输入：`avg:(.+)\.(\d)`结果：`system.load: 5 seconds`
  +  使用 `$0` 获取整个表达式。指标表达式为 = 的示例`datadog.dogstatsd.packet.count{*}`：“别名依据” 字段输入：`Expression: $0`“别名 RegExp” 字段输入：`DOGstatsd\.(.*)\.(.*){\*}/i`结果：`Expression: datadog.dogstatsd.packet.count{*}`

   注意：使用不存在的组号码会出错。

#### 指标算术运算
<a name="datadog-metric-arithmetic"></a>

 要使用指标算术运算，请将*查询类型*设置为*算术*。使用 `#` 符号链接到所需的指标。例如，`#A * 2` 会使查询 `A` 的结果翻倍。两个指标之间的算术运算方式相同：添加要用于计算的结果的查询，然后在第三个查询中链接到这些指标，例如 `#A / #B`。

### Annotations
<a name="datadog-annotations"></a>

 注释是叠加在图表上的事件，事件的例子包括部署或中断。使用此数据来源，您可以从 Datadog 获取事件并将其叠加到 Amazon Managed Grafana 中的图表上。可以按来源、标签或优先级筛选注释事件。

### 模板化
<a name="datadog-templating"></a>

 有几个选项可以获取模板变量的值，即指标和标签。要获取可用指标列表，请在*查询*字段中指定 `*`。

 要返回所有标签，请使用值：`tag` 或 `scope`。

 要返回指定标签组的标签，请使用以下默认类别值之一：
+  `host` 
+  `device` 
+  `env` 
+  `region` 
+  `site` 
+  `status` 
+  `version` 

 对于自定义标签组，只需输入标签组名称即可。例如，如果您的自定义标签组名称是 `subscription_name`，请在*查询*字段中输入该名称。

 使用*正则表达式*字段筛选结果。使用标签时，支持多值变量：多个选定的标签值将转换为逗号分隔的标签列表。

#### 临时筛选条件
<a name="datadog-ad-hoc-filters"></a>

 Grafana 中有一种特殊类型的新模板变量，称为*临时筛选条件。*此变量将应用于控制面板中的*所有* Datadog 查询。这样就可以像快速筛选器一样使用它。Datadog 的临时变量会从标签（例如 `region:east, region:west`）中获取所有键值对，并将它们用作查询标签。要创建此变量，请选择*临时筛选条件*类型，并选择您的 Datadog 数据来源。您可以为该变量设置任何名称。

# 连接到 Dynatrace 数据来源
<a name="dynatrace-AMG-datasource"></a>

[https://www.dynatrace.com/](https://www.dynatrace.com)的数据源。要使用此数据来源，您必须拥有 Dynatrace 账户。

**注意**  
此数据来源仅适用于 Grafana Enterprise。有关更多信息，请参阅 [管理对 Enterprise 插件的访问](upgrade-to-enterprise-plugins.md)。  
此外，在支持版本 9 或更高版本的工作区中，此数据来源可能需要您安装相应的插件。有关更多信息，请参阅 [使用插件扩展您的工作区](grafana-plugins.md)。

**已知限制条件**

模板变量不能多选。仅支持选择单个选项。

仅支持 v2 指标 APIs 。

## 功能
<a name="features"></a>

### 核心功能
<a name="core-features"></a>
+  模板变量 
  +  指标名称 
  +  仅限单选（**不支持多选**） 
  +  临时筛选条件 
+  Annotations 
  +  当前不支持 
+  别名 
  +  指标名称 
  +  聚合 
  +  显示名称 
  +  主机 
  +  说明 
+  警报 
  +  全面的警报支持 

### Dynatrace 的特定功能
<a name="dynatrace-specific-features"></a>

 使用 Dynatrace 指标 v2 API 支持内置指标和自定义指标。有关详细信息，请参阅 Dynatrace 文档：[指标 API v2](https://www.dynatrace.com/support/help/dynatrace-api/environment-api/metric-v2/) 和[指标摄取](https://www.dynatrace.com/support/help/how-to-use-dynatrace/metrics/metric-ingestion/)。

根据指标，API 可能支持其他转换选项。

## Dynatrace 权限
<a name="dynatrace-permissions"></a>

 在 Dynatrace 中您需要以下权限：使用 API V2 读取指标（metrics.read）的权限、使用 API V2 读取实体（entities.read）的权限 

## 从 Dynatrace 获取 API 密钥
<a name="dynatrace-apikey"></a>

要设置 API 令牌，请参阅 [Dynatrace API – 令牌和身份验证](https://www.dynatrace.com/support/help/dynatrace-api/basics/dynatrace-api-authentication/?api-token%3C-%3Epersonal-access-token=api-token) 

为您的 API 令牌设置 `metrics.read` 和 `entities.read` 权限。

### 配置
<a name="configuration"></a>

1.  在逻辑 Grafana 服务器 UI 中选择**设置/数据来源**，然后选择**添加数据来源**。

1.  在**添加数据来源**页面上，筛选 **Dynatrace**,，然后选择 Dynatrace 插件。

1. 配置 Dynatrace 数据来源需要使用以下参数：
   +  `Name`：要应用于 Dynatrace 数据来源的名称（默认值：Dynatrace）。
   +  `Dynatrace API Type`：您要连接的 Dynatrace 实例的类型。这是 `SaaS` 或 `Managed Cluster`。
   +  `Dynatrace API Token`：这是您在上一步中生成的 API 令牌。

   接下来的两个设置取决于您是 Dynatrace SaaS 还是托管的 Dynatrace
   + 在 `yfc55578.live.dynatrace.com` 的 SaaS 示例中，您的**环境 ID** 应为 `yfc55578`。
   + 在 `yd8888.managed-sprint.dynalabs.io/e/abc99984-3af2-55tt-72kl-0672983gc45` 的托管示例中，您的**环境 ID** 应为 `abc99984-3af2-55tt-72kl-0672983gc45`，您的**域**应为 `yd8888.managed-sprint.dynalabs.io`

1.  设置完所有配置值后，选择**保存并测试**以验证配置并保存所做的更改。

### 查询数据来源
<a name="dynatrace-usage"></a>

使用查询编辑器查询 Dynatrace 指标和问题。查询类型可以是 `metric` 或 `problem`。

**指标查询类型**
+ `Metric`：选择要查看的指标。要再次从 Dynatrace 获取指标列表，请选择**刷新**按钮。
+ `Aggregations`：选择要用于特定指标的聚合。选择聚合值以更改聚合类型，或选择 **\$1** 添加其他聚合。
+ `Transformations`：不能在查询编辑器中选择转换。然后，在选定的转换中输入多个参数。目前，仅支持合并转换。有关转换的详细信息，请参阅[合并转换](https://www.dynatrace.com/support/help/dynatrace-api/environment-api/metric-v2/metric-selector/#merge-transformation)。
+ `Filters`：Dynatrace 数据来源动态地查询每个指标的相应筛选器。要添加筛选器，请选择 Dynatrace 查询编辑器中**筛选器**标签旁边的 **\$1** 符号，选择要筛选的字段，选择要使用的运算符，然后选择要筛选的值。Dynatrace 数据来源允许您创建筛选器组，您可以将这些筛选器联接在一起以创建复杂的逻辑比较。对于大多数用例而言，筛选器组并不是必需的。使用标签创建筛选器时，无论选择哪个连接词，Dynatrace 都将始终使用 AND。Dynatrace 不支持带标签的 OR 筛选器。
+ `Alias`：在使用 Dynatrace 数据来源时，您会遇到两种不同类型的别名。第一个是静态别名。您生成的每个查询都可以使用这种类型的别名，并且别名的名称以小写字母开头。第二个是动态别名，它会根据您在查询中使用的指标而变化，别名的名称以大写字母开头。Dynatrace 插件支持几个不同的别名：`Metric Names`、`Aggregation`、`Display Name`、`Host` 和 `Description`。


|  Name  |  值  | 
| --- | --- | 
|  \$1name  |  内置:apps.other。 keyUserActions。 reportedErrorCount.os  | 
|  \$1aggregation  |  auto,value  | 
|  \$1displayName  | 报告的错误数（按关键用户操作、操作系统划分）[移动、自定义] | 

**问题查询类型**
+ `Problem Query Type`：选择问题查询类型。目前，仅支持源问题查询类型。有关源问题查询类型的信息，请参阅[合并转换](https://www.dynatrace.com/support/help/dynatrace-api/environment-api/metric-v2/metric-selector/#merge-transformation)
+ `Status Filter`：按状态筛选结果问题。
+ `Impact Filter`：按影响级别筛选结果问题。
+ `Severity Filter`：按严重性级别筛选结果问题。
+ `Expand Details`：如果已设置，则在响应中包含相关事件。

#### 使用模板变量
<a name="using-template-variables"></a>

 要添加新的 Dynatrace 查询变量，请参阅[添加新的模板变量](variables-types.md#add-a-query-variable)。使用您的 Dynatrace 数据来源作为以下可用查询的数据来源：
+ `Query type`：选择查询类型。查询类型将某些数据与某个键或描述符相关联。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/dynatrace-AMG-datasource.html)
+ `Regex`：（可选）使用正则表达式筛选出查询中的任何返回值。

**注意**  
`Multi-value` 和 `Include All option` 目前不受 Dynatrace 数据来源的支持。

创建变量后，您可以在**指标**下拉菜单中找到该变量。

##### 导入 Dynatrace 的控制面板
<a name="dynatrace-import"></a>

要导入控制面板，请参阅 [导入控制面板](dashboard-export-and-import.md#importing-a-dashboard)。导入的控制面板可在**配置** > **数据来源** > 选择您的 Dynatrace 数据来源 > 选择**控制面板**选项卡中找到，以查看可用的预制控制面板。

# Connect 连接到 GitLab 数据源
<a name="gitlab-AMG-datasource"></a>

 GitLab 数据源允许您跟踪详细的 GitLab 统计数据，例如排名靠前的贡献者、每天的提交量或每天的部署量。您也可以使用模板变量（例如项目）为控制面板设置筛选器。您可以将来自 GitLab API 的数据与其他来源的数据合并。

**注意**  
此数据来源仅适用于 Grafana Enterprise。有关更多信息，请参阅 [管理对 Enterprise 插件的访问](upgrade-to-enterprise-plugins.md)。  
此外，在支持版本 9 或更高版本的工作区中，此数据来源可能需要您安装相应的插件。有关更多信息，请参阅 [使用插件扩展您的工作区](grafana-plugins.md)。

## 已知限制条件
<a name="gitlab-known-limitations"></a>

此插件尚不支持警报，因为警报查询中不支持转换，转换是从 GitLab API 原始数据中获取有意义的聚合指标的唯一方法。

## 添加数据来源
<a name="gitlab-adding-the-data-source"></a>

1.  在 Amazon Managed Grafana 工作区中打开 Grafana 控制台，并确保您已登录。

1.  在**配置**（齿轮图标）下的侧边菜单中，选择**数据来源**。

1.  选择**添加数据来源**。
**注意**  
 如果您在侧边菜单中看不到**数据来源**链接，则表示您当前的用户没有 `Admin` 角色。

1.  **GitLab**从数据源列表中选择。

1. 输入以下信息：
   + 在**名称**中，输入该 GitLab数据源的名称。
   + 对于 **URL**，请输入您的 GitLab 实例的根 URL，例如**https://gitlab.com/api/v4**。
   + 对于**访问令牌**，请输入您的 GitLab个人访问令牌。

## 查询 GitLab 数据源
<a name="gitlab-query"></a>

在 GitLab 查询编辑器中，您可以选择不同的资源类型，例如提交、议题或发布。

**筛选和查看项目**

1.  从下拉菜单中，选择**项目**。

1.  （可选）按您拥有的项目进行筛选。

1.  使用下拉列表并选择**是**或**否**来筛选结果。
**注意**  
 获取所有**已拥有 = 否**的项目可能需要很长时间。

**筛选并查看提交**

1.  从下拉菜单中选择**提交**。

1.  使用输入字段添加项目 ID。

1.  （可选）要按此筛选， branch/tag 请使用输入字段添加 branch/tag 参考文献。

**筛选和查看问题**

1.  从下拉菜单中，选择**问题**。

1.  使用输入字段添加项目 ID。

1.  （可选）要按标题/描述进行筛选，请使用输入字段根据**标题**和**描述**搜索问题。

**查看版本**

1.  从下拉菜单中，选择**部署**。

1.  使用输入字段添加项目 ID。

1.  （可选）要按环境进行筛选，请使用输入字段。**状态**属性可以是以下任何值：`created`、`running`、`success`、`failed` 或 `canceled`。

**查看标签**

1.  从下拉菜单中，选择**标签**。

1.  使用输入字段添加项目 ID。

## 模板和变量
<a name="gitlab-templates"></a>

要添加新的 GitLab 查询变量，请参阅[添加查询变量](variables-types.md#add-a-query-variable)。使用您的 GitLab 数据源作为数据源。选择资源类型：**版本**、**项目**或**标签**。

要获取项目、标签等对象的动态列表供您选择，请创建一个 Query 类型变量。查询类型变量使用 GitLab 查询编辑器来查询和返回项目、标签等。以下示例创建了一个 Project 变量来参数化您的查询

**创建 Project 变量来参数化查询**

1.  添加名为 **project** 且类型为 **Query** 的变量。

1.  选择您的 GitLab 数据源并刷新 “**仪表板加载**时”。

1.  选择 **Project** 资源类型，**已拥有**的值为**是**、**显示字段**的值为**名称**，**值字段**的值为 **ID**。

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

1. 向控制面板添加一个新面板并使用 **\$1project** 作为项目 ID。

   现在，当从下拉列表中进行选择时，您会得到属于该项目的结果。

## 使用 Grafana 中的转换来回答常见问题
<a name="gitlab-transformations"></a>

现在，您可以执行基本 GitLab 查询来查找提交、问题等，您可以使用 Transformations 对数据集进行可视化、聚合、分组和联接，还可以使用许多其他类型的转换将简单的结果转换为复杂问题的答案。以下是一些常见问题以及如何使用转换来回答这些问题。

**我的项目commits/issues/deployments每天有多少个？**

1.  添加查询。选择**提交**作为资源类型，然后添加项目 ID。

1.  添加新的**分组依据**转换：对于**分组依据**，选择 **created\$1at\$1date**，然后计算 **(Count)=id** 

1. 选择**图形**可视化。

**我的项目中问题关闭的平均时间是多少？**

1.  添加查询。选择**问题**作为资源类型，然后添加项目 ID。

1.  添加新的**从计算添加字段**转换：对于**模式**，选择**二元操作**，对于**操作**，选择 **closed\$1at = created\$1ate**，对于**别名**，选择 **resolution\$1time**。

1.  添加新的**从计算添加字段**转换：对于**模式**，选择**二元操作**，对于**操作**，选择 **resolution\$1time / 86400000**，对于**别名**，选择 **resolution\$1time**。

   对于**替换所有字段**，选择 **True**。

1. 选择**统计**可视化。
   + 显示 = 计算
   + 计算 = 平均值
   + 字段 = **resolution\$1time**

# 连接到 Honeycomb 数据来源
<a name="honeycomb-AMG-datasource"></a>

Honeycomb 数据来源允许您查询和可视化 Honeycomb 指标，并从 Amazon Managed Grafana 中链接到 Honeycomb 追踪。

**注意**  
此数据来源仅适用于 Grafana Enterprise。有关更多信息，请参阅 [管理对 Enterprise 插件的访问](upgrade-to-enterprise-plugins.md)。  
此外，在支持版本 9 或更高版本的工作区中，此数据来源可能需要您安装相应的插件。有关更多信息，请参阅 [使用插件扩展您的工作区](grafana-plugins.md)。

## 已知限制条件
<a name="honeycomb-known-limitations"></a>
+  此数据来源不支持临时查询。
+  由于 API 的限制，变量编辑器只能返回选定列的前 1000 个唯一值。
+  由于 API 限制，数据来源只能查询最近 7 天的数据。

## 添加数据来源
<a name="honeycomb-adding-the-data-source"></a>

1.  在 Amazon Managed Grafana 工作区中打开 Grafana 控制台，并确保您已登录。

1.  在**配置**（齿轮图标）下的侧边菜单中，选择**数据来源**。

1.  选择**添加数据来源**。

1.  从数据来源列表中选择 **Honeycomb**。

**注意**  
 如果您在侧边菜单中看不到**数据来源**链接，则表示您当前的用户没有 `Admin` 角色。

**Honeycomb 设置**


|  Name  |  说明  | 
| --- | --- | 
|  Name  |  数据来源名称。您将在面板、查询和 Explore 中通过其名称查看数据来源。 | 
|  Honeycomb API key  |  您从 Honeycomb 获得的 API 密钥。 | 
|  URL  |  Honeycomb API 的 URL。例如 https://api.honeycomb.io。 | 
|  Team  |  与 API 密钥关联的 Honeycomb 团队。 | 

## 查询 Honeycomb 数据来源
<a name="honeycomb-query"></a>

要查询指标，请在编辑器字段中输入值：
+  选择数据集。
+  默认查询是对所选数据集的 `COUNT`。
+  要优化查询，请为其余任何字段选择值，例如**可视化**、**可视化**、**位置**、**限制**、**分组依据**、**排序依据**或**限制**。

## 模板和变量
<a name="honeycomb-templates"></a>

要添加新的 Honeycomb 查询变量，请参阅 [添加查询变量](variables-types.md#add-a-query-variable)。

YOu 可以创建包含数据集、列或列值的变量。
+  如果未选择任何数据集，则该变量将包含数据集。
+  如果仅选择数据集，则该变量将包含列名。
+  如果同时选择了数据集和列，则该变量将包含列值。使用编辑器中的**位置**字段可以进一步限制列值。

## 在 Honeycomb UI 中查看查询
<a name="honeycomb-view"></a>

要从控制面板的面板查看您在 Honeycomb UI 中创建的查询，请选择图形中的任意点，然后选择**在 Honeycomb 中打开**。

要通过查询编辑器查看您在 Honeycomb UI 中创建的查询，请选择**在 Honeycomb 中打开**。

## 导入 Honeycomb 的控制面板
<a name="honeycomb-import"></a>

要导入控制面板，请参阅 [导入控制面板](dashboard-export-and-import.md#importing-a-dashboard)。

要查找导入的控制面板，请选择**配置**、**数据来源**。

要查看可用的预制控制面板，请选择 Honeycomb 数据来源并选择**控制面板**选项卡。

# 连接到 Jira 数据来源
<a name="jira-AMG-datasource"></a>

将来自 Jira 的问题数据与其他来源的应用程序性能数据相结合，全面了解您的开发流程。

**注意**  
此数据来源仅适用于 Grafana Enterprise。有关更多信息，请参阅 [管理对 Enterprise 插件的访问](upgrade-to-enterprise-plugins.md)。  
此外，在支持版本 9 或更高版本的工作区中，此数据来源可能需要您安装相应的插件。有关更多信息，请参阅 [使用插件扩展您的工作区](grafana-plugins.md)。
+ 根据问题创建或解决方案创建注释，以查看问题和指标之间的关系。
+ 跟踪详细的 Jira 统计数据，例如平均解决时间和问题吞吐量。

要使用 Jira 数据来源，您需要一个有权访问 Jira 项目的 Atlassian 账户。

## 已知限制条件
<a name="jira-known-limitations"></a>

可能不支持 Jira 附加组件中的自定义字段类型。

## 添加数据来源
<a name="jira-adding-the-data-source"></a>

1.  在 Amazon Managed Grafana 工作区中打开 Grafana 控制台，并确保您已登录。

1.  在**配置**（齿轮图标）下的侧边菜单中，选择**数据来源**。

1.  选择**添加数据来源**。
**注意**  
 如果您在侧边菜单中看不到**数据来源**链接，则表示您当前的用户没有 `Admin` 角色。

1.  从数据来源列表中选择 **Jira**。

1. 输入以下信息：
   + 对于**名称**，请输入此 Jira 数据来源的名称。
   + 对于 **URL**，请输入您的 Atlassian 实例的根 URL，例如 **https://bletchleypark.atlassian.net**。
   + 对于 “**用户**”，输入 user/service 账户的电子邮件地址。
   + 对于 **API 令牌**，请输入为用户生成的 API 令牌。

## 查询 Jira 数据来源
<a name="jira-query"></a>

在 Jira 查询编辑器中，您可以选择字段并查询问题。

Jira 数据来源向 Jira 查询问题，这些问题可以代表 Jira 中的错误、用户故事、支持票证或其他任务

**筛选和查看问题**

1.  选择**字段**，选择下拉列表，然后使用预键入从 Jira 实例中的任何字段（包括自定义字段）中进行选择。一些值得尝试的字段：
   + **摘要**：问题名称
   + **长篇故事名称**：问题所属的长篇故事
   + **故事点估计**：团队为某个问题估算的故事点数量

1.  对问题进行筛选或排序。为此，请输入任何有效的 JQL 表达式，根据问题的任何字段（例如**项目**、**任务接收者**或**冲刺**）对 Atlassian 查询语言 JQL 的问题进行筛选或排序。

从这里，您可以将数据显示在表中，也可以使用 Grafana 转换来操作问题数据、运行计算或将数据转换为时间序列图。有关更多信息，请参阅 [应用转换](panel-transformations.md#apply-a-transformation)。

## 时间序列查询
<a name="jira-timeseries-query"></a>

要显示时间序列数据，请选择**日期**字段和数值字段，然后切换到图形可视化。例如：**冲刺开始日期**、**故事点估计值**。

前面的例子本身并不是很有用。数值字段可以（而且很可能）通过转换计算。使用**分组依据**转换可以按照**冲刺开始日期**进行分组并汇总**故事点估计值**，从而可视化每个冲刺一段时间内的故事点数。有关转换的更多信息，请参阅 [应用转换](panel-transformations.md#apply-a-transformation)。

## 模板和变量
<a name="jira-templates"></a>

要添加新的 Jira 查询变量，请参阅 [添加查询变量](variables-types.md#add-a-query-variable)。使用您的 Jira 数据来源作为数据来源。

您可以在控制面板上定义变量并在 JQL 表达式中引用它们。例如，您可以创建项目状态控制面板并在项目之间进行选择，或者创建长篇故事状态控制面板并选择不同的长篇故事，或者创建任务状态控制面板并选择不同的任务接收者。

要获取项目、长篇故事、任务接收者等对象的动态列表以供您选择，请创建一个 Query 类型的变量。Quary 类型的变量使用 JQL 查询问题并返回项目、长篇故事、任务接收者或任何与问题相关的内容。以下是示例：

**创建 Assignee 变量以按分配人获取问题状态**

1.  添加名为 **assignee** 且类型为 **Query** 的变量。

1.  选择**字段：Assignee**。

1.  （可选）添加 JQL 筛选器 **project = 'your project'**。

1.  选择**运行**以查看任务接收者列表。

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

1. 向控制面板添加一个新面板，然后编辑 JQL 以使用您的新变量 **assignee = \$1assignee** 进行筛选。

   现在，从下拉列表中进行选择时，您只能看到分配给该用户的问题。

多值变量允许选择多个选项，可用作 IN 子句的一部分。例如，**assignee IN (\$1assignee)**。

## 使用 Grafana 中的转换来回答常见问题
<a name="jira-macros"></a>

宏是引用控制面板时间窗口的变量，因此您只能在控制面板窗口的范围内筛选问题。有 2 个宏：
+ **\$1\$1\$1timeFrom**
+ **\$1\$1\$1timeTo.**

以下示例 JQL 查询筛选了在控制面板时间窗口内创建的问题：`createdDate >= $__timeFrom AND createdDate <= $__timeTo`

## 充分利用数据来源
<a name="jira-getmost"></a>

使用 Grafana 的转换和其他内置功能可以帮助您有目的地查看 Jira 数据。

### 使用转换来增强 JQL
<a name="gitlab-transformations-JQL"></a>

虽然 Grafana 中有许多转换可供选择，但以下内容提供了一个强大的增强功能，为 JQL 提供了一些 SQL 功能。 features/power 

**Group By** 此转换提供了一项不属于标准 Jira JQL 语法的关键功能：分组。使用 **Group By** 转换，您可以按冲刺或其他问题字段进行分组，并按组进行聚合，以获得诸如速度和故事点估计值与冲刺中实际完成情况的对比等指标。

**Outer Join** 与 SQL 联接类似，您可以通过公共字段将 2 个或多个查询联接在一起。这提供了一种合并来自查询的数据集并使用其他转换来计算来自多个查询/数据集的值的方法。

**从计算添加字段** 与 SQL 表达式类似，此转换允许根据其他字段的计算向数据集中添加新字段。计算中使用的字段可以来自单个查询，也可以来自与您联接在一起的查询。您也可以将计算链接在一起，并通过已计算字段来执行计算。

### 使用 Grafana 中的转换来回答常见问题
<a name="gitlab-transformations-common"></a>

您可以使用转换来可视化、聚合、分组和联接数据集，还可以使用许多其他类型的转换将简单结果转换为复杂问题的答案。

**如何显示每次冲刺的速度？**

1.  选择字段：**冲刺名称**、**故事点估计**。

1.  添加 JQL 筛选器：`project = "Your Project" AND type != epic AND status = done order by created ASC`

1.  添加**分组依据**转换：
   + 冲刺名称 \$1 分组依据
   + 故事点估计 \$1 计算 \$1 总计

1. 选择**条形仪**可视化。

**如何显示冲刺中已完成内容与估计的内容？**

1.  添加查询。首先，选择字段：**冲刺名称**、**冲刺开始日期、**、**故事点估计**。

   然后添加一个 JQL 筛选器：`project = 'Your Project' AND type != epic`

1.  添加第二个查询。首先，选择字段：**冲刺名称**、**冲刺开始日期、**、**故事点估计**。

   然后添加一个 JQL 筛选器：`project = 'Your Project' AND type != epic AND status = done`

1.  添加**分组依据**转换：
   + 冲刺名称 \$1 分组依据
   + 冲刺开始日期 \$1 分组依据
   + 故事点估计 \$1 计算 \$1 总计

1. 选择**图形**可视化。

**我的项目中完成问题的平均时间是多少？**

1.  添加查询。首先，选择字段：**创建时间**、**状态类别更改时间**。

   然后添加一个 JQL 筛选器：`project = 'Your Project' AND type != epic AND status = done`

1.  添加转换：**从计算中添加字段**
   + 模式 = 减少行
   + 计算 = 差异

1.  添加转换：**从计算中添加字段**
   + 模式 = 二进制运算
   + 运算 = 差异 / 86000000
   + 别名 = 天数

1.  添加转换：**整理字段**
   + 隐藏其他字段

1.  添加转换：**按值筛选数据**
   + 筛选器类型 = 包含
   + 条件 = 任意匹配
     + 字段 = 天数 \$1 匹配 = 大于 \$1 值 = 1

1.  添加转换：**减少**
   + 模式 = 序列到行
   + 计算 = 均值

1. 选择**统计**可视化。

# 连接到 MongoDB 数据来源
<a name="AMG-mongodb-datasource"></a>

 通过 MongoDB 数据来源，您可以在 Amazon Managed Grafana 中可视化来自 MongoDB 的数据。

**注意**  
此数据来源仅适用于 Grafana Enterprise。有关更多信息，请参阅 [管理对 Enterprise 插件的访问](upgrade-to-enterprise-plugins.md)。  
此外，在支持版本 9 或更高版本的工作区中，此数据来源可能需要您安装相应的插件。有关更多信息，请参阅 [使用插件扩展您的工作区](grafana-plugins.md)。

## 用法
<a name="mongo-usage"></a>

### 查询编辑器
<a name="mongo-query-editor"></a>

 查询编辑器支持与 MongoDB Shell 相同的语法，但有一些限制：\$1 只能运行一条命令/查询。\$1 仅支持读取命令：**查找**和**聚合** \$1 不支持大*多数* Object 构造函数（支持除外）**ISODate** 

 编辑器通过以下方式扩展了 MongoDB Shell 的语法：
+  **数据库选择**：您可以提供数据库名称，来代替普通的“db”：
**注意**  
您仍然可以使用“db”。它将引用连接字符串中的默认数据库。

  ```
  sample_mflix.movies.find()
  ```
+  **聚合排序**：通常，排序在聚合管道中的一个步骤中进行，但是 MongoDB Atlas 免费套餐不允许排序。我们扩展了语法，允许使用免费套餐的用户进行排序。
**注意**  
MongoDB 不会使用这种语法执行排序。排序发生在从集合中查询结果之后。

  ```
  sample_mflix.movies.aggregate({}).sort({"time": 1})
  ```
+  在空白编辑器中，按 **Ctrl \$1 空格键**将显示所有可用数据库的选择。
+  在数据库后输入一个点，将显示该数据库所有可用集合的选择。
+  在集合后输入一个点，将显示可用的查询方法。
+  在查询方法后输入一个点，将显示其他功能：排序/限制。

#### 运行查询
<a name="mongo-running-the-query"></a>

 按 **Cmd \$1 S** 运行查询 

### 时间序列
<a name="mongo-time-series"></a>

 在可视化时间序列数据时，插件需要知道使用哪个字段作为时间。只需将字段投影为别名为“time”的字段即可。该字段的数据类型必须是日期。

 您可以将非日期数据类型强制转换为日期数据类型。这样做将允许使用非日期字段作为时间序列时间。以下示例说明如何使用 mongo dateFromParts DB \$1 管道运算符将 int 字段 “year” 转换为预计为 “时间” 的日期。

```
sample_mflix.movies.aggregate([
{"$match": { "year": {"$gt" : 2000} }},
{"$group": { "_id": "$year", "count": { "$sum": 1 }}},
{"$project": { "_id": 0, "count": 1, "time": { "$dateFromParts": {"year": "$_id", "month": 2}}}}
]
).sort({"time": 1})
```

### 诊断
<a name="mongo-diagnostics"></a>

 [诊断命令](https://docs.mongodb.com/manual/reference/command/nav-diagnostic/) 

 目前支持以下诊断命令：“统计信息”、“服务器状态”、“状态”、“getLog”、“”、“Connection replSetGet Status”、“buildInfo”、connPoolStats “dbStats”、“hostInfo”、“HostInfo”、“LockInfo” 

 示例：

```
admin.connectionStatus()  // run the connectionStatus command
admin.connectionStatus({"authInfo.authenticatedUserRoles": 1})  // run and only return the "authInfo.authenticatedUserRoles" field
admin.connPoolStats({arg: "pool"})  // run the connPoolStats command and pass 1 argument
admin.serverStatus({args: {repl: 0, metrics:0}})  // run the serverStatus command and pass multiple args
```

### 宏
<a name="mongo-macros"></a>

 您可以在查询中引用控制面板的时间范围。
+ ` $__timeFrom `：引用控制面板开始时间的宏
+ ` $__timeTo `：引用控制面板结束时间的宏

```
          $__timeTo -  ``` sample_mflix.movies.find({released: {$gt:
          "$__timeFrom"}}).sort({year: 1})
```

#### 模板变量
<a name="mongo-variables"></a>

MongoDB 支持“复合变量”的概念，让您可以将一个变量用作多个变量，以执行复杂的多键筛选。

要创建复合变量，请使用以下划线分隔变量的命名约定（必须以下划线开头）：`_var1_var2`。查询时，响应格式必须为：`val1-val2`

**示例：我想根据电影名称和年份筛选结果。**

1. 创建一个类型为 Query 的变量：`_movie_year`

1. 设置该变量查询，让其返回一个包含电影年份属性的项目数组，如下所示。

   ```
   // Example sample_mflix.movies.aggregate([
             {"$match": {year: {"$gt": 2011}}},
             {"$project": {_id: 0, movie_year: {"$concat":
             ["$title", " - ", {"$toString":"$year"}]}}}
             ])
   ```

   ```
    // [{"movie-year": "Ted - 2016"},
             {"movie-year": "The Terminator -
             1985"}]
   ```

1. 现在，您可以在查询中使用语法“\$1\$1variable”，将“Movie”和“Year”作为单独的模板变量引用。

##### 使用临时筛选条件
<a name="mongo-adhoc"></a>

除了可以使用任意名称的标准“临时筛选条件”类型变量外，还必须创建第二个辅助变量。该变量应为“常量”类型，名称为“mongodb\$1adhoc\$1query”，其值必须与查询编辑器兼容。查询结果将用于填充可选择的筛选条件。您可以选择隐藏该变量，因为它没有其他用途。

```
          sample_mflix.movies.aggregate([
          {"$group": { "_id": "$year"}},
          {"$project": { "year": "$_id","_id":
          0 }} ] )
```

# 连接到 New Relic 数据来源
<a name="new-relic-data-source"></a>

 本节介绍了 New Relic [APM](https://newrelic.com/products/application-monitoring) 和 Grafana 的[见解](https://newrelic.com/products/insights)。

**注意**  
此数据来源仅适用于 Grafana Enterprise。有关更多信息，请参阅 [管理对 Enterprise 插件的访问](upgrade-to-enterprise-plugins.md)。  
此外，在支持版本 9 或更高版本的工作区中，此数据来源可能需要您安装相应的插件。有关更多信息，请参阅 [使用插件扩展您的工作区](grafana-plugins.md)。

## 功能
<a name="newrelic-features"></a>
+  模板变量 
  +  指标名称 
  +  指标值 
+  Annotations 
+  别名 
  +  指标名称 
  +  指标值 
+  临时筛选条件 
  +  当前不支持 
+  警报 

## 配置
<a name="newrelic-configuration"></a>

 添加数据来源，填写您的[管理员 API 密钥](https://docs.newrelic.com/docs/apis/get-started/intro-apis/types-new-relic-api-keys#admin)、[个人 API 密钥](https://docs.newrelic.com/docs/apis/get-started/intro-apis/types-new-relic-api-keys#personal-api-key)和[账户 ID](https://docs.newrelic.com/docs/accounts/install-new-relic/account-setup/account-id) 的字段。

## 用法
<a name="newrelic-usage"></a>

### 服务类型
<a name="newrelic-service-types"></a>
+  **指标**；用于通过 New Relic 的 [REST API](https://docs.newrelic.com/docs/apis/rest-api-v2) 查询 New Relic API。
+  **见解**；用于通过 [NRQL](https://docs.newrelic.com/docs/insights/nrql-new-relic-query-language/nrql-resources/nrql-syntax-components-functions) 查询 New Relic 见解。

### Aliases
<a name="newrelic-aliases"></a>

 您可以将纯文本与以下变量组合以生成自定义输出。


|  变量  |  说明  |  示例值  | 
| --- | --- | --- | 
|  \$1\$1\$1nr\$1metric  |  指标名称  |  CPU/User 时间  | 
|  \$1\$1\$1nr\$1metric\$1value  |  指标值  |  average\$1value  | 

例如：

```
    <para>
      Server: $__nr_server Metric: $__nr_metric
    </para>
    <programlisting>
```

### 模板和变量
<a name="newrelic-templates-and-variables"></a>

1.  为控制面板创建模板变量。有关更多信息，请参阅 [模板和变量](templates-and-variables.md)。

1.  选择“查询”类型。

1.  选择“New Relic”数据来源。

1.  使用相对 [REST API](https://docs.newrelic.com/docs/apis/rest-api-v2) 端点（不包括文件扩展名）制定查询。

可用应用程序列表：

```
    <para>
      applications
    </para>
    <programlisting>
```

应用程序的可用指标列表：

```
    <para>
      applications/{application_id}/metrics
    </para>
    <programlisting>
```

### NRQL 宏
<a name="nrql-macros"></a>

 为了改善创建 New Relic Query Language（NRQL）查询时的编写体验，编辑器支持预定义的宏：
+  `$__timeFilter`（或 `[[timeFilter]]`）将根据您的控制面板时间范围对 `SINCE &lt;from&gt; UNTIL &lt;to&gt;` 进行插值。

示例：

```
    <para>
      SELECT average(value) FROM $event_template_variable
      $__timeFilter TIMESERIES
    </para>
    <programlisting>
```

 有关如何使用宏和模板变量的更多提示，请参阅编辑器的帮助部分。

### 警报事件
<a name="newrelic-alert-events"></a>

 选择您的 New Relic 数据来源并设置其他筛选器。如果未设置任何筛选器，则将返回所有事件。

 如果要按*实体 ID* 筛选事件，请使用模板变量，因为您可以选择实体名称而不是 ID。例如，要筛选特定应用程序的事件，请创建一个变量 `_$app_`，该变量用于检索应用程序列表并将其用作*实体 ID* 筛选器。

### 部署事件
<a name="newrelic-deployment-events"></a>

 *应用程序 ID* 是必填字段。

# 连接到 Oracle 数据库数据来源
<a name="oracle-datasource-AMG"></a>

**注意**  
此数据来源仅适用于 Grafana Enterprise。有关更多信息，请参阅 [管理对 Enterprise 插件的访问](upgrade-to-enterprise-plugins.md)。  
此外，在支持版本 9 或更高版本的工作区中，此数据来源可能需要您安装相应的插件。有关更多信息，请参阅 [使用插件扩展您的工作区](grafana-plugins.md)。

## 添加数据来源
<a name="datasource-configuration"></a>

 在 Grafana 的左侧面板上选择**数据来源**。

 选择“添加数据来源”：

 输入 **oracle** 以查找数据来源。

 输入 Oracle 服务器详细信息。

 输入主机名（或 IP 地址）以及端口号，并输入用于连接的用户名和密码。

 切换 tnsnames 选项后，可以使用 tnsnames.ora 配置文件中找到的任何有效条目以及基本身份验证。

 与上一示例类似，但使用 Kerberos 进行身份验证。有关如何将操作系统或 Docker 容器配置为使用 Kerberos 的详细信息，请参阅 Kerberos 特定的设置指南。

 （可选）更改用于连接到 Oracle 服务器并由时区感知型宏所使用的时区。默认设置为 UTC。

 保存并测试数据来源，您应该会看到一条绿色消息，上面写着“数据库连接正常” 

## 用法
<a name="usage-4"></a>

### 宏
<a name="macros-1"></a>

 为了简化语法并允许动态部分（如日期范围筛选器），查询可包含宏。列名称必须位于双引号（`"`）内。


|  宏示例  |  说明  | 
| --- | --- | 
|  \$1\$1\$1\$1time(dateColumn)\$1 \$1 将替换为表达式，以将列重命名为 `time`。例如，`dateColumn as time` \$1\$1\$1\$1timeEpoch(dateColumn)\$1  |  将替换为一个表达式，以将列重命名为 time，并将该值转换为 Unix 时间戳（以毫秒为单位）。 | 
|  \$1\$1\$1\$1timeFilter(dateColumn)\$1 \$1 将替换为使用指定列名的时间范围筛选条件。例如，`dateColumn BETWEEN TO\$1DATE('19700101','yyyymmdd') \$1 (1/24/60/60/1000) \$1 1,500,376,552,001 AND TO\$1DATE('19700101','yyyymmdd') \$1 (1/24/60/60/1000) \$1 1500376552002` \$1\$1\$1\$1timeFrom()\$1  |  将替换为当前活动时间选择的开始时间（已转换为 DATE 数据类型）。例如 TO\$1DATE('19700101','yyyymmdd') \$1 (1/24/60/60/1000) \$1 1500376552001。 | 
|  \$1\$1\$1\$1timeTo()\$1 \$1 将替换为当前活动时间选择的结束时间（已转换为 `DATE` 数据类型）。\$1\$1\$1\$1timeGroup(dateColumn,"5m")\$1  |  将替换为 GROUP BY 子句中可用的表达式。 | 
|  \$1\$1\$1\$1timeGroup(dateColumn,"5m"[, fillvalue])\$1  |  将替换为 GROUP BY 子句中可用的表达式。如果 fillValue 为 NULL 或浮点值，则会自动用该值填充时间范围内的空序列。例如，timeGroupcreatedAt, ′1m′, 0.\$1\$1\$1timeGroup(dateColumn,"5m", 0)\$1。 | 
|  \$1timeGroup(dateColumn, ‘5m’, NULL) \$1 \$1SameasabovebutNULLwillbeusedasvalueformissingpoints。\$1\$1\$1timeGroup(dateColumn,"5m", previous)\$1  |  与上面相同，但如果未看到任何值却使用 NULL，则该序列中的前一个值将用作填充值。 | 
|  \$1\$1\$1\$1 unixEpochFilter (dateColumn) \$1 \$1 将替换为使用指定列名的时间范围过滤器，时间以 unix 时间戳（以毫秒为单位）表示。例如，`dateColumn >= 1500376552001 和 dateColumn <= 1500376552002` \$1\$1\$1\$1 () \$1 unixEpochFrom  |  将替换为当前活动时间选择的开始时间，作为 Unix 时间戳。例如 1500376552001。 | 
|  \$1\$1\$1\$1unixEpochTo()\$1  |  将替换为当前活动时间选择的结束时间，作为 Unix 时间戳。例如 1500376552002。 | 

 该插件还支持使用大括号 `{}`。当需要在参数内进行查询时，请使用此表示法。

**注意**  
每个查询使用一种表示法类型。如果查询需要大括号，则查询中的所有宏都必须使用大括号。

```
$__timeGroup{"dateColumn",'5m'}
$__timeGroup{SYS_DATE_UTC("SDATE"),'5m'}
$__timeGroup{FROM_TZ(CAST("SDATE" as timestamp), 'UTC'), '1h'}
```

 在面板编辑模式下，查询编辑器有一个**生成式 SQL** 链接，并在查询运行后显示。选择链接之后，将会展开并显示运行的原始插值 SQL 字符串。

### 表查询
<a name="table-queries"></a>

 如果**格式化为**查询选项设置为**表**，则基本上可以执行任何类型的 SQL 查询。表面板将自动显示查询返回的任何列和行的结果。您可以使用常规 `as` SQL 列选择语法来控制表面板列的名称。

### 时间序列查询
<a name="time-series-queries"></a>

 如果将**格式化为**设置为**时间序列**，例如在图形面板中使用，查询必须返回名为 `time` 的列，该列返回 SQL 日期时间或任何表示 Unix 纪元（秒）的数字数据类型。Grafana 将没有明确时区的 DATE 和 TIMESTAMP 列解释为 UTC。除 `time` 和 `metric` 之外的任何列都被视为值列。您可以返回一个名为 `metric` 的列，该列用作值列的指标名称。

 以下代码示例显示了多个 `metric` 列。

```
SELECT
  $__timeGroup("time_date_time", '5m') AS time,
  MIN("value_double"),
  'MIN' as metric
FROM test_data
WHERE $__timeFilter("time_date_time")
GROUP BY $__timeGroup("time_date_time", '5m')
ORDER BY time
```

### 更多查询 — 使用 oracle-fake-data-gen
<a name="more-queries---using-oracle-fake-data-gen"></a>

```
SELECT
  $__timeGroup("createdAt", '5m') AS time,
  MIN("value"),
  'MIN' as metric
FROM "grafana_metric"
WHERE $__timeFilter("createdAt")
GROUP BY $__timeGroup("createdAt", '5m')
ORDER BY time
```

 以下代码示例显示了“伪造数据”时间序列。

```
SELECT
  "createdAt",
  "value"
FROM "grafana_metric"
WHERE $__timeFilter("createdAt")
ORDER BY "createdAt" ASC
```

```
SELECT
  "createdAt" as time,
  "value" as value
FROM "grafana_metric"
WHERE $__timeFilter("createdAt")
ORDER BY time ASC
```

 以下示例显示了一个有用的表结果。

```
select tc.table_name Table_name
,tc.column_id Column_id
,lower(tc.column_name) Column_name
,lower(tc.data_type) Data_type
,nvl(tc.data_precision,tc.data_length) Length
,lower(tc.data_scale) Data_scale
,tc.nullable nullable
FROM all_tab_columns tc
,all_tables t
WHERE tc.table_name = t.table_name
```

### 模板化
<a name="templating-3"></a>

 您可以在指标查询中使用变量来代替服务器、应用程序和传感器名称等硬编码的内容。变量显示为控制面板顶部的下拉选择框。通过这些下拉框可以轻松更改控制面板中显示的数据。

#### 查询变量
<a name="query-variable-1"></a>

 如果添加 `Query` 类型的模板变量，则可以编写一个 Oracle 查询，该查询可以返回测量名称、键名或键值等显示为下拉选择框的内容。

 例如，如果在模板变量 *Query* 设置中指定了这样的查询，则会有一个变量，其中包含表中 `hostname` 列的所有值。

```
SELECT "hostname" FROM host
```

 查询可以返回多列，Grafana 会自动根据这些列创建一个列表。例如，以下查询将返回一个列表，其中包含来自 `hostname` 和 `hostname2` 的值。

```
SELECT "host.hostname", "other_host.hostname2" FROM host JOIN other_host ON host.city = other_host.city
```

 要在查询中使用依赖于时间范围的宏（如 `$__timeFilter("time_column")`），需要将模板变量的刷新模式设置为*时间范围更改时*。

```
SELECT "event_name" FROM event_log WHERE $__timeFilter("time_column")
```

 另一种选择是可以创建 key/value 变量的查询。该查询应返回名为 `__text` 和 `__value` 的两列。`__text` 列值应该是唯一的（如果它不是唯一的，则使用第一个值）。下拉列表中的选项包含文本和值，允许将友好名称作为文本，将 id 作为值。以下示例代码显示了一个以 `hostname` 作为文本，以 `id` 作为值的查询。

```
SELECT "hostname" AS __text, "id" AS __value FROM host
```

 您还可以创建嵌套变量。例如，您还有一个名为 `region` 的变量。然后，您可以让主机变量仅显示来自当前所选区域的主机，并使用以下查询（如果 `region` 是多值变量，则使用 `IN` 比较运算符而不是 `=` 与多个值匹配）。

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

#### 在查询中使用变量
<a name="using-variables-in-queries-1"></a>

 仅当模板变量是 `multi-value` 时，才会引用模板变量值。

 如果该变量是多值变量，则使用 `IN` 比较运算符而不是 `=` 与多个值匹配。

 共有两种语法：

 `$<varname>` 名为 `hostname` 的模板变量的示例：

```
SELECT
  "atimestamp" as time,
  "aint" as value
FROM table
WHERE $__timeFilter("atimestamp") AND "hostname" IN('$hostname')
ORDER BY "atimestamp" ASC
```

 `[[varname]]` 名为 `hostname` 的模板变量的示例：

```
SELECT
  "atimestamp" as time,
  "aint" as value
FROM table
WHERE $__timeFilter("atimestamp") AND "hostname" IN('[[hostname]]')
ORDER BY atimestamp ASC
```

# 连接到 Salesforce 数据来源
<a name="salesforce-AMG-datasource"></a>

**注意**  
此数据来源仅适用于 Grafana Enterprise。有关更多信息，请参阅 [管理对 Enterprise 插件的访问](upgrade-to-enterprise-plugins.md)。  
此外，在支持版本 9 或更高版本的工作区中，此数据来源可能需要您安装相应的插件。有关更多信息，请参阅 [使用插件扩展您的工作区](grafana-plugins.md)。

Salesforce 数据来源使您能够在 Amazon Managed Grafana 中可视化来自 Salesforce 的数据。

要使用此数据来源，您必须拥有 [Salesforce](https://www.salesforce.com/) 账户和 [Salesforce 连接的应用程序](https://help.salesforce.com/articleView?id=sf.connected_app_overview.htm&type=5)。

## 已知限制条件
<a name="salesforce-known-limitations"></a>
+  尚不支持临时筛选条件。
+  目前仅支持 SOQL 查询和可通过 SOQL 访问的数据。目前尚不支持 SOSL 和 SAQL 查询格式。

## 必需的设置
<a name="salesforce-settings"></a>

以下设置是必需的。

**注意**  
该插件目前使用 OAuth 2.0 用户名密码流程。未使用连接的应用程序中所需的回调 URL。因此，您可以将其设置为任何有效的 URL。


|  Name  |  说明  | 
| --- | --- | 
|  Enable OAuth settings  |  您必须勾选此项才能启用 OAuth。 | 
|  Callback URL  |  尚未在此插件中使用，因此您可以指定任何有效的 URL。 | 
|  Selected OAuth Scopes (minimum requirements)  | 访问和管理您的数据（api）。 | 
|  Require Secret for Refresh Token Flow  |  可以启用或禁用此选项。 | 

## 添加数据来源
<a name="salesforce-adding-the-data-source"></a>

1.  在 Amazon Managed Grafana 工作区中打开 Grafana 控制台，并确保您已登录。

1.  在**配置**（齿轮图标）下的侧边菜单中，选择**数据来源**。

1.  选择**添加数据来源**。
**注意**  
 如果您在侧边菜单中看不到**数据来源**链接，则表示您当前的用户没有 `Admin` 角色。

1.  从数据来源列表中选择 **Salesforce**。

1. 输入以下信息：
   + 对于**用户名**，输入要用于连接和查询 Salesforce 的 Salesforce 账户的用户名。
   + 对于**密码**，输入该用户的密码。
   + 对于**安全令牌**，输入该用户的安全令牌。
   + 对于**使用者键**，输入要连接到 Salesforce 的使用者键。您可以从 Salesforce 连接的应用程序处获取。
   + 对于**使用者密钥**，输入要连接到 Salesforce 的使用者密钥。您可以从 Salesforce 连接的应用程序处获取。
   + 对于**使用沙盒**，如果您要使用 Salesforce 沙盒，请选择此选项。

## 查询 Salesforce 数据来源
<a name="salesforce-query"></a>

查询编辑器支持查询生成器和 SOQL 编辑器模式。SOQL 代表 [Salesforce 对象查询语言](https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql.htm)。

### 查询生成器（SOQL 生成器）
<a name="salesforce-query-builder"></a>

查询生成器是一个用户友好的界面，用于生成 SOQL 查询。如果您不熟悉如何编写 SOQL 查询，则可以使用此模式生成 SOQL，从而查询 Salesforce 对象。查询生成器中的 **FROM** 字段指的是 Salesforce 中的一个或多个实体。您需要首先选择 **FROM** 字段，然后才能在查询生成器中进行任何其他操作。选择 **FROM** 字段后，需要选择生成器模式。SOQL 生成器当前支持以下模式。
+ `List`：列出选定表/salesforce 中的项目及其字段。使用此模式可以获得诸如“显示本财季创造的商机列表及其名称、价值和阶段”的结果。
+ `Aggregate`：汇总实体中的项目。使用此模式可以获得诸如“统计上个月创造的商机”的结果。或“按阶段名称分组的商机的总价值是多少？”
+ `Trend`：显示一段时间内的汇总结果。使用此模式可以获得诸如 “计算机会数量” 之类的结果 CreatedDate。或“按商机截止日期分组的总价值是多少。”

在查询编辑器中选择 `Entity/FROM` 和**模式**后，使用以下选项生成查询。


|  **字段**  |  **适用于**  |  **描述**  | 
| --- | --- | --- | 
|  SELECT |  ALL  |  选择要查看的字段列表。对于汇总视图或趋势视图，还可选择要汇总值的方式。 | 
|  WHERE |  ALL  |  （可选）指定筛选条件。系统会根据您选择的条件筛选结果。 | 
|  ORDER BY |  LIST, AGGREGATE  |  （可选）选择字段名称和所需的结果排序顺序。 | 
|  LIMIT |  LIST, AGGREGATE  |  （可选）限制返回的结果数。默认值为 100。 | 
|  GROUP BY |  AGGREGATE  |  （可选）如果要按任何特定字段拆分汇总值，请选择该字段。 | 
|  TIME FIELD |  TREND  |  指定要按其对结果进行分组的日期字段。结果是根据 Grafana 的时间选择器范围进行筛选的。 | 

在查询编辑器中配置上述字段时，还将在查询编辑器下方看到生成的 SOQL 的预览。如果您在查询生成器中因任何限制而导致操作被阻止，则可以安全地切换到 SOQL 编辑器，您可以在其中自定义生成的 SOQL 查询。

### SOQL 编辑器
<a name="salesforce-SOQL-editor"></a>

原始 SOQL 编辑器提供了通过原始 SOQL 查询来查询 Salesforce 对象的选项。SOQL 编辑器提供自动完成建议，例如每个表的可用实体和相应的字段。在 SELECT 或 WHERE 之后使用 Ctrl \$1 空格键查看每个表的可用实体。如果在实体名称后输入一个点，则可以看到可用字段。

**快捷键**

使用 CTRL \$1 空格键显示代码完成功能，它会显示可用的上下文选项。

CMD \$1 S 运行查询。

**按时间序列查询**

通过将日期字段的别名设置为时间，将指标字段别名设置为指标，然后按指标和日期分组，以这种方式进行时间序列查询。以下是示例：

```
SELECT sum(Amount) amount, CloseDate time, Type metric from Opportunity
group by Type, CloseDate
```

**宏**

要按控制面板时间范围进行筛选，可以在 SOQL 查询中使用宏：
+ `$__timeFrom`：将替换为当前活动时间选择的开始时间（已转换为`time`数据类型）。
+ `$__timeTo`：将替换为当前活动时间选择的结束时间（已转换为`time`数据类型）。
+ `$__quarterStart`— 会计季度的开始（源自 “ SalesForce 会计年度设置”）。
+ `$__quarterEnd`— 会计季度结束（源自 “ SalesForce 会计年度设置”）。

```
SELECT UserId, LoginTime from LoginHistory where LoginTime > $__timeFrom
```

## 模板和变量
<a name="salesforce-templates"></a>

要添加新的 Salesforce 查询变量，请参阅[添加查询变量](variables-types.md#add-a-query-variable)。使用 Salesforce 数据来源作为您的数据来源。您可在此处使用任何 SOQL 查询。

如果要使用 name/value 配对，例如用户 ID 和用户名，请从 SOQL 查询中返回两个字段。第一个字段将用作 ID。当您想在查询编辑器 SOQL 中按键（ID 等）进行筛选时，请执行此操作。

通过使用变量语法在 SOQL 查询中使用该变量。有关更多信息，请参阅 [变量语法](templates-and-variables.md#variable-syntax)。

# 连接到 SAP HANA 数据来源
<a name="saphana-AMG-datasource"></a>

[SAP HANA](https://www.sap.com/products/technology-platform/hana.html) 是一种高性能的内存数据库，可加快数据驱动的实时决策和操作。它由 SAP 开发和销售。SAP HANA 数据来源插件可帮助您将 SAP HANA 实例与 Grafana 连接起来。

借助 SAP HANA Grafana Enterprise 插件，您可以在 Grafana 中将您的 SAP HANA 数据，与 Grafana 中的所有其他数据来源以及上下文中的日志和指标数据一起可视化。该插件包括内置的查询编辑器，它支持注释，并允许您设置警报阈值，控制访问权限，设置权限等。

**注意**  
此数据来源仅适用于 Grafana Enterprise。有关更多信息，请参阅 [管理对 Enterprise 插件的访问](upgrade-to-enterprise-plugins.md)。  
此外，在支持版本 9 或更高版本的工作区中，此数据来源可能需要您安装相应的插件。有关更多信息，请参阅 [使用插件扩展您的工作区](grafana-plugins.md)。

## 功能
<a name="saphana-features"></a>
+ **查询编辑器**：该插件带有内置的 SQL 查询编辑器，具有语法突出显示功能，使您能够可视化时间序列或表数据，并自动完成基本的 Grafana 宏。
+ **数据来源权限**：控制谁可以在 Grafana 中查看或查询 SAP HANA 数据。
+ **注释**：在任何 Grafana 图表上叠加 SAP HANA 事件或数据，将事件与其他图表数据关联起来。
+ **警报**：在 SAP HANA 中设置基于警报的指标存储。
+ **查询变量**：在 Grafana 中创建基于 SAP HANA 数据的模板变量，并在 SAP HANA 查询中包含变量以使控制面板具有交互性。

## 添加数据来源
<a name="saphana-adding-the-data-source"></a>

1.  在 Amazon Managed Grafana 工作区中打开 Grafana 控制台，并确保您已登录。

1.  在**配置**（齿轮图标）下的侧边菜单中，选择**数据来源**。

1.  选择**添加数据来源**。
**注意**  
 如果您在侧边菜单中看不到**数据来源**链接，则表示您当前的用户没有 `Admin` 角色。

1.  从数据来源列表中选择 **SAP HANA**。

1. 在配置编辑器中，输入以下信息：
   + 对于**服务器地址**，提供 SAP HANA 实例的地址。示例：`xxxxxxx-xxxx-xxxx-xxxx-xxxxxxx.hana.trial-us10.hanacloud.ondemand.com`。
   + 对于**服务器端口**，提供 SAP HANA 实例的端口。
   + 对于**用户名**，输入用于连接到 SAP HANA 实例的用户名。
   + 对于**密码**，输入该用户的密码。
   + （可选）如果您想跳过 TLS 验证，请启用**跳过 TLS 验证**。
   + （可选）如果您需要提供客户端证书和密钥，请启用 **TLS 客户端身份验证**。
   + （可选）如果您要启用自签名 TLS 证书的验证，请启用**使用 CA 证书**。
   + （可选）对于**默认架构**，输入要使用的默认架构。如果省略此项，则需要在每个查询中指定架构。

**访问权和权限**

要将 Grafana 连接到 SAP HANA，请使用专用凭证。仅向用户提供所需的权限。首先，使用用户名和密码创建一个受限用户。以下查询是创建受限用户的示例。此查询还会禁用强制密码更改。

```
CREATE RESTRICTED USER <USER> PASSWORD <PASSWORD> NO FORCE_FIRST_PASSWORD_CHANGE;
```

接下来，允许用户通过诸如 Grafana 之类的客户端连接系统，连接时会涉及以下内容：

```
ALTER USER <USER> ENABLE CLIENT CONNECT;
```

最后，允许用户访问所需的视图、表和架构。

```
ALTER USER <USER> GRANT ROLE PUBLIC;
GRANT SELECT ON SCHEMA <SCHEMA> TO <USER>;
```

**用户级权限**

单击数据来源配置页面中的“权限”选项卡以启用数据来源权限，从而限制对 SAP HANA 的访问权限。在权限页面上，管理员可以启用权限并将查询权限限制为特定的用户和团队。

## 查询编辑器
<a name="saphana-queryeditor"></a>

SAP HANA Grafana 插件附带一个 SQL 查询编辑器，您可以在其中输入任何 HANA 查询。如果您的查询返回时间序列数据，则可以将其格式化为时间序列，以便在图表面板中对其进行可视化。查询编辑器为支持的 Grafana 宏提供自动完成功能，并突出显示 SQL 查询的语法。

## Annotations
<a name="saphana-annotations"></a>

您可以使用 SAP HANA 查询作为 Grafana 注释的来源。您的注释查询应至少返回一个时间列和一个文本列。有关注释的详细信息，请参阅[Annotations](dashboard-annotations.md)。

**从 SAP HANA 创建注释**

1.  选择**控制面板设置**齿轮图标。

1.  从左侧菜单中选择**注释**、**新建**。

1.  从**数据来源**下拉菜单中，选择您的 SAP HANA 数据来源实例。

1.  在**查询**字段中，输入至少返回一个时间字段和一个文本字段的 SAP HANA 查询。

1.  在**格式化为**下拉菜单中，选择**时间序列**。

1.  为每个注释配置**从**字段。

## 模板和变量
<a name="saphana-templates"></a>

要添加新的 SAP HANA 查询变量，请参阅[添加查询变量](variables-types.md#add-a-query-variable)。使用 SAP HANA 数据来源作为数据来源。

以下示例查询将返回来自 `users` 表的 `username` 唯一列表。

```
select distinct("username") from "users"
```

**注意**  
确保在变量查询中只选择一列。如果您的查询返回两列，则第一列将用作显示值，第二列将用作变量的实际值。如果您的查询返回的列超过两列，则它们将被拒绝。

### 模板和变量
<a name="saphana-Grafana-variables"></a>

您可以在查询中使用任何 Grafana 变量。以下示例说明如何在查询中使用单个/多个变量。

```
-- For example, following query
select * from "users" where "city" = ${city}
-- will be translated into
select * from "users" where "city" = 'london'
--- where you can see ${city} variable translated into actual value in the variable
```

与文本类似，变量也适用于数值字段。在下面的示例中，`${age}` 是一个文本框变量，它接受数字，然后与表中的数值字段进行比较。

```
select * from "users" where "age" > ${age}
--- wil be translated into
select * from "users" where "age" > '36'
```

如果您的变量返回多个值，则可以在 SAP HANA 查询的 `in` 条件中使用它，如下所示。请注意变量周围的方括号，以使 `where in` 条件在 SAP HANA 中有效。

```
select * from "users" where "city" in (${cities})
--- will be translated into
select * from "users" where "city" in ('london','perth','delhi')
--- where you can see ${cities} turned into a list of grafana variables selected.
--- You can also write the same query using shorthand notation as shown below
select * from "users" where "city" in ($cities)
```

### 宏
<a name="saphana-macros"></a>
+ `$__timeFilter(<time_column>)`：在原始查询中使用 Grafana 的时间范围时，将其应用于指定列。适用于date/timestamp/long时间列。
+ `$__timeFilter(<time_column>, <format>)`：同上。但是可以指定存储在数据库中的 time\$1column 的格式。
+ `$__timeFilter(<time_column>, "epoch", <format>)`：同上，但可以在时间列处于纪元时使用。格式可以是“s”、“ms”和“ns”之一。
+ `$__fromTimeFilter(<time_column>)`：同上，但可以在时间列处于纪元时使用。格式可以是“s”、“ms”和“ns”之一。
+ `$__fromTimeFilter(<time_column>, <comparison_predicate>)`：同上，但能够指定 comparison\$1predicate。
+ `$__fromTimeFilter(<time_column>, <format>)`：同上，但可以指定时间列的格式。
+ `$__fromTimeFilter(<time_column>, <format>, <comparison_predicate>)`：同上，但能够指定 comparison\$1predicate。
+ `$__toTimeFilter(<time_column>)`：根据 Grafana 的“到”时间返回时间段的时间条件。
+ `$__toTimeFilter(<time_column>, <comparison_predicate>)`：同上，但能够指定 comparison\$1predicate。
+ `$__toTimeFilter(<time_column>, <format>)`：同上，但可以指定时间列的格式。
+ `$__toTimeFilter(<time_column>, <comparison_predicate>)`：同上，但能够指定 comparison\$1predicate。
+ `$__timeGroup(<time_column>, <interval>)`：将时间列扩展为间隔组。适用于date/timestamp/long时间列...

**\$1\$1\$1timeFilter(<time\$1column>) 宏**

以下示例解释了该 `$__timeFilter(<time_column>)` 宏：

```
- In the following example, the query
select ts, temperature from weather where $__timeFilter(ts)
--- will be translated into
select ts, temperature from weather where ts > '2021-02-24T12:52:48Z' AND ts < '2021-03-24T12:52:48Z'
--- where you can see the grafana dashboard's time range is applied to the column ts in the query.
```

**\$1\$1\$1timeFilter(<time\$1column>, <format>) 宏**

在某些情况下，数据库中的时间列以自定义格式存储。以下示例解释了 `$__timeFilter(<time_column>, <format>)` 宏，它有助于基于 Grafana 的时间选择器筛选自定义时间戳：

```
SELECT TO_TIMESTAMP("TS",'YYYYMMDDHH24MISS') AS METRIC_TIME , "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TS","YYYYMMDDHH24MISS") -- TS is in 20210421162012 format
SELECT TO_TIMESTAMP("TS",'YYYY-MON-DD') AS METRIC_TIME , "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TS","YYYY-MON-DD") -- TS is in 2021-JAN-15 format
```

在宏中，该格式可以是与您的时间戳列匹配的有效 HANA 格式之一。例如，当您的数据以 `20210421162012` 格式存储时，`YYYYMMDDHH24MISS` 是一种有效的格式。

**\$1\$1\$1timeFilter(<time\$1column>, "epoch" <format>) 宏**

在某些情况下，时间戳作为纪元时间戳存储在数据库中。以下示例对 `$__timeFilter(<time_column>, "epoch" <format>)` 宏进行了说明，该宏有助于基于 Grafana 的时间选择器筛选纪元时间戳。在宏中，格式可以是 ms、s 或 ns 之一。如果未指定格式，则 s 将被视为默认格式。

```
SELECT ADD_SECONDS('1970-01-01', "TIMESTAMP") AS "METRIC_TIME", "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TIMESTAMP","epoch") -- Example : TIMESTAMP field stored in epoch_second format 1257894000
SELECT ADD_SECONDS('1970-01-01', "TIMESTAMP") AS "METRIC_TIME", "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TIMESTAMP","epoch","s") -- Example : TIMESTAMP field stored in epoch_second format 1257894000
SELECT ADD_SECONDS('1970-01-01', "TIMESTAMP"/1000) AS "METRIC_TIME", "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TIMESTAMP","epoch","ms") -- Example : TIMESTAMP field stored in epoch_ms format 1257894000000
SELECT ADD_SECONDS('1970-01-01', "TIMESTAMP"/1000000000) AS "METRIC_TIME", "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TIMESTAMP","epoch","ns") -- Example : TIMESTAMP field stored in epoch_nanoseconds format 1257894000000000000
```

您可以使用 epoch\$1s、epoch\$1ms 或 epoch\$1ns 之一作为第二个参数，而不是使用 \$1\$1\$1TimeFilter 的第三个参数。

```
SELECT ADD_SECONDS('1970-01-01', "TIMESTAMP"/1000) AS "METRIC_TIME", "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TIMESTAMP","epoch","ms")
-- is same as
SELECT ADD_SECONDS('1970-01-01', "TIMESTAMP"/1000) AS "METRIC_TIME", "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TIMESTAMP","epoch_ms")
```

**\$1\$1\$1 fromTimeFilter () 和 \$1\$1\$1 toTimeFilter () 宏**

`$__fromTimeFilter()` 宏根据 Grafana 时间选择器的“从”时间扩展到时间段的条件。

这将接受三个参数。第一个参数是时间字段名称。您可以传递 comparison\$1predicate 或时间列的格式作为第二个参数。如果您想同时传递这两个参数，那么格式就是第二个参数，并使用 comparison\$1predicate 作为第三个参数。

****<format>如果未指定格式，插件将假定时间列为 timestamp/date 类型。如果您的时间列以除时间戳/日期之外的任何其他格式存储，则将该格式作为第二个参数传递。 <format>可以是 epoch\$1s、epoch\$1ms、epoch\$1ns 或任何其他自定义格式之一，例如。 YYYY-MM-DD

**<comparison\$1predicate>** 可选参数。如果未传递，插件将使用 > 作为比较谓词。<comparison\$1predicate> 可以是 =、\$1=、 <>、<、<=、>、>、>=

`$__toTimeFilter()`工作原理与 \$1\$1\$1 fromTimeFilter () 相同。它不会使用 Grafana 的“从”时间，而是会使用 Grafana 的“到”时间。此外，默认比较谓词将为 <。

**\$1\$1\$1timeGroup(<time\$1column>, <interval>)** 

例如，在查询中，宏 \$1\$1\$1TimeGroup(timecol,1h) 扩展为 SERIES\$1ROUND("timecol", 'INTERVAL 1 HOUR')。

以下示例解释了 `$__timeGroup(<time_column>, <interval>) macro.`

```
SELECT $__timeGroup(timestamp,1h),  "user", sum("value") as "value"
FROM "salesdata"
WHERE $__timeFilter("timestamp")
GROUP BY $__timeGroup(timestamp,1h), "user"
ORDER BY $__timeGroup(timestamp,1h) ASC
```

这将被转换为以下查询，其中 `$__timeGroup(timestamp,1h)` 扩展为 `SERIES_ROUND("timestamp", 'INTERVAL 1 HOUR')`。

```
SELECT SERIES_ROUND("timestamp", 'INTERVAL 1 HOUR') as "timestamp",  "user", sum("value") as "value"
FROM "salesdata"
WHERE "timestamp" > '2020-01-01T00:00:00Z' AND "timestamp" < '2020-01-01T23:00:00Z'
GROUP BY SERIES_ROUND("timestamp", 'INTERVAL 1 HOUR'), "user"
ORDER BY "timestamp" ASC
```

**注意**  
对 \$1\$1\$1TimeGroup 宏使用分组依据时，请确保您的选择、排序依据字段与您的分组依据字段的名称相同。否则，HANA 可能无法识别查询。

如果您不想在 \$1\$1\$1timeGroup() 函数中对间隔进行硬编码，那么您可以通过将 \$1\$1\$1interval 指定为间隔来将其留给 Grafana。Grafana 将根据控制面板的时间范围计算该间隔。示例查询：

```
SELECT $__timeGroup(timestamp, $__interval), sum("value") as "value"
FROM "salesdata"
WHERE $__timeFilter("timestamp")
GROUP BY $__timeGroup(timestamp, $__interval)
ORDER BY $__timeGroup(timestamp, $__interval) ASC
```

该查询将根据控制面板的时间范围转换为以下查询。

```
SELECT SERIES_ROUND("timestamp", 'INTERVAL 1 MINUTE'), sum("value") as "value"
FROM "salesdata"
WHERE "timestamp" > '2019-12-31T23:09:14Z' AND "timestamp" < '2020-01-01T23:17:54Z'
GROUP BY SERIES_ROUND("timestamp", 'INTERVAL 1 MINUTE')
ORDER BY SERIES_ROUND("timestamp", 'INTERVAL 1 MINUTE') ASC
```

### 警报
<a name="saphana-alerting"></a>

**要在 Grafana 中设置 SAP HANA 警报**

1. 在控制面板中创建图表面板。

1. 以时间序列格式创建 SAP HANA 查询。

1. 选择**警报**选项卡并指定警报标准。

1. 选择**测试规则**以测试警报查询。

1. 指定警报收件人、消息和错误处理。

1. 保存控制面板。

#### 针对非时间序列数据发出警报
<a name="saphana-alerting-nontimeseries"></a>

要针对非时间序列数据发出警报，请使用 `TO_TIMESTAMP('${__to:date}')` 宏将非时间序列指标转换为时间序列。这会将您的指标转换为单点时间序列查询。查询的格式如下所示

```
SELECT TO_TIMESTAMP('${__to:date}'),  <METRIC> FROM <TABLE≶ WHERE <YOUR CONDITIONS>
```

在以下示例中，表中有四个字段，分别是用户名、年龄、城市和角色。此表不提供任何时间字段。我们希望在具有开发角色的用户数量少于三时发出通知。

```
SELECT  TO_TIMESTAMP('${__to:date}'), count(*) as "count" FROM (
   SELECT 'John' AS "username", 32 AS "age", 'Chennai' as "city", 'dev' as "role" FROM dummy
   UNION ALL SELECT 'Jacob' AS "username", 32 AS "age", 'London' as "city", 'accountant' as "role" FROM dummy
   UNION ALL SELECT 'Ali' AS "username", 42 AS "age", 'Delhi' as "city", 'admin' as "role" FROM dummy
   UNION ALL SELECT 'Raja' AS "username", 12 AS "age", 'New York' as "city", 'ceo' as "role" FROM dummy
   UNION ALL SELECT 'Sara' AS "username", 35 AS "age", 'Cape Town' as "city", 'dev' as "role" FROM dummy
   UNION ALL SELECT 'Ricky' AS "username", 25 AS "age", 'London' as "city", 'accountant' as "role" FROM dummy
   UNION ALL SELECT 'Angelina' AS "username", 31 AS "age", 'London' as "city", 'cxo' as "role" FROM dummy
) WHERE "role" = 'dev'
```

# Connect 连接到 ServiceNow 数据源
<a name="grafana-enterprise-servicenow-datasource"></a>

这是用于连接 ServiceNow实例 ServiceNow 的数据源。

**注意**  
此数据来源仅适用于 Grafana Enterprise。有关更多信息，请参阅 [管理对 Enterprise 插件的访问](upgrade-to-enterprise-plugins.md)。  
此外，在支持版本 9 或更高版本的工作区中，此数据来源可能需要您安装相应的插件。有关更多信息，请参阅 [使用插件扩展您的工作区](grafana-plugins.md)。

## 功能
<a name="features-1"></a>
+  查询 
  +  统计 API 查询 
  +  表 API 查询 
    +  事件、变更和任何其他表 
+  警报 
+  注释（测试版功能） 
+  模板变量 

## 配置
<a name="configuration-2"></a>

 在 Grafana 的左侧面板上选择数据来源。

 选择“添加数据来源”：

 输入 **servicenow** 以查找数据来源插件：

 输入 ServiceNow 网址：

 选择**保存并测试**。您应该会看到一条绿色消息，上面写着 “ServiceNow 连接正常”。

### 控制面板示例
<a name="example-dashboards"></a>

 预制控制面板包含在插件中，可通过控制面板选项卡下面的数据来源配置页面导入。

## 用法
<a name="usage-2"></a>

 在查询编辑器中返回数据的方法有两种。
+  TableAPI 
+  AggregateAPI 

 用户目前可以在查询预定义表之间进行选择，如下所示：
+  更改 
+  意外事件 

 或者，截止到 `v1.4.0`，使用**其他（自定义表）**选项的由 API 驱动的表和字段列表。此选项将允许您查询用于设置数据源的用户可用的任何表中的 ServiceNow 数据。

 **自定义表**选项应支持所有与预定义表列表相同的功能。

### TableAPI 查询
<a name="tableapi-queries"></a>

 TableAPI 返回适合在表面板中显示的数据。它允许按顺序选择要显示的字段以及筛选选项。查询编辑器还提供了一个用于限制查询返回的行数的字段。

 显示上次查询结果的表面板示例。

#### 显示
<a name="show"></a>

 *显示*行为要显示的字段提供了一个选择器。也可以指定多个字段。这些字段将按指定的确切顺序返回。

#### 显示值
<a name="display-values"></a>

 *显示值*标志将使查询返回人性化值或显示值，而不是数值。

 例如，如果没有此标志，则严重性 `1` 会仅显示 `1`。如果启用了该标志，则显示的值将为 `1 - High`。

 根据 [ServiceNow API文档](https://developer.servicenow.com/dev.do#!/reference/api/orlando/rest/c_TableAPI)，这可能会对性能产生负面影响。

**注意**  
 [...] 指定显示值可能会导致性能问题，因为它不是直接从数据库读取数据，并且可能包括引用其他字段和记录。

#### 筛选器（通用）
<a name="filters-general"></a>

 *筛选器*行使用户能够根据多个字段和值标准缩小显示行的范围。

 所有筛选器都与 *AND* 或 *OR* 运算相结合。

 不使用自定义表时，以下字段可用（此列表将来会扩展）。

```
Active
Asset
Group
Assigned To
Escalation
Issue Number
Description
Priority
State
Type
Change Risk
Change State
Start Date
End Date
On Hold
```

 选择自定义表时，将自动从 ServiceNow API 填充字段。

##### 日期筛选条件
<a name="date-filters"></a>


|  时间字段  |  运算符  |  值  | 
| --- | --- | --- | 
|  打开时间  |  At or Before Today Not Today Before At or Before After At or After  |  timestamp javascript:gs.daysAgo(30)  | 
|  活动到期时间  |   |   | 
|  关闭时间  |   |   | 
|  到期日  |   |   | 
|  预计开始时间  |   |   | 
|  重新打开时间  |   |   | 
|  解决时间  |   |   | 
|  工作结束时间  |   |   | 
|  工作开始时间  |   |   | 
|  忽略时间  |   |   | 

 有关其他日期值，请参阅： https://developer.servicenow.com/app.do\$1\$1/api\$1doc？ v=newyork&id=r\$1sgsys-dateGenerate\$1s\$1s 

##### 运算符（通用，基于字符串）
<a name="operators-generalstring-based"></a>
+  Starts With 
+  Ends With 
+  like 
+  Not Like 
+  Equals 
+  Not Equals 
+  Is Empty 

##### 运算符（基于时间）
<a name="operators-time-based"></a>
+  Today 
+  Not Today 
+  Before 
+  At or Before 
+  晚于 
+  At or After 

##### 值
<a name="values"></a>

 值选择取决于选择的筛选器的类型。
+  布尔过滤器有 True/False 选项 
+  文本筛选器将允许键入任何值 
+  升级、优先级有一组固定的数值 

#### 排序依据
<a name="sort-by"></a>

 *排序依据*行使用户能够根据多个字段和值标准缩小显示行的范围。

 所有筛选器均与 *AND* 运算相结合。将添加对其他运算符的支持。

#### 限制
<a name="limit"></a>

 可以指定行限制以防止返回太多数据。默认值为 25。

#### 时间字段
<a name="time-field"></a>

 `Time Field` 是将您查询到的数据转换为时间序列的原因。将您的数据作为时间序列进行处理意味着所选“时间字段”中未落到控制面板/面板时间范围内的值将不会显示。

 使用的默认时间字段是“打开时间”，但可以将该字段更改为任何包含时间值的可用字段。

 提供了一个特殊值“忽略时间”，以允许结果“到目前为止”，并使筛选器能够控制显示哪些数据。

### AggregateAPI 查询（统计信息）
<a name="aggregateapi-queries-stats"></a>

 AggregateAPI 将始终返回指标，其中包含以下聚合：平均值、最小值、最大值、总和。筛选也可用于缩小查询范围。

#### 显示
<a name="show-1"></a>

 *显示*行为要显示的指标提供了一个选择器。也可以指定多个指标。

#### 筛选器（通用）
<a name="filters-general-1"></a>

 聚合*筛选器*提供了根据字段和值标准缩小显示指标范围的功能，类似于表选项。

 所有筛选器均与 *AND* 运算相结合。将添加对其他运算符的支持。

 统计筛选器选项与 TableAPI 相同。

#### 聚合
<a name="aggregation"></a>

 指标聚合有四种类型，外加一个“计数”：
+  平均值 
+  最小值 
+  最大值 
+  总和 
+  计数：计数将返回查询返回的指标的“数量” 

##### 分组依据
<a name="group-by"></a>

 此选择器可以将指标拆分为较小的聚合。按“优先级”分组将返回带有优先级“标签”的指标，其中的唯一值已分隔开。

### 模板化
<a name="templating-2"></a>

 您可以使用变量代替查询中的硬编码名称。变量显示为控制面板顶部的下拉选择框。您可以使用这些下拉框来更改控制面板上显示的数据。

 请参阅**查询变量**部分中的示例，了解如何添加查询变量并使用模板值引用该变量。

#### 查询变量
<a name="query-variable"></a>

 如果添加 `Query` 类型的模板变量，则可以编写一个查询，该查询可以返回目录名称、键名或键值等显示为下拉选择框的项目。

 例如，可以通过在模板变量 *Query* 设置中指定这样的查询，来获取包含 `categories` 的所有值的变量。

 选择**查询**设置时，将显示**筛选器**部分，允许您选择**类型**和**字段**。目前，**类型**仅限于事件和更改。选择类型时，系统会为您提供适用于该类型的字段列表。选择**类型**和**字段**后，底部将显示值的预览，显示该类型/字段的可用选项。这些值将显示在控制面板的下拉列表中，您可以将其与模板一起使用来筛选控制面板的面板上的数据。

 例如，如果您添加一个名为 *category* 的变量，然后选择“类型 = 事件”和“字段 = 类别”，那么将看到类型的选项列表。如果您随后向面板添加筛选器，并选择类别等于 \$1\$1category\$1，则面板数据将仅显示从控制面板下拉列表中选择的该类别的数据。

 导入**按类别划分的事件**控制面板以查看示例。

#### 在查询中使用变量
<a name="using-variables-in-queries"></a>

 共有两种语法：

 `$<varname>` 名为 `hostname` 的模板变量的示例：

 `[[varname]]` 名为 `hostname` 的模板变量的示例：

## 警报
<a name="servicenow-alerting"></a>

 支持标准 Grafana Alerting。图形面板中定义的任何查询都可用于生成警报。

 以下是查询示例和警报。此查询将返回所有未解决的重大高优先级事件的图形：

 当有超过五件未解决的重大高优先级事件时，将启动此警报：

 测试警报规则将显示警报规则的输出，选择状态历史记录将显示警报从正常过渡到待处理再到警报的过程。

 当警报处于待定状态时，图形视图将显示一条垂直线，顶部的心形图标将变为橙色。

 满足警报条件后，该规则将变为红色。

 在图形视图中，将出现红色垂直线，顶部的心形图标将变为红色。

### 为警报编写事件
<a name="writing-incidents-for-alerts"></a>

 **测试版功能** 
+  为您的 ServiceNow 数据源配置通知渠道。

 这将配置一个 [Grafana 通知](https://grafana.com/docs/grafana/latest/alerting/notifications/)渠道，该渠道使用您配置的用户在实例上为此数据 ServiceNow 源创建事件。

 此操作要求 ServiceNow 数据源用户具有写入事件的权限。

## Annotations
<a name="annotations-1"></a>

 截至该数据来源的 `v1.4.0`，Grafana 注释仍是一项**测试版功能**。注释使您能够在图表上叠加事件。

 “注释”查询支持与标准查询编辑器相同的选项，但有一些细微的区别：
+  只能选择一个“显示”列。这可能会在将来的改进中得到修复。
+  时间字段为必填项。

## 常见问题解答
<a name="faq-1"></a>

### 如果我们没有 ITSM 角色插件会怎样？
<a name="what-if-we-dont-have-the-itsm-roles-plugin"></a>

 **需要管理员访问权限才能执行以下操作** 

 选项 1：授予 Grafana 用户管理员权限以允许访问所有表。

 选项 2：创建角色并应用 ACLs 于 Grafana 必须访问的所有表。

 需要管理员访问权限才能执行以下操作。

1.  已登录的管理员需要提升对 security\$1admin 的访问权限级别。

   1.  在右上方的导航窗格中，选择个人资料图标。个人资料图标带有下拉插入符号指示器。

   1.  从下拉列表中，选择**提升角色**。

   1.  在显示的模态中，选中 **security\$1admin** 复选框。

   1.  选择确定。

1. 使用您想要的任何命名约定创建一个新角色。

   1.  导航到左侧导航栏中的“角色”部分：“系统安全”=>“用户和组”=>“角色” 

   1.  选择顶部的**新建**。

   1.  输入角色的名称和相关说明。

   1.  选择**提交**。

1.  创建新用户或修改具有所需角色的现有用户。

   1.  您在步骤 2 中创建的角色 

   1.  personalize\$1dictionary 

   1.  personalize\$1choices 

   1.  cmdb\$1read（这将授予对所有 cmdb 表的读取访问权限） 

1.  ACLs 为所需的表和字段创建表。

   1.  为 sys\$1db\$1object 表创建 ACL。

     1.  在第二个搜索标题列的**名称**中，输入 **sys\$1db\$1object**，然后按 **Enter**。

     1.  筛选结果应显示**表**。选择**表**以导航到记录。

     1.  在选项卡部分，选择**控件**。

     1.  在页面的下半部分，确保选择了**访问控制**选项卡。

     1.  要创建新 ACL，请选择**新建**。

     1.  更改**操作**选择以进行读取。

     1.  在屏幕下方的**需要角色**部分中，选择（双击）**插入新行**，然后搜索您创建的角色。

     1. 选择您创建的角色后，选择绿色复选标记。

     1.  选择屏幕下方的**提交**以创建 ACL，然后在出现模态时选择**继续**。

1.  ACLs 为特定的 sys\$1db\$1object 字段创建。必须对以下每个字段重复以下步骤：“名称”、“标签”、“显示名称”和“扩展”表。

   1.  如果您仍处于 sys\$1db\$1object 的表记录视图中，在最靠近屏幕顶部的选项卡组中选择**列**选项卡。

   1.  找到文件名并选择该文件名。

   1.  在下方的选项卡部分，在**访问控制**选项卡上选择**新建**。

   1.  将操作改为读取。

   1.  在底部的“需要角色”表格中选择（双击）以插入一行文本。

   1.  搜索并选择您创建的角色，并选择绿色复选标记。

   1.  选择**提交**。

   1.  请确保对所有必填字段重复这些步骤：“名称”、“标签”、“显示名称”和“扩展” 表。

1.  在“更改”、“事件”表以及要从 Grafana 查询的任何其他非 CMDB 表上重复 4.1 中的步骤。不要重复 4.2 中的步骤；只有在 sys\$1db\$1object 中才需要执行该步骤。

# 连接到 Snowflake 数据来源
<a name="snowflake-datasource-for-AMG"></a>

 借助 Snowflake Enterprise 数据来源，您可以将您的 Snowflake 数据与 Grafana 中的所有其他数据来源以及上下文中的日志和指标数据一起可视化。该数据来源包括强大的预输入查询编辑器，支持复杂的注释，可设置警报阈值，控制访问权限和权限等。

**注意**  
此数据来源仅适用于 Grafana Enterprise。有关更多信息，请参阅 [管理对 Enterprise 插件的访问](upgrade-to-enterprise-plugins.md)。  
此外，在支持版本 9 或更高版本的工作区中，此数据来源可能需要您安装相应的插件。有关更多信息，请参阅 [使用插件扩展您的工作区](grafana-plugins.md)。

## 概述
<a name="snowflake-overview"></a>

### 什么是 Snowflake？
<a name="what-is-snowflake"></a>

 Snowflake 提供基于云的数据存储和分析服务，通常称为 “数据 warehouse-as-a-service”，为数据仓库、数据湖、数据工程、数据科学、数据应用程序开发和数据共享提供解决方案。在过去的几年中 Snowflake 广受欢迎，原因在于它能够使用基于云的硬件和软件以经济实惠的方式存储和分析数据；最近，Snowflake 实现了有史以来最大规模的软件 IPO。如今，许多公司都在使用 Snowflake 作为其主要数据库来存储应用程序和业务数据，例如交易计数、活跃用户会话甚至是时间序列和指标数据。

### 充分利用 Snowflake 和 Amazon Managed Grafana
<a name="making-the-most-of-snowflake-and-AMG"></a>

 **无需移动 Snowflake 数据即可对其进行可视化**：Grafana 独特的架构可直接在数据所在的位置查询数据，而不是移动数据并支付冗余存储和摄取费用。

 **编写来自不同来源的面板：**使用预构建和自定义的控制面板，将来自许多不同数据来源的数据整合到一个窗格中。

 **在用户级别转换和计算：**用户可以转换数据，并对他们看到的数据执行各种计算，从而减少数据准备工作。

 **在面板中进行合并、计算和可视化**：创建混合数据来源面板，其中显示来自 Snowflake 和其他来源的相关数据。

### 功能
<a name="snowflake-features"></a>

 **查询编辑器：**该查询编辑器是一款 Smart SQL 自动完成编辑器，使您能够可视化时间序列或表数据、处理 SQL 语法错误以及自动完成基本的 SQL 关键字。

 **数据来源权限**：控制谁可以在 Grafana 中查看或查询 Snowflake 数据 

 **注释：**在任何 Grafana 图上叠加 Snowflake 事件，将事件与其他图形数据关联起来 

 **警报：**在 Snowflake 中设置基于警报的指标存储 

 **查询变量：**基于 Snowflake 数据在 Grafana 中创建模板变量，并在 Snowflake 查询中包含变量以制作交互式控制面板。

 **多指标查询：**编写一个返回多个指标的查询，每个指标都在自己的列中 

## Snowflake 插件入门
<a name="get-started-with-the-snowflake-plugin"></a>

 以下是开始使用 Grafana 中的 Snowflake 插件的五个快速步骤：

### 步骤 1：设置 Snowflake 数据来源
<a name="set-up-the-snowflake-data-source"></a>

 要配置数据来源，请选择**配置**、**数据来源**、**添加数据来源**、Snowflake。

 添加您的身份验证详细信息，即可查询数据来源！

 以下配置字段可用。


|  Name  |  说明  | 
| --- | --- | 
|  Account  |  Snowflake 账户。 | 
|  用户名  |  服务账户的用户名。 | 
|  密码  |  服务账户的密码。 | 
|  架构（可选）  |  设置查询的默认架构。 | 
|  仓库（可选）  |  为查询设置默认仓库。 | 
|  数据库（可选）  |  为查询设置默认数据库。 | 
|  角色（可选）  |  担任查询角色。 | 

### 步骤 2：为您的 Snowflake 数据编写查询
<a name="write-queries-for-your-snowflake-data"></a>

 在控制面板中创建一个面板，然后选择一个 Snowflake 数据来源开始使用查询编辑器。
+  日期/时间可以出现在查询中的任何地方，前提是它被包含在内。
+  必须包含数字列。这可以是聚合或 int/float 列。
+  或者，如果您的时间序列数据针对不同的指标进行了格式化，则可以包含字符串列来创建单独的数据序列。

#### Snowflake 查询的布局
<a name="layout-of-a-snowflake-query"></a>

```
select
  <time_column>,
  <any_numerical_column>
  <other_column_1>,
  <other_column_2>,
  <...>
from
  <any_table>
where
  $__timeFilter(<time_column>) // predefined where clause for time range
  and $<custom_variable> = 1 // custom variables start with dollar sign
```

#### 按间隔分组的时间序列的 SQL 查询格式
<a name="sql-query-format-for-timeseries-group-by-interval"></a>

```
select
  $__timeGroup(created_ts, '1h'), // group time by interval of 1h
  <time_column>, 
  <any_numerical_column>,
  <metric_column>
from
  <any_table>
where
  $__timeFilter(<time_column>) // predefined where clause for time range
  and $<custom_variable> = 1 // custom variables start with dollar sign
group by <time_column>
```

#### 表的 SQL 查询格式
<a name="sql-query-format-for-tables"></a>

```
select
  <time_column>, // optional if result format option is table
  <any_column_1>
  <any_column_2>
  <any_column_3>
from
  <any_table>
where
  $__timeFilter(time_column) // macro for time range, optional if format as option is table
  and $<custom_variable> = 1 // custom variables start with dollar sign
```

### 步骤 3：创建和使用模板变量
<a name="snowflake-create-and-use-template-variables"></a>

#### 使用模板变量
<a name="snowflake-using-template-variables-1"></a>

 您还可以在查询中包含模板变量，如以下示例所示。

```
 select
   <column>
 from 
   <table>
 WHERE column >= '$variable'
```

 以下示例演示了如何在查询中使用多值变量。

```
select
  <column>
from 
  <table>
WHERE <column> regexp '${variable:regex}'
```

#### 使用 Snowflake 数据来源创建变量
<a name="using-the-snowflake-datasource-to-create-variables"></a>

 在控制面板设置中，选择**变量**，然后选择**新建**。

 使用“查询”变量类型，选择 Snowflake 数据来源作为“数据来源”。

**重要**  
 确保在变量查询中只选择一列。

 示例：

```
SELECT DISTINCT query_type from account_usage.query_history;
```

 将为您提供以下变量：

```
All DESCRIBE USE UNKNOWN GRANT SELECT CREATE DROP SHOW
```

### 第 4 步：设置警报
<a name="snowflake-set-up-an-alert"></a>

 您可以针对特定的 Snowflake 指标或您创建的查询设置警报。

 在查询编辑器中选择警报选项卡按钮，然后选择**创建警报**。

### 步骤 5。创建注释
<a name="snowflake-create-an-annotation"></a>

 注释允许您在图表上叠加事件。

 要创建注释，请在控制面板设置中选择**注释**和**新建**，然后选择 Snowflake 作为数据来源。

 由于注释是事件，因此它们需要至少一个时间列和一个描述事件的列。

 以下示例代码显示了一个查询，用于注释所有失败的 Snowflake 登录。

```
SELECT
  EVENT_TIMESTAMP as time,
  EVENT_TYPE,
  CLIENT_IP
FROM ACCOUNT_USAGE.LOGIN_HISTORY
WHERE $__timeFilter(time) AND IS_SUCCESS!='YES'
ORDER BY time ASC;
```

 And 
+  时间：`TIME`
+  标题：`EVENT_TYPE`
+  文本：`CLIENT_IP`

 这将在您的控制面板上叠加所有失败的 Snowflake 登录的注释。

## 其他功能
<a name="additional-functionality"></a>

### 使用“显示名称”字段
<a name="snowflake-using-display-name"></a>

 此插件使用“选项”面板的“字段”选项卡中的“显示名称”字段，根据图例键的名称、标签或值来缩短或更改图例键。其他数据来源使用自定义 `alias` 功能来修改图例键，但是 Display Name 函数是更一致的操作方式。

### 数据来源权限
<a name="snowflake-data-source-permissions"></a>

 在数据来源配置页面中选择**权限**选项卡以启用数据来源权限，从而限制对 Snowflake 的访问权限。在权限页面上，管理员可以启用权限并将查询权限限制为特定的用户和团队。

### 了解您的 Snowflake 账单和使用情况数据
<a name="understand-your-snowflake-billing-and-usage-data"></a>

 在 Snowflake 数据来源中，您可以导入账单和使用情况控制面板，控制面板中显示有用的账单和使用情况信息。

 在 Snowflake 数据来源配置页面中添加控制面板：

 此控制面板使用 ACCOUNT\$1USAGE 数据库，并要求查询者具有 ACCOUNTADMIN 角色。要安全地执行此操作，请创建一个新的 Grafana 数据来源，该数据来源中包含具有 ACCOUNTADMIN 角色的用户。然后在变量中选择该数据来源。

# 连接到 Splunk 数据来源
<a name="splunk-datasource"></a>

**注意**  
此数据来源仅适用于 Grafana Enterprise。有关更多信息，请参阅 [管理对 Enterprise 插件的访问](upgrade-to-enterprise-plugins.md)。  
此外，在支持版本 9 或更高版本的工作区中，此数据来源可能需要您安装相应的插件。有关更多信息，请参阅 [使用插件扩展您的工作区](grafana-plugins.md)。

## 配置
<a name="splunk-configuration-3"></a>

### 数据来源配置
<a name="splunk-data-source-config"></a>

 配置数据来源时，请确保 URL 字段使用 `https` 并指向您配置的 Splunk 端口。默认 Splunk API 点是 8089，而不是 8000（这是默认的 Web UI 端口）。启用*基本身份验证*并指定 Splunk 用户名和密码。

#### 浏览器（直接）访问模式和 CORS
<a name="splunk-browser-direct-access-mode-and-cors"></a>

 Amazon Managed Grafana 不支持浏览器直接访问 Splunk 数据来源。

### 高级选项
<a name="splunk-advanced-options"></a>

#### 流模式
<a name="stream-mode"></a>

 如果您想在搜索结果可用时获取到这些结果，请启用流模式。这是实验性功能，在您真正需要它时再启用。

#### 轮询结果
<a name="splunk-poll-result"></a>

 运行搜索，然后定期检查结果。在后台，此选项在 `exec_mode` 设置为 `normal` 的情况下运行 `search/jobs` API 调用。在本例中，API 请求会返回作业 SID，然后 Grafana 会不时检查任务状态以获得任务结果。对于速度较慢的查询，此选项可能比较有用。默认情况下，此选项处于禁用状态，Grafana 将 `exec_mode` 设置为 `oneshot`，允许在同一 API 调用中返回搜索结果。在 [Splunk 文档](https://docs.splunk.com/Documentation/Splunk/latest/RESTREF/RESTsearch#search.2Fjobs)中查看有关 `search/jobs` API 端点的更多信息。

#### 搜索轮询间隔
<a name="splunk-search-polling-interval"></a>

 此选项允许调整 Amazon Managed Grafana 轮询 Splunk 以获取搜索结果的频率。从 [min, max) 间隔中随机选择下一次轮询的时间。如果您运行大量的搜索，那么增大这些值是有意义的。提示：如果搜索作业执行需要很长时间，则增大 *Min*，如果您运行大量并行搜索（Grafana 控制面板上有很多 Splunk 指标），则增大 *Max*。默认间隔为 [500, 3000) 毫秒。

#### 自动取消
<a name="auto-cancel"></a>

 如果指定该选项，则作业将在处于不活动状态达一定秒数后自动取消（0 表示从不自动取消）。默认值为 30。

#### 状态存储桶
<a name="status-buckets"></a>

 要生成的最多状态存储桶。0 表示不生成时间轴信息。默认值为 300。

#### 字段搜索模式
<a name="splunk-fields-search-mode"></a>

 使用可视化查询编辑器时，数据来源会尝试获取所选来源类型的可用字段列表。
+  快速：使用预览中第一个可用的结果 
+  完整：等待作业完成并获得完整结果。

#### 默认最早时间
<a name="default-earliest-time"></a>

 某些搜索无法使用控制面板的时间范围（例如模板变量查询）。此选项有助于始终阻止搜索，这可能会减慢 Splunk 的速度。语法是一个整数和一个时间单位 `[+|-]<time_integer><time_unit>`。例如 `-1w`。[时间单位](https://docs.splunk.com/Documentation/Splunk/latest/Search/Specifytimemodifiersinyoursearch)可以是 `s, m, h, d, w, mon, q, y`。

#### 变量搜索模式
<a name="splunk-variables-search-mode"></a>

 模板变量查询的搜索模式。可能的值：
+  fast：关闭事件搜索的字段发现。没有用于统计搜索的事件或字段数据。
+  smart：打开事件搜索的字段发现。没有用于统计搜索的事件或字段数据。
+  verbose：所有事件和字段数据。

## 用法
<a name="splunk-usage-5"></a>

### 查询编辑器
<a name="splunk-query-editor-2"></a>

#### 编辑器模式
<a name="splunk-editor-modes"></a>

 查询编辑器支持两种模式：原始模式和可视化模式。要在这些模式之间切换，请选择编辑器右侧的汉堡图标，然后选择*切换编辑器模式*。

#### 原始模式
<a name="raw-mode"></a>

 对时间序列数据使用 `timechart` 命令，如以下代码示例所示。

```
index=os sourcetype=cpu | timechart span=1m avg(pctSystem) as system, avg(pctUser) as user, avg(pctIowait) as iowait
index=os sourcetype=ps | timechart span=1m limit=5 useother=false avg(cpu_load_percent) by process_name
```

 查询支持模板变量，如以下示例所示。

```
sourcetype=cpu | timechart span=1m avg($cpu)
```

 请记住，Grafana 是面向时间序列的应用程序，您的搜索应返回时间序列数据（时间戳和值）或单个值。您可以阅读有关 [timechart](https://docs.splunk.com/Documentation/Splunk/latest/SearchReference/Timechart) 命令的信息，也可以在官方 [Splunk 搜索参考](https://docs.splunk.com/Documentation/Splunk/latest/SearchReference/WhatsInThisManual)中找到更多搜索示例 

#### Splunk 指标和 `mstats`
<a name="splunk-metrics-and-mstats"></a>

 Splunk 7.x 提供了 `mstats` 命令来分析指标。要使图表和 `mstats` 一起能正常运行，应将其与 `timeseries` 命令结合使用，并且必须设置 `prestats=t` 选项。

```
Deprecated syntax:
| mstats prestats=t avg(_value) AS Value WHERE index="collectd" metric_name="disk.disk_ops.read" OR metric_name="disk.disk_ops.write" by metric_name span=1m
| timechart avg(_value) span=1m by metric_name

Actual:
| mstats prestats=t avg(disk.disk_ops.read) avg(disk.disk_ops.write) WHERE index="collectd" by metric_name span=1m
| timechart avg(disk.disk_ops.read) avg(disk.disk_ops.write) span=1m
```

 阅读 [Splunk 搜索参考](https://docs.splunk.com/Documentation/Splunk/latest/SearchReference/Mstats)中有关 `mstats` 命令的更多信息。

#### 格式化为
<a name="format-as"></a>

 有两种支持的结果格式模式：*时间序列*（默认）和*表*。表模式适合在想要显示聚合数据时与“表”面板一起使用。这适用于原始事件（返回所有选定的字段）和 `stats` 搜索函数，后者返回类似表的数据。示例：

```
index="os" sourcetype="vmstat" | fields host, memUsedMB
index="os" sourcetype="ps" | stats avg(PercentProcessorTime) as "CPU time", latest(process_name) as "Process", avg(UsedBytes) as "Memory" by PID
```

 结果类似于 Splunk UI 中的*统计数据*选项卡。

 阅读 [Splunk 搜索参考](https://docs.splunk.com/Documentation/Splunk/latest/SearchReference/Stats)中有关 `stats` 函数用法的更多信息。

#### 可视化模式
<a name="splunk-visual-mode"></a>

此模式提供 step-by-step搜索创建。请注意，此模式会创建 `timechart` Splunk 搜索。只需选择索引、来源类型和指标，然后根据需要设置按字段拆分即可。

##### 指标
<a name="splunk-metric"></a>

 您可以通过选择指标行右侧的*加号*按钮来添加多个要搜索的指标。指标编辑器包含常用聚合列表，但您可以在此处指定任何其他函数。只需选择 agg 段（默认情况下为 `avg`），然后键入所需的内容即可。从下拉列表中选择感兴趣的字段（或输入字段），然后根据需要设置别名。

##### Split by 和 Where
<a name="split-by-and-where"></a>

 如果您设置了 Split by 字段并使用*时间序列*模式，则 Where 编辑器将可用。选择*加号*并选择运算符、聚合和值，例如 *Where avg in top 10*。注意，此 *Where* 子句是 *Split by* 的一部分。查看 [timechart 文档](https://docs.splunk.com/Documentation/Splunk/latest/SearchReference/timechart#where_clause)中的更多信息。

#### 选项
<a name="splunk-options"></a>

 要更改默认的 timechart 选项，请选择最后一行处的**选项**。

在 [timechart 文档](https://docs.splunk.com/Documentation/Splunk/latest/SearchReference/timechart)中查看有关这些选项的更多信息。

#### 呈现的 Splunk 搜索
<a name="rendered-splunk-search"></a>

 选择左侧的目标字母可折叠编辑器并显示呈现的 Splunk 搜索。

### Annotations
<a name="splunk-annotations-2"></a>

如果您想在图表上显示 Splunk 警报或事件，请使用注释。注释可以是预定义的 Splunk 警报，也可以是常规的 Splunk 搜索。

#### Splunk 警报
<a name="splunk-alert"></a>

 指定警报名称，或将该字段留空以获取所有已触发的警报。支持模版变量。

#### Splunk 搜索
<a name="splunk-search"></a>

 使用 Splunk 搜索来获取所需的事件，如以下示例所示。

```
index=os sourcetype=iostat | where total_ops > 400
index=os sourcetype=iostat | where total_ops > $io_threshold
```

 支持模版变量。

 如果要使用字段值作为注释文本，则可以使用**事件字段作为文本**选项。以下示例显示了日志中的错误消息文本。

```
Event field as text: _raw
Regex: WirelessRadioManagerd\[\d*\]: (.*)
```

 正则表达式允许提取消息的一部分。

### 模板变量
<a name="splunk-template-variables"></a>

 模板变量功能支持返回值列表的 Splunk 查询，例如使用 `stats` 命令。

```
index=os sourcetype="iostat" | stats values(Device)
```

 此查询返回 `iostat` 来源中的 `Device` 字段值列表。然后，您可以使用这些设备名称进行时间序列查询或注释。

 Grafana 中可以使用两种可能的变量查询类型。第一种类型是简单查询（如前所述），它返回一个值列表。第二种类型是可以创建 key/value 变量的查询。该查询应返回名为 `_text` 和 `_value` 的两列。`_text` 列值应该是唯一的（如果它不是唯一的，则使用第一个值）。下拉列表中的选项将具有文本和值，因此您可以将友好名称作为文本，将 ID 作为值。

 例如，此搜索会返回包含列 `Name`（Docker 容器名称）和 `Id`（容器 ID）的表。

```
source=docker_inspect | stats count latest(Name) as Name by Id | table Name, Id
```

 要使用容器名称作为变量的可见值并使用 ID 作为其实际值，应修改查询，如以下示例所示。

```
source=docker_inspect | stats count latest(Name) as Name by Id | table Name, Id | rename Name as "_text", Id as "_value"
```

#### 多值变量
<a name="splunk-multi-value-variables"></a>

 可以在查询中使用多值变量。插值搜索将取决于变量使用上下文。插件支持许多这样的上下文。假设有一个变量 `$container`，其中已选择值 `foo` 和 `bar`：
+  `search` 命令的基本筛选器 

  ```
  source=docker_stats $container
  =>
  source=docker_stats (foo OR bar)
  ```
+  字段值筛选器 

  ```
  source=docker_stats container_name=$container
  =>
  source=docker_stats (container_name=foo OR container_name=bar)
  ```
+  包含 `IN` 运算符和 `in()` 函数的字段值筛选器 

  ```
  source=docker_stats container_name IN ($container)
  =>
  source=docker_stats container_name IN (foo, bar)
  
  source=docker_stats | where container_name in($container)
  =>
  source=docker_stats | where container_name in(foo, bar)
  ```

#### 多值变量和引号
<a name="multi-value-variables-and-quotes"></a>

 如果变量用引号（双引号或单引号）括起来，则其值也将被引号括起来，如以下示例所示。

```
source=docker_stats container_name="$container"
=>
source=docker_stats (container_name="foo" OR container_name="bar")

source=docker_stats container_name='$container'
=>
source=docker_stats (container_name='foo' OR container_name='bar')
```

# 连接到 Splunk 基础设施监控数据来源
<a name="AMG-datasource-splunkinfra"></a>

为 Splunk 基础设施监控（以前称为 SignalFx）提供支持。

**注意**  
此数据来源仅适用于 Grafana Enterprise。有关更多信息，请参阅 [管理对 Enterprise 插件的访问](upgrade-to-enterprise-plugins.md)。  
此外，在支持版本 9 或更高版本的工作区中，此数据来源可能需要您安装相应的插件。有关更多信息，请参阅 [使用插件扩展您的工作区](grafana-plugins.md)。

## 添加数据来源
<a name="bigquery-adding-the-data-source"></a>

1.  在 Amazon Managed Grafana 工作区中打开 Grafana 控制台，并确保您已登录。

1.  在**配置**（齿轮图标）下的侧边菜单中，选择**数据来源**。

1.  选择**添加数据来源**。
**注意**  
 如果您在侧边菜单中看不到**数据来源**链接，则表示您当前的用户没有 `Admin` 角色。

1.  从数据来源列表中选择 **Splunk 基础设施监控**。

1. 输入以下信息：
   + 在**访问令牌**中，输入您的 SignalFx 账户生成的令牌。有关更多信息，请参阅[身份验证令牌](https://docs.signalfx.com/en/latest/admin-guide/tokens.html)。
   + **领域**是一种独立的部署环境，用于托管您的组织。登录 SignalFx 用户界面后，您可以在个人资料页面上找到您的领域名称。

## 使用 查询编辑器
<a name="splunkinfra-query"></a>

查询编辑器接受[ SignalFlow](https://dev.splunk.com/observability/docs/signalflow/)程序/查询。

对于标签，SignalFlow 标签 `publish(label = 'foo')` 将作为元数据应用于结果：**"label":"foo"**

对于查询类型模板变量，没有**查询**字段。相反，您可以从以下查询类型中选择一种：
+ Dimensions
+ Metrics
+ 标签

支持临时筛选条件，允许使用维度进行全局筛选。

支持 Grafana 注释。创建注释时，请使用 “ SignalFlow警报” 或 “事件” 查询。

获取检测器警报的示例：

```
alerts(detector_name='Deployment').publish();
```

按类型获取自定义事件的示例：

```
events(eventType='simulated').publish();
```

# 连接到 Wavefront 数据源（Wavefront 的 VMware Tanzu 可观测性）
<a name="wavefront-datasource-for-AMG"></a>

 Wavefront（Wavefront 的 Tanz VMware u 可观测性）数据源使 Amazon Managed Grafana 用户能够查询和可视化他们直接从 Wavefront 收集的数据，并轻松将其与任何其他指标、日志、跟踪或其他数据源一起可视化。这种灵活的单一窗格视图使跟踪系统运行状况和调试问题变得更加容易。

**注意**  
此数据来源仅适用于 Grafana Enterprise。有关更多信息，请参阅 [管理对 Enterprise 插件的访问](upgrade-to-enterprise-plugins.md)。  
此外，在支持版本 9 或更高版本的工作区中，此数据来源可能需要您安装相应的插件。有关更多信息，请参阅 [使用插件扩展您的工作区](grafana-plugins.md)。

## 什么是 Wavefront？
<a name="what-is-wavefront"></a>

 [Wavefron](https://www.wavefront.com) t 是由 VMware开发的云监控和分析工具。Wavefront 是一项云托管服务，你可以在其中发送来自 CollectD、Statsd、JMX、Ruby 的记录器或其他工具的时间序列（指标）数据。 AWS借助 Wavefront，用户可以对这些系列执行数学运算、渲染图表以查看异常 KPIs、跟踪和创建警报。

## 利用 Wavefront 和 Grafana 最大限度利用您的技术堆栈
<a name="maximizing-your-tech-stack-with-wavefront-and-AMG"></a>

 虽然从表面上看，Grafana 和 Wavefront 听起来很相似，但许多组织同时使用 Wavefront 和 Grafana 作为其可观测性工作流的关键部分。

 **无需移动数据来源即可实现可视化：**Grafana 的独特架构可直接查询数据所在的位置，而不是移动数据并为冗余存储和摄取付费。

 **编写来自不同来源的面板：**使用预构建和自定义的控制面板，将来自许多不同数据来源的数据整合到一个窗格中。

 **在用户级别转换和计算：**用户可以转换数据，并对他们看到的数据执行各种计算，从而减少数据准备工作。

 **在面板中合并、计算和可视化：**创建混合数据来源面板，显示来自 Waveferont 和其他来源（例如 Prometheus 和 InfluxDB）的相关数据。

## 文档
<a name="wavefront-documentation"></a>

### 功能
<a name="wavefront-features-3"></a>
+  时间序列可视化 
+  表可视化 
+  热图可视化 
+  单一统计可视化 
+  引导式查询编辑器 
+  原始 WQL 查询编辑器 
+  事件数据注释 
+  模板变量 
+  临时筛选条件 
+  警报 

### 配置
<a name="wavefront-configuration-4"></a>

 配置 Wavefront 数据来源相对简单。完成配置只需要两个字段：`API URL` 和 `Token`。
+  `API URL` 是用于访问 wavefront 环境的 URL。示例：`https://myenvironment.wavefront.com`。
+  `Token` 必须由用户账户或服务账户生成。

  1.  要创建基于用户账户的令牌，请登录 Wavefront 环境，选择页面右上角的齿轮，选择您的用户名（例如 `me@grafana.com`），选择用户页面顶部的 **API 访问**选项卡，然后复制现有密钥或选择**生成**。

  1. 要创建基于服务账户的令牌，请登录 Wavefront 环境，选择页面右上角的齿轮，然后选择账户管理。在左侧导航栏中，选择**账户、组和角色**，选择顶部的**服务账户**选项卡，然后选择**创建新账户**。输入服务账户的名称。可根据个人喜好输入。复制**令牌**部分下提供的令牌。

  1. 最后一步是确保在**权限**下选中**账户、组和角色**复选框。

 获得令牌后，将其添加到 `Token` 配置字段，这样就设置完成！

 最终的配置页面应如下所示：

### 用法
<a name="wavefront-usage-6"></a>

#### 使用 查询编辑器
<a name="wavefront-using-the-query-editor"></a>

 Wavefront 查询编辑器有两种模式：**查询生成器**和**原始查询**。要切换两种模式，请使用查询表单右上角的选择器：

 在**查询生成器**模式下，有四个选项可供选择：

1.  您要查询哪些指标？ 

1.  您想对该指标执行哪种聚合？ 

1.  您想如何筛选指标查询结果？ 

1.  是否要对结果应用其他函数？ 

 指标选择器是一个分类层次结构。选择一个类别，然后再次选择以深入查看子类别。重复此过程，直到达到所需的指标。

 选择指标后，将自动为您填充可用的筛选条件和筛选条件值。

 在**原始查询**模式下，您将看到一个标有**查询**的字段。这让您可以执行任何 [WQL](#wavefront-references) 查询。

#### 使用筛选条件
<a name="wavefront-using-filters-1"></a>

 Wavefront 插件将动态查询每个指标的相应筛选条件。

 要添加筛选条件，请在 Wavefront 查询编辑器上选择**筛选条件**标签旁边的 **\$1**，选择要筛选的字段，然后选择要作为筛选依据的值。

#### 使用函数
<a name="wavefront-using-functions"></a>

 函数提供了另一种聚合、操作和计算指标响应数据的方法。要查看可用函数，请选择**查询生成器**上函数标签旁边的下拉列表。根据您选择的函数，您将能够执行进一步的操作，例如按字段设置分组或应用阈值。用户能够将多个函数链接在一起，以执行高级计算或数据操作。

#### 添加查询模板变量
<a name="wavefront-adding-a-query-template-variable-1"></a>

1.  要为控制面板创建新的 Wavefront 模板变量，请选择控制面板右上角的设置齿轮。

1.  在左侧窗格中，选择**变量**。

1.  在变量页面的右上角，选择**新建**。

1.  为要创建的模板变量输入**名称**和**标签**。**名称**是您将在查询中用来引用模板变量的值。**标签**是一个人性化名称，用于在控制面板选择面板上显示模板变量。

1.  为类型字段选择**查询**类型（默认为选中）。

1.  在**查询选项**标题下，在**数据来源**下拉列表中选择 **Wavefront**。

1.  有关应在**查询**字段中输入的内容的详细信息，请参阅[模板变量查询结构](#template-variable-query-structure)。

1.  如果要从查询中筛选任何返回值，请在**正则表达式**输入字段中输入正则表达式。

1.  通过在**排序**下拉列表中选择排序类型，应用您可能有的任何排序首选项。

1.  验证配置后，选择**添加**以添加模板变量，然后选择左侧导航面板上的**保存控制面板**以保存更改。

#### 模板变量查询结构
<a name="template-variable-query-structure"></a>

 metric lists: metrics: ts(…) 

 source lists: sources: ts(…) 

 source tag lists: sourceTags: ts(…) 

 匹配的源标签列表: matchingSourceTags: ts (...) 

 tag name lists: tagNames: ts(…) 

 tag value lists: tagValues(<tag>): ts(…) 

 **备注** 
+  每个查询类型末尾的 s 是可选的 
+  支持全部小写。您可以使用 tagnames 或 tagNames，但不能使用 TAGNAMES。
+  : 两边的空格是可选的 

   **WARNING** 

   Wavefront 插件目前不支持 `Multi-value` 和 `Include All option`。

#### 使用模板变量
<a name="wavefront-using-template-variables-2"></a>

 完成[添加新模板变量](#wavefront-adding-a-query-template-variable-1)的步骤后，您现在可以在控制面板中使用模板变量来创建动态可视化。

1.  使用控制面板右上角的面板 \$1 图标，添加新的控制面板面板。

1.  选择要用于查询的聚合。

1.  选择**筛选条件**标签旁边的 \$1 图标，然后选择与您的模板变量匹配的键类型。例如，`host=` 表示主机筛选条件。

1.  在筛选条件的**值**输入字段中输入您创建的模板变量的名称。

1.  保存控制面板。

 现在，您应该能够循环浏览模板变量的不同值，并动态更新面板！

#### 使用临时筛选条件
<a name="wavefront-using-ad-hoc-filters"></a>

 要使用临时筛选条件，必须创建两个模板变量。第一个是辅助变量，用于选择指标，以便为该指标名称填充临时筛选条件。另一个是实际的临时筛选条件变量。

**重要**  
 所需的辅助变量必须命名为 `metriclink`。该变量可以是包含您要使用的指标列表的自定义变量，也可以是使用[模板变量查询结构](#template-variable-query-structure)的基于查询的变量。如果只想用单个指标中的值填充临时筛选条件字段，可以隐藏 `metriclink` 模板变量。

 创建 `metriclink` 变量后，您现在可以按照[添加查询模板变量](#wavefront-adding-a-query-template-variable-1)中详述的相同步骤添加临时筛选条件。不同之处在于，您将选择**临时筛选条件**作为**类型**，并且查询不需要输入。

#### 添加注释
<a name="wavefront-adding-annotations"></a>

1.  要为控制面板创建新的 Wavefront 注释，请选择控制面板右上角的设置齿轮。

1.  在左侧面板中，选择**注释**。

1.  在注释页面的右上角，选择**新建**。

1.  输入注释的名称（这将用作控制面板上切换开关的名称）。

1.  选择 Wavefront 的**数据来源**。

1.  默认情况下，注释最多可返回 100 个警报事件。若要更改，请将**限制**字段设置为所需的值。

1.  选择**添加**。

#### 使用注释
<a name="using-annotations"></a>

 打开注释后，您现在应该会看到与给定时间段相关的警报事件和问题。

 如果您将鼠标悬停在可视化的注释部分底部，将显示一个弹出窗口，其中显示警报名称，并提供指向 Wavefront 中警报的直接链接。

#### 使用“显示名称”字段
<a name="wavefront-using-display-name-1"></a>

 此数据来源使用“选项”面板的“字段”选项卡中的“显示名称”字段，根据其名称、标签或值来缩短或更改图例键。其他数据来源使用自定义 `alias` 功能来修改图例键，但是 Display Name 函数是更一致的操作方式。

### 参考
<a name="wavefront-references"></a>
+  [WQL（Wavefront 查询语言）](https://docs.wavefront.com/query_language_reference.html) 

# 使用 Grafana 版本 10
<a name="using-grafana-v10"></a>

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

创建 Grafana 工作区时，您可以选择使用哪个版本的 Grafana。以下主题介绍了如何使用运行 Grafana 版本 10 的 Grafana 工作区。

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

# Grafana 10 中的控制面板
<a name="v10-dashboards"></a>

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

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

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

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

# 使用控制面板
<a name="v10-dash-using-dashboards"></a>

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

本主题概述了控制面板的功能和快捷方式，并介绍了如何使用控制面板搜索。

## 功能
<a name="v10-dash-features"></a>

您可以使用控制面板自定义数据的表示形式。下图显示了 Amazon Managed Grafana 工作区中的控制面板界面。

![\[该图显示了 Amazon Managed Grafana 工作区中控制面板的界面，其中突出显示了不同功能的按钮。\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/AMG-dashboard-overview-v10.png)



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

## 键盘快捷键
<a name="v10-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="v10-dash-setting-dashboard-time-range"></a>

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

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

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

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

减号运算符可以回退时间（相对于当前日期和时间或 `now`）。如果要显示单位的完整周期（日、周或月），请在末尾附加 `/<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 年”**、“昨天”**、“前天”**、“上周今天”**、“本日至今”**、“本周至今”**和“本月至今”**。
+ 可通过两种方式设置**绝对时间范围**：在**从**和**到**字段中输入确切的时间值或相对时间值，然后单击**应用时间范围**，或者在单击**从**或**到**字段时，从显示的日历中单击日期或日期范围。要应用选择，请单击**应用时间范围**。您也可以从最近使用的绝对时间范围列表中选择。
+ 可以在绝对时间范围设置中选择**半相对时间范围**。例如，要显示自特定日期以来的活动，您可以选择绝对时间作为开始时间，选择相对时间（如 `now`）作为结束时间。

  使用半相对时间范围，随着时间的推移，您的控制面板将自动逐步缩小，以显示更多的历史记录和更少的详细信息。同样，随着高数据分辨率的降低，整个时间段的历史趋势将变得更加清晰。
**注意**  
警报不支持半相对时间范围。
+ 选择缩小图标（或使用 Cmd\$1Z 或 Ctrl\$1Z 作为键盘快捷键）来**缩小**。这将增加视图，在控制面板或面板可视化中显示更大的时间范围。
+ 选择要在可视化图形上查看的时间范围来**放大**。
**注意**  
放大仅适用于图形可视化。

**刷新控制面板**

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

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

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

您可以通过在控制面板 URL 中提供以下查询参数来控制面板的时间范围。
+ `from` 定义时间范围的下限（以毫秒纪元为单位指定）或[相对时间](#v10-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="v10-dash-building-dashboards"></a>

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

创建 Grafana 工作区并登录后，您可以创建控制面板并修改设置以满足您的需求。控制面板由[可视化面板](v10-panels-viz.md)组成。每个面板都有一个与之关联的查询，用于从其中一个 [连接到数据来源](AMG-data-sources.md) 提取数据。

您可以通过添加和使用[变量](v10-dash-variables.md)来创建更具交互性和动态性的控制面板。您可以在指标查询中使用变量代替服务器、应用程序或其他名称等硬编码。

**Topics**
+ [创建控制面板](v10-dash-creating.md)
+ [导入控制面板](v10-dash-importing.md)
+ [导出控制面板](v10-dash-exporting.md)
+ [修改控制面板设置](v10-dash-modify-settings.md)
+ [控制面板 URL 变量](v10-dash-dashboard-url-variables.md)
+ [管理库面板](v10-dash-manage-library-panels.md)
+ [管理控制面板版本历史记录](v10-dash-manage-version-history.md)
+ [管理控制面板链接](v10-dash-manage-dashboard-links.md)
+ [对可视化进行注释](v10-dash-annotations.md)
+ [控制面板 JSON 模型](v10-dash-dashboard-json-model.md)
+ [控制面板的最佳实践](v10-dash-bestpractices.md)

# 创建控制面板
<a name="v10-dash-creating"></a>

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

**创建控制面板**

您可以在控制面板和面板上使用 Grafana 以可视化形式显示数据。每个面板至少需要一次查询才能显示可视化效果。在开始之前，请满足以下先决条件。
+ 确保您拥有适当的权限。有关权限的更多信息，请参阅 [用户、团队和权限](Grafana-administration-authorization.md)。
+ 确定要向其中添加面板的控制面板。
+ 了解目标数据来源的查询语言。
+ 确保已添加要为其编写查询的数据来源。有关更多信息，请参阅 [连接到数据来源](AMG-data-sources.md)。

 创建控制面板：

1. 登录 Grafana，然后从左侧菜单中选择**控制面板**。

1. 依次选择**新建**和**新建控制面板**。

1. 在空的控制面板上，选择 **\$1 添加可视化**。这将打开新的可视化对话框。

1. 选择数据来源。您可以选择现有数据来源、Grafana 的内置数据来源之一进行测试，或者选择**配置新数据来源**以设置新数据来源（只有具有管理员权限的用户才能配置新的数据来源）。

   **编辑面板**视图将会打开，您的数据来源处于选中状态。如果需要，您可以稍后使用面板编辑器的**查询**选项卡更改面板的数据来源。

1. 使用数据来源的查询语言编写或构造查询。选择刷新控制面板图标以对数据来源执行查询，并随时查看结果。

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

1. 在**面板选项**下，您可以输入面板的标题和描述。

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

1. 配置完面板后，选择**保存**以保存控制面板。

   或者，选择**应用**，无需离开面板编辑器即可查看更改。

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

1. 选择**保存**。

1. 或者，您可以在控制面板标题中选择**添加**，然后从下拉列表中选择**可视化**，向控制面板添加更多面板。

**复制现有控制面板**

您可以快速复制现有控制面板，以快速开始创建新的控制面板。

**复制现有控制面板**

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

1. 选择要复制的控制面板，将其打开。

1. 选择控制面板右上角的**设置**（齿轮图标）。

1. 选择控制面板右上角的**另存为**。

1. （可选）指定名称、文件夹、描述，以及是否复制已复制控制面板的原始控制面板标签。

1. 选择**保存**。

**配置重复行**

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

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

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

**配置重复行**

1. 从左侧菜单中选择**控制面板**，然后选择要修改的控制面板。

1. 在控制面板顶部，选择**添加**，然后从下拉列表中选择**行**。

   如果控制面板为空，您也可以选择控制面板中间的 **\$1 添加行**按钮。

1. 将鼠标悬停在行标题上，然后选择显示的**设置**（齿轮）图标。

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

1. 选择**更新**。

**重复行和控制面板特殊数据来源**

如果一行包含使用特殊[控制面板](AMG-data-sources.md#AMG-data-sources-special)数据来源的面板（该数据来源使用同一控制面板中另一面板的结果集），则重复行中的相应面板将引用原始行中的面板，而不是重复行中的面板。

例如，在控制面板中：
+ `Row 1` 包括 `Panel 1A` 和 `Panel 1B`。
+ `Panel 1B` 通过 `Dashboard` 数据来源使用 `Panel 1A` 的结果。
+ 重复 `Row 2` 包括 `Panel 2A` 和 `Panel 2B`。
+ `Panel 2B` 引用 `Panel 1A`，而不是 `Panel 2A`。

**移动面板**

1. 打开控制面板。

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

**调整面板大小**

1. 打开控制面板。

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

# 导入控制面板
<a name="v10-dash-importing"></a>

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

您可以将预配置的控制面板导入 Amazon Managed Grafana 工作区。

**导入控制面板**

1. 登录您的 Amazon Managed Grafana 工作区。

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

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

1. 接下来，您需要选择要导入的控制面板 JSON 定义。对于如何导入 JSON，您有三种选择：
   + 上传包含控制面板 JSON 的文件。
   + 直接将 JSON 文本复制到文本区域。
   + 将 Grafana Labs 控制面板 URL 或 ID 粘贴到字段中。有关 grafana.com 控制面板的更多信息 URLs，请参阅下一节。
   + （可选）更改您想要更改的任何控制面板详细信息。
   + 如果需要，请选择一个数据来源。
   + 选择**导入**。
   + 保存控制面板。

## 在 grafana.com 上查找控制面板
<a name="v10-dash-import-from-grafana"></a>

grafana.com 上的[控制面板](https://grafana.com/grafana/dashboards/)页面提供了常见服务器应用程序的控制面板。浏览官方和社区构建的控制面板库，然后将其导入以快速启动和运行。

**注意**  
要从 grafana.com 导入控制面板，您的 Amazon Managed Grafana 工作区必须能够访问互联网。

# 导出控制面板
<a name="v10-dash-exporting"></a>

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

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

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

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

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

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

**导出控制面板**

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

1. 选择共享图标。

1. 选择**导出**。

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

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

# 修改控制面板设置
<a name="v10-dash-modify-settings"></a>

****  
本文档主题专为支持 **Grafana 10.x 版本**的 Grafana 工作区而设计。  
对于支持 Grafana 9.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 9](using-grafana-v9.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 值。
   + **隐藏时间选取器**：如果您不希望控制面板显示时间选取器，请选择此选项。

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

**添加注释查询**

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

**添加注释查询**

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

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

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

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

查询编辑器 UI 会根据您选择的数据来源而变化。有关如何构造查询的详细信息，请参阅[数据来源](AMG-data-sources.md)文档。或者，对于从 [使用插件目录查找插件](grafana-plugins.md#plugin-catalog) 中安装的数据来源插件，您可以使用 [Grafana Labs 网站上的文档](https://grafana.com/docs/grafana/v10.3/datasources/)。

**添加变量**

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

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

**添加变量**

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

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

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

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

**添加链接**

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

**添加链接**

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

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

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

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

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

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

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

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

# 控制面板 URL 变量
<a name="v10-dash-dashboard-url-variables"></a>

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

Grafana 可以应用在控制面板中作为查询参数传递的变量值。 URLs有关更多信息，请参阅[管理控制面板链接](v10-dash-manage-dashboard-links.md)以及[模板和变量](v10-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 可以将变量添加到控制面板链接中。有关添加变量的更多信息和步骤，请参阅[管理控制面板链接](v10-dash-manage-dashboard-links.md)。

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

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

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

例如，在此 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="v10-dash-manage-library-panels"></a>

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

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

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

**创建库面板**

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

**创建库面板**

1. 在编辑模式下打开要转换为库面板的面板。

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

1. 选择**库面板**，然后选择 **\$1 新建库面板**。这将打开创建对话框。

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

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

1. 选择**创建库面板**以保存对库的更改。

1. 保存控制面板。

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

您也可以选择**更多...**，然后选择**创建库面板**，直接从面板的编辑菜单创建库面板。

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

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

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

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

1. 选择**新建**，然后从下拉列表中选择**新建控制面板**。

1. 在空的控制面板上，选择 **\$1 导入库面板**。您将看到库面板的列表。

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

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

**取消链接库面板**

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

**取消链接库面板**

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

1. 选择**库面板**。

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

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

1. 选择面板标题（或将指针悬停在面板上的任意位置），以在面板的右上角显示操作菜单。

1. 选择**编辑**。该面板将在编辑模式下打开。

1. 选择页面右上角的**取消链接**。

1. 选择**是，取消链接**。

**查看库面板列表**

您可以查看可用库面板列表并搜索库面板。

**查看库面板列表**

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

1. 选择**库面板**。您可以看到先前定义的库面板列表。

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

**删除库面板**

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

**删除库面板**

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

1. 选择**库面板**。

1. 选择要删除的面板的库面板名称旁边的删除图标。

# 管理控制面板版本历史记录
<a name="v10-dash-manage-version-history"></a>

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

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

**注意**  
控制面板的最近 20 个版本已保存。

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

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

要比较两个控制面板版本，请从列表中选择要比较的两个版本。单击**比较版本**以查看两个版本之间的差异。这将显示版本差异视图。默认情况下，您将看到更改的文本摘要。

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

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

如果需要恢复到之前保存的控制面板版本，可以选择控制面板版本列表中一行右侧的**恢复**按钮，或者在差异视图中选择**恢复到版本 *<x>*** 按钮。选择其中任何一项都将提示您确认恢复。

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

# 管理控制面板链接
<a name="v10-dash-manage-dashboard-links"></a>

****  
本文档主题专为支持 **Grafana 10.x 版本**的 Grafana 工作区而设计。  
对于支持 Grafana 9.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 9](using-grafana-v9.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 问题。

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

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

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

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

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

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

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

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

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

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

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

**将 URL 链接添加到控制面板**

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

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

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

1. 从下面选择链接选项。
   + **URL**：输入要链接的 URL。根据目标，您可能希望包含字段值。
   + **标题**：输入您希望链接显示的标题。
   + **标题**：输入您希望链接显示的工具提示。
   + **图标**：选择要与链接一起显示的图标。
   + **时间范围**：选择此选项可在链接中包含控制面板的时间范围。当用户单击链接时，链接的控制面板将会打开，并显示设置的指示时间范围。
     + `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. 选择**添加**。

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

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

**更新控制面板**

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

1. 更改设置，然后选择**更新**。

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

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

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

要删除现有控制面板链接，请选择要删除的链接旁边的垃圾桶图标。

**面板链接**

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

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

  1. 将光标悬停在要添加链接的面板上。

  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. 从菜单中选择**编辑**。

     还可以使用键盘快捷键 `e`。

  1. 展开**面板选项**部分，然后向下滚动到**面板链接**。

  1. 找到要更改的链接，然后选择其旁边的**编辑**（铅笔）图标。

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

  1. 选择**保存**以保存更改并关闭窗口。

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

  1. 选择一个面板（或将光标放在面板上）以在面板的右上角显示操作菜单。

  1. 从菜单中选择**编辑**。

     还可以使用键盘快捷键 `e`。

  1. 展开**面板选项**部分，然后向下滚动到**面板链接**。

  1. 找到要删除的链接，然后选择其旁边的 **X** 图标。

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

# 对可视化进行注释
<a name="v10-dash-annotations"></a>

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

注释提供了一种用丰富的事件在可视化上标记点的方法。注释在所有图形面板上都显示为垂直线和图标。将鼠标悬停在注释上时，可以获取事件描述和事件标签。文本字段可以包含指向其他系统的链接，并提供更多详细信息。

您可以通过三种方式对可视化进行注释：
+ 直接在面板中，使用[内置的注释查询](#v10-dash-built-in-query)。
+ 使用 Grafana HTTP API。
+ 在控制面板设置中配置注释查询。

在前两种情况下，您需要创建新的注释，而在最后一种情况下，您需要从数据来源中查询现有注释。内置的注释查询也支持此功能。

本节介绍了第一和第三个选项；有关使用 Grafana HTTP API 的信息，请参阅 [注释 API](Grafana-API-Annotations.md)。

以下可视化类型支持注释：
+ 时间序列 
+ 状态时间轴
+ K 线图

## 在面板中创建注释
<a name="v10-dash-create-annotations-in-panels"></a>

Grafana 允许使用所有控制面板上存在的[内置注释查询](#v10-dash-built-in-query)直接从面板添加注释事件。以这种方式创建的注释存储在 Grafana 中。

要直接在面板中添加注释：
+ 必须已保存控制面板。
+ 必须启用内置查询。

**添加注释**

1. 在控制面板中，选择要向其添加注释的面板。将出现一个上下文菜单。

1. 在上下文菜单中，选择**添加注释**。

1. （可选）添加注释描述和标签。

1. 选择**保存**。

或者，要添加注释，请在选择面板时按下 `Ctrl`（或 `Cmd`），此时将显示**添加注释**弹出窗口。

**区域注释**

您还可以创建覆盖可视化中某个区域或时间段的注释。

**添加区域注释**

1. 在控制面板中，按住 `Ctrl`（或 `Cmd`）并选择面板的某个区域。

1.  添加注释描述和标签（可选）。

1.  单击**保存**。

**编辑注释**

1. 在控制面板中，将鼠标悬停在面板中的注释指示器上。

1. 选择注释工具提示中的**编辑**（铅笔）图标。

1. 修改描述 and/or 标签。

1. 选择**保存**。

**删除注释**

1. 在控制面板中，将鼠标悬停在面板中的注释指示器上。

1. 选择注释工具提示中的**删除**（垃圾桶）图标。

## 通过控制面板设置获取注释
<a name="v10-dash-fetch-annotations"></a>

在控制面板设置的**注释**下，您可以添加新查询以使用任何数据来源获取注释，包括内置数据注释数据来源。注释查询返回的事件可以在控制面板上的图形中可视化为事件标记。

**添加新的注释查询**

1. 选择控制面板标题中的**设置**（齿轮）图标以打开设置菜单。

1. 选择**注释**。

1. 单击**添加注释查询**。

1. 输入注释查询的名称。

   此名称被赋予切换功能，允许您启用此查询中显示的注释事件。

1. 选择注释的数据来源。

   您还可以选择**打开高级数据来源选取器**以查看更多选项，包括添加数据来源（仅供管理员使用）。

1. 如果不想立即使用注释查询，请清除**启用**复选框。

1. 如果不想在控制面板中显示注释查询切换，请选中**隐藏**复选框。

1. 选择事件标记的颜色。

1. 在**显示位置**下拉列表中，选择以下选项之一：
   + **所有面板**：注释显示在所有支持注释的面板上。
   + **选定面板**：注释显示在您选择的所有面板上。
   + **除此以外的所有面板**：注释显示在除您选择的面板之外的所有面板上。

1. 配置查询。

   每个数据来源的注释查询选项都不同。有关特定数据来源中注释的信息，请参阅 [连接到数据来源](AMG-data-sources.md)。

## 内置查询
<a name="v10-dash-built-in-query"></a>

添加注释后，将仍然可见。这是因为所有控制面板上都存在内置的注释查询。此注释查询将获取源于当前控制面板（存储在 Grafana 中）的所有注释事件，并将其显示在创建事件的面板上。这包括警报状态历史记录注释。

默认情况下，内置注释查询使用 `Grafana` 特殊数据来源，仅支持使用此数据来源进行手动注释。您可以在内置注释查询中使用其他数据来源，但只能使用该数据来源的查询编辑器创建自动注释。

要直接向控制面板添加注释，必须启用此查询。

**确认内置查询已启用**

1. 选择控制面板标题中的控制面板**设置**（齿轮）图标以打开控制面板设置菜单。

1. 选择**注释**。

1. 查找**注释和警报（内置）**查询。

   如果查询名称前显示**已禁用**，则需要选择查询名称以将其打开并更新设置。

**阻止获取和绘制注释**

1. 选择控制面板标题中的控制面板**设置**（齿轮）图标以打开控制面板设置菜单。

1. 选择**注释**。

1. 选择**注释和警报（内置）**查询。

1. 选择**启用**开关将其关闭。

当您使用**另存为**功能复制控制面板时，将获得一个新的控制面板 ID，因此在来源控制面板上创建的注释将不再显示在副本上。如果您添加新的**注释查询**并按标签筛选，则仍然可以显示。但只有当来源控制面板上的注释具有可筛选的标签时，这才有效。

**按标签筛选查询**

您可以将**筛选依据**设置为 `Tags` 来创建新的查询，以通过 `Grafana` 数据来源从内置注释查询获取注释。

例如，创建注释查询名称 `outages` 并指定标签 `outage`。此查询将显示带有 `outage` 标签的所有注释（来自任何控制面板或通过 API）。如果在注释查询中定义了多个标签，Grafana 将仅显示与所有标签匹配的注释。要修改行为，请启用**匹配任何**，Grafana 将显示包含您提供的任何一个标签的注释。

 您还可以在标签查询中使用模板变量。这意味着，如果您有一个显示不同服务的统计信息的控制面板和一个指示显示哪些服务的模板变量，您可以在注释查询中使用相同的模板变量，仅显示这些服务的注释。

# 控制面板 JSON 模型
<a name="v10-dash-dashboard-json-model"></a>

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

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

**查看控制面板 JSON 对象**

1. 导航到控制面板。

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

1. 选择 **JSON 模型**。

## JSON 字段
<a name="v10-dash-json-fields"></a>

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

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

```
{
  "id": null,
  "uid": "cLV5GDCkz",
  "title": "New dashboard",
  "tags": [],
  "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） | 
| `title` | 控制面板的当前标题 | 
| `tags` | 与控制面板关联的标签，字符串数组 | 
| `style` | 控制面板的主题，例如 `dark` 或 `light` | 
| `timezone` | 控制面板的时区，例如 `utc` 或 `browser` | 
| `editable` | 控制面板是否可编辑 | 
| `graphTooltip` | 0 表示无共享十字准线或工具提示（默认），1 表示共享十字准线，2 表示共享十字准线和共享工具提示 | 
| `time` | 控制面板的时间范围，例如 `last 6 hours` 或 `last 7 days` | 
| `timepicker` | 时间选取器元数据，详情请参阅[时间选取器部分](#v10-dash-json-panels) | 
| `templating` | 模板化元数据，详情请参阅[模板化部分](#v10-dash-json-panels) | 
| `annotations` | 注释元数据，有关如何添加注释，请参阅[注释](v10-dash-annotations.md) | 
| `refresh` | 自动刷新间隔 | 
| `schemaVersion` | JSON 架构的版本（整数），每当 Grafana 更新对此架构进行更改时都会递增 | 
| `version` | 控制面板的版本（整数），每次更新控制面板时都会递增 | 
| `panels` | 面板阵列（详情请参阅下一部分） | 

## 面板
<a name="v10-dash-json-panels"></a>

面板是控制面板的组成部分。由数据来源查询、图形类型、别名等构成。面板 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"
      }
    ]
  }
```

下表介绍了模板化字段的使用。


| Name | 用法 | 
| --- | --- | 
|  `enable`  |  模板化是否已启用  | 
|  `list`  |  一组对象，每个对象代表一个模板变量  | 
|  `allFormat`  |  从数据来源获取所有值时使用的格式，包括 `wildcard`、`glob`、`regex` 和 `pipe`。  | 
|  `current`  |  在仪表板 text/value 上显示当前选定的变量  | 
|  `datasource`  |  显示变量的数据来源  | 
|  `includeAll`  |  所有值选项是否可用  | 
|  `multi`  |  是否可以从变量值列表中选择多个值  | 
|  `multiFormat`  |  从数据来源获取时间序列时使用的格式  | 
|  `name`  |  变量名称  | 
|  `options`  |  可在仪表板上选择的变量 text/value 对数组  | 
|  `query`  |  用于获取变量值的数据来源查询  | 
|  `refresh`  |  配置何时刷新变量  | 
|  `regex`  |  提取序列名称或指标节点分段的一部分  | 
|  `type`  |  变量类型 `custom`、`query` 或 `interval`  | 

# 控制面板的最佳实践
<a name="v10-dash-bestpractices"></a>

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

本节为 Grafana 管理员和用户提供了有关如何构建和维护 Grafana 控制面板的最佳实践。

有关您可以创建的不同类型的控制面板的信息，请参阅 Grafana Labs 网站上的博文 [Grafana 控制面板：您可以构建的不同类型的完整指南](https://grafana.com/blog/2022/06/06/grafana-dashboards-a-complete-guide-to-all-the-different-types-you-can-build/?pg=webinar-getting-started-with-grafana-dashboard-design-amer&plcmt=related-content-1)。

**注意**  
本节可帮助您制定监控和控制面板维护策略。您最了解自己的系统，因此应通过本节内容加强理解。归根结底，您有责任为自己的系统制定最佳实践。

## 常见可观测性策略
<a name="v10-dash-common-observability-strategies"></a>

如果需要监控的内容很多，比如服务器场，就需要有一个策略来决定哪些内容足够重要，需要监控。本页介绍了选择监控内容的几种常用方法。

通过逻辑策略，您可以创建统一的控制面板，并轻松扩展可观测性平台。

**策略指南**
+ 您可以通过 USE 方法了解计算机状况，通过 RED 方法了解用户是否满意。
+ USE 报告问题的原因。
+ RED 报告用户体验，并很有可能报告问题的症状。
+ 监视两者对于了解系统非常重要。最佳做法是注意症状而不是原因。通常，警报是在 RED 控制面板上配置的。

**USE 方法**

USE 代表：
+ **利用率**：资源繁忙的时间百分比，例如节点 CPU 使用率。
+ **饱和度**：资源必须完成的工作量，通常是队列长度或节点负载。
+ **错误**：错误事件计数。

这种方法最适合基础设施中的硬件资源，例如 CPU、内存和网络设备。有关更多信息，请参阅 Brendan Gregg 的博文 [USE 方法](http://www.brendangregg.com/usemethod.html)。

**RED 方法**

RED 代表：
+ **速率**：每秒请求数
+ **错误**：失败的请求数。
+ **持续时间**：这些请求花费的时间，延迟测量值的分布。

这种方法最适用于服务，尤其是微服务环境。对于每项服务，都要检测代码以便对每个组件公开这些指标。红色仪表板非常适合提醒和 SLAs. 精心设计的 RED 控制面板是用户体验的代名词。

有关更多信息，请参阅 Tom Wilkie 的博文 [RED 方法：如何检测服务](https://grafana.com/blog/2018/08/02/the-red-method-how-to-instrument-your-services)。

**四个黄金信号**

根据 [Google SRE 手册](https://landing.google.com/sre/sre-book/chapters/monitoring-distributed-systems/#xref_monitoring_golden-signals)，如果您只能衡量面向用户系统的四个指标，请重点关注这四个指标。

此方法与 RED 方法类似，但包括饱和度。
+ **延迟**：处理请求所花费的时间。
+ **流量**：对系统的要求。
+ **错误**：失败的请求率。
+ **饱和度**：系统是否满载。

## 控制面板管理成熟度模型
<a name="v10-dash-management-maturity-model"></a>

*控制面板管理成熟度*是指控制面板生态系统的完善程度和效率。建议您定期查看控制面板设置，以评估现状以及如何改进。

从广义上讲，控制面板成熟度可以定义为低、中或高。

 该主题的大部分内容取自 KubeCon 2019 年的演讲 [Fool-Proof Kubernetes Dashboards for Seeprift On](https://www.youtube.com/watch?v=YE2aQFiMGfY) Calls 

**低：默认状态**

在此阶段，您没有一致的控制面板管理策略。几乎每个人都从这里开始。

如何知道自己所处的位置？
+ 每个人都可以修改您的控制面板。
+ 有大量复制的控制面板，几乎没有重复使用的控制面板。
+ 永久存在的一次性控制面板。
+ 无版本控制（版本控制中的控制面板 JSON）。
+ 大量浏览控制面板，搜索合适的控制面板。这意味着要浪费大量时间去寻找所需的控制面板。
+ 没有任何警报将您定向到正确的控制面板。

**中：有条理的控制面板**

在此阶段，您将开始使用有条理的控制面板来管理控制面板的使用。您可能已经制定了策略，但有些方面还可以改进。

 如何知道自己所处的位置？ 
+ 使用模板变量防止蔓延。例如，您不需要为每个节点提供单独的控制面板，可以使用查询变量。更棒的是，您还可以将数据来源设置为模板变量，以便您可以在不同的集群和监控后端之间重用相同的控制面板。

  请参阅 [变量](v10-dash-variables.md) 中的示例列表，了解相关想法。
+ 基于[可观测性策略](#v10-dash-common-observability-strategies)的有条理的控制面板。
+ 分层控制面板，可向下钻取到下一级。
+ 控制面板设计反映了服务层次结构。例如，您可以使用 RED 方法，每个服务一行。当您向下滚动控制面板时，行顺序可以反映数据流。
+ 同类比较：当大小不同时拆分服务控制面板。确保聚合指标不会淹没重要信息。
+ 富有表现力的图表，有意义地使用颜色，并在可能的情况下标准化轴。
  + 有意义的颜色示例：蓝色表示不错，红色表示不好。[阈值](v10-panels-configure-thresholds.md)可以帮助解决这个问题。
  + 标准化轴的示例：在比较 CPU 使用率时，请按百分比而不是原始数字来衡量，因为计算机的内核数可能不同。通过内核数对 CPU 使用率进行标准化可以减少认知负担，因为观看者可以相信所有内核都在 100% 被使用，而不必知道内核的 CPUs数量。
+ 定向浏览可减少猜测。
  + 模板变量使随机或漫无目的地浏览变得更加困难。
  + 大多数控制面板都应通过警报链接。
  + 通过链接定向浏览。有关更多信息，请参阅 [管理控制面板链接](v10-dash-manage-dashboard-links.md)。
+  版本控制的控制面板 JSON。

**高：优化使用**

在此阶段，您已经通过一致且周到的策略优化了控制面板管理的使用。策略需要维护，但结果是值得的。
+ 主动减少蔓延。
  + 定期查看现有控制面板，以确保其仍然相关。
  + 只有批准的控制面板才会添加到主控制面板列表。
  + 跟踪控制面板的使用情况。您可以利用[使用情况见解](v10-dash-assess-dashboard-usage.md)。
+ 设计的一致性。
+ 使用脚本库生成控制面板，确保模式和样式的一致性。
  + gravonnet（Jsonnet）
  + grafanalib（Python）
+ 无法在浏览器中编辑。控制面板查看器使用变量更改视图。
+ 浏览控制面板是例外，而不是常规。
+ 在专用于此用途的单独 Grafana 实例（而不是生产实例）中执行实验和测试。当测试环境中的控制面板被证明有用时，请将该控制面板添加到主 Grafana 实例中。

## 创建控制面板的最佳实践
<a name="v10-dash-best-practices-for-creating-dashboards"></a>

本节概述了创建 Grafana 控制面板时应遵循的一些最佳实践。

**开始之前**

 以下是在创建控制面板之前需要考虑的一些原则。

**控制面板应讲述故事或回答问题**

您想用控制面板讲述什么故事？ 尝试创建数据的逻辑进程，例如从大到小，或者从一般到具体。此控制面板的目标是什么？ （提示：如果控制面板没有目标，问问自己是否真的需要控制面板。）

图形要简单明了，重点放在回答问题上。例如，如果您的问题是“哪些服务器有问题？”，您可能不需要显示所有服务器数据。只显示有问题的服务器数据。

**控制面板应减少而非增加认知负荷**

*认知负荷*是指您需要多么努力去思考某件事才能弄明白。使控制面板易于理解。其他用户和未来的您（当您凌晨 2 点还在想哪里出现问题）会很感激。

 问问自己：
+ 我能说出每个图形具体代表什么吗？ 这是显然的，还是我必须考虑一下？
+ 如果我把这个给别人看，他们需要多长时间才能弄清楚？ 他们会不会迷惑？

**制定监控策略**

制作新的控制面板很容易。优化控制面板创建和遵守计划更难，但这是值得的。此策略应管理总体控制面板方案，并确保单个控制面板设计的一致性。

有关更多信息，请参阅[常见可观测性策略](#v10-dash-common-observability-strategies)和[控制面板管理成熟度水平](#v10-dash-management-maturity-model)。

**写下来**

有了策略或设计指南后，将其写下来，以保持长期的一致性。

**应遵循的最佳实践**
+ 创建新控制面板时，确保为其提供有意义的名称。
  + 如果要创建用来播放或试验的控制面板，请在名称中输入词 `TEST` 或 `TMP`。
  + 考虑在控制面板名称中包含姓名或首字母缩写或作为标签，以便人们知道谁拥有控制面板。
  + 完成临时试验控制面板后，将其删除。
+ 如果您创建了许多相关的控制面板，请考虑如何交叉引用以便于导航。有关更多信息，请参阅本节后面的[管理控制面板的最佳实践](#v10-dash-best-practices-for-managing-dashboards)。
+ Grafana 从数据来源检索数据。重要的是，对 [连接到数据来源](AMG-data-sources.md) 的一般情况和您的特定数据来源有基本的了解。
+ 避免不必要的控制面板刷新，以减少网络或后端的负载。例如，如果您的数据每小时变化一次，则无需将控制面板刷新率设置为 30 秒。
+ 在显示具有不同单位或范围的时间序列时，使用左侧和右侧 Y 轴。
+ 向控制面板和面板添加文档。
  + 要向控制面板添加文档，请向控制面板添加[文本面板可视化](v10-panels-text.md)。记录控制面板的用途、有用的资源链接以及用户与控制面板交互可能需要的任何说明等内容。
  + 要向面板添加文档，请编辑面板设置并添加描述。如果将光标悬停在面板左上角的小 `i` 上，您添加的任何文本都会出现。
+ 重用控制面板，并使用[模板和变量](v10-dash-variables.md)来确保一致性。
+ 堆叠图形数据时要小心。可视化可能会产生误导，并隐藏重要数据。大多数情况下，我们建议将其关闭。

## 管理控制面板的最佳实践
<a name="v10-dash-best-practices-for-managing-dashboards"></a>

 本页概述了管理 Grafana 控制面板时要遵循的一些最佳实践。

**开始之前**

以下是在开始管理控制面板之前需要考虑的一些原则。

**战略可观测性**

有几种[常见的可观测性策略](#v10-dash-common-observability-strategies)。您应该研究这些策略，确定哪种策略对您有用，或者您想提出自己的策略。无论哪种方式，都要有一个计划，写下来，然后去执行。

根据需要调整策略以适应不断变化的需求。

**成熟度级别**

您的控制面板成熟度级别如何？ 分析您当前的控制面板设置，并将其与[控制面板管理成熟度模型](#v10-dash-management-maturity-model)比较。了解所处的位置有助于确定如何实现自己的目标。

**应遵循的最佳实践**
+ 避免控制面板蔓延，即控制面板不受控制地增长。控制面板的蔓延会对找到合适控制面板的时间产生负面影响。复制控制面板并更改“某项内容”（糟糕的是：保留原始标签）是最简单的蔓延方式。
  + 定期查看控制面板并删除不必要的控制面板。
  + 如果您创建一个临时控制面板，也许是为了测试某些内容，请在名称前加上 `TEST:` 前缀。完成后删除控制面板。
+ 复制没有重大更改的控制面板并不是一个好办法。
  + 您错过了对原始控制面板的更新，例如文档更改、错误修复或指标添加。
  + 在许多情况下，制作副本只是为了通过设置模板参数来自定义视图。应该通过维护指向主控制面板的链接并使用 [URL 参数](v10-panels-configure-data-links.md#v10-panels-data-link-variables)自定义视图来完成。
+ 当必须复制控制面板时，请将其重命名，但*不要*复制控制面板标签。标签是搜索期间使用的控制面板的重要元数据。复制标签可能会导致匹配错误。
+ 维护控制面板或交叉引用控制面板。这可以通过几种方式来实现：
  + 创建控制面板链接、面板或数据链接。链接可以指向其他控制面板或外部系统。有关更多信息，请参阅[管理控制面板链接](v10-dash-manage-dashboard-links.md)。
  +  添加[控制面板列表面板](v10-panels-dashboard-list.md)。然后，您可以通过执行标签或文件夹搜索来自定义您看到的内容。
  + 添加[文本面板](v10-panels-dashboard-list.md)并使用 markdown 来自定义显示。

# 管理控制面板
<a name="v10-dash-managing-dashboards"></a>

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

在工作区的**控制面板**页面（从左侧菜单中选择**控制面板**来访问），您可以执行控制面板管理任务，包括将控制面板整理到文件夹中。

有关创建控制面板的更多信息，请参阅 [构建控制面板](v10-dash-building-dashboards.md)。

## 浏览控制面板
<a name="v10-dash-browse-dashboards"></a>

在**控制面板**页面上，您可以浏览和管理文件夹和控制面板。这包括以下选项：
+ 创建文件夹和控制面板。
+ 跨文件夹移动控制面板。
+ 删除多个控制面板和文件夹。
+ 导航到文件夹。
+ 管理文件夹权限。有关更多信息，请参阅 [控制面板和文件夹权限](dashboard-and-folder-permissions.md)。

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

文件夹有助于整理和分组控制面板，这在您有许多控制面板或多个团队使用同一 Grafana 实例时非常有用。您可以通过子文件夹在控制面板组织中创建嵌套层次结构。

**先决条件**

确保您拥有 Grafana 管理员权限。有关控制面板权限的更多信息，请参阅 [控制面板和文件夹权限](dashboard-and-folder-permissions.md)。

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

1. 登录 Grafana。

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

1. 在**控制面板**页面上，选择**新建**，然后在下拉列表中选择**新建文件夹**。

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

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

**编辑文件夹的名称**

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

1. 选择要重命名的文件夹

1. 选择标题中的**编辑标题**（铅笔）图标，然后更新文件夹的名称。

   新文件夹名称会自动保存。

**文件夹权限**

您可以为文件夹分配权限。文件夹中的控制面板会继承您分配给该文件夹的所有权限。您可以为组织角色、团队和用户分配权限。

**修改文件夹的权限**

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

1. 在列表中选择文件夹。

1. 在文件夹的详细信息页面上，选择**文件夹操作**，然后在下拉列表中选择**管理权限**。

1. 根据需要更新权限。

所作的更改会自动保存。

# 管理播放列表
<a name="v10-dash-managing-playlists"></a>

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

*播放列表*是按顺序显示的控制面板列表。您可以使用播放列表来建立态势感知，或向团队或访客展示指标。Grafana 可自动将控制面板缩放为任何分辨率，因此非常适合大屏幕使用。您可以从**控制面板**子菜单中的 Grafana 侧边菜单访问播放列表功能。

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

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

**访问播放列表**

1. 从左侧菜单中选择**播放列表**。

1. 从现有播放列表中选择一个播放列表。

**启动播放列表**

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

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

**启动播放列表**

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

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

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

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

1. 单击**启动 <播放列表名称>**。

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


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

**控制播放列表**

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


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

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

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

**创建播放列表**

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

1. 在播放列表页面上选择**播放列表**。

1. 选择**新建播放列表**。

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

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

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

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

1. 选择**保存**以保存您的更改。

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

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

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

**保存播放列表**

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

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

1. 选择所选播放列表。

1. 编辑播放列表。

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

1. 选择**保存**以保存您的更改。

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

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

**编辑播放列表**

1. 在播放列表页面上选择**编辑播放列表**。

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

1. 选择**保存**以保存您的更改。

**删除播放列表**

1. 选择**播放列表**。

1. 选择要删除的播放列表旁边的**删除**。

**重新排列播放列表中的控制面板顺序**

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

1. 选择**保存**以保存您的更改。

**删除控制面板**

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

1. 选择**保存**以保存您的更改。

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

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

**在视图模式下共享播放列表**

1. 从**控制面板**左侧菜单中，选择**播放列表**。

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

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

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

1. 将 URL 粘贴到目标。

# 共享控制面板和面板
<a name="v10-dash-sharing"></a>

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

Grafana 允许您与组织内的其他用户共享控制面板和面板，在某些情况下，还可以在 Web 上公开共享。您可以使用以下方式共享：
+ 直接链接
+ 快照
+ 导出链接（仅适用于控制面板）

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

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

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

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

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

**共享控制面板**

1. 从工作区的左侧菜单中选择**控制面板**。

1. 选择要共享的控制面板。

1. 选择屏幕顶部的共享图标。

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

**共享直接链接**

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

**共享直接链接**

1. 选择 **复制**。此操作将默认或短 URL 复制到剪贴板。

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

**发布快照**

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

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

**发布快照**

1. 选择**快照**选项卡。

1. 选择**本地快照**。

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

**导出控制面板**

Grafana 控制面板可以轻松导出和导入。有关更多信息，请参阅 [构建控制面板](v10-dash-building-dashboards.md) 中的导入和导出部分。

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

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

**共享面板**

1. 选择要共享的面板的标题。面板菜单将会打开。

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

**使用直接链接**

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

**使用直接链接**

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

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

**发布面板的快照**

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

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

**发布面板的快照**

1. 在**共享面板**对话框中，选择**快照**选项卡。

1. 选择**本地快照**。Grafana 会生成快照的链接。

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

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

**创建库面板**

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

**创建库面板**

1. 选择**库面板**。

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

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

1. 选择**创建库面板**以保存更改。

1. 保存控制面板。

# 变量
<a name="v10-dash-variables"></a>

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

变量是值的占位符。您可以在指标查询和面板标题中使用变量。因此，当您使用控制面板顶部的下拉列表更改值时，面板的指标查询将发生变化以反映新值。

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

对于希望 Grafana 查看器能够快速调整可视化效果，但又不想授予其完全编辑权限的管理员来说，这些功能尤其有用。Grafana 查看器可以使用变量。

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

**模板**

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

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

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

**示例**

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

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

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

**变量最佳实践**
+ 变量下拉列表按照**控制面板设置**的变量列表中列出的顺序显示。
+ 将经常更改的变量放在顶部，这样它们就会显示在最前面（控制面板的最左边）。
+ 默认情况下，变量会预先选择下拉列表中最上面的值。如果要选择空值，请更改变量设置，如下所示：

  1. 选中**包含全部选项**复选框。

  1. 在**自定义所有值**字段中，输入值 `+`。

**Topics**
+ [添加和管理变量](v10-dash-variable-add.md)
+ [检查变量](v10-dash-variable-add-inspect.md)
+ [变量语法](v10-dash-variable-syntax.md)

# 添加和管理变量
<a name="v10-dash-variable-add"></a>

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

下表列出了 Grafana 中的变量类型。


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

**Topics**
+ [输入常规选项](#v10-dash-variable-options)
+ [添加查询变量](#v10-dash-variable-add-query)
+ [添加自定义变量](#v10-dash-variable-add-custom)
+ [添加文本框变量](#v10-dash-variable-add-text)
+ [添加常量变量](#v10-dash-variable-add-constant)
+ [添加数据来源变量](#v10-dash-variable-add-datasource)
+ [添加间隔变量](#v10-dash-variable-add-internal)
+ [添加临时筛选条件](#v10-dash-variable-add-adhoc)
+ [配置变量选择选项](#v10-dash-variable-add-selection)
+ [全局变量](#v10-dash-variable-add-global)
+ [链式变量](#v10-dash-variable-add-chained)
+ [管理变量](#v10-dash-variable-add-manage)
+ [使用正则表达式筛选变量](#v10-dash-variable-add-filter)

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

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

**输入常规选项**

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

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

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

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

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

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

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

## 添加查询变量
<a name="v10-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. 在**查询**字段中，输入查询。
   + 查询字段因数据来源而异。某些数据来源具有自定义查询编辑器。
   + 查询必须返回名为 `__text` 和 `__value` 的值。例如，在 SQL 中，您可以使用 `SELECT hostname AS __text, id AS __value from MyTable` 之类的查询。其他语言的查询会因语法而异。
   + 如果单个输入字段查询编辑器中需要更多空间，请将光标悬停在字段右下角的行上，然后向下拖动以展开。

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

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

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

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

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

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

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

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

**添加自定义变量**

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

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

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

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

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

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

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

**添加文本框变量**

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

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

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

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

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

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

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

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

**添加常量变量**

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

1. 在**值**字段中，输入变量值。您可以输入字母、数字和符号。如果您使用[原始格式](v10-dash-variable-syntax.md#v10-dash-variable-syntax-raw)，甚至可以使用通配符。

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

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

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

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

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

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

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

   您还可以选择**打开高级数据来源选取器**以查看更多选项，包括添加数据来源（仅限管理员）。有关更多信息，请参阅 [连接到数据来源](AMG-data-sources.md)。

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

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

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

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

## 添加间隔变量
<a name="v10-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="v10-dash-variable-add-adhoc"></a>

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

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

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

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

   您还可以选择**打开高级数据来源选取器**以查看更多选项，包括添加数据来源（仅限管理员）。有关更多信息，请参阅 [连接到数据来源](AMG-data-sources.md)。

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

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

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

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

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

### 多值变量
<a name="v10-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 自动执行正则表达式转义和格式化，则必须执行下列操作之一：
+ 关闭**多值**或**包含全部选项**选项。
+ 采用[原始格式](v10-dash-variable-syntax.md#v10-dash-variable-syntax-raw)。

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

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

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

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

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

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

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

## 全局变量
<a name="v10-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 数据来源。

**\$1\$1\$1timezone**

`$__timezone` 变量返回当前选定的时区，可以是 `utc`，也可以是 IANA 时区数据库的一个条目（例如 `America/New_York`）。

如果当前选定的时区是*浏览器时间*，Grafana 将尝试确定您的浏览器时区。

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

*链式变量*，也称为*链接变量*或*嵌套变量*，是变量查询中包含一个或多个其他变量的查询变量。

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

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

**最佳实践和提示**

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

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

**变量顺序**

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

**复杂性考虑**

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

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

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

您可以在变量页面上添加变量和管理现有变量。还可以[检查](v10-dash-variable-add-inspect.md)变量，并确定变量是否在其他变量或控制面板中被引用（或使用）。

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

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

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

## 使用正则表达式筛选变量
<a name="v10-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="v10-dash-variable-add-inspect"></a>

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

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

# 变量语法
<a name="v10-dash-variable-syntax"></a>

****  
本文档主题专为支持 **Grafana 10.x 版本**的 Grafana 工作区而设计。  
对于支持 Grafana 9.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 9](using-grafana-v9.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="v10-dash-assess-dashboard-usage"></a>

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

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

**控制面板见解**

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

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

**数据来源见解**

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

**查找数据来源见解**

1. 在工作区的主导航栏中选择**连接**。

1. 选择**数据来源**。

1. 选择一个数据来源。

1. 选择**见解**选项卡。

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

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

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

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

在搜索视图中，您可以使用见解数据来帮助查找最常用、损坏和未使用的控制面板。您可以按以下方式对控制面板排序。
+ 观点
+ 错误
+ 观点
+ 创建时间
+ 更新时间

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

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

 使用以下策略排查常见的控制面板问题。

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

## 控制面板刷新率问题
<a name="v10-dash-refresh-rate-issues"></a>

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

我们建议执行下列操作：
+ 只有在必要时才在控制面板、面板或变量上启用自动刷新。用户可以手动刷新浏览器。
+ 如果您需要自动刷新，请将刷新率设置为合理的较长时间段，例如每分钟一次、每 10 分钟一次或每小时一次。
+ 查看控制面板的时间范围。如果您的控制面板具有更长的时间范围（例如一周），那么您确实不需要自动刷新，应该将其禁用。

## 处理或呈现的 null 数据发生错误或令人困惑
<a name="v10-dash-handling-or-rendering-null-data-is-wrong-or-confusing"></a>

有些应用程序会间歇性地发布数据；例如，只在事件发生时才发布指标。默认情况下，Grafana 图形会在数据点之间用线连接，但可能具有欺骗性。。

**连接 null 值**选项设置为**始终**的图形将在存在缺失值的位置连接线条。

解决此问题的一种方法是使用条形图而不是线条，并将**无值**选项（在**标准选项**下）设置为 `0`。在这种情况下，缺失的数据将显示为图形中无数据的区域。

# 在 Grafana 10 中搜索控制面板
<a name="v10-search"></a>

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

您可以按控制面板名称和面板标题搜索控制面板。当搜索控制面板时，系统会返回 Grafana 实例中可用的所有控制面板，即使您没有查看控制面板内容的权限。

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

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

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

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

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

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

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

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

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

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

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

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

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

## 命令调色板
<a name="v10-search-palette"></a>

您可以使用此命令调色板来进行以下操作：
+ 搜索并打开控制面板和文件夹。
+ 创建控制面板和警报规则。
+ 在 Grafana 中找到页面。
+ 将主题更改为深色或浅色。

顶部打开命令面板，输入 `ctrl+k`（macOS 中为 `cmd+k`）。您也可以在 Grafana 导航栏中选择搜索输入。

**注意**  
要转到上一步，请在命令调色板为空的情况下按 `backspace`。

# Grafana 10 中的面板和可视化
<a name="v10-panels"></a>

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

*面板*是 Grafana 中的基本可视化构建块。每个面板都有一个特定于面板中所选数据来源的查询编辑器。查询编辑器允许您构建一个查询，以返回要可视化的数据。

每个面板都有各种各样的样式和格式选项。可以拖放面板并调整其大小，以便在控制面板上重新排列。

在添加面板之前，确保已配置数据来源。

可在工作区中安装其他[插件](grafana-plugins.md)以获得其他面板类型。

有关使用特定数据来源的详细信息，请参阅 [连接到数据来源](AMG-data-sources.md)。

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

# 面板编辑器概述
<a name="v10-panels-editor-overview"></a>

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

在面板编辑器中，您可以更新可视化项的所有元素，包括数据来源、查询、时间范围和显示选项。

要将面板添加到新的控制面板，请选择控制面板中间的 **\$1 添加可视化**。要将面板添加到现有控制面板，请在控制面板标题中选择**添加**，然后在下拉列表中选择**可视化**。您也可以从相同或不同的控制面板中复制和粘贴现有面板。

## 面板菜单
<a name="v10-panels-editor-menu"></a>

要访问面板编辑器，请将鼠标悬停在任何面板的右上角。选择出现的面板菜单图标，然后选择**编辑**。

面板菜单还允许访问以下操作：
+ **查看**：以全屏模式查看面板。
+ **编辑**：打开面板编辑器以编辑面板和可视化选项。
+ **共享**：以链接或库面板的形式共享面板。
+ **Explore**：在 **Explore** 中打开面板，您可以在其中专注于查询。
+ **检查**：打开**检查**抽屉，您可以在其中查看面板数据、统计、元数据、JSON 和查询。
  + **数据**：在**数据**选项卡中打开**检查**抽屉。
  + **查询**：在**查询**选项卡中打开**检查**抽屉。
  + **面板 JSON**：在 **JSON** 选项卡中打开**检查**抽屉。
+ **扩展**：访问已安装应用程序提供的其他操作，例如声明事件。只有在安装了为面板菜单提供扩展的应用程序插件时，才会显示此选项。
+ **更多**：访问其他面板操作。
  + **重复**：创建面板的副本。重复面板与原始面板分开查询数据。如果要使用相同的查询结果，可以使用第二个面板中的 `Dashboard` 数据来源。
  + **复制**：将面板复制到剪贴板。
  + **创建库面板**：创建可导入其他控制面板的面板。
  + **创建警报**：在 **Alerting** 中打开警报规则配置页面，您可以在其中根据面板查询创建 [Grafana 管理的警报](v10-alerts.md)。
  + **隐藏图例**：隐藏面板图例。
  + **获取帮助**：向 Grafana Labs 技术支持发送快照或面板数据。
+ **删除**：从控制面板上删除面板。

## 面板编辑器
<a name="v10-panels-editor-view"></a>

本节介绍了 Grafana 面板编辑器的各个区域。
+ 面板标题：标题部分列出了显示面板的控制面板和以下控件：
  + **丢弃**：丢弃自上次保存控制面板之后，对面板所做的更改。
  + **保存**：保存对面板所做的更改。
  + **应用**：应用您所做的更改，关闭面板编辑器，返回控制面板。您需要保存控制面板，以持久保留所应用的更改。
+ 可视化预览：可视化预览部分包含以下选项：
  + **表视图**：将任何可视化转换为表，以便查看数据。表视图有助于进行问题排查。此视图仅包含原始数据。不包括您可能应用于数据的转换，也不包括[表](v10-panels-table.md)可视化中可用的格式化选项。
  + **填充**：可视化预览会填充可用空间。如果更改侧窗格的宽度或底部窗格的高度，可视化效果会随之改变以填充可用空间。
  + **实际**：可视化预览的大小与控制面板上的大小完全一致。如果可用空间不足，可视化大小会缩减，同时保留纵横比。
  + **时间范围控制**：**默认**为浏览器本地时区或在更高级别选择的时区。
+ 数据部分：数据部分包含用于输入查询、转换数据和创建警报规则（如适用）的选项卡。
  + **查询选项卡**：选择您的数据来源，并在此处输入查询。有关更多信息，请参阅 [查询和转换数据](v10-panels-query-xform.md)。最初创建控制面板时，系统会提示您选择数据来源。您可以在此选项卡中更新数据来源或查询。
  + **转换选项卡**：应用数据转换。有关更多信息，请参阅 [查询和转换数据](v10-panels-query-xform.md)。
  + **警报选项卡**：编写警报规则。有关更多信息，请参阅 [Grafana 10 版本中的警报](v10-alerts.md)。
+ 面板显示选项：显示选项部分包含选项卡，您可以在其中配置数据可视化的各个方面。详细信息因所选可视化类型而异。

## 面板检查抽屉
<a name="v10-panels-editor-inspect"></a>

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

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

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

# 面板检查视图
<a name="v10-panels-panel-inspector"></a>

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

面板检查视图可通过面板菜单打开，有助于您了解面板并排查问题。您可以检查任何 Amazon Managed Grafana 面板的原始数据，将该数据导出到逗号分隔值（CSV）文件，查看查询请求，以及导出面板和数据 JSON。

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

面板检查器包含以下选项：

1. 面板检查器在窗格顶部显示**检查：**。选择右上角的箭头可展开或缩小窗格。

1. **数据选项卡**：显示应用转换后查询返回的原始数据。默认情况下，不会应用覆盖和值映射之类的字段选项。

1. **统计选项卡**：显示查询花费的时间和返回的数量。

1. **JSON 选项卡**：允许您查看和复制面板 JSON、面板数据 JSON 和数据帧结构 JSON。如果您在预置或管理 Grafana，这非常有用。

1. **查询选项卡**：显示 Grafana 查询数据来源时向服务器发送的请求。

1. **错误选项卡**：显示任何错误。仅在查询返回错误时可见。

## 下载原始查询结果
<a name="v10-panels-raw-query-results"></a>

Amazon Managed Grafana 会生成一个 CSV 文件，其中包含您的数据，包括对该数据的任何转换。您可以选择在面板应用字段选项或字段选项覆盖之前或之后查看数据。

**下载原始查询结果**

1. 编辑包含要下载的查询数据的面板。

1. 在查询编辑器中，选择**查询检查器**。

1. 选择**日期**。

   如果您的面板包含多个查询或查询多个节点，您还有其他选项。
   + **选择结果**：选择要查看的结果集数据。
   + **转换数据**
   + **按时间连接**：一次查看所有查询的原始数据，每列一个结果集。选择列标题以对数据重新排序。

1. 要在系统应用字段覆盖之前查看数据，请选择**格式化数据**切换按钮。

1. 要下载专门针对 Excel 格式化的 CSV 文件，请选择**下载 Excel** 切换按钮。

1. 选择**下载 CSV**。

## 检查查询性能
<a name="v10-panels-query-performance"></a>

**统计**选项卡显示统计数据，告诉您查询需要多长时间、发送的查询数量以及返回的行数。此信息有助于您对查询进行问题排查，尤其是在任何数字意外偏高或偏低时。

**检查查询性能**

1. 编辑包含要检查性能的查询的面板。

1. 在查询编辑器中，选择**查询检查器**。

1. 选择**统计**。

统计数据以只读格式显示。

## 检查查询请求和响应
<a name="v10-panels-query-request-response"></a>

如果要对返回意外结果或未能返回预期结果的查询进行问题排查，请检查查询请求和响应数据。

1. 编辑包含要导出的查询的面板。

1. 在查询编辑器中，选择**查询检查器**。

1. 选择**刷新**。

   面板将填充响应数据。

1. 根据需要进行调整，然后重新运行查询。

1. 要下载查询请求和响应数据，请单击**复制到剪贴板**图标，然后将结果粘贴到其他应用程序中。

# 查询和转换数据
<a name="v10-panels-query-xform"></a>

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

Amazon Managed Grafana 支持多种类型的[数据来源](AMG-data-sources.md)。数据来源*查询*返回数据，供 Grafana *转换*和可视化。每个数据来源都使用自己的查询语言，而每个数据来源插件都实现了一个名为查询编辑器的查询构建用户界面。

**Topics**
+ [关于查询](#v10-panels-query-xform-about)
+ [导航查询选项卡](#v10-panels-query-xform-navigate)
+ [添加查询](#v10-panels-query-xform-add)
+ [管理查询](#v10-panels-query-xform-manage)
+ [查询选项](#v10-panels-query-xform-options)
+ [编写表达式查询](v10-panels-query-xform-expressions.md)
+ [与其他面板共享查询结果](v10-panels-query-share.md)
+ [转换数据](v10-panels-xform.md)
+ [查询问题排查](v10-panels-query-troubleshoot.md)
+ [计算类型](v10-panels-calculation-types.md)

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

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

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

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

**查询编辑器**

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

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

有关特定数据来源的唯一查询编辑器功能的详细信息，包括有关查询和语法的信息，请参阅数据来源文档：
+ 有关 Amazon Managed Grafana 中包含的数据来源，请参阅[内置数据来源](AMG-data-sources-builtin.md)。
+ 有关 Grafana Enterprise 中包含的数据来源，请参阅 [连接到企业数据来源](AMG-data-sources-enterprise.md)。
+ 对于通过 [使用插件目录查找插件](grafana-plugins.md#plugin-catalog) 安装的其他数据来源插件，文档链接在插件目录的列表中。

**查询语法**

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

**PostgreSQL 示例：**

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

**PromQL 示例：**

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

**特殊数据来源**

Grafana 还包含三种特殊数据来源：**Grafana**、**混合**和**控制面板**。有关更多信息，请参阅 [连接到数据来源](AMG-data-sources.md)。

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

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

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

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

**添加查询**

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

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

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

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

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

1. 选择**应用**。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

# 编写表达式查询
<a name="v10-panels-query-xform-expressions"></a>

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

服务器端表达式使您能够用数学和其他运算查询返回的数据。表达式会创建新数据，但不操作数据来源返回的数据。

## 关于表达式
<a name="v10-panels-query-about"></a>

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

**使用表达式**

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

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

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

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

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

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

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

**表达式类型**

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

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

**数据来源查询**

服务器端表达式仅支持对后端数据来源的查询。通常假设数据是有标签的时间序列数据。

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

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

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


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

**操作**

您可以在表达式中使用以下运算：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` 运算排列时间戳。

摘要：
+ 数字 <Operation> 数字 = 数字
+ 数字 <Operation> 序列 = 序列
+ 序列 <Operation> 序列 = 序列

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

因此，如果 `$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="v10-panels-query-write"></a>

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

**编写表达式**

1. 打开面板。

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

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

1. 编写表达式。

1. 选择**应用**。

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

当任何查询的数据来源未返回序列或数字时，表达式引擎将返回 `NoData`。例如，如果请求包含两个由表达式合并的数据来源查询，而 `NoData` 由至少一个数据来源查询返回，则整个查询的返回结果为 `NoData`。有关 Grafana Alerting 如何处理 `NoData` 结果的更多信息，请参阅 [配置 Grafana 管理的警报规则](v10-alerting-configure-grafanamanaged.md)。

如果在多个查询中使用表达式，则表达式引擎要求所有查询都返回相同的时间戳。例如，如果使用数学方法合并多个 SQL 查询的结果（每个查询都使用 `SELECT NOW() AS "time"`），那么只有当所有查询都将 `NOW()` 评估为相同的时间戳时，表达式才会起作用，但这种情况并不总是发生。要解决此问题，可以将 `NOW()` 替换为任意时间，例如 `SELECT 1 AS "time"` 或任何其他有效的 UNIX 时间戳。

# 与其他面板共享查询结果
<a name="v10-panels-query-share"></a>

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

通过 Grafana，您可以将一个面板中的查询结果用于控制面板中的任何其他面板。跨面板共享查询结果可以减少对数据来源的查询次数，从而提高控制面板的性能。

*控制面板*数据来源允许您在控制面板中选择一个面板，其中包含要共享结果的查询。Grafana 没有为每个面板发送单独的查询，而是发送一个查询，而其他面板则使用查询结果来构造可视化。

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

**共享查询结果**

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

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

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

   如果没有可用的数据来源，可使用 **Grafana** 数据来源，这将返回一个可用于测试的随机时间序列。

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

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

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

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

# 转换数据
<a name="v10-panels-xform"></a>

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

转换是一种强大方法，可在系统应用可视化之前处理查询返回的数据。通过转换，您可以：
+ 重命名字段
+ 连接时间序列数据
+ 跨查询执行数学运算
+ 将一个转换的输出用作另一个转换的输入

对于依赖同一数据集中多个视图的用户来说，转换是一种创建和维护大量控制面板的有效方法。

您也可以将一个转换的输出用作另一个转换的输入，从而提高性能。

**注意**  
有时，系统无法绘制转换后的数据。发生这种情况时，单击可视化上方的**表视图**切换按钮，以切换到数据的表视图。这有助于您了解转换的最终结果。

## 转换类型
<a name="v10-panels-xform-types"></a>

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

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

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

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

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

以下步骤将指导您向数据添加转换。本文档不包括每种转换类型的步骤。

**向面板添加转换**

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

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

1. 从操作菜单上选择**编辑**。

1. 选择**转换**选项卡。

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

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

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

要查看转换的输入和输出结果集，请选择转换行右侧的调试（bug）图标。这将显示输入数据，并将转换结果显示为输出。

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

## 禁用转换
<a name="v10-panels-xform-disable"></a>

您可以选择转换行右上角的显示（眼睛）图标来禁用或隐藏转换。这将禁用该特定转换的应用操作，并有助于在逐个更改多个转换时识别问题。

## 筛选转换
<a name="v10-panels-xform-filter"></a>

如果您的转换使用多个查询，则可以筛选这些查询，并将所选转换仅应用于其中一个查询。为此，请选择转换行右上角的筛选器图标。这将打开一个下拉列表，其中列出了面板上使用的查询列表。在这里，您可以选择要转换的查询。

您也可以按注释（包括样本）进行筛选，对其应用转换。执行此操作时，字段列表会发生变化，以反映注释或样本工具提示中的字段。

如果面板具有多个查询或数据来源（即面板或注释数据），则始终显示筛选器图标，但如果应用先前的合并查询输出的转换，则筛选器图标可能不起作用。这是因为转换会采用前一个转换的输出。

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

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

先决条件：

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

**删除转换**

1. 打开面板进行编辑。

1. 选择**转换**选项卡。

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

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

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

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

## 从计算添加字段
<a name="v10-panels-xform-funcs-add"></a>

使用此转换可以添加一个根据其他两个字段计算得出的新字段。每次转换都允许您添加一个新字段。
+ **模式**：选择一种模式：
  + **减少行**：对选定字段的每一行分别应用所选计算。
  + **二元选项**：对两个选定字段的单行中的值应用基本的二元运算（求和、乘法等）。
  + **一元运算**：对选定字段的单行中的值应用基本的一元运算。可用运算包括：
    + **绝对值（abs）**：返回给定表达式的绝对值。以正数表示与零的距离。
    + **自然指数（exp）**：返回 *e* 的给定表达式的幂次。
    + **自然对数（ln）**：返回给定表达式的自然对数。
    + **下限（floor）**：返回小于或等于给定表达式的最大整数。
    + **上限（ceil）**：返回大于或等于给定表达式的最小整数。
  + **累积函数**：对当前行和前面所有行应用函数。
    + **总计**：计算不超过当前行的累积总数。
    + **平均值**：计算截至当前行（包括当前行）的平均值。
  + **窗口函数**：应用窗口函数。窗口可以*尾随*，也可以*居中*。对于尾随窗口，当前行将是窗口中的最后一行。对于居中窗口，窗口将在当前行居中。对于偶数窗口大小，窗口将在当前行和上一行之间居中。
    + **平均值**：计算移动平均数或移动平均值。
    + ****：计算移动标准差。
    + **方差**：计算移动方差。
  + **行索引**：插入带有行索引的字段。
+ **字段名称**：选择要在新字段的计算中使用的字段名称。
+ **计算**：如果您选择**减少行**模式，则会出现**计算**字段。选择字段以查看可用于创建新字段的计算选项列表。有关可用计算的信息，请参阅[计算类型](v10-panels-calculation-types.md)。
+ **运算**：如果选择**二元运算**或**一元运算**模式，则会出现**运算**字段。通过这些字段，您可以对来自两个选定字段的单行中的值进行基本数学运算。也可以使用数值进行二元运算。
+ **百分位数**：如果选择**行索引**模式，则会出现**百分位数**开关。此开关可将行索引转换为占总行数的百分比。
+ **别名**：（可选）输入新字段的名称。如果将此项保留为空，则将对该字段命名以与计算匹配。
+ **替换所有字段**：（可选）如果您想在可视化中隐藏所有其他字段并仅显示经过计算字段，请使用此选项。

**注意**  
**累积函数**和**窗口函数**当前为公共预览版。Grafana Labs 提供的支持有限，在该功能正式发布之前可能会发生重大更改。

## 连接字段
<a name="v10-panels-xform-funcs-concat"></a>

**连接字段**

使用此转换将所有帧中的所有字段合并为一个结果。

例如，如果您有单独的查询来检索温度和正常运行时间数据（查询 A）以及空气质量指数和错误信息（查询 B），则应用连接转换将生成一个合并的数据框，其中包含所有相关信息。

考虑以下两个查询。

*查询 A：*


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

*查询 B：*


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

连接字段后，数据帧为：


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

这种转换简化了合并不同来源数据的过程，为分析和可视化提供了全面的视图。

## 来自查询结果的配置
<a name="v10-panels-xform-funcs-config"></a>

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

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

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

**字段映射表**

在配置选项下方，可以找到字段映射表。此表列出了在配置查询返回的数据中找到的所有字段，以及**用作**和**选择**选项。可实现对将字段映射到配置属性的控制，对于多行，允许选择要选择的值。

以下示例显示了输入查询和用作字段配置的查询。

*输入查询*


| 时间 | 值 | 
| --- | --- | 
| 1626178119127 | 10 | 
| 1626178119129 | 30 | 

*配置查询*


| 时间 | 值 | 
| --- | --- | 
| 1626178119127 | 100 | 
| 1626178119129 | 100 | 

*输出查询（与输入相同，但现在的值字段上有配置）*


| 时间 | 值（配置：Max=100） | 
| --- | --- | 
| 1626178119127 | 10 | 
| 1626178119129 | 30 | 

现在，每个字段还设置了最大配置选项。**最小值**、**最大值**、**单位**和**阈值**等选项是字段配置的一部分。如果进行设置，则可视化将使用这些选项，而不是在面板编辑器选项窗格中手动配置的任何选项。

**值映射**

您还可以将查询结果转换为值映射。使用此选项，配置查询结果中的每一行都定义了一个值映射行。请参阅以下示例。

*配置查询结果*


| 值 | 文本 | 颜色 | 
| --- | --- | --- | 
| L | 低 | blue | 
| M | 中 | green | 
| H | 高 | red | 

*在字段映射中，指定：*


| 字段 | 用作 | Select | 
| --- | --- | --- | 
| 值 | 值映射/值 | 所有值 | 
| 文本 | 值映射/文本 | 所有值 | 
| 颜色 | 值映射/颜色 | 所有值 | 

Grafana 根据您的查询结果构建值映射，并将其应用于真实的数据查询结果。您应该会看到根据配置查询结果映射和着色的值。

## 转换字段类型
<a name="v10-panels-xform-funcs-convert"></a>

使用此转换来修改指定字段的字段类型。

此转换具有以下选项：
+ **字段**：从可用字段中选择。
+ **as** — 选择 FieldType 要转换为的。
  + **数字**：尝试将值变为数字。
  + **字符串**：将值设为字符串。
  + **时间**：尝试将值解析为时间。
    + 将显示一个选项，用于通过字符串将 a 指定 DateFormat 为输入，例如`yyyy-mm-dd`或`DD MM YYYY hh:mm:ss`。
  + **布尔值**：将值变为布尔值。
  + **枚举**：将值变为枚举。
    + 将显示一个表来管理枚举。
  + **其他**：尝试将值解析为 json。

例如，下面的查询可通过选择时间字段 **Time** 和日期格式 `YYYY` 来修改。


| 时间 | 标记 | 值 | 
| --- | --- | --- | 
| 2017-07-01 | 高于 | 25 | 
| 2018-08-02 | 低于 | 22 | 
| 2019-09-02 | 低于 | 29 | 
| 2020-10-04 | 高于 | 22 | 

结果：


| 时间 | 标记 | 值 | 
| --- | --- | --- | 
| 2017-01-01 00:00:00 | 高于 | 25 | 
| 2018-01-01 00:00:00 | 低于 | 22 | 
| 2019-01-01 00:00:00 | 低于 | 29 | 
| 2020-01-01 00:00:00 | 高于 | 22 | 

这种转换让您可以灵活地调整数据类型，确保可视化效果的兼容性和一致性。

## 提取字段
<a name="v10-panels-xform-funcs-extract"></a>

使用此转换选择数据来源，从中提取不同格式的内容。此转换具有以下字段：
+ **来源**：选择数据来源的字段。
+ **格式**：选择以下选项之一：
  + **JSON**：从来源解析 JSON 内容。
  + **键\$1值对**：从来源解析 `a=b` 或 `c:d` 格式的内容。
  + **自动**：自动发现字段。
+ **替换所有字段**：（可选）如果要在可视化中隐藏所有其他字段并仅显示经过计算字段，请选择此选项。
+ **保留时间**：（可选）仅当**替换所有字段**为 true 时才可用。在输出中保留时间字段。

考虑以下数据集：

**数据集示例**


| Timestamp | json\$1data | 
| --- | --- | 
| 163667874000000000000 | \$1"value": 1\$1 | 
| 163667868000000000000 | \$1"value": 5\$1 | 
| 1636678620000000000 | \$1"value": 12\$1 | 

您可以使用以下配置来准备供[时间序列面板](v10-panels-time-series.md)使用的数据：
+ 来源：json\$1data
+ 格式：JSON
  + 字段：value
  + 别名：my\$1value
+ 替换所有字段：true
+ 保留时间：true

这将生成以下输出：

**转换后的数据**


| Timestamp | my\$1value | 
| --- | --- | 
| 163667874000000000000 | 1 | 
| 163667868000000000000 | 5 | 
| 1636678620000000000 | 12 | 

通过这种转换，您可以通过各种方式提取和格式化数据。您可以根据特定的数据需求自定义提取格式。

## 从资源中查找字段
<a name="v10-panels-xform-funcs-lookup"></a>

使用此转换可通过从外部来源查找其他字段来丰富字段值。

此转换具有以下字段：
+ **字段**：从数据集中选择一个文本字段。
+ **查找**：从**国家**、**美国各州**和**机场**中选择。

**注意**  
此转换仅支持空间数据。

例如，如果您拥有以下数据：

**数据集示例**


| 位置 | 值 | 
| --- | --- | 
| AL | 0 | 
| AK | 10 | 
| 亚利桑那州 | 5 | 
| 阿肯色州 | 1 | 
| 某个地方 | 5 | 

使用此配置：
+ 字段：位置
+ 查找：美国各州

您将得到以下输出：

**转换后的数据**


| 位置 | ID | Name | Lng | Lat | 值 | 
| --- | --- | --- | --- | --- | --- | 
| AL | AL | Alabama | -80.891064 | 12.448457 | 0 | 
| AK | AK | 阿肯色州 | -100.891064 | 24.448457 | 10 | 
| 亚利桑那州 |  |  |  |  | 5 | 
| 阿肯色州 |  |  |  |  | 1 | 
| 某个地方 |  |  |  |  | 5 | 

这种转换允许您通过从外部来源获取更多信息来扩充数据，提供更全面的数据集进行分析和可视化。

## 按查询 refId 筛选数据
<a name="v10-panels-xform-funcs-queryrefid"></a>

使用此转换可在包含多个查询的面板中隐藏一个或多个查询。

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

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

## 按值筛选数据
<a name="v10-panels-xform-funcs-values"></a>

使用此转换可直接在可视化中有选择地筛选数据点。此转换提供了根据应用于选定字段的一个或多个条件来包含或排除数据的选项。

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

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

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

考虑以下数据集：


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

如果**包括**温度低于 30°C 的数据点，配置将如下所示：
+ 筛选器类型：“包含”
+ 条件：“温度”与“低于”“30”匹配的行

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

**转换后的数据**


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

您可以向筛选器添加多个条件。例如，您可能希望仅在海拔大于 100 时才包含数据。为此，请将该条件添加到以下配置：
+ 筛选器类型：“包含”符合“全部匹配”条件的行
+ 条件 1：“温度”与“低于”“30”匹配的行
+ 条件 2：“海拔”与“高于”“100”匹配的行

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

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

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

这种多功能数据筛选转换允许您根据特定条件有选择地包含或排除数据点。自定义标准以定制您的数据呈现方式，从而满足您独特的分析需求。

## 按名称筛选字段
<a name="v10-panels-xform-funcs-name"></a>

使用此转换可删除部分查询结果。可通过三种方式筛选字段名称：
+ 输入正则表达式。
+ 手动选择包含的字段。
+ 使用控制面板变量。

*使用正则表达式*

使用正则表达式进行筛选时，会包含与正则表达式匹配的字段名称。例如，使用正则表达式 `'prod.*'` 将仅返回以 `prod` 开头的字段

正则表达式可以包含使用 `${variableName}` 语法插值的控制面板变量。

*手动选择包含的字段*

选择或取消选择字段名称以将其从结果中删除。如果还包含正则表达式，则包含与表达式匹配的字段，即使未选中这些字段。

*使用控制面板变量*

选择**来自变量**以选择用于包含字段的控制面板变量。通过设置具有多个选项的控制面板变量，可以在多个可视化中显示相同的字段。

通过这种转换，您可以灵活地定制查询结果，以便专注于有效分析和可视化所需的特定字段。

## 格式化字符串
<a name="v10-panels-xform-funcs-string"></a>

使用此转换来自定义字符串字段的输出。此转换具有以下字段：
+ **大写**：将整个字符串格式化为大写字符。
+ **小写**：将整个字符串格式化为小写字符。
+ **句子大小写**：将字符串的第一个字符格式化为大写。
+ **标题大小写**：将字符串中每个单词的第一个字符格式化为大写。
+ **Pascal 大小写**：将字符串中每个单词的第一个字符格式化为大写，并且单词之间不包含空格。
+ **Camel 大小写**：将字符串中每个单词的第一个字符（第一个单词除外）格式化为大写，并且单词之间不包含空格。
+ **Snake 大小写**：将字符串中的所有字符格式化为小写，并在单词之间使用下划线而不是空格。
+ **Kebab 大小写**：将字符串中的所有字符格式化为小写，并在单词之间使用短划线而不是空格。
+ **修剪**：删除字符串中的所有前导和尾随空格。
+ **子字符串**：使用指定的开始和结束位置返回字符串的子字符串。

这种转换提供了一种便捷的方式来标准化和定制字符串数据的表示方式，以实现更好的可视化和分析。

**注意**  
此转换目前为公共预览版。Grafana Labs 提供的支持有限，在该功能正式发布之前可能会发生重大更改。

## 格式化时间
<a name="v10-panels-xform-funcs-time"></a>

使用此转换来自定义时间字段的输出。可以使用 [Moment.js 格式字符串](https://momentjs.com/docs/#/displaying/)来格式化输出。例如，如果您只想显示时间字段的年份，则可以使用格式字符串“YYYY”来显示日历年份（例如，1999 年或 2012 年）。

**转换前：**


| Timestamp | 事件 | 
| --- | --- | 
| 163667874000000000000 | 系统启动 | 
| 163667868000000000000 | 用户登录 | 
| 1636678620000000000 | 数据更新 | 

**涂上 “YYYY-MM-DD hh: mm: ss” 之后：**


| Timestamp | 事件 | 
| --- | --- | 
| 2021-11-12 14:25:40 | 系统启动 | 
| 2021-11-12 14:24:40 | 用户登录 | 
| 2021-11-12 14:23:40 | 数据更新 | 

通过此转换，您可以定制可视化中的时间表示形式，从而在显示时态数据时提供灵活性和精度。

**注意**  
此转换作为 alpha 功能在与 Grafana v10 兼容的工作区中可用。

## 分组依据
<a name="v10-panels-xform-funcs-group"></a>

此转换按指定的字段（列）值对数据进行分组，并处理每个组的计算。选择以查看计算选项的列表。

以下是原始数据的示例：


| 时间 | 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 name="v10-panels-xform-funcs-groupmatrix"></a>

使用此转换来组合三个字段（用作查询输出中的**列**、**行**和**单元格值**字段的输入）并生成矩阵。矩阵的计算方式如下：

**原始数据**


| Server ID | CPU 温度 | 服务器状态 | 
| --- | --- | --- | 
| server 1 | 82 | OK | 
| server 2 | 88.6 | OK | 
| server 3 | 59.6 | 关闭 | 

我们可以使用 `Server Status` 的值作为列名、`Server ID` 值作为行名、`CPU Temperature` 作为每个单元格的内容来生成一个矩阵。每个单元格的内容将显示在现有列（`Server Status`）和行组合（`Server ID`）中。对于其余单元格，您可以选择在 **Null**、**True**、**False** 或 **Empty** 之间显示哪个值。

**输出**


| 服务器 IDServer 状态 | OK | 关闭 | 
| --- | --- | --- | 
| server 1 | 82 |  | 
| server 2 | 88.6 |  | 
| server 3 |  | 59.6 | 

使用此转换通过指定查询结果中的字段来构造矩阵。矩阵输出反映了这些字段中唯一值之间的关系。这有助于您以清晰、结构化的矩阵格式呈现复杂的关系。

## 分组到嵌套表
<a name="v10-panels-xform-funcs-grouptable"></a>

使用此转换按指定的字段（列）值对数据分组，并处理每个组的计算。生成的记录共享相同的分组字段值，并显示在嵌套表中。

要计算字段的统计数据，请选择字段旁边的框，然后选择**计算**选项。这将添加另一个选择框，其中包含要选择的统计数据。

下表显示了示例数据。


| 时间 | 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 | 

此转换分两个步骤。首先，指定一个或多个字段，作为数据分组依据。这会将这些字段的所有相同值分组在一起，就像对其进行排序一样。例如，如果您按 `Server ID` 字段分组，Grafana 会按以下方式对数据分组：


| Server ID | 数据 | 
| --- | --- | 
| 时间 | CPU 温度 | 服务器状态 | 
| --- | --- | --- | 
| 时间 | CPU 温度 | 服务器状态 | 
| --- | --- | --- | 
| 时间 | CPU 温度 | 服务器状态 | 
| --- | --- | --- | 
| server 1 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/v10-panels-xform-functions.html) | 
| server 2 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/v10-panels-xform-functions.html) | 
| server 3 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/v10-panels-xform-functions.html) | 
| 7/7/2020 上午 11:34:20 | 80 | 关闭 | 
| 7/7/2020 上午 9:28:06 | 80 | OK | 
| 7/7/2020 上午 9:23:07 | 86 | OK | 
| 7/7/2020 上午 10:32:20 | 90 | 过载 | 
| 7/7/2020 上午 9:30:05 | 88 | OK | 
| 7/7/2020 上午 9:25:05 | 88 | OK | 
| 7/7/2020 上午 11:34:20 | 62 | OK | 
| 7/7/2020 上午 10:31:22 | 55 | 正常 | 
| 7/7/2020 上午 9:30:57 | 62 | Rebooting | 

选择作为数据分组依据的字段后，可以在其他字段上添加各种计算，计算将应用于每组行。例如，您可能想要计算每台服务器的平均 CPU 温度。因此，将应用于 CPU 温度字段的平均值计算相加，得到以下结果：


| Server ID | CPU 温度（平均值） |  | 
| --- | --- | --- | 
| 时间 | 服务器状态 | 
| --- | --- | 
| 时间 | 服务器状态 | 
| --- | --- | 
| 时间 | 服务器状态 | 
| --- | --- | 
| server 1 | 82 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/v10-panels-xform-functions.html) | 
| server 2 | 88.6 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/v10-panels-xform-functions.html) | 
| server 3 | 59.6 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/v10-panels-xform-functions.html) | 
| 7/7/2020 上午 11:34:20 | 关闭 | 
| 7/7/2020 上午 9:28:06 | OK | 
| 7/7/2020 上午 9:23:07 | OK | 
| 7/7/2020 上午 10:32:20 | 过载 | 
| 7/7/2020 上午 9:30:05 | OK | 
| 7/7/2020 上午 9:25:05 | OK | 
| 7/7/2020 上午 11:34:20 | OK | 
| 7/7/2020 上午 10:31:22 | OK | 
| 7/7/2020 上午 9:30:57 | Rebooting | 

## 创建热图
<a name="v10-panels-xform-funcs-heatmap"></a>

使用此转换来准备直方图数据，以可视化一段时间内的趋势。与热图可视化类似，此转换将直方图指标转换为时间桶。

**X 桶**

此设置决定如何将 x 轴拆分为桶。
+ **大小**：可在输入字段中指定时间间隔。例如，时间范围为 `1h` 会在 x 轴上创建 1 小时宽的单元格。
+ **计数**-对于 non-time-related系列，使用此选项定义存储桶中的元素数量。

**Y 桶**

此设置决定如何将 y 轴拆分为桶。
+ **线性的**
+ **对数**：选择以 2 为底数的对数或以 10 为底数的对数。
+ **Symlog**：使用对称的对数刻度。选择以 2 为底数的对数或以 10 为底数的对数，允许负值。

假设有以下数据集：


| Timestamp | 值 | 
| --- | --- | 
| 2023-01-01 12:00:00 | 5 | 
| 2023-01-01 12:15:00 | 10 | 
| 2023-01-01 12:30:00 | 15 | 
| 2023-01-01 12:45:00 | 8 | 
+ 在 X 桶设置为 `Size: 15m`，Y 桶设置为 `Linear` 的情况下，直方图在 X 轴上以 15 分钟为时间间隔整理值，在 Y 轴上以线性方式整理值。
+ 在 X 桶设置为 `Count: 2`，Y 桶设置为 `Logarithmic (base 10)` 的情况下，直方图在 x 轴上将值分成两组，在 y 轴上使用对数刻度。

## 直方图
<a name="v10-panels-xform-funcs-histogram"></a>

使用此转换可根据输入数据生成直方图，从而可视化值的分布。
+ **桶大小**：桶中最低和最高项目之间的范围（xMin 到 xMax）。
+ **存储桶偏移量**-存储 non-zero-based桶的偏移量。
+ **合并序列**：使用所有可用序列创建统一的直方图。

**原始数据**

序列 1：


| A | B | C | 
| --- | --- | --- | 
| 1 | 3 | 5 | 
| 2 | 4 | 6 | 
| 3 | 5 | 7 | 
| 4 | 6 | 8 | 
| 5 | 7 | 9 | 

序列 2：


| C | 
| --- | 
| 5 | 
| 6 | 
| 7 | 
| 8 | 
| 9 | 

**输出**


| xMin | xMax | A | B | C | C | 
| --- | --- | --- | --- | --- | --- | 
| 1 | 2 | 1 | 0 | 0 | 0 | 
| 2 | 3 | 1 | 0 | 0 | 0 | 
| 3 | 4 | 1 | 1 | 0 | 0 | 
| 4 | 5 | 1 | 1 | 0 | 0 | 
| 5 | 6 | 1 | 1 | 1 | 1 | 
| 6 | 7 | 0 | 1 | 1 | 1 | 
| 7 | 8 | 0 | 1 | 1 | 1 | 
| 8 | 9 | 0 | 0 | 1 | 1 | 
| 9 | 10 | 0 | 0 | 1 | 1 | 

使用生成的直方图可视化值的分布，从而深入了解数据的分布和密度。

## 按字段连接
<a name="v10-panels-xform-funcs-joinfield"></a>

使用此转换将多个结果合并到一个表中，从而合并来自不同查询的数据。

这对于将多个时间序列结果转换为具有共享时间字段的单个宽表特别有用。

**内连接**

内连接合并多个表中的数据，其中所有表共享选定字段中的相同值。这种类型的连接会排除每个结果中值不匹配的数据。

使用此转换将多个查询结果（通过连接字段或首次列组合）合并为一个结果，并删除无法成功连接的行。

在以下示例中，两个查询返回表数据。在应用内连接转换之前，将其可视化为两个独立的表。

查询 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 | 

## 按标签连接
<a name="v10-panels-xform-funcs-joinlabel"></a>

使用此转换将多个结果连接到一个表中。

这对于将多个时间序列结果转换为具有共享**标签**字段的单个宽表特别有用。
+ **连接**：选择在所有时间序列中的可用或通用标签之间进行连接的标签。
+ **值**：输出结果的名称。

**示例**

输入 1：`series1{what='Temp', cluster='A', job='J1'}`


| 时间 | 值 | 
| --- | --- | 
| 1 | 10 | 
| 2 | 200 | 

输入 2：`series2{what='Temp', cluster='B', job='J1'}`


| 时间 | 值 | 
| --- | --- | 
| 1 | 10 | 
| 2 | 200 | 

输入 3：`series3{what='Speed', cluster='B', job='J1'}`


| 时间 | 值 | 
| --- | --- | 
| 22 | 22 | 
| 28 | 77 | 

配置：

```
value: 'what'
```

输出：


| cluster | 作业 | 临时文件 | Speed | 
| --- | --- | --- | --- | 
| A | J1 | 10 |  | 
| A | J1 | 200 |  | 
| B | J1 | 10 | 22 | 
| B | J1 | 200 | 77 | 

通过这种转换，有效地组合和整理时间序列数据，以获得全面的见解。

## 标签到字段
<a name="v10-panels-xform-funcs-labelstofields"></a>

使用此转换将带有标签或标记的时间序列结果转换为表，包括结果中每个标签的键和值。将标签显示为列值或行值，以增强数据可视化。

给定两个时间序列的查询结果：
+ 序列 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 name="v10-panels-xform-funcs-limit"></a>

使用此转换来限制显示的行数，提供更集中的数据视图。这在处理大型数据集时特别有用。

以下示例说明了**限制**转换对数据来源响应的影响：


| 时间 | 指标 | 值 | 
| --- | --- | --- | 
| 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="v10-panels-xform-funcs-merge"></a>

使用此转换将多个查询的结果合并为一个结果，这在使用表面板可视化时特别有用。如果共享字段包含相同的数据，转换会将值合并到同一行中。

下面是一个示例，说明了**合并序列/表**转换对返回表数据的两个查询的影响：

*查询 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 | 

这种转换将查询 A 和查询 B 中的值合并到一个统一的表中，从而增强了显示效果，以获得更好的见解。

## 按名称整理字段
<a name="v10-panels-xform-funcs-organize"></a>

使用此转换可重命名、重新排序或隐藏面板中单个查询返回的字段。此转换仅适用于具有单个查询的面板。如果您的面板有多个查询，则必须应用*外连接*转换或删除多余的查询。

**转换字段**

Grafana 会显示查询返回的字段列表。你可以：
+ **更改字段顺序**：将字段拖到列表中的新位置。
+ **隐藏或显示字段**：使用字段名称旁边的眼睛图标切换字段的可见性。
+ **重命名字段**：在**重命名**框中键入新名称。

**示例**

鉴给定此初始查询结果：


| 时间 | 指标 | 值 | 
| --- | --- | --- | 
| 2020-07-07 11:34:20 | 温度 | 25 | 
| 2020-07-07 11:34:20 | 湿度 | 22 | 
| 2020-07-07 10:32:20 | 湿度 | 29 | 

您可以应用重命名字段覆盖来创建：


| 时间 | 传感器 | 读数 | 
| --- | --- | --- | 
| 2020-07-07 11:34:20 | 温度 | 25 | 
| 2020-07-07 11:34:20 | 湿度 | 22 | 
| 2020-07-07 10:32:20 | 湿度 | 29 | 

通过此转换，您可以定制查询结果的显示，从而确保在 Grafana 中清晰而有洞察力的方式表示数据。

## 按值分区
<a name="v10-panels-xform-funcs-partition"></a>

使用此转换可以简化绘制多个序列的过程，而无需使用不同的 `WHERE` 子句进行多次查询。

**注意**  
此功能可用于兼容 Grafana 9 及更高版本的工作区。

这在使用指标 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 | 

通过*按值分区*转换器，您可以发出单个查询，并根据您选择的一个或多个列（字段）中的唯一值来拆分结果。下面的示例使用了 `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 | 

这种转换简化了流程，提高了在同一时间序列可视化中可视化多个序列的灵活性。

## 准备时间序列
<a name="v10-panels-xform-funcs-preparetimeseries"></a>

使用此转换可以解决当数据来源返回的时间序列数据格式与所需可视化的格式不兼容的问题。这种转换允许您在宽格式和长格式之间转换时间序列数据。

**多帧时间序列**

使用此选项可将时间序列数据帧从宽格式转换为长格式。当您的数据来源以需要重塑的格式提供时间序列信息，以使其与可视化最佳兼容时，这尤其有用。

*示例*

以下输入：


| Timestamp | Value1 | Value2 | 
| --- | --- | --- | 
| 2023-01-01 00:00:00 | 10 | 20 | 
| 2023-01-01 01:00:00 | 15 | 25 | 

可以转换为：


| Timestamp | 变量 | 值 | 
| --- | --- | --- | 
| 2023-01-01 00:00:00 | Value1 | 10 | 
| 2023-01-01 00:00:00 | Value2 | 20 | 
| 2023-01-01 01:00:00 | Value1 | 15 | 
| 2023-01-01 01:00:00 | Value2 | 25 | 

**宽时间序列**

使用此选项可将时间序列数据帧从长格式转换为宽格式。当您的数据来源以长格式提供时间序列数据，而您的可视化需要宽格式时，这尤其有用。

*示例*

以下输入：


| Timestamp | 变量 | 值 | 
| --- | --- | --- | 
| 2023-01-01 00:00:00 | Value1 | 10 | 
| 2023-01-01 00:00:00 | Value2 | 20 | 
| 2023-01-01 01:00:00 | Value1 | 15 | 
| 2023-01-01 01:00:00 | Value2 | 25 | 

可以转换为：


| Timestamp | Value1 | Value2 | 
| --- | --- | --- | 
| 2023-01-01 00:00:00 | 10 | 20 | 
| 2023-01-01 01:00:00 | 15 | 25 | 

## Reduce
<a name="v10-panels-xform-funcs-reduce"></a>

使用此转换将计算应用于数据帧中的每个字段，并返回单个值。这种转换对于将多个时间序列数据合并成更紧凑的汇总格式特别有用。应用此转换时，将删除时间字段。

考虑以下输入：

查询 A：


| 时间 | 临时文件 | 正常运行时间 | 
| --- | --- | --- | 
| 2020-07-07 11:34:20 | 12.3 | 256122 | 
| 2020-07-07 11:24:20 | 15.4 | 1230233 | 

查询 B：


| 时间 | AQI | 错误 | 
| --- | --- | --- | 
| 2020-07-07 11:34:20 | 6.5 | 15 | 
| 2020-07-07 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 | 

## 按正则表达式重命名
<a name="v10-panels-xform-funcs-rename"></a>

使用此转换，可以使用正则表达式和替换模式来重命名部分查询结果。

您可以指定一个正则表达式，该正则表达式只应用于匹配，同时指定一个支持反向引用的替换模式。例如，假设您在可视化每台主机的 CPU 使用情况，并希望删除域名。您可以将正则表达式设置为 `([^\.]+)\..+`，并将替换模式设置为 `$1`，`web-01.example.com` 将变为 `web-01`。

通过这种转换，您可以定制数据以满足可视化需求，从而使您的控制面板信息更丰富且用户友好。

## 行到字段
<a name="v10-panels-xform-funcs-row"></a>

使用此转换将行转换为单独的字段。这非常有用，因为可以单独设置字段的样式和配置。还可以使用附加字段作为动态字段配置的来源，或将其映射到字段标签。然后，可以使用其他标签为生成的字段定义更好的显示名称。

此转换包括一个字段表，该表列出了配置查询返回的数据中的所有字段。通过此表，您可以控制应将哪些字段映射到每个配置属性（**用作**选项）。如果返回的数据中有多行，您还可以选择要选择的值。

这种转换需要：
+ 一个字段用作字段名称的来源。

  默认情况下，转换使用第一个字符串字段作为来源。您可以在要使用的字段的**用作**列中选择**字段名称**，来覆盖此默认设置。
+ 一个字段用作值的来源。

  默认情况下，转换使用第一个数字字段作为来源。但您可以在要使用的字段的**用作**列中选择**字段值**，来覆盖此默认设置。

在以下位置可视化数据时非常有用：
+ 计量表
+ Stat
+ 饼图

**将多余字段映射到标签**

如果字段未映射到配置属性，Grafana 会自动将其用作输出字段上标签的来源。

示例：


| Name | DataCenter | 值 | 
| --- | --- | --- | 
| ServerA | 美国 | 100 | 
| ServerB | EU | 200 | 

输出：


| ServerA（标签： DataCenter: 美国） | ServerB（标签： DataCenter：欧盟） | 
| --- | --- | 
| 100 | 200 | 

现在可以在字段显示名称中使用额外的标签，提供更完整的字段名称。

如果要从一个查询中提取配置并将其应用于另一个查询，则应使用*查询结果转换*中的配置。

**示例**

输入：


| Name | 值 | 最大值 | 
| --- | --- | --- | 
| ServerA | 10 | 100 | 
| ServerB | 20 | 200 | 
| ServerC | 30 | 300 | 

输出：


| ServerA（配置：max=100） | ServerB（配置：max=200） | ServerC（配置：max=300） | 
| --- | --- | --- | 
| 10 | 20 | 30 | 

如您所见，来源数据中的每一行都变成一个单独的字段。现在，每个字段还设置了最大配置选项。**最小值**、**最大值**、**单位**和**阈值**等选项都是字段配置的一部分，如果这样设置，可视化将使用这些选项，而不是在面板编辑器选项窗格中手动配置的任何选项。

这种转换允许将行转换为单个字段，便于动态字段配置，并将其他字段映射到标签。

## 序列到行
<a name="v10-panels-xform-funcs-series"></a>

使用此转换可将多个时间序列数据查询的结果合并为一个结果。这在使用表面板可视化时很有用。

此转换的结果将包含三列：时间、指标和值。添加指标列是为了方便您查看该指标来自哪个查询。通过在来源查询上定义标签来自定义此值。

在下面的示例中，有两个查询返回时间序列数据。在应用转换之前，将其可视化为两个独立的表。

*查询 A：*


| 时间 | 温度 | 
| --- | --- | 
| 2020-07-07 11:34:20 | 25 | 
| 2020-07-07 10:31:22 | 22 | 
| 2020-07-07 09:30:05 | 19 | 

*查询 B：*


| 时间 | 湿度 | 
| --- | --- | 
| 2020-07-07 11:34:20 | 24 | 
| 2020-07-07 10:32:20 | 29 | 
| 2020-07-07 09:30:57 | 33 | 

以下是将序列应用于行转换后的结果。


| 时间 | 指标 | 值 | 
| --- | --- | --- | 
| 2020-07-07 11:34:20 | 温度 | 25 | 
| 2020-07-07 11:34:20 | 湿度 | 22 | 
| 2020-07-07 10:32:20 | 湿度 | 29 | 
| 2020-07-07 10:31:22 | 温度 | 22 | 
| 2020-07-07 09:30:57 | 湿度 | 33 | 
| 2020-07-07 09:30:05 | 温度 | 19 | 

这种转换有助于合并来自多个时间序列查询的结果，提供了一个简化的统一数据集，以便以表格形式进行高效的分析和可视化。

## 排序依据
<a name="v10-panels-xform-funcs-sort"></a>

使用此转换可根据指定字段对查询结果中的每个帧进行排序，从而使您的数据更易于理解和分析。通过配置所需的排序字段，您可以控制数据在表或可视化中的显示顺序。

使用**反向**开关对指定字段内的值进行反向排序。当您想要在升序和降序之间快速切换以满足分析需求时，此功能特别有用。

例如，在从数据来源检索时间序列数据的场景中，可以应用**排序依据**转换，以根据时间戳按升序或降序排列数据帧，具体取决于分析要求。此功能可确保您轻松导航和解释时间序列数据，从有序且视觉连贯的演示中获得有价值的见解。

## 空间
<a name="v10-panels-xform-funcs-spatial"></a>

使用此转换将空间运算应用于查询结果。
+ **操作**：选择一个操作：
  + **准备空间字段**：根据其他字段的结果设置几何字段。
    + **位置模式**：选择位置模式（这些选项由**计算值**和**转换**模式共用）：
      + **自动**：根据默认字段名称自动识别位置数据。
      + **坐标**：指定纬度和经度字段。
      + **地理哈希**：指定地理哈希字段。
      + **查找**：指定地名录位置字段。
  + **计算值**-使用几何定义新字段 (heading/distance/area)。
    + **函数**：选择要应用于几何图形的数学运算：
      + **方向**：计算两点之间的方向。
      + **面积**：计算由几何图形的多边形包围的面积。
      + **距离**：计算两点之间的距离。
  + **转换**：对几何图形应用空间运算。
    + **运算**：选择要应用于几何图形的运算：
      + **作为行**：在每一行上创建一个具有顶点的单行特征。
      + **线生成器**：在两点之间创建一条线。

此转换让您可以操作和分析地理空间数据，从而支持在点之间创建线条、计算空间属性等操作。

## 时间序列到表的转换
<a name="v10-panels-xform-funcs-seriestotable"></a>

使用此转换将时间序列结果转换为表，将时间序列数据帧转换为**趋势**字段。然后可以使用[迷你图单元格类型](v10-panels-table.md#v10-panels-table-cell-type)呈现**趋势**字段，为每个表格行生成内联迷你图。如果有多个时间序列查询，则每个查询都将生成一个单独的表数据帧。可使用连接或合并转换来连接这些数据，以生成一个每行包含多个迷你图的表。

对于每个生成的**趋势**字段值，可以选择计算函数。默认为**最后一个非 null 值**。此值显示在迷你图旁边，用于对表行进行排序。

## 回归分析
<a name="v10-panels-xform-funcs-regression"></a>

使用此转换创建一个新的数据帧，其中包含统计模型预测值。这对于在混乱数据中发现趋势非常有用。其工作原理是使用线性或多项式回归将数学函数拟合到数据。然后，在可视化中使用数据帧来显示趋势线。

有两种不同的模式：
+  **线性回归**：将线性函数拟合到数据。
+  **多项式回归**：将多项式函数拟合到数据。

**注意**  
此转换目前为公共预览版。Grafana Labs 提供的支持有限，在该功能正式发布之前可能会发生重大更改。

# 查询问题排查
<a name="v10-panels-query-troubleshoot"></a>

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

本页提供了如何解决常见控制面板问题的信息。

**当我重新排列函数时，得到不同的结果**

函数顺序非常重要。就像数学一样，函数的放置顺序会影响结果。

**检查查询请求和响应**

最常见的问题与数据来源的查询和响应有关。似乎是 Grafana 中的错误或可视化问题，其实是数据来源查询或数据来源响应的问题。首先检查面板查询和响应。

有关更多信息，请参阅[检查请求和响应数据](v10-panels-panel-inspector.md)。

**查询速度缓慢**

查询返回多少个数据点？ 返回大量数据点的查询速度会很慢。尝试：
+ 在**查询选项**中，限制返回的**最大数据点**。
+ 在**查询选项**中，增加**最小间隔**时间。
+ 在查询中，使用 `group by` 函数。

# 计算类型
<a name="v10-panels-calculation-types"></a>

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

下表包含可在 Grafana 中执行的计算列表。您可以在**转换**选项卡以及条形仪表、仪表和统计数据可视化中找到这些计算结果。


| 计算 | 说明 | 
| --- | --- | 
| 全部为 null | 当所有值都为 null 时为 True | 
| 所有值 | 包含所有值的数组 | 
| 所有唯一值 | 包含所有唯一值的数组 | 
| 全部为 0 | 当所有值都为 0 时为 True | 
| 更改计数 | 字段值更改的次数 | 
| 计数 | 字段中值的数量 | 
| Delta | 值的累积变化，仅计算增量 | 
| 区别 | 字段第一个值和最后一个值的差 | 
| 百分比差 | 字段第一个值和最后一个值的百分比差 | 
| 去重计数 | 字段中唯一值的数量 | 
| 第一个 | 字段中第一个值 | 
| 第一个\$1（非 null） | 首先，字段中的值不是空值（也排除 NaNs） | 
| Last | 字段中最后一个值 | 
| 最后一个\$1（非 null） | 字段中的最后一个非空值（也排除 NaNs） | 
| 最大值 | 字段的最大值 | 
| 平均值 | 字段中所有值的平均值 | 
| 方差 | 字段中所有值的方差 | 
| StdDev | 字段中所有值的标准差 | 
| 最小值 | 字段的最小值 | 
| 最小值（大于 0） | 字段的最小正值 | 
| Range | 字段的最大值和最小值的差 | 
| 步骤 | 字段值之间的最小间隔 | 
| Total | 字段中所有值的总和 | 

# 配置面板选项
<a name="v10-panels-configure-panel-options"></a>

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

Grafana 面板是数据的可视化表示，您可以通过定义数据来源查询、转换和格式化数据以及配置可视化设置来自定义该面板。

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

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

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

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

**编辑面板**

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

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

1. 选择菜单，然后选择**编辑**。

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

   面板将以编辑模式打开。

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

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

1. 编辑面板。

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

1. 输入**标题**。

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

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

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

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

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

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

**查看面板 JSON 模型**

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

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

1. 从菜单中选择**检查 > 面板 JSON**。

1. 在**选择来源**字段中，选择以下选项之一：
   + **面板 JSON**：显示代表面板的 JSON 对象。
   + **面板数据**：显示一个 JSON 对象，该对象表示传递给面板的数据。
   + **DataFrame st** ructure-显示面板的数据结构，包括已应用的所有转换、字段配置和覆盖配置。

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

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

您可以配置 Grafana 以向控制面板动态添加面板或行。动态面板是系统根据变量值创建的面板。变量会动态更改控制面板中所有面板的查询。有关重复面板的更多信息，请参阅 [创建控制面板](v10-dash-creating.md)。

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

*先决条件*
+ 确保查询包含多值变量。

**配置重复面板**

1. 编辑要重复的面板。

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

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

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

# 配置标准选项
<a name="v10-panels-configure-standard-options"></a>

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

Grafana 中使用的数据模型是一种面向列的表结构，统一了时间序列和表查询结果。此结构中的每一列都称为*字段*。一个字段可以表示单个时间序列或表列。

字段选项允许您更改数据在可视化中的显示方式。您应用的选项和替代不会更改数据，而是改变 Grafana 显示数据的方式。更改选项后，将应用于所有字段，即所有序列或列。例如，如果将单位更改为百分比，则所有带有数值的字段都将以百分比显示。

本主题后面提供了字段格式设置选项的完整列表。

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

**配置标准选项**

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

1. 从 操作菜单上选择**编辑**。

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

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

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

**标准选项定义**

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

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

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

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

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

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

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

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

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

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

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

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

### 缩放单位
<a name="v10-panels-standard-options-scale-units"></a>

默认情况下，Grafana 将根据值的大小自动缩放单位。例如，如果您的值为 0.14kW，Grafana 将显示为 140W；再比如 3000kW 将显示为 3MW。如果要禁用此行为，可以关闭**缩放单位**开关。

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

这让您可以设置百分比阈值计算中使用的最小值。留空可自动计算最小值。

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

这让您可以设置百分比阈值计算中使用的最大值。留空可自动计算最大值。

## 字段最小值/最大值
<a name="v10-panels-standard-options-fieldminmax"></a>

默认情况下，计算的最小值和最大值将基于所有序列和字段中的最小值和最大值。打开字段将 min/max 根据每个字段的最小值或最大值分别计算每个字段的最小值或最大值。

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

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

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

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

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

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

给定一个名为 `Temp`，标签为 `{"Loc"="PBI", "Sensor"="3"}` 的字段：


| 表达式语法 | 示例 | 渲染为 | 说明 | 
| --- | --- | --- | --- | 
| \$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="v10-panels-standard-options-color-scheme"></a>

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

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

选择以下调色板之一：


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

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

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

# 配置图例
<a name="v10-panels-configure-legend"></a>

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

面板包含一个图例，您可以使用该图例来解释可视化中显示的数据。每个图例选项都为可视化中显示的数据添加了上下文和清晰度。

以下可视化支持的图例：
+ [条形图](v10-panels-bar-chart.md)
+ [K 线图](v10-panels-candlestick.md)
+ [直方图](v10-panels-histogram.md)
+ [饼图](v10-panels-piechart.md)
+ [状态时间轴](v10-panels-state-timeline.md)
+ [状态历史记录](v10-panels-status-history.md)
+ [时间序列](v10-panels-time-series.md)
+ [趋势](v10-panels-trend.md)

[Geomap](v10-panels-geomap.md) 和[热图](v10-panels-heatmap.md)也有图例，但仅提供显示或不显示图例的选项，不支持其他图例选项。

## 图例选项
<a name="v10-panels-legend-options"></a>

您可以在面板编辑窗格的**图例**部分找到以下选项。

**注意**  
并非所有列出的选项都适用于所有带有图例的可视化。

**可见性**

设置是否显示图例。使用开关打开或关闭图例。

**Mode (模式)**

设置图例的显示格式。从中选择：
+ **列表**
+ **表**

将图例格式化为表时，也可能会显示有关图例的其他信息，例如关联值或图例在可视化中的位置。

**放置**

设置图例在可视化中的显示位置。从中选择：
+ **Bottom**
+ **Right**

**Width (宽度)**

如果将图例放置设置为**右**，则**宽度**选项将变为可用。将该字段留空，以便 Grafana 自动设置图例宽度，或者在字段中输入一个值。

**值**

您可以在图例中添加序列数据值或[计算](v10-panels-calculation-types.md)，为可视化添加更多上下文。您可以添加任意数量的值。应用更改后，您可以滚动图例以查看所有值。

## 更改序列颜色
<a name="v10-panels-legend-change-color"></a>

默认情况下，Grafana 会设置序列数据的颜色，但您可以通过面板图例进行更改。

**更改序列颜色**

1. 导航到要更新的面板。

1. 在图例中，选择与序列关联的颜色条。

1. 使用选取器或 RGB 值在**颜色**选项卡中选择预设颜色，或在**自定义**选项卡中设置自定义颜色。

1. 保存控制面板。

## 在可视化中隔离序列数据
<a name="v10-panels-legend-isolate"></a>

可视化通常在视觉上比较复杂，而且包含许多数据序列。您可以通过图例从可视化中删除序列数据来简化视图，从而隔离要查看的数据。在此过程中，Grafana 会在**覆盖**选项卡中自动创建新的覆盖。

**在可视化中隔离序列数据**

1. 导航到要更新的面板。

1. 在图例中，选择要隔离的序列的标签。

   系统将从视图中删除所有其他序列数据。

1. 要以增量方式将序列数据重新添加到孤立的序列中，请按 **Ctrl** 或 **Command** 键，然后选择要添加的序列的标签。

1. 要保存更改，使其显示在面板的所有查看器上，请保存控制面板。

要恢复到包含所有数据的默认视图，请单击任意序列标签两次。

## 对序列排序
<a name="v10-panels-legend-sort"></a>

当您将图例格式化为表并向其中添加值时，可以按这些值对表中的序列排序。

**对序列排序**

1. 导航到要更新的面板。

1. 将鼠标悬停在您要处理的面板的任何部分，以在面板的右上角显示菜单。

1. 从菜单上选择**编辑**。

1. 滚动至面板编辑窗格的**图例**部分。

1. 在**值**下，选择要显示的值或计算。

   图例现在显示值。

1. 在图例表中选择计算名称标题，按升序或降序对表中的值排序。

**注意**  
只有以下面板支持此功能：条形图、直方图、时间序列。

# 配置数据链接
<a name="v10-panels-configure-data-links"></a>

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

通过数据链接，可为链接提供更精细的上下文。您可以创建包含序列名称甚至光标下值的链接。例如，如果您的可视化显示四台服务器，则可以向其中一两台服务器添加数据链接。您也可以使用数据链接来链接面板。

根据可视化效果，可通过不同的方式访问链接本身。例如，对于时间序列可视化，您可以选择数据点或数据线。对于统计、仪表或条形仪表之类的大面积可视化，您可以选择可视化中的任意位置来打开上下文菜单。

如果可视化中只有一个数据链接，则选择可视化中的任意位置都会打开链接，而不是上下文菜单。

**支持的可视化**
+ 条形图
+ 条形仪表
+ K 线图
+ Canvas
+ 计量表
+ Geomap
+ 热图
+ 直方图
+ 饼图
+ Stat
+ 状态时间轴
+ 状态历史记录
+ 表
+ 时间序列
+ 趋势

## 数据链接变量
<a name="v10-panels-data-link-variables"></a>

您可以在数据链接中使用变量，将用户引导至具有保留数据筛选条件的详细控制面板。例如，您可以使用变量来指定标签、时间范围、序列和变量选择。

要查看可用变量列表，请在数据链接 **URL** 字段中输入 `$`。

您也可以在数据链接中使用模板变量 URLs，请参阅[变量](v10-dash-variables.md)。

### 时间范围面板变量
<a name="v10-panels-time-range-panel-variables"></a>

您可以使用这些变量在数据链接 URL 中包含当前时间范围。
+ `__url_time_range`：当前控制面板的时间范围（即 `?from=now-6h&to=now`）
+ `$__from` – 有关更多信息，请参阅[全局变量](v10-dash-variable-add.md#v10-dash-variable-add-global)。
+ `$__to` – 有关更多信息，请参阅[全局变量](v10-dash-variable-add.md#v10-dash-variable-add-global)。

### 序列变量
<a name="v10-panels-series-variables"></a>

特定于序列的变量在 `__series` 命名空间下可用：
+ `__series.name`：URL 的序列名称

### 字段变量
<a name="v10-panels-field-variables"></a>

特定于字段的变量在 `__field` 命名空间下可用：
+ `__field.name`：字段的名称
+ `__field.labels.<LABEL>`：URL 的标签值。如果您的标签包含点，请使用 `__field.labels["<LABEL>"]` 语法。

### 值变量
<a name="v10-panels-value-variables"></a>

特定于值的变量在 `__value` 命名空间下可用：
+ `__value.time`：URL 的值的时间戳（Unix 毫秒纪元）（即 `?time=1560268814105`）
+ `__value.raw`：原始值
+ `__value.numeric`：值的数字表示
+ `__value.text`：值的文本表示
+ `__value.calc`：如果值是计算结果，则为计算名称

在数据链接中使用特定于值的变量可以显示不同的结果，具体取决于工具提示模式的设置选项。

### 数据变量
<a name="v10-panels-data-variables"></a>

要访问其他字段的值，请使用：
+ `__data.fields[i]`：字段 `i` 的值（在同一行上）。
+ `__data.fields["NameOfField"]`：使用名称而不是索引的字段值。
+ `__data.fields[i].labels.cluster`：访问其他字段的标签。

### 模板变量
<a name="v10-panels-template-variables"></a>

在链接到其他使用模板变量的控制面板时，请为单击链接的用户选择变量值。

`${var-myvar:queryparam}`：其中 `var-myvar` 是模板变量的名称，该名称与您要使用的当前控制面板中的模板变量相匹配。


| 变量状态 | 创建 URL 的结果 | 
| --- | --- | 
| 选择一个值 | var-myvar=value1 | 
| 选择多个值 | var-myvar=value1&var-myvar=value2 | 
| 已选择 All | var-myvar=All | 

如果要将当前控制面板的所有变量添加到 URL，请使用 `${__all_variables}`。

## 添加数据链接
<a name="v10-panels-add-a-datalink"></a>

您可以向面板添加数据链接。

1. 导航到要向其添加数据链接的面板。

1. 将鼠标悬停在面板上，右上角会显示菜单图标。

1. 从菜单中选择**编辑**以打开面板编辑器。

1. 在**面板编辑**窗格中，向下滚动到**数据链接**部分并将其展开。

1. 选择**添加链接**。

1. 在打开的对话框中，输入**标题**。这是是链接的可读标签，显示在 UI 中。

1. 输入要链接的 **URL** 或变量。

   要添加数据链接变量，请选择 **URL** 字段，然后输入 `$` 或按 Ctrl\$1Space 或 Cmd\$1Space 以查看可用变量列表。

1. 如果要在新选项卡中打开链接，请选择**在新选项卡中打开**。

1. 选择**保存**以保存更改并关闭对话框。

1. 保存对控制面板的更改。

# 配置值映射
<a name="v10-panels-configure-value-mappings"></a>

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

除了字段覆盖外，值映射是一种方法，可用来更改数据在可视化中的显示方式。

数值映射可绕过面板编辑器[标准选项](v10-panels-configure-standard-options.md)中设置的单位格式，如显示的颜色或小数位数。当面板中存在值映射时，Grafana 会在面板编辑器的**值映射**部分显示其摘要。

**支持的可视化**
+ 条形图
+ 条形仪表
+ K 线图
+ Canvas
+ 计量表
+ Geomap
+ 直方图
+ 饼图
+ Stat
+ 状态时间轴
+ 状态历史记录
+ 表
+ 时间序列
+ 趋势

## 值映射的类型
<a name="v10-panels-value-mappings-types"></a>

Grafana 支持以下值映射类型：
+ **值**：将特定值映射到文本和颜色。例如，您可以配置一个值映射，使值 `10` 的所有实例都显示为 `Perfection!` 而不是数字。当您想要格式化单个值时，请使用**值**映射。
+ **范围**：将数值范围映射到文本和颜色。例如，如果某个值在某个范围内，则可以将范围值映射配置为显示 `Low` 或 `High` 而不是数字。当您想要格式化多个连续值时，请使用**范围**映射。
+ **正则表达式**：将正则表达式映射到文本和颜色。例如，如果值为 `www.example.com`，则可以配置正则表达式值映射，以便 Grafana 显示 `www` 并截断域。当您想要格式化正则表达式值的文本和颜色时，请使用**正则表达式**映射。
+ **特殊**：将特殊值（如 `Null`、`NaN`（非数字）和布尔值（如 `true` 和 `false`）映射到文本和颜色。例如，您可以配置特殊值映射，使 `null` 值显示为 `N/A`。当您要格式化不常用值、布尔值或空值时，请使用**特殊**映射。

## 添加值映射
<a name="v10-panels-value-mappings-add"></a>

您可以为面板添加值映射。

**添加值映射**

1. 导航到要更新的面板。

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

1. 从菜单上选择**编辑**。

1. 在**值映射**部分，选择**添加值映射**。

1. 选择**添加新映射**，然后选择以下选项之一：
   + **值**：输入要匹配的单个值。
   + **范围**：输入要匹配的范围起始值和结束值。
   + **正则表达式**：输入要匹配的正则表达式模式。
   + **特殊**：选择要匹配的特殊值。

1. （可选）输入显示文本。

1. （可选）设置颜色。

1. 选择**更新**保存值映射。

添加映射后，**编辑值映射**按钮将取代**添加值映射**按钮。选择编辑按钮以添加或更新映射。

# 配置阈值
<a name="v10-panels-configure-thresholds"></a>

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

在控制面板中，阈值是您为指标设置的值或限制，当达到或超过指标时，阈值会直观地反映出来。阈值是您可以根据查询结果有条件地设置可视化样式和颜色的一种方法。

您可以使用阈值：
+ 为时间序列可视化中的网格线或网格区域着色。
+ 为统计可视化中的背景或值文本着色。
+ 在状态时间线中定义区域和区域颜色。
+ 为时间序列可视化中的线条着色。
+ 为仪表中的仪表和阈值标记着色。
+ 为 geomap 中的标记着色。
+ 为表中的单元格文本或背景着色。

**支持的可视化**
+ 条形图
+ 条形仪表
+ K 线图
+ Canvas
+ 计量表
+ Geomap
+ 直方图
+ Stat
+ 状态时间轴
+ 状态历史记录
+ 表
+ 时间序列
+ 趋势

## 默认阈值
<a name="v10-panels-thresholds-default"></a>

在支持阈值的可视化中，Grafana 具有以下默认阈值设置：
+ 80 = 红色
+ 基本 = 绿色
+ 模式 = 绝对
+ 显示阈值 = 关闭（对于某些可视化）

  有关更多信息，请参阅 [显示阈值](#v10-panels-thresholds-show)。

## 阈值选项
<a name="v10-panels-thresholds-options"></a>

您可以设置以下选项来进一步定义阈值的外观。

### 阈值
<a name="v10-panels-thresholds-value"></a>

此数字是触发阈值的值。您也可以在此字段中设置与阈值关联的颜色。

**基本**值表示负无穷大。默认设置为绿色，通常表示颜色正常。

### 阈值模式
<a name="v10-panels-thresholds-mode"></a>

有两种阈值模式：
+ **绝对**阈值由数字定义。例如，从 1 到 150 的刻度 80。
+ **百分比**阈值是相对于最小值或最大值定义的。例如，80%。

### 显示阈值
<a name="v10-panels-thresholds-show"></a>

**注意**  
只有条形图、K 线图、时间序列和趋势可视化支持此选项。

使用以下选项设置是否以及如何在可视化上显示阈值。
+ **关闭**：不显示阈值。
+ **为线条**：阈值在可视化中显示为水平线条。
+ **为线条（虚线）**：阈值显示为水平虚线。
+ **为填充区域**：阈值显示为水平区域。
+ **为填充区域和线条**：阈值显示为由线条分隔的水平区域。
+ **为填充区域和线条（虚线）**：阈值显示为由虚线分隔的水平区域。

## 添加阈值
<a name="v10-panels-thresholds-add"></a>

您可以根据需要向可视化添加任意数量的阈值。Grafana 会自动将阈值从最高到最低排序。

**添加阈值**

1. 导航到要更新的面板。

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

1. 从菜单中选择**编辑**。

1. 滚动到**阈值**部分，或在面板编辑窗格顶部的搜索栏中输入 `Thresholds`。

1. 选择 **\$1 添加阈值**。

1. 输入新的阈值，或使用字段右侧的向上和向下箭头逐步增加或减少该值。

1. 单击阈值左侧的彩色圆圈以打开颜色选取器，您可以在其中更新阈值颜色。

1. 在**阈值模式**下，选择**绝对值**或**百分比**。

1. 在**显示阈值**下，设置阈值的显示方式，或将其关闭。

要删除阈值，请导航到包含阈值的面板，然后选择要删除的阈值旁边的垃圾桶图标。

# 配置字段覆盖
<a name="v10-panels-configure-overrides"></a>

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

您可以通过覆盖自定义特定字段或序列的可视化设置。这是通过添加覆盖规则来实现的，该规则针对一组特定的字段，每个字段可以定义多个选项。

例如，您可以为所有包含文本 `bytes` 的字段设置单位，方法是使用**名称与正则表达式匹配的字段**匹配程序添加覆盖，然后将单位选项添加到覆盖规则。

## 示例 1：格式化温度
<a name="v10-panels-overrides-format-temperature"></a>

假设结果集是一个由两个字段组成的数据帧：`time` 和 `temperature`。


| 时间 | 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="v10-panels-overrides-format-humidity"></a>

假设结果集是一个由四个字段组成的数据帧：`time`、`high temp`、`low temp` 和 `humidity`。


| 时间 | 高温 | 低温 | 湿度 | 
| --- | --- | --- | --- | 
| 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="v10-panels-overrides-add-a-field"></a>

字段覆盖规则可以自定义特定字段或序列的可视化设置。

**添加字段覆盖**

1. 编辑要添加覆盖的面板。

1. 在面板选项侧窗格中，选择窗格底部的**添加字段覆盖**。

1. 选择要应用覆盖规则的字段：
   + **带名称的字段**：从所有可用字段列表中选择一个字段。使用此选择器添加到规则中的属性仅应用于此单个字段。
   + **名称与正则表达式匹配的字段**：使用该选项来指定要用正则表达式覆盖的字段。使用此选择器向规则添加的属性将应用于字段名称与正则表达式匹配的所有字段。这将选择要覆盖的字段，但不会重命名字段；为此，请使用[通过正则表达式重命名](v10-panels-xform-functions.md)转换。
   + **带类型的字段**：使用该选项可以按类型选择字段，例如字符串、数值等。使用此选择器添加到规则中的属性将应用于与所选类型匹配的所有字段。
   + **查询返回的字段**：选择特定查询返回的所有字段，例如 A、B 或 C。使用此选择器添加到规则中的属性将应用于所选查询返回的所有字段。

1. 选择**添加覆盖属性**。

1. 选择要应用的字段选项。

1. 通过在字段中添加值来输入选项。要将选项恢复为默认值，请删除字段中的白色文本。

1. 通过选择**添加覆盖属性**继续向该字段添加覆盖，或者您可以选择**添加覆盖**，然后选择其他要添加覆盖的字段。

1. 完成后，选择**保存**将所有面板编辑保存到控制面板。

## 删除字段覆盖
<a name="v10-panels-overrides-delete-a-field"></a>

当您不再需要字段覆盖时，将其删除。删除覆盖时，值的外观默认为其原始格式。此更改会影响依赖受影响面板的控制面板和控制面板用户。

**删除字段覆盖**

1. 编辑包含要删除的覆盖的面板。

1. 在面板选项侧窗格中，向下滚动直到看到覆盖。

1. 选择要删除的覆盖，然后选择关联的垃圾桶图标。

## 查看字段覆盖
<a name="v10-panels-overrides-view"></a>

您可以在面板显示选项中查看字段覆盖。

1. 编辑包含要查看的覆盖的面板。

1. 在面板选项侧窗格中，向下滚动直到看到覆盖。

**注意**  
**全部**选项卡上显示的覆盖设置与**覆盖**选项卡上显示的设置相同。

## 编辑字段覆盖
<a name="v10-panels-overrides-edit-a-field"></a>

要更改覆盖设置时，编辑字段覆盖。更改会立即生效。

**编辑字段覆盖**

1. 编辑包含要编辑的覆盖的面板。

1. 在面板选项侧窗格中，向下滚动直到看到覆盖。

1. 找到要更改的覆盖。

1. 执行以下任一操作：
   + 编辑现有覆盖或字段选择参数的设置。
   + 选择属性旁边的 **X** 来删除现有的覆盖属性。
   + 选择**添加覆盖属性**来添加覆盖属性。

# Grafana 10 提供的可视化
<a name="v10-panels-viz"></a>

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

Grafana 提供了多种可视化来支持不同的用例。本文档的这一部分重点介绍了内置可视化、其选项和典型用法。

[时间序列](v10-panels-time-series.md) 面板是一种常见的入门面板，用于学习使用面板的基础知识。

**注意**  
如果您不确定要选择哪个可视化，Grafana 可以根据面板查询提供可视化建议。当您选择可视化时，Grafana 将显示应用该可视化效果的预览。
+ 图形和图表
  + [时间序列](v10-panels-time-series.md)为默认，也是主要的图形可视化。
  + [状态时间轴](v10-panels-state-timeline.md)表示一段时间内的状态变化。
  + [状态历史记录](v10-panels-status-history.md)表示一段时间内的周期性状态。
  + [条形图](v10-panels-bar-chart.md)显示任何分类数据。
  + [直方图](v10-panels-histogram.md)计算并在条形图中显示值分布。
  + [热图](v10-panels-heatmap.md)以二维形式可视化数据，通常用于表示现象的幅度。
  + [饼图](v10-panels-piechart.md)通常用于比例很重要的地方。
  + [K线图通常](v10-panels-candlestick.md)用于以变动为 price/data 重点的财务数据。
  + [仪表](v10-panels-gauge.md)是传统的圆形视觉效果，显示单个指标距阈值的距离。
  + [趋势](v10-panels-trend.md)用于具有连续数字 X（而非时间）的数据集。
  + [XY 图表](v10-panels-xychart.md)提供了一种在图形中可视化任意 x 和 y 值的方法。
+ 统计和数字
  + [统计](v10-panels-stat.md)表示大型统计数据和可选迷你图。
  + [条形仪表](v10-panels-bar-gauge.md)是水平或垂直条形仪表。
+ Misc (杂项)
  + [表](v10-panels-table.md)是主要且唯一的表可视化。
  + [日志](v10-panels-logs.md)是日志的主要可视化效果。
  + [节点图](v10-panels-node-graph.md)表示定向图形或网络。
  + [跟踪](v10-panels-traces.md)是跟踪的主要可视化效果。
  + [火焰图](v10-panels-flamegraph.md)是分析的主要可视化效果。
  + [Geomap](v10-panels-geomap.md) 用来可视化地理空间数据。
  + [数据网格](v10-panels-datagrid.md)让您可以创建和操作数据，充当其他面板的数据来源。
+ 小组件
  + [控制面板列表](v10-panels-dashboard-list.md)可列出控制面板。
  + [警报列表](v10-panels-alert-list.md)可列出警报。
  + [文本](v10-panels-text.md)可显示 markdown 和 html。
  + [新闻](v10-panels-news.md)可显示 RSS 源。

## 获取更多
<a name="v10-panels-getmore"></a>

您可以从 [使用插件目录查找插件](grafana-plugins.md#plugin-catalog) 安装面板插件来添加更多可视化类型。

## 示例
<a name="v10-panels-examples"></a>

在以下部分中，您可以找到可视化示例。

## 图表
<a name="v10-panels-ex-graphs"></a>

对于基于时间的折线图、面积图和条形图，我们建议使用默认的[时间序列](v10-panels-time-series.md)可视化。

![\[显示 Grafana 中时间序列可视化示例的图像。\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/viz/time_series_example.png)


对于分类数据，请使用[条形图](v10-panels-bar-chart.md)。

![\[显示 Grafana 中条形图可视化示例的图像。\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/viz/barchart_example.png)


## 大型数字和统计
<a name="v10-panels-ex-numbers"></a>

[统计](v10-panels-stat.md)可视化显示一个很大的统计值，并带有可选的图表迷你图。您可以使用阈值或色阶控制背景或值颜色。

![\[显示 Grafana 中统计可视化示例的图像。\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/viz/stat_panel_example.png)


## 计量表
<a name="v10-panels-ex-gauge"></a>

如果要显示与最小值和最大值相关的值，则有两个选项。首先是标准径向[仪表](v10-panels-gauge.md)：

![\[显示 Grafana 中仪表可视化示例的图像。\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/viz/gauge_example.png)


其次，Grafana 还具有水平或垂直[条形仪表](v10-panels-bar-gauge.md)，具有三种不同的显示模式。

![\[显示 Grafana 中仪表可视化示例的图像。\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/viz/bar_gauge_example.png)


## 表
<a name="v10-panels-ex-table"></a>

要在表布局中显示数据，请使用[表](v10-panels-table.md)可视化。

![\[显示 Grafana 中表可视化示例的图像。\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/viz/table_example.png)


## 饼图
<a name="v10-panels-ex-piechart"></a>

要显示一个或多个查询中的缩减序列或序列中的值（因为其彼此相关），请使用[饼图](v10-panels-piechart.md)可视化。

![\[显示 Grafana 中饼图可视化示例的图像。\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/viz/pie_chart_example.png)


## 热图
<a name="v10-panels-ex-heatmaps"></a>

要显示一段时间内的值分布，请使用[热图](v10-panels-heatmap.md)可视化。

![\[显示 Grafana 中热图可视化示例的图像。\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/viz/heatmap_example.jpg)


## 状态时间轴
<a name="v10-panels-ex-state"></a>

[状态时间轴](v10-panels-state-timeline.md)可显示一段时间内的离散状态变化。与时间序列一起使用时，使用阈值将数值转换为离散状态区域。

![\[显示 Grafana 中状态时间轴可视化示例的图像。\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/viz/state_timeline_example.png)


# 警报列表
<a name="v10-panels-alert-list"></a>

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

使用警报列表来显示警报。您可以将列表配置为显示当前状态。有关警报的更多信息，请参阅 [Grafana 10 版本中的警报](v10-alerts.md)。

使用这些设置来改进可视化结果。

## 选项
<a name="v10-panels-alert-list-options"></a>
+ **组模式**：选择**默认分组**以显示按警报规则分组的警报实例，或者选择**自定义分组**以按一组自定义标签对警报实例进行分组。
+ **最大项目数**：设置要列出的最大警报数。
+ **排序顺序**：选择显示警报的排序方式。
  + **按字母顺序（升序）**：按字母顺序排列
  + **按字母顺序（降序）**：按字母顺序倒序排列
  +  **重要性**：根据以下值，按重要性划分，其中 1 为最高：
    + `alerting` 或 `firing`：1
    + `no_data`：2
    + `pending`：3
    + `ok`：4
    + `paused` 或 `inactive`：5
  + **时间（升序）**：最新的活动警报实例优先。
  + **时间（降序）**：最早的活动警报实例优先。
+  **来自此控制面板的警报**：仅显示警报列表所在控制面板的警报。

## 筛选条件
<a name="v10-panels-alert-filter"></a>

通过这些选项，您可以将显示的警报限制为仅与您选择的查询、文件夹或标签匹配的警报：
+ **警报名称**：输入警报名称查询。
+ **警报实例标签**：使用标签查询筛选警报实例。例如 `{severity="critical", instance=~"cluster-us-.+"}`。
+ **文件夹**：选择一个文件夹。仅会显示所选文件夹中控制面板的警报。
+ **数据来源**：筛选来自所选数据来源的警报。

## 状态筛选条件
<a name="v10-panels-alert-state-filter"></a>

选择要在此面板中显示的警报状态。
+ 警报/触发
+ 待定
+ 无数据
+ Normal
+ 错误

# 注释列表
<a name="v10-panels-annotations"></a>

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

注释列表显示了可用于查看注释数据的可用注释列表。有多种选项可用于根据标签和当前控制面板筛选列表。

## 注释查询
<a name="v10-panels-annotations-query"></a>

以下选项可控制注释列表的来源查询。

**查询筛选条件**

使用查询筛选条件从组织中的所有控制面板或此面板所在的当前控制面板创建注释列表。具有以下选项：
+ 所有控制面板：列出当前组织中所有控制面板的注释。
+ 此控制面板：将列表限制为当前控制面板上的注释。

**时间范围**

使用时间范围选项来指定是否应将列表限制在当前时间范围内。具有以下选项：
+ 无：注释查询没有时间范围限制。
+ 此控制面板：将列表限制为注释列表面板可用的控制面板的时间范围内。

**标签**

使用标签选项按标签筛选注释。您可以添加多个标签以优化列表。

**注意**  
或者，将标签列表留空，然后选择作为面板本身结果一部分列出的标签来动态筛选。

**限制**

使用“限制”选项来限制返回的结果数量。

## 显示
<a name="v10-panels-annotations-display"></a>

这些选项可控制注释面板显示中包含的其他元数据。

**显示用户**

使用此选项显示或隐藏创建注释的用户。

**显示时间**

使用此选项显示或隐藏创建注释的时间。

**显示标签**

使用此选项显示或隐藏注释相关的标签。*注意*：您可以使用标签对可视化本身的注释列表进行实时筛选。

## 链接行为
<a name="v10-panels-annotations-links"></a>

**链接目标**

使用此选项选择如何查看带注释的数据。具有以下选项：
+ 面板：此选项可让您直接进入面板的全屏视图，其中包含相应的注释
+ 控制面板：此选项将注释聚焦于完整控制面板的上下文中

**之前的时间**

使用此选项设置注释之前的时间范围。使用持续时间字符串值，例如“1h”= 1 小时，“10m”= 10 分钟等。

**之后的时间**

使用此选项设置注释之后的时间范围。

# 条形图
<a name="v10-panels-bar-chart"></a>

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

条形图允许用图形表示分类数据。

![\[显示 Grafana 中条形图可视化示例的图像。\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/viz/barchart_example.png)


## 支持的数据格式
<a name="v10-panels-bar-chart-formats"></a>

仅支持一个数据框，且该数据框至少需要一个字符串字段（用作 X 轴或 Y 轴的类别）和一个或多个数值字段。以下是数据格式的示例：


| 浏览器 | 市场占有率 | 
| --- | --- | 
| Chrome | 50 | 
| Internet Explorer | 17.5 | 

如果您有多个数值字段，面板会显示分组条形图。

### 可视化时间序列或多个结果集
<a name="v10-panels-bar-chart-visualization"></a>

如果您有多个时间序列或表，则首先需要使用 join 或 reduce 转换将其连接。例如，如果您有多个时间序列，并想要比较其最新值和最大值，请添加 **Reduce** 转换，并在**计算**下指定**最大值**和**最新值**选项。

## 条形图选项
<a name="v10-panels-bar-chart-options"></a>

使用以下选项来优化可视化效果。

**方向**
+ **自动**：Grafana 根据面板尺寸决定条形图的方向。
+ **水平**：将 X 轴设为类别轴。
+ **垂直**：将 Y 轴设为类别轴。

**旋转 x 轴刻度标签**

 当图形为垂直方向时，此设置会旋转条形图下方的标签。当条形图标签较长且重叠时，此设置很有用。

**X 轴刻度标签最大长度**

设置条形图标签的最大长度。超过最大长度的标签会被截断（用省略号）。

**条形标签最小间距**

设置条形标签之间的最小间距。

**显示值**

控制值是显示在条形图的顶部还是左侧。
+ **自动**：如果有空间，则显示值。
+ **始终**：始终显示值。
+ **从不**：从不显示值。

**堆叠**

控制条形图堆叠。
+ **关闭**：条形图不会堆叠。
+ **正常**：条形图彼此堆叠。
+ **百分比**：条形图彼此堆叠，每个条形图的高度为堆叠总高度的百分比。

**组宽度**

控制组的宽度。
+ `0 = Minimum width`
+ `1 = Maximum width`

**条形图宽度**

控制条形图的宽度。
+ `0 = Minimum width`
+ `1 = Maximum width`

**条形图半径**

控制条形图的半径。
+ `0 = Minimum radius`
+ `0.5 = Maximum radius`

**悬停时突出显示整个区域**

控制将鼠标悬停在条形图上时，是否突出显示条形图的整个周围区域。

**线宽**

控制条形图的线宽。

**填充不透明度**

控制条形图的填充不透明度。

**渐变模式**

设置渐变填充的模式。填充渐变基于线条颜色。要更改颜色，请使用标准颜色方案字段选项。

渐变外观受**填充不透明度**设置的影响。
+ **无**：无渐变填充。这是默认设置。
+ **不透明度**：渐变的透明度是根据 y 轴上的值计算的。填充的不透明度随 Y 轴上的值增加而增加。
+ **色调**：渐变色是根据线条颜色的色调生成的。

**工具提示模式**

当您将光标悬停在可视化上时，Grafana 可显示工具提示。选择工具提示的行为方式。
+ **单个**：悬停工具提示仅显示一个序列，即您将鼠标悬停在可视化上面的序列。
+ **全部**：悬停工具提示显示可视化中的所有序列。Grafana 在工具提示的序列列表中以粗体突出显示您悬停在上面的序列。
+ **隐藏**：与可视化交互时不显示工具提示。

**注意**  
可使用覆盖从工具提示隐藏单个序列。

**文本大小**

输入一个值以更改条形图上文本的大小。

## 图例选项
<a name="v10-panels-bar-chart-legend"></a>

**图例模式**

使用这些设置可定义图例在可视化中的显示方式。有关更多信息，请参阅 [配置图例](v10-panels-configure-legend.md)。
+ **列表**：以列表形式显示图例。这是图例的默认显示模式。
+ **表**：以表的形式显示图例。
+ **隐藏**：隐藏图例。

**图例放置**

选择放置图例的位置。
+ **底部**：显示在图形下方。
+ **右**：显示在图形右侧。

**图例值**

选择要在图例中显示的序列数据值或标准计算。可以输入多个值。有关更多信息，请参阅 [配置图例](v10-panels-configure-legend.md)。

## 轴选项
<a name="v10-panels-bar-chart-axis"></a>

使用以下字段设置来优化轴的显示方式。除非您在正在编辑的字段选项框外部单击或按 Enter 键，否则某些字段选项不会影响可视化。

**放置**

设置 y 轴的放置。
+ **自动**：Grafana 会自动为序列分配 Y 轴。当有两个或多个具有不同单位的序列时，Grafana 将左轴分配给第一个单位，将右轴分配给下一个单位。
+ **左**：在左侧显示所有 Y 轴。
+ **右**：在右侧显示所有 Y 轴。
+ **隐藏**：隐藏所有 Y 轴。

要有选择地隐藏轴，请针对特定字段[添加字段覆盖](v10-panels-configure-overrides.md)。

**标签**

设置 Y 轴文本标签。如果有多个 Y 轴，可使用覆盖分配不同的标签。

**Width (宽度)**

设置轴的固定宽度。默认情况下，Grafana 会动态计算轴的宽度。

通过设置轴的宽度，具有不同轴类型的数据可以共享相同的显示比例。这样就可以更容易比较多个图形的数据，因为轴在视觉上不会相互移动或拉伸。

**软最小值和软最大值**

设置软最小值或软最大值选项，以更好地控制 Y 轴限制。默认情况下，Grafana 会根据数据集自动设置 Y 轴的范围。

软最小值或软最大值设置可以防止在数据大部分平缓的情况下，出现山峰状的突起，而从标准最小值和最大值字段选项派生的硬最小值或硬最大值，则可以通过剪裁超过定义点的尖峰，来防止间歇性尖峰压平有用的细节。

您可以设置标准 min/max 选项来定义 Y 轴的硬限制。有关更多信息，请参阅 [配置标准选项](v10-panels-configure-standard-options.md)。

**显示多个 y 轴**

在某些情况下，您可能希望显示多个 Y 轴。例如，如果您有一个数据集，显示一段时间内的温度和湿度，则可能需要为这两个序列显示两个具有不同单位的 y 轴。

您可以通过[添加字段覆盖](v10-panels-configure-overrides.md)来实现这一点。根据需要多次执行这些步骤，以添加任意数量的 y 轴。

# 条形仪表
<a name="v10-panels-bar-gauge"></a>

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

条形仪表可将每个字段归约为单个值，从而简化数据。您可以选择 Grafana 计算归约的方式。

此面板可以显示一个或多个条形仪表，具体取决于查询返回的序列、行或列的数量。

![\[显示 Grafana 中条形仪表可视化示例的图像。\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/viz/bar_gauge_example.png)


## 值选项
<a name="v10-panels-bar-gauge-value"></a>

使用以下选项来优化可视化显示值的方式：

**Show (显式)**

选择 Grafana 显示数据的方式。

**计算**

显示基于所有行的计算值。
+ **计算**：选择一个 reducer 函数，Grafana 将使用该函数将多个字段归约为单个值。有关可用计算的列表，请参阅[计算类型](v10-panels-calculation-types.md)。
+ **字段**：选择面板中显示的字段。

**所有值**

为每行显示一个单独的统计数据。如果选择此选项，则还可以限制要显示的行数。
+ **限制**：要显示的最大行数。默认为 5000。
+ **字段**：选择面板中显示的字段。

## 条形仪表选项
<a name="v10-panels-bar-gauge-options"></a>

调整条形仪表的显示方式。

**方向**

选择堆叠方向。
+ **自动**：Grafana 会选择其认为最佳的方向。
+ **水平**：从左到右水平拉伸条形图。
+ **垂直**：从上到下垂直拉伸条形图。

**显示模式**

选择一种显示模式。
+ **渐变**：阈值级别定义梯度。
+ **复古 LCD**：将仪表分成点亮或不点亮的小单元格。
+ **基本**：基于匹配阈值的单色。

**值显示**

选择一种值显示模式。
+ **值颜色**：值颜色由值决定。
+ **文本颜色**：值颜色是默认的文本颜色。
+ **隐藏**：隐藏值。

**名称放置**

选择名称放置模式。

**注意**  
仅当条形仪表的方向为水平时，此选项才适用。当条形仪表处于垂直方向时，名称始终放在每个条形仪表的底部。
+ **自动**：Grafana 决定最佳位置。
+ **顶部**：名称位于每个条形仪表的顶部。
+ **左**：称位于每个条形仪表的左侧。

**显示未填充区域**

如果要将条形图的未填充区域渲染为深灰色，请选择此选项。不适用于复古 LCD 显示模式。

**条形图尺寸**

选择条形图尺寸模式。
+ **自动**：Grafana 决定最佳条形仪表尺寸。
+ **手动**：手动配置条形仪表尺寸。

**最小宽度**

当仪表垂直放置时，限制条形图列的最小宽度。

当数据量较大时，自动显示 x 轴滚动条。

**注意**  
此选项仅在条形图尺寸设置为手动时适用。

**最小高度**

当仪表处于水平方向时，限制条形图行的最小高度。

当数据量较大时，自动显示 y 轴滚动条。

**注意**  
此选项仅在条形图尺寸设置为手动时适用。

**最大高度**

当仪表处于水平方向时，限制条形图行的最大高度。

当数据量较大时，自动显示 y 轴滚动条。

**注意**  
此选项仅在条形图尺寸设置为手动时适用。

# K 线图
<a name="v10-panels-candlestick"></a>

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

通过 K 线图可视化，您可以可视化包含多个一致维度的数据（侧重于价格走势）。Kandlestick 面板包括 Open-High-Low-Close (OHLC) 模式，并支持基于时间序列数据的其他维度。

![\[显示 Grafana 中 K 线图可视化示例的图像。\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/viz/candlestick-panel-example.png)


K 线图可视化建立在 [时间序列](v10-panels-time-series.md) 的基础之上，包含许多常用的配置设置。

## Mode
<a name="v10-panels-candlestick-mode"></a>

您可以使用模式选项切换用于可视化的维度。
+ **K 线图**：将面板维度限制为 K 线图可视化使用的开盘、高点、低点和收盘维度。
+ **成交量**：将面板维度限制为成交量维度。
+ **二者**：是 K 线图面板的默认行为。包括 K 线图和成交量可视化。

## 蜡烛样式
<a name="v10-panels-candlestick-style"></a>
+ **K 线图**：默认的显示样式，可在开盘和收盘维度之间创建蜡烛样式的可视化效果。
+ **OHLC 条形图**：显示四个核心维度的开盘值、高点值、低点值和收盘值。

## 颜色策略
<a name="v10-panels-candlestick-color"></a>
+ **开盘以来**：默认行为。如果期间内价格变动为正值，该模式将使用*上涨*颜色。换句话说，如果收盘时的值大于或等于开盘时的值，则使用*上涨*颜色。
+ **上次收盘以来**：另一种显示方法，蜡烛的颜色取决于期间内的价格走势或价值变化。换句话说，如果开盘值大于收盘值，则使用*上涨*颜色。如果开盘值小于收盘值，则使用*下跌*颜色。*该选项还会触发空心 K 线图可视化模式*。空心表示周期内的变动为正值（收盘时的值高于开盘时的值），实心表示周期内的变动为负值（收盘时的值低于开盘时的值）。要了解更多信息，请参阅[差异说明](https://thetradingbible.com/how-to-read-hollow-candlesticks)。

## 上涨和下跌颜色
<a name="v10-panels-candlestick-updown"></a>

**上涨颜色**和**下跌颜色**选项用于选择价格上涨或下跌时使用的颜色。上述*颜色策略*将决定是使用周期内还是周期间的价格变动来选择 K 线图或 OHLC 条形图的颜色。

## 开盘、高点、低点、收盘
<a name="v10-panels-candlestick-ohlc"></a>

K 线图面板会尝试将字段映射到相应的维度。
+ **开盘**对应给定周期的起始值。
+ **高点**对应给定周期的最高值。
+ **低点**对应给定周期的最低值。
+ **收盘**对应给定周期的最终（结束）值。
+ **成交量**对应给定周期内的样本数（例如交易次数）

**注意**  
K 线图例不显示这些值。

要正确映射这些维度，数据中的查询结果表必须*至少*包含以下列。
+ `timestamp`
+ `open`
+ `high`
+ `low`
+ `close`

如果由于某种原因（例如，因为列名称不同），您的数据无法映射到这些维度，您可以使用面板编辑器中 **K 线图**选项下的**开盘值**、**高点值**、**低点值**和**收盘值**字段手动映射。

## 其他字段
<a name="v10-panels-candlestick-other"></a>

**其他字段**

K 线面板基于时间序列可视化。除了开盘值、高点值、低点值、收盘值和交易量之外，还可以可视化其他数据维度。**Include** 和 **Ignore** 选项允许面板使用 [时间序列](v10-panels-time-series.md) 中可用的相同样式和配置来可视化其他包含的数据，如简单移动平均线、布林线等。

# Canvas
<a name="v10-panels-canvas"></a>

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

画布将 Grafana 的强大功能与自定义元素的灵活性相结合。画布是可扩展的表单构建面板，允许在静态和动态布局中显式放置元素。这使您能够以标准 Grafana 面板无法实现的方式设计自定义可视化和叠加数据，所有这些都在 Grafana 的 UI 中完成。如果您使用过流行的 UI 和 Web 设计工具，那么设计画布面板会感觉非常熟悉。

## 元素
<a name="v10-panels-canvas-elements"></a>

您可以在画布上添加这些元素。通过添加多种不同类型的元素，您可以以任何其他可视化无法实现的方式自定义可视化。

**指标值**

指标值元素让您可以轻松选择要在画布上显示的数据。此元素具有独特的*编辑*模式，可通过上下文菜单**编辑**选项或双击面板来触发。在编辑模式下，您可以选择要显示的字段数据。

**文本**

文本元素使您能够轻松地向画布添加文本。该元素还支持编辑模式，可通过双击或上下文菜单中的编辑菜单选项触发。

**椭圆**

椭圆元素允许您在画布上添加一个基本的椭圆。椭圆元素可以显示文本（固定数据和字段数据），其背景颜色可以根据数据阈值进行更改。

**矩形**

通过矩形元素，您可以在画布上添加基本的矩形。矩形元素可以显示文本（固定数据和字段数据），其背景颜色可以根据数据阈值进行更改。

**图标**

通过图标元素，您可以将支持的图标添加到画布。可根据阈值或值映射来设置图标的颜色。

**服务器**

服务器元素让您可以轻松表示单个服务器、服务器堆栈、数据库或终端。服务器元素支持状态颜色、灯泡颜色和灯泡闪烁率，所有这些都可通过固定值或字段值来配置。

**Button**

您可以通过按钮元素在画布上添加基本按钮。按钮元素支持触发未经验证的基本 API 调用。API 设置可在按钮元素编辑器中找到。您也可以在 API 编辑器中传递模板变量。

**注意**  
只有在禁用内联编辑时，选择按钮才会触发 API 调用。请参阅[画布编辑](#v10-panels-canvas-editing)。

## Connections
<a name="v10-panels-canvas-connections"></a>

在构建画布时，您可以将元素连接在一起，以创建更复杂的可视化效果。您可以通过从一个元素的连接锚点拖动到另一个元素的连接锚点，来创建连接。您也可以创建与画布背景的连接。当您将鼠标悬停在元素上并打开内联编辑时，会显示连接锚点。要删除连接，请选择该连接，然后按 `Delete` 或 `Backspace`。

您可以根据固定值或字段值设置连接的大小和颜色。为此，请进入面板编辑模式，选择连接，然后在面板编辑器中修改连接的属性。

## 画布编辑
<a name="v10-panels-canvas-editing"></a>

**内联编辑器**

您可以在控制面板模式的上下文中内联编辑画布。

**平移和缩放**

您可以在画布上打开平移和缩放功能。这让您可以创建和浏览更复杂的设计。

**注意**  
Grafana Labs 目前提供平移和缩放预览版。支持有限，并且在正式发布之前可能会发生重大更改。

**上下文菜单**

通过上下文菜单，您可以快速高效地执行常见任务。支持的功能包括打开和关闭内联编辑器、复制元素、删除元素等。

右键单击面板（或等效操作）或给定画布元素会触发上下文菜单。

右键单击*面板*时，您可以设置背景图像，轻松地向画布添加元素。

右键单击*元素*时，您可以编辑、删除和复制该元素，或者修改元素的图层位置。

## 画布选项
<a name="v10-panels-canvas-options"></a>

**内联编辑**

内联编辑开关让您可以锁定或解锁画布面板。关闭后，画布面板将处于*锁定*状态，将元素冻结在原位并防止意外修改。

**数据链接**

画布支持[数据链接](v10-panels-configure-data-links.md)。您可以按照以下步骤为指标值元素创建数据链接，并在使用该字段名称的所有元素中显示。

**为元素创建数据链接**

1. 设置要绑定到字段值的元素。

1. 关闭内联编辑开关。

1. 为**带有名称的字段**创建覆盖，然后从列表中选择元素字段名称。

1. 选择 **\$1 添加覆盖属性**按钮。

1. 从列表中选择**数据链接 > 数据链接**。

1. 选择 **\$1 添加链接**，为数据链接添加标题和 URL。

1. 将鼠标悬停在元素上可显示数据链接工具提示。

1. 选择能够打开数据链接的元素。

如果多个元素使用相同的字段名称，而您又想控制哪些元素显示数据链接，可使用 [从计算添加字段](v10-panels-xform-functions.md#v10-panels-xform-funcs-add) 转换创建唯一字段名称。您在转换中创建的别名将显示为可与元素一起使用的字段。

# 控制面板列表
<a name="v10-panels-dashboard-list"></a>

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

控制面板列表可展示指向其他控制面板的动态链接。可将该列表配置为使用已加星标的控制面板、最近查看的控制面板、搜索查询和控制面板标签。

每次加载仪表板时，此面板都会查询仪表板列表，始终提供最多的 up-to-date结果。

**Options**

使用以下选项来优化可视化效果。
+ **包括当前时间范围**：选择此选项可将当前控制面板的时间范围传播到控制面板链接。当用户选择链接时，链接的控制面板将会打开，并显示已设置的指示时间范围。
+ **包括当前模板变量值**：选择此选项可在链接中包含当前用作查询参数的模板变量。当用户选择链接时，链接的控制面板中的任何匹配模板都将设置为列表中的值。有关更多信息，请参阅 [控制面板 URL 变量](v10-dash-dashboard-url-variables.md)。
+ **已加星标**：按字母顺序显示已加星标的控制面板。
+ **最近查看**：按字母顺序显示最近查看的控制面板。
+ **搜索**：按搜索查询或标签显示控制面板。您必须在**查询**或**标签**中至少输入一个值。对于**查询**和**标签**字段，支持变量插值，例如，`$my_var` 或 `${my_var}`。
+ **显示标题**：所选列表选择（已加星标、最近查看、搜索）显示为标题。
+ **最大项数**：设置每个部分列出的最大项数。例如，如果您保留默认值 10，并显示已加星标和最近查看的控制面板，则该面板将最多显示 20 个控制面板，每个部分有 10 个。

**搜索**

仅当选择**搜索**选项时，这些选项才适用。
+ **查询**：输入您要搜索的查询。查询不区分大小写，并接受部分值。
+ **文件夹**：选择要显示的控制面板文件夹。
+ **标签**：您可以在此输入要搜索的标签。现有标签不会在您键入时显示，*并且*区分大小写。

**注意**  
当出现多个标签和字符串时，控制面板列表将显示符合*所有*条件的标签和字符串。

# 数据网格
<a name="v10-panels-datagrid"></a>

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

**注意**  
Grafana Labs 目前提供数据网格可视化预览版。支持有限，并且在正式发布之前可能会发生重大更改。

数据网格可让您在 Grafana 中创建、编辑和微调数据。因此，该面板可充当控制面板内其他面板的数据来源。

![\[显示 Grafana 中数据网格可视化示例的图像。\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/viz/datagrid-panel-example.png)


通过此可视化，您可以操作从任何数据来源查询的数据，可以从空白面板开始，也可以从拖放的文件中提取数据。然后，您可以将面板用作简单的表格可视化，也可以修改数据，甚至将其完全删除，创建空白面板。

编辑数据集会将数据来源更改为使用内置的 **Grafana** 数据来源，替换旧的数据来源设置和相关查询，同时还会将当前数据集复制到控制面板模型中。

然后，您可以使用内置的**控制面板**数据来源提取数据网格数据，将面板用作其他面板的数据来源。这提供了交互式控制面板体验，您可以在其中修改数据并查看反映在其他面板中的更改。

有关 **Grafana** 和**控制面板**数据来源的更多信息，请参阅 [特殊数据来源](AMG-data-sources.md#AMG-data-sources-special)。

## 上下文菜单
<a name="v10-panels-datagrid-context"></a>

为了提供更简化的体验，数据网格有一个上下文菜单，可通过右键单击单元格、列标题或行选择器来访问该菜单。根据数据网格的状态，上下文菜单提供了不同的选项，其中包括以下选项。
+ 删除或清除所有行和列。
+ 删除所有现有数据（将数据网格渲染为空白）。
+ 触发搜索功能，允许在数据集中查找关键字。

删除行或列将从数据网格中删除数据，而清除行或列只会从单元格中删除数据，行或列保持不变。

**标题菜单**

您也可以选择标题标题旁边的下拉图标来访问标题菜单。在这里，您不仅可以删除或清除列，还可以重命名、冻结或转换列的字段类型。

## 选择序列
<a name="v10-panels-datagrid-selectseries"></a>

如果有多个序列，您可以使用面板选项中的**选择序列**下拉列表将数据网格设置为显示首选数据集。

## 使用数据网格
<a name="v10-panels-datagrid-using"></a>

数据网格提供了多种与数据交互的方式。您可以编辑、移动、清除和删除行和列；使用内置搜索功能查找特定数据；转换字段类型或冻结特定列的水平滚动。

**添加数据**

您可以通过创建新的列或行向数据网格添加数据。

**添加新列**

1. 在现有面板中，选择表标题中最后一列后面的 **\$1** 按钮。

1. 为新列添加名称。

1. 选择字段外部的任意位置或按 `Enter` 键保存列。

现在，您可以在每个单元格中添加数据。

要添加新行，请选择最后一行后面的 **\$1** 按钮。该按钮位于最后一行之后的每个单元格中，选择该按钮会触发创建新行，同时还会激活您选择的单元格。

**编辑数据**

您可以根据需要移动列和行。

**移动列**

1. 按住需要移动的列的标题。

1. 将列拖到所需位置。

1. 释放列以完成移动。

要移动行，请从位于网格最左侧的数字列中选择并按住行选择器，然后将其拖动到所需位置。释放行以完成移动。

**选择多个单元格**

您可以选择多个单元格，方法是选择单个单元格，然后拖动到其他单元格。此选择可用于从选定单元格中复制数据或使用 `Delete` 键将其删除。

**删除或清除多行或多列**

要删除或清除多行，可执行以下操作。

**删除或清除多行或多列**

1. 将鼠标悬停在数字列（网格中第一列的左侧）上可显示行复选框。

1. 选中要使用的行的复选框。要选择多个连续行，请按住 `Shift` 键，同时单击第一行和最后一行。要选择不连续的行，请按住 `Ctrl`（或 `Cmd`）键，同时单击所需的行。

1. 右键单击（或等效操作）以访问上下文菜单。

1. 选择**删除行**或**清除行**。

单击列标题，同样的规则也适用于列。

要删除所有行，请使用数据网格左上角的**全选**复选框。这将选择所有行，并允许使用上下文菜单将其删除。

# 火焰图
<a name="v10-panels-flamegraph"></a>

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

火焰图允许可视化分析数据。使用此可视化效果，可以将配置文件表示为火焰图和/或表。

![\[显示 Grafana 中火焰图可视化示例的图像。\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/viz/flamegraph-panel-example.png)


## 火焰图模式
<a name="v10-panels-flamegraph-mode"></a>

火焰图利用了分析数据的层次性。这种图形将数据压缩成一种格式，让您轻松查看哪些代码路径消耗了最多的系统资源，如 CPU 时间、分配的对象或测量内存时的空间。火焰图中的每个块代表堆栈中的一个函数调用，宽度代表其值。

灰色部分是一组表示相对较小的值的函数，出于性能原因，折叠在一起形成一个部分。

您可以将鼠标悬停在特定函数上以查看工具提示，其中显示有关该函数的其他数据，例如函数的值、占总值的百分比以及函数的样本数。

**下拉操作**

您可以单击某个函数，以显示包含其他操作的下拉菜单：
+ **焦点块**：当您选择**焦点块**时，数据块或函数将设置为火焰图宽度的 100%，并且所有子函数都会显示，其宽度相对于父函数的宽度更新。这使得更容易向下钻取到火焰图的较小部分。
+ **复制函数名称**：当您选择**复制函数名称**时，将复制该块所代表的函数的全名。
+ **三明治视图**：三明治视图允许显示点击函数的上下文。该视图在顶部显示函数的所有调用放，在底部显示所有被调用方。这显示了函数的聚合上下文，因此如果该函数存在于火焰图中的多个位置，则所有上下文都显示并聚合在三明治视图中。

**状态栏**

 状态栏显示有关火焰图和当前应用修改的元数据，例如图形的哪个部分处于焦点或三明治视图中显示什么函数。单击状态栏中的 **X** 以删除修改。

## 工具栏
<a name="v10-panels-flamegraph-toolbar"></a>

**搜索**

您可以使用搜索字段查找具有特定名称的函数。火焰图中与搜索匹配的所有函数都将保持彩色，而其余函数将灰显。

**颜色方案选取器**

您可以根据函数的值或软件包名称切换着色函数，以便直观地将同一软件包中的函数联系在一起。

**文本对齐**

将文本向左或向右对齐，以便在函数名称不适合块时显示函数名称中更重要的部分。

**可视化选取器**

您可以选择仅显示火焰图和/或仅显示表。

## 顶部表模式
<a name="v10-panels-flamegraph-toptablemode"></a>

顶部表以表格式显示了配置文件中的函数。该表有三列：符号、自身和总计。默认情况下，该表按自身时间排序，但也可以通过单击列标题按总时间或符号名称重新排序。如果给定函数出现在配置文件中的多个位置，则每行表示该函数的聚合值。

每行左侧还有操作按钮。第一个按钮搜索函数名称，第二个按钮显示函数的三明治视图。

## 数据 API
<a name="v10-panels-flamegraph-dataapi"></a>

为了渲染火焰图，必须使用[嵌套集模型](https://wikipedia.org/wiki/Nested_set_model)格式化数据帧数据。

嵌套集模型可确保火焰图中的每个项目仅通过其嵌套级别作为整数值、元数据及其在数据帧中的顺序编码。这意味着项目的顺序很重要，必须正确。排序是对火焰图中项目的深度优先遍历，可重新创建图形，而无需像在子数组中那样在数据帧中使用可变长度值。

必填字段：


| 字段名称 | Type | 说明 | 
| --- | --- | --- | 
| level | 数字 | 项目的嵌套级别。换句话说，这个项目和火焰图的顶部项目之间有多少项目。 | 
| 值 | 数字 | 项目的绝对值或累积值。这相当于图形中项目的宽度。 | 
| label | 字符串 | 为特定项目显示的标签。 | 
| self | 数字 | 自身值，通常是项目的累积值减去其直接子项目的累积值之和。 | 

# 计量表
<a name="v10-panels-gauge"></a>

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

仪表是单值可视化，可为每个序列、列或行重复仪表。

![\[显示 Grafana 中仪表可视化示例的图像。\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/viz/gauge_example.png)


## 值选项
<a name="v10-panels-gauge-value"></a>

使用以下选项来优化可视化显示值的方式：

**Show (显式)**

选择 Grafana 显示数据的方式。

*计算*

显示基于所有行的计算值。
+ **计算**：选择一个 reducer 函数，Grafana 将使用该函数将多个字段归约为单个值。有关可用计算的列表，请参阅 [计算类型](v10-panels-calculation-types.md)。
+ **字段**：选择面板中显示的字段。

*所有值*

为每行显示一个单独的统计数据。如果选择此选项，则还可以限制要显示的行数。
+ **限制**：要显示的最大行数。默认为 5000。
+ **字段**：选择面板中显示的字段。

## 计量表
<a name="v10-panels-gauge-gauge"></a>

调整仪表的显示方式。

**方向**

选择堆叠方向。
+ **自动**：仪表按行和列显示。
+ **水平**：仪表从上到下显示。
+ **垂直**：仪表从左到右显示。

**显示阈值标签**

控制是否显示阈值。

**显示阈值标记**

控制是否在内部仪表值范围之外显示阈值范围。

**仪表尺寸**

选择仪表尺寸模式
+ **自动**：Grafana 决定最佳仪表尺寸。
+ **手动**：手动配置仪表尺寸。

**最小宽度**

设置垂直方向仪表的最小宽度。

如果设置了最小宽度，当数据量较大时，会自动显示 x 轴滚动条。

**注意**  
此选项仅在仪表尺寸设置为手动时适用。

**最小高度**

设置水平方向仪表的最小高度。

如果设置了最小高度，当数据量较大时，会自动显示 y 轴滚动条。

**注意**  
此选项仅在仪表尺寸设置为手动时适用。

**中性**

设置填充每个仪表的起始值。

## 文本大小
<a name="v10-panels-gauge-textsize"></a>

调整仪表文本的大小。
+ **标题**：输入仪表标题大小的数值。
+ **值**：输入仪表值大小的数值。

# Geomap
<a name="v10-panels-geomap"></a>

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

Geomap 让您可以使用地理空间数据，查看和自定义世界地图。通过配置各种叠加样式和地图视图设置，您可以轻松聚焦于数据中基于位置的重要特征。

**注意**  
您可以在提供的底图图层之上添加自己的地理空间数据。 AWS底图图层必须全部来自。[https://tiles.maps.search-services.aws.a2z.com](https://tiles.maps.search-services.aws.a2z.com)

![\[显示 Grafana 中 geomap 可视化示例的图像。\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/viz/geomap-panel-example.png)


## 地图视图
<a name="v10-panels-geomap-view"></a>

地图视图控制控制面板加载时地图的初始视图。

**初始视图**

初始视图配置首次加载 GeoMap 面板时面板的呈现方式。
+ **视图**设置面板首次加载时地图的中心。
  + **适应数据**根据地图图层的数据范围适应地图视图，并在数据发生变化时更新。
    + **数据**选项允许根据*所有图层*、单个*图层*或所选图层的*最后一个值*来选择范围。
    + 如果适应来自单个*图层*或图层*最后一个值*的数据，则可以选择**图层**。
    + **填充**以超出数据范围的相对百分比设置填充（仅在查看*最后一个值*时不可用）。
    + **最大缩放**设置适应数据时的最大缩放级别。
  + **坐标**根据以下因素设置地图视图：
    + **纬度**
    + **经度**
  + 还提供了默认视图，包括：
    + **（0°, 0°）**
    + **北美洲**
    + **南美洲**
    + **欧洲**
    + **非洲**
    + **西亚**
    + **南亚**
    + **东南亚**
    + **东亚**
    + **澳大利亚**
    + **大洋洲**
+ **缩放**设置初始缩放级别。

## 地图图层
<a name="v10-panels-geomap-layers"></a>

Geomap 支持显示多个图层。每个图层决定了如何基于基础地图，实现地理空间数据的可视化。

**类型**

Geomap 可视化中有三种地图层类型可供选择。
+ [标记图层](#v10-panels-geomap-markers) 在每个数据点渲染一个标记。
+ [热图图层](#v10-panels-geomap-heatmap) 可视化数据的热图。
+ [GeoJSON 图层](#v10-panels-geomap-geojson) 渲染 GeoJSON 文件中的静态数据。
+ [夜间/白天图层（Alpha）](#v10-panels-geomap-nightday) 渲染夜间或白天区域。
+ [路由图层（预览）](#v10-panels-geomap-route) 将数据点渲染为路径。
+ [照片图层（预览）](#v10-panels-geomap-photos) 在每个数据点渲染一张照片。
+ [网络图层（预览）](#v10-panels-geomap-network) 根据数据可视化网络图。

还有两种实验性（或 alpha）图层类型。
+ **最后一个点的图标（alpha）**在最后一个数据点渲染一个图标。
+ **动态 GeoJSON（alpha）**根据查询结果设置 GeoJSON 文件的样式。

**注意**  
在公共预览中标记为*预览*或 *alpha* 的图层。Grafana Labs 提供的支持有限，在该功能正式发布之前可能会发生重大更改。

**图层控件**

图层控件允许您创建图层、更改图层名称、重新排序和删除图层。
+ **添加图层**可为 geomap 创建附加的可配置数据图层。添加图层时，系统会提示您选择图层类型。在面板配置过程中，您可以随时更改图层类型。
+ 通过图层控件，您可以重命名、删除和重新排序面板上的图层。
  + **编辑图层名称**（铅笔图标）可重命名图层。
  + **垃圾桶**可删除图层。
  + **重新排序**（六个 dots/grab 手柄）允许您更改图层顺序。较高图层的数据将显示在较低图层的数据之上。拖放时，可视化将更新图层顺序，以帮助简化图层顺序的选择。

您可以向单个 geomap 面板添加多层数据，以创建丰富、详细的可视化效果。

**位置**

Geomap 需要一个地理数据来源。这些数据来自数据库查询，数据有四种映射选项。
+ **自动**可自动搜索位置数据。当您的查询基于以下数据字段名称之一时，请使用此选项。
  + *地理哈希*：`geohash`
  + *纬度*：`latitude`、`lat`
  + *经度*：`longitude`、`lng`、`lon`
  + *查找*：`lookup`
+ **坐标**指定查询包含坐标数据。系统会提示您从数据库查询中选择纬度和经度的数值数据字段。
+ **地理哈希**指定您的查询包含地理哈希数据。系统会提示您从数据库查询中为地理哈希选择字符串数据字段。
+ **查找**指定查询包含需要映射为地理位置的名称数据。系统将提示您从数据库查询和地名录中选择查找字段。地名录是用于将查询到的数据映射到地理点的目录。

## 标记图层
<a name="v10-panels-geomap-markers"></a>

标记图层允许您将数据点显示为不同的标记形状，如圆形、方形、三角形、星形等。

标记有许多自定义选项。
+ **大小**可配置标记的大小。默认值为 `Fixed size`，无论数据如何，所有标记的大小都相同；但还有一个选项可以根据与所选字段对应的数据来调整标记的大小。必须设置 `Min` 和 `Max` 标记大小，以便标记图层可以在此范围内缩放。
+ **符号**允许您选择符号、图标或图形，以帮助为数据提供额外的可视化上下文。从 Grafana 中包含的资源中选择，例如简单符号或 Unicon 库。您也可以指定包含图像资源的 URL。图像必须是可缩放向量图形（SVG）。
+ **符号垂直对齐**可配置符号相对于数据点的垂直对齐方式。请注意，首先围绕数据点应用符号的旋转角度，然后相对于符号的旋转应用垂直对齐。
+ **符号水平对齐**可配置符号相对于数据点的水平对齐方式。请注意，首先围绕数据点应用符号的旋转角度，然后相对于符号的旋转应用水平对齐。
+ **颜色**可配置标记的颜色。默认 `Fixed color` 将所有标记设置为特定颜色。还可以根据选定的字段数据点值和**标准选项**部分设置的颜色方案来设置条件颜色。
+ **填充不透明度**可配置每个标记的透明度。
+ **旋转角度**可配置每个标记的旋转角度。默认为**固定值**，这将使所有标记旋转到相同的角度，无论数据如何；但还有一个选项可以根据与所选字段对应的数据来设置标记的旋转。
+ **文本标签**可为每个标记配置文本标签。
+ **显示图例**允许切换图层的图例。
+ **显示工具提示**允许切换图层的工具提示。

## 热图图层
<a name="v10-panels-geomap-heatmap"></a>

热图图层将各种数据点聚类，以直观显示不同密度的位置。

![\[显示在 Grafana 中使用 geomap 可视化热图示例的图像。\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/viz/geomap-heatmap-example.png)


添加热图图层：

选择数据图层下的下拉菜单并选择 `Heatmap`。

与 `Markers` 类似，系统会提示您使用各种选项来确定要可视化的数据点以及可视化的方式。
+ **权重值**用于配置热图集群的强度。**固定值**使所有数据点的权重值保持恒定。该值范围应为 0-1。与标记类似，下拉列表中还有一个备选选项，可以根据数据值自动缩放权重值。
+ **半径**用于配置热图集群的大小。
+ **模糊**用于配置每个集群的模糊程度。
+ **不透明度**可配置每个集群的不透明度。
+ **显示工具提示**允许切换图层的工具提示。

## GeoJSON 图层
<a name="v10-panels-geomap-geojson"></a>

通过 GeoJSON 图层，可从文件系统中选择并加载静态 GeoJSON 文件。
+ **GeoJSON URL** 提供了 Grafana 附带的 GeoJSON 文件供您选择。
+ **默认样式**控制当上述规则不匹配时要应用的样式。
  + **颜色**可配置默认样式的颜色
  + **不透明度**可配置默认的不透明度
+ **样式规则**根据特征属性应用样式
  + **规则**允许您从 GeoJSON 文件中选择*特征*、*条件*和*值*来定义规则。垃圾桶图标可用于删除当前规则。
  + **颜色**可为当前规则配置样式的颜色
  + **不透明度**可配置当前规则的透明度级别。
+ **添加样式规则**可创建其他样式规则。
+ **显示工具提示**允许切换图层的工具提示。

## 夜间/白天图层（Alpha）
<a name="v10-panels-geomap-nightday"></a>

夜间/白天图层根据当前时间范围显示夜间和白天区域。

![\[显示在 Grafana 中使用 geomap 可视化夜间/白天图层示例的图像。\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/viz/geomap-day-night-example.png)


**Options**
+ **显示**从面板时间范围切换时间来源。
+ **夜间区域颜色**选择夜间区域的颜色。
+ **显示太阳**切换太阳图标。
+ **不透明度**从 0（透明）到 1（不透明）。
+ **显示工具提示**允许切换图层的工具提示。

**注意**  
有关更多信息，请参阅 [ OpenLayers -的扩展 DayNight](https://viglino.github.io/ol-ext/examples/layer/map.daynight.html)。

## 路由图层（预览）
<a name="v10-panels-geomap-route"></a>

路由图层将数据点渲染为路径。

**注意**  
路径图层当前为公共预览版。Grafana Labs 提供的支持有限，在该功能正式发布之前可能会发生重大更改。

![\[显示在 Grafana 中使用 geomap 可视化路由图层示例的图像。\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/viz/geomap-route-layer-example.png)


**Options**
+ **大小**设置路由粗细。默认为固定值。选择字段数据后，您可以设置字段数据可以缩放的最小值和最大值范围。
+ **颜色**设置路由颜色。默认设置为固定颜色，也可以将颜色与字段数据绑定。
+ **填充不透明度**可配置路由的不透明度。
+ **文本标签**可为每个路由配置文本标签。
+ **箭头**可配置箭头样式，使其按数据顺序沿路由显示。
  + **无**
  + **正向**
  + **反向**
+ **显示工具提示**允许切换图层的工具提示。

**注意**  
有关更多信息，请参阅 [ OpenLayers -流线样式的扩展](http://viglino.github.io/ol-ext/examples/style/map.style.gpxline.html)。

## 照片图层（预览）
<a name="v10-panels-geomap-photos"></a>

照片图层在每个数据点渲染一张照片。

**注意**  
照片图层当前为公共预览版。Grafana Labs 提供的支持有限，在该功能正式发布之前可能会发生重大更改。

**Options**
+ **图像来源字段**允许选择一个字符串字段，其中包含 Base64 编码的二进制图像数据（`data:image/png;base64,...`）。
+ **类型**可设置图像周围的框架样式。从中选择：
  + **Square**
  + **Circle**
  + **锚定**
  + **对开**
+ **裁剪**切换（裁剪图像以适合尺寸）。
+ **阴影**切换图像背后的方框阴影。
+ **边框**设置图像周围的边框大小。
+ **边框颜色**设置图像周围的边框颜色。
+ **半径**设置图像的整体大小（像素）。
+ **显示工具提示**允许切换图层的工具提示。

**注意**  
有关更多信息，请参阅 [ OpenLayers -图像照片样式的扩展程序](http://viglino.github.io/ol-ext/examples/style/map.style.photo.html)。

## 网络图层（预览）
<a name="v10-panels-geomap-network"></a>

网络图层渲染网络图。该图层支持节点图可视化所支持的相同数据格式，并在节点数据中添加了地理空间数据。地理空间数据用于在地图上定位和渲染节点。

**注意**  
网络图层当前为公共预览版。Grafana Labs 提供的支持有限，在该功能正式发布之前可能会发生重大更改。

![\[显示 Grafana 中 geomap 网络可视化示例的图像。\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/viz/geomap-network-layer-example.png)


**注意**  
网络图层当前为公共预览版。Grafana Labs 提供的支持有限，在该功能正式发布之前可能会发生重大更改。

**Options**
+ **箭头**设置每条边的箭头显示方向，向前表示从来源到目标。从中选择：
  + **无**
  + **正向**
  + **反向**
  + **二者**
+ **显示图例**允许切换图层的图例。图例仅支持节点数据。
+ **显示工具提示**允许切换图层的工具提示。

**节点样式**
+ **大小**可配置节点的大小。默认为**固定大小**，这将使所有节点大小相同，无论数据如何；但还有一个选项可以根据与所选字段对应的数据来调整节点大小。必须设置**最小**和**最大**节点大小，以便节点可以在此范围内缩放。
+ **颜色**可配置节点的颜色。默认为**固定颜色**，将所有节点设置为特定颜色。还可以根据选定的字段数据点值和**标准选项**部分设置的颜色方案来设置条件颜色。
+ **符号**允许您选择符号、图标或图形，以帮助为数据提供额外的可视化上下文。从 Grafana 中包含的资源中选择，例如简单符号或 Unicon 库。您也可以指定包含图像资源的 URL。图像必须是可缩放向量图形（SVG）。
+ **填充不透明度**可配置每个节点的透明度。
+ **旋转角度**可配置每个节点的旋转角度。默认为**固定值**，这将使所有节点旋转到相同的角度，无论数据如何；但还有一个选项可以根据与所选字段对应的数据来设置节点的旋转。
+ **文本标签**可为每个节点配置文本标签。

**边样式**
+ **大小**可配置边的线宽。默认为**固定大小**，这将使所有边线宽度相同，无论数据如何；但还有一个选项可以根据与所选字段对应的数据来调整边的大小。必须设置**最小**和**最大**边大小，以使边可以在此范围内缩放。
+ **颜色**可配置边的颜色。默认为**固定颜色**，将所有边设置为特定颜色。还可以根据选定的字段数据点值和**标准选项**部分设置的颜色方案来设置条件颜色。
+ **填充不透明度**可配置每个边的透明度。
+ **文本标签**可为每个边配置文本标签。

## CARTO 图层
<a name="v10-panels-geomap-carto"></a>

Amazon Managed Grafana 不支持 CARTO 图层。

## XYZ 切片图层
<a name="v10-panels-geomap-xyz"></a>

Amazon Managed Grafana 不支持 XYZ 切片图层。

## Open Street Map 图层
<a name="v10-panels-geomap-osm"></a>

Amazon Managed Grafana 不支持 Open Street Map 图层（默认的基础地图除外）。

## ArcGIS 图层
<a name="v10-panels-geomap-arcgis"></a>

Amazon Managed Grafana 不支持 ArcGIS 图层。

## 地图控件
<a name="v10-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="v10-panels-heatmap"></a>

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

通过热图面板可视化，您可以查看随时间变化的直方图。有关直方图的更多信息，请参阅 [直方图和热图简介](getting-started-grafanaui.md#introduction-to-histograms-and-heatmaps)。

![\[显示 Grafana 中热图可视化示例的图像。\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/viz/heatmap_example.jpg)


## 根据数据计算
<a name="v10-panels-heatmap-calculate"></a>

此设置决定数据是已计算的热图（来自数据来源/转换器），还是在面板中计算的热图。

**X 桶**

此设置决定如何将 X 轴拆分为桶。可在**大小**输入中指定时间间隔。例如，时间范围为 `1h` 会使 X 轴上的单元格宽度为 1 小时。

**Y 桶**

此设置决定如何将 Y 轴拆分为桶。

**Y 桶刻度**

从以下 Y 轴值刻度中选择一个：
+ **线性**：线性刻度。
+ **log（底数 2）**：底数为 2 的对数刻度。
+ **log（底数 10）**：底数为 10 的对数刻度。
+ **symlog**：symlog 刻度。

## Y 轴
<a name="v10-panels-heatmap-y-axes"></a>

定义 Y 轴的显示方式

**放置**
+ **左**：在左侧
+ **右**：在右侧
+ **隐藏**：隐藏

**单位**

单位配置

**小数**

此设置决定十进制配置。

**最小/最大值**

此设置配置轴范围。

**反向**

选中后，轴将按相反顺序显示。

**显示多个 y 轴**

在某些情况下，您可能希望显示多个 Y 轴。例如，如果您有一个数据集，显示一段时间内的温度和湿度，则可能需要为这两个序列显示两个具有不同单位的 y 轴。

您可以通过[添加字段覆盖](v10-panels-configure-overrides.md)来实现这一点。根据需要多次执行这些步骤，以添加任意数量的 y 轴。

## 颜色
<a name="v10-panels-heatmap-colors"></a>

色谱控制值计数（在每个桶中）和分配给每个桶的颜色之间的映射。色谱上最左侧的颜色表示最小计数，最右侧的颜色表示最大计数。使用浅色主题时，某些颜色方案会自动反转。

您也可以将颜色模式更改为“不透明度”。在这种情况下，颜色不会改变，但不透明度会随桶数的变化而变化
+ **Mode (模式)**
  + **方案**：用单元格颜色表示的桶值。
    + **方案**：如果模式为**方案**，则选择颜色方案。
  + **不透明度**：由单元格不透明度表示的桶值。不透明单元格表示最大值。
    + **颜色**：单元格基色。
    + **刻度**：将桶值映射到不透明度的刻度。
      + **线性**：线性刻度。桶值以线性方式映射到不透明度。
      + **sqrt**：幂刻度。以 `value ^ k` 计算的单元格不透明度，其中 `k` 是配置的**指数**值。如果指数小于 `1`，则会得到一个对数刻度。如果指数大于 `1`，则会得到一个指数刻度。如果是 `1`，则刻度将与线性相同。
    + **指数**：指数值，大于 `0`。

**从值开始/结束颜色**

默认情况下，Grafana 根据最小和最大桶值计算单元格颜色。可使用最小值和最大值覆盖这些值。将桶值视为 Z 轴，将最小值和最大值分别视为 Z-Min 和 Z-Max。
+ **开始**：用于单元格颜色计算的最小值。如果桶值小于最小值，则将其映射到“最小”颜色。序列最小值为默认值。
+ **结束**：用于单元格颜色计算的最大值。如果桶值大于最大值，则将其映射到“最大”颜色。序列最大值为默认值。

## 单元格显示
<a name="v10-panels-heatmap-cell"></a>

使用这些设置来改进可视化结果。

## 其他显示选项
<a name="v10-panels-heatmap-options"></a>

**Tooltip**
+ **显示工具提示**：显示热图工具提示。
+ **显示直方图**：在工具提示上显示 Y 轴直方图。直方图表示特定时间戳的桶值的分布。
+ **显示色阶**：在工具提示上显示色阶。色阶表示桶值和颜色之间的映射。

**图例**

选择是否要在可视化上显示热图图例。

**样本**

设置用于显示样本数据的颜色。

# 直方图
<a name="v10-panels-histogram"></a>

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

直方图可视化计算值的分布并将其显示为条形图。Y 轴和每个条形的高度代表落入每个括号中的值的数量，而 X 轴代表值范围。

![\[显示 Grafana 中直方图可视化示例的图像。\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/viz/histogram-example.png)


## 支持的格式
<a name="v10-panels-histogram-formats"></a>

直方图可视化支持时间序列和任何带有一个或多个数值字段的表结果。

## 显示选项
<a name="v10-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 轴上的值增加而增加。
+  **色调**：渐变色是根据线条颜色的色调生成的。

## 图例选项
<a name="v10-panels-histogram-legend"></a>

启用图例选项后，可以显示值映射或阈值括号。要在图例中显示值映射，请务必将标准选项下的“颜色方案”选项设置为“单色”或“经典”调色板。要查看图例中的阈值括号，请将“颜色方案”设置为“来自阈值”。有关图例的更多信息，请参阅[配置图例](v10-panels-configure-legend.md)。

**图例模式**

使用这些设置可定义图例在可视化中的显示方式。
+  **列表**：以列表形式显示图例。这是图例的默认显示模式。
+  **表**：以表的形式显示图例。
+  **隐藏**：隐藏图例。

**图例放置**

选择放置图例的位置。
+  **底部**：显示在图形下方。
+  **右**：显示在图形右侧。

**图例值**

选择要在图例中显示的标准计算。可以输入多个值。有关更多信息，请参阅 [计算类型](v10-panels-calculation-types.md)。

**图例计算**

选择要在图例中显示的计算。可以选择多个值。

# 日志
<a name="v10-panels-logs"></a>

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

日志面板可视化显示来自支持日志的数据来源（例如 Elastic、Influx 和 Loki）的日志行。通常，您可以使用图形面板旁边的此面板来显示相关进程的日志输出。

日志面板显示在**查询**选项卡上输入的查询结果。多个查询的结果按时间合并和排序。如果数据来源返回的行数超过了可以显示的行数，则可以在面板内滚动。

要限制渲染的行数，可以使用**查询选项**中的**最大数据点**设置。如果未设置，则数据来源通常会强制使用默认限制。

## 日志级别
<a name="v10-panels-logs-level"></a>

对于指定了**级别**标签的日志，我们会使用标签值来确定日志级别，并相应地更新颜色。如果日志未指定级别标签，则会尝试查明其内容是否与任何受支持的表达式匹配（有关更多信息，请参阅下文）。日志级别始终由第一个匹配项决定。如果 Grafana 无法确定日志级别，则会使用**未知的**日志级别对其可视化。有关更多信息，请参阅 [日志级别](v10-explore-logs.md#v10-explore-log-level)。

## 日志详细信息
<a name="v10-panels-logs-details"></a>

每个日志行都有一个可扩展区域，其中带有标签和检测到的字段，以实现更可靠的交互。每个字段或标签有一个统计图标，以显示与所有显示的日志相关的统计信息。

**数据链接**

通过数据链接，您可以将日志消息的任何部分转换为内部或外部链接。创建的链接在**日志详细信息**视图的**链接**部分以按钮的形式显示。

**显示选项**

使用以下设置来优化可视化效果：
+ **时间**：显示或隐藏时间列。这是与数据来源报告的日志行关联的时间戳。
+ **唯一标签**：显示或隐藏唯一标签列，该列仅显示非常见标签。
+ **常用标签**：显示或隐藏常用标签
+ **换行**：切换换行符。
+ **Prettify JSON**：将其设置为 `true` 可打印所有 JSON 日志。此设置不会影响 JSON 以外的任何格式的日志。
+ **启用日志详细信息**：切换选项以查看每个日志行的日志详细信息视图。默认设置为 `true`。
+ **顺序**：按时间降序或升序显示结果。默认为**降序**，首先显示最新的日志。设置为**升序**可首先显示最旧的日志行。

# 新闻
<a name="v10-panels-news"></a>

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

新闻可视化将显示 RSS 源。默认情况下，其中会显示来自 Grafana Labs 博客的文章，用户可以通过输入不同的 RSS 源 URL 来更改此设置。

在**显示**部分输入 RSS 的 URL。此可视化类型不接受任何其他查询，用户不应预期能够使用此可视化以任何方式处理或查询 RSS 源数据。

**注意**  
RSS 源由 Grafana 前端加载，无需代理。因此，只有配置了相应 [CORS 标头](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS)的 RSS 源才会加载。如果尝试显示的 RSS 源无法加载，请考虑重新托管 RSS 源或创建自己的代理。

# 节点图
<a name="v10-panels-node-graph"></a>

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

节点图能够可视化定向图形或网络。这些图形使用定向力布局来有效定位节点，有助于显示复杂的基础设施图、层次结构或运行图。

## 数据要求
<a name="v10-panels-node-graph-requirements"></a>

节点图需要数据的特定形状才能显示其节点和边。并非每个数据来源或查询都可以在此图形中可视化。如果您想以数据来源开发人员的身份使用，请参阅有关数据 API 的部分。

节点图由*节点*和*边*组成。
+ *节点*显示为圆形。从应用程序的角度来看，节点可能代表应用程序、服务或其他任何相关的内容。
+ *边*显示为一条连接两个节点的线。连接可能是请求、运算或两个节点之间的某种其他关系。

节点和边都可以具有关联的元数据或统计数据。数据来源定义了显示哪些信息和值，因此不同的数据来源可以显示不同类型的值，也可以不显示某些值。

## Nodes
<a name="v10-panels-node-graph-nodes"></a>

通常，节点在节点内部显示两个统计值，在节点正下方显示两个标识符，通常是名称和类型。节点还可以在节点周围用彩色圆圈显示另一组数值，不同颜色的部分代表不同的数值，这些数值相加应为 1。例如，您可以用圆圈的红色部分表示误差百分比。

其他详细信息可以显示在上下文菜单中，该菜单会在您选择节点时显示。上下文菜单中还可以有其他链接，这些链接可以指向 Grafana 工作区的其他部分或任何外部链接。

**注意**  
节点图只能显示 1500 个节点。如果超过此限制，则右上角会显示一条警告，某些节点会被隐藏。您可以单击图形中的**隐藏节点**标记，展开图形的隐藏部分。

## Edges
<a name="v10-panels-node-graph-edges"></a>

当您将鼠标悬停在边上时，边也可以显示统计数据。与节点类似，您也可以选择边以打开包含其他详细信息和链接的上下文菜单。

支持此可视化的第一个 AWS X-Ray 数据源是其服务地图功能的数据源。有关更多信息，请参阅 [Connect 连接到 AWS X-Ray 数据源](x-ray-data-source.md)。

## 浏览节点图
<a name="v10-panels-node-graph-navigation"></a>

**平移**

通过选择任何节点或边的外部并拖动指针，可以在节点图内平移。

**放大或缩小**

您可以使用节点图左上角的按钮进行缩放，也可以使用鼠标滚轮或其他带有 `Ctrl`（或 `Cmd`）键的滚动输入。

**探索隐藏节点**

为了保持合理的性能，在给定时间显示的节点数量是有限的。超出此限制的节点隐藏在可选择的标记后面，这些标记显示连接到该边的隐藏节点的大致数量。您可以选择标记来围绕该节点展开图形。

**网格视图**

您可以切换到网格视图，以便更好地了解图形中最有趣的节点。网格视图显示网格中没有边的节点，可以按节点内部显示的统计数据或节点的彩色边框表示的统计数据进行排序。

要对节点进行排序，请选择图例中的统计数据。统计数据名称旁边的标记（`˄` 或 `˅`）显示当前用于排序和排序方向的统计数据。

选择节点，然后选择**在图形布局中显示**选项，切换回图形布局，将焦点放在所选节点上，以在整个图形的上下文中显示该节点。

## 数据 API
<a name="v10-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` 用于更易读的标签。 | 
| color | 字符串/数字 | 可用于指定单一颜色，而不是使用 `arc__` 字段来指定颜色部分。可以是字符串（必须是可接受的 HTML 颜色字符串），也可以是数字，在这种情况下，行为取决于 `field.config.color.mode` 设置。例如，用来创建由字段值控制的渐变颜色。 | 
| icon | 字符串 | 要在节点内显示的图标名称，而不是默认统计信息。只允许使用 Grafana 内置图标（在[此处](https://developers.grafana.com/ui/latest/index.html?path=/story/docs-overview-icon--icons-overview)查看可用图标）。 | 
| nodeRadius | 数字 | 半径值（像素）。用于管理节点大小。 | 
| highlighted | 布尔值 | 设置是否应突出显示节点。例如，通过突出显示几个节点和边来表示图形中的特定路径 默认值为 `false`。 | 

# 饼图
<a name="v10-panels-piechart"></a>

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

![\[显示 Grafana 中饼图可视化示例的图像。\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/viz/pie_chart_example.png)


饼图将来自一个或多个查询的简化序列或序列中的值（这些值彼此相关）显示为饼图的切片。切片的弧长、面积和中心角都与切片值成正比，因为它与所有值的总和相关。如果您想以美观的形式快速比较一小组值，最好使用这种类型的图表。

## 值选项
<a name="v10-panels-piechart-value"></a>

使用以下选项优化可视化中的值。

**Show (显式)**

选择要显示的信息量。
+ **计算**：将每个值归约为每个序列的单个值。
+ **所有值**：显示单个序列中的每个值。

**计算**

选择**计算**后，选择计算以归约每个序列。有关可用计算的信息，请参阅[计算类型](v10-panels-calculation-types.md)。

**限制**

显示单个序列中的每个值时，这会限制显示的值数量。

**字段**

至少选择一个要在可视化中显示的字段。列表中提供了每个字段名称，也可以选择以下选项之一：
+ **数值字段**：所有包含数值的字段。
+ **所有字段**：所有未由转换删除的字段。
+ **时间**：所有带有时间值的字段。

## 饼图选项
<a name="v10-panels-piechart-options"></a>

使用以下选项来优化可视化效果。

**饼图类型**

选择饼图的显示样式。可以是以下任一项：
+ **饼图**：标准饼图
+ **甜甜圈**：中间有洞的饼图

**标签**

选择要在饼图上显示的标签。您可以选择多个标签。
+ **名称**：序列或字段名称。
+ **百分比**：占整体的百分比。
+ **值**：原始数值。

默认情况下，标签在图表正文上显示为白色。您可以选择深颜色的图表，使其更加明显。较长的名称或数字可能会被截断。

**工具提示模式**

当您将光标悬停在可视化上时，Grafana 可显示工具提示。选择工具提示的行为方式。
+ **单个**：悬停工具提示仅显示一个序列，即您将鼠标悬停在可视化上面的序列。
+ **全部**：悬停工具提示显示可视化中的所有序列。Grafana 在工具提示的序列列表中以粗体突出显示您悬停在上面的序列。
+ **隐藏**：与可视化交互时不显示工具提示。

使用覆盖从工具提示隐藏单个序列。

## 图例选项
<a name="v10-panels-piechart-legend"></a>

使用这些设置可定义图例在可视化中的显示方式。有关图例的更多信息，请参阅[配置图例](v10-panels-configure-legend.md)。

**图例可见性**

使用**可见性**开关显示或隐藏图例。

**图例模式**

设置图例的显示模式。
+ **列表**：以列表形式显示图例。这是图例的默认显示模式。
+ **表**：以表的形式显示图例。

**图例放置**

选择显示图例的位置。
+ **底部**：显示在图形下方。
+ **右**：显示在图形右侧。

**图例值**

选择要在图例中显示的值。可以选择多个值。
+ **百分比**：占整体的百分比。
+ **值**：原始数值。

有关图例的更多信息，请参阅[配置图例](v10-panels-configure-legend.md)。

# Stat
<a name="v10-panels-stat"></a>

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

统计显示一个很大的统计值，并带有可选的图表迷你图。您可以使用阈值或覆盖来控制背景或值颜色。

![\[显示 Grafana 中统计可视化示例的图像。\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/viz/stat_panel_example.png)


默认情况下，统计将显示以下内容之一：
+ 仅单个序列或字段的值。
+ 多个序列或字段的值和名称。

您可以使用**文本模式**来控制是否显示文本。

## 自动布局调整
<a name="v10-panels-stat-automatic-adjust"></a>

面板会根据控制面板中的可用宽度和高度自动调整布局。如果面板变得太小，将会自动隐藏图形（迷你图）。

## 值选项
<a name="v10-panels-stat-value"></a>

使用以下选项来优化可视化显示值的方式：

**Show (显式)**

选择 Grafana 显示数据的方式。
+ **计算**

  显示基于所有行的计算值。
  + **计算**：选择一个 reducer 函数，Grafana 将使用该函数将多个字段归约为单个值。有关可用计算的列表，请参阅[标准计算](v10-panels-calculation-types.md)。
  + **字段**：选择要在可视化中显示的字段。
+ **所有值**

  为每行显示一个单独的统计数据。如果选择此选项，则还可以限制要显示的行数。
  + **限制**：要显示的最大行数。默认为 5000。
  + **字段**：选择要在可视化中显示的字段。

## 统计样式
<a name="v10-panels-stat-styles"></a>

设置可视化的样式。

**方向**

选择堆叠方向。
+ **自动**：Grafana 会选择其认为最佳的方向。
+ **水平**：从左到右水平拉伸条形图。
+ **垂直**：从上到下垂直拉伸条形图。

**文本模式**

您可以使用文本模式选项来控制可视化呈现的文本。如果值并不重要，重要的是名称和颜色，则将**文本模式**更改为**名称**。该值仍用于确定颜色，并显示在工具提示中。
+ **自动**：如果数据包含多个序列或字段，则同时显示名称和值。
+ **值**：仅显示值，不显示名称。名称显示在悬停工具提示中。
+ **值和名称**：始终显示值和名称。
+ **名称**：显示名称而不是值。值显示在悬停工具提示中。
+ **无**：不显示任何内容（空）。名称和值显示在悬停工具提示中。

**宽布局**

设置是否启用宽布局。默认情况下，将启用宽布局。
+ **开启**：宽布局已开启。
+ **关闭**：宽布局已关闭。

**注意**  
仅当**文本模式**设置为**值和名称**时，此选项才适用。开启宽版面时，如果面板足够宽 side-by-side，则值和名称将显示在右边。关闭宽布局后，该值始终呈现在名称下方。

**颜色模式**

选择一种颜色模式。
+ **无**：不对值应用任何颜色。
+ **值**：仅为值和图形区域着色。
+ **背景渐变**：将颜色应用于值、图形区域和背景，并略带背景渐变。
+ **背景纯色**：将颜色应用于值、图形区域和背景，并带有纯色背景色。

**图形模式**

选择图形和迷你图模式。
+ **无**：隐藏图形并仅显示值。
+ **面积**：在值下方显示面积图。这要求您的查询返回时间列。

**文本对齐方式**

选择对齐模式。
+ **自动**：如果仅显示单个值（不重复），则该值居中。如果显示多个序列或多行，则该值为左对齐。
+ **中心**：统计值居中。

**显示百分比变化**

设置是否显示百分比变化。默认不显示。

**注意**  
当**值选项**下的**显示**设置为**所有值**时，此选项不适用。

## 文本大小
<a name="v10-panels-stat-textsize"></a>

调整仪表文本的大小。
+ **标题**：输入仪表标题大小的数值。
+ **值**：输入仪表值大小的数值。

# 状态时间轴
<a name="v10-panels-state-timeline"></a>

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

状态时间轴可显示一段时间内的离散状态变化。每个字段或序列都渲染为其唯一的水平段。状态区域可以用值或不用值渲染。此面板适用于字符串或布尔状态，但也可以与时间序列一起使用。与时间序列一起使用时，使用阈值将数值转换为离散状态区域。

![\[显示 Grafana 中状态时间轴可视化示例的图像。\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/viz/state_timeline_example.png)


## 状态时间轴选项
<a name="v10-panels-state-timeline-options"></a>

使用以下选项来优化可视化效果：

**合并相等的连续值**

控制 Grafana 是否合并相邻的相同值。

**显示值**

控制是否在状态区域内渲染数值。如果有足够的空间，**Auto** 将渲染值。

**对齐值**

控制状态区域内的值对齐。

**行高**

控制行间的间距。1 = 无间距，0.5 = 50% 间距。

**线宽**

控制状态区域的线宽。

**填充不透明度**

控制状态区域的不透明度。

**连接 null 值**

选择 null 值（数据中的间隙）在图形上的显示方式。可将 null 值连接起来形成一条连续的线，也可以设置一个阈值，如果超过该阈值，数据间隙将不再连接。
+ **从不**：数据中存在间隙的时间序列数据点从不连接。
+ **始终**：数据中存在间隙的时间序列数据点始终连接。
+ **阈值**：指定一个阈值，如果超过该阈值，数据间隙将不再连接。当数据中连接的间隙大小已知或在已知范围内时，这种方法会很有用，超出此范围的间隙不应再连接。

**断开值连接**

选择是否设置一个阈值，如果超过该阈值，应断开数据中的值连接。
+ **从不**：数据中的时间序列数据点从不断开连接。
+ **阈值**：指定一个阈值，如果超过该阈值，数据中的值将断开连接。当数据中所需的值具有已知的大小或在已知范围内时，这种方法会很有用，超出此范围的值不应再连接。

## 值映射
<a name="v10-panels-state-timeline-valuemap"></a>

要为布尔值或字符串值分配颜色，请使用 [配置值映射](v10-panels-configure-value-mappings.md)。

## 带阈值的时间序列数据
<a name="v10-panels-state-timeline-threshold"></a>

该可视化也可以用于时间序列数据。在这种情况下，使用阈值将时间序列转换为离散的彩色状态区域。

## 图例选项
<a name="v10-panels-state-timeline-legend"></a>

启用图例选项后，可以显示值映射或阈值括号。要在图例中显示值映射，请务必将“标准”选项下的**颜色方案**选项设置为**单色**或**经典调色板**。要查看图例中的阈值括号，请将**颜色方案**设置为**来自阈值**。

**图例模式**

使用这些设置可定义图例在可视化中的显示方式。有关图例的更多信息，请参阅[配置图例](v10-panels-configure-legend.md)。
+ **列表**：以列表形式显示图例。这是默认模式。
+ **表**：以表的形式显示图例。
+ **隐藏**：隐藏图例。

**图例放置**

选择显示图例的位置。
+ **底部**：显示在图形下方。
+ **右**：显示在图形右侧。

**图例值**

选择要在图例中显示的[标准计算](v10-panels-calculation-types.md)。可以输入多个值。

# 状态历史记录
<a name="v10-panels-status-history"></a>

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

状态历史记录显示一段时间内的周期性状态。每个字段或序列都渲染为水平行。然后渲染框并围绕每个值居中。

## 支持的数据
<a name="v10-panels-status-history-supporteddata"></a>

状态历史适用于字符串、布尔值和数值字段或时间序列。时间字段为必填项。您可以使用值映射为字符串着色，或为数字范围赋予文本值。

## 显示选项
<a name="v10-panels-status-history-options"></a>

使用这些选项来优化可视化效果。

**显示值**

控制值是否在值框内渲染。如果有足够的空间，**Auto** 将渲染值。

**列宽**

控制框的宽度。1 = 最大间距，0 = 最小间距。

**线宽**

控制状态区域的线宽。

**填充不透明度**

控制状态区域的填充不透明度。

## 值映射
<a name="v10-panels-status-history-valuemap"></a>

要为布尔值或字符串值分配颜色，请使用 [配置值映射](v10-panels-configure-value-mappings.md)。

## 带阈值的时间序列数据
<a name="v10-panels-status-history-threshold"></a>

该面板也可以用于时间序列数据。在这种情况下，使用阈值为框着色。也可以使用渐变配色方案为值着色。

## 图例选项
<a name="v10-panels-status-history-legend"></a>

启用图例选项后，可以显示值映射或阈值括号。要在图例中显示值映射，请务必将“标准”选项下的**颜色方案**选项设置为**单色**或**经典调色板**。要查看图例中的阈值括号，请将**颜色方案**设置为**来自阈值**。

**图例模式**

使用这些设置可定义图例在可视化中的显示方式。有关图例的更多信息，请参阅[配置图例](v10-panels-configure-legend.md)。
+ **列表**：以列表形式显示图例。这是默认模式。
+ **表**：以表的形式显示图例。
+ **隐藏**：隐藏图例。

**图例放置**

选择显示图例的位置。
+ **底部**：显示在图形下方。
+ **右**：显示在图形右侧。

**图例值**

选择要在图例中显示的[标准计算](v10-panels-calculation-types.md)。可以输入多个值。

# 表
<a name="v10-panels-table"></a>

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

表非常灵活，支持时间序列、表、注释和原始 JSON 数据的多种模式。此可视化还提供日期格式、值格式和着色选项。

![\[显示 Grafana 中表可视化示例的图像。\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/viz/table_example.png)


**注意**  
表不支持注释和警报。

## 对列排序
<a name="v10-panels-table-sort"></a>

选择列标题，将排序顺序从默认降序改为升序。每次选择列时，排序顺序都会变为循环中的下一个选项。选择其他列时按住 `shift` 键可以对多列排序。

## 表选项
<a name="v10-panels-table-options"></a>

**显示标题**

显示或隐藏从数据来源导入的列名称。

## 列宽
<a name="v10-panels-table-width"></a>

默认情况下，Grafana 会根据表大小和最小列宽自动计算列宽。此字段选项可以覆盖设置，并以像素为单位定义所有列的宽度。

例如，如果输入 `100`，则所有列的宽度都将设置为 100 像素（退出字段时会发生更改）。

## 最小列宽
<a name="v10-panels-table-min"></a>

默认情况下，表列的最小宽度为 150 像素。该字段选项可以覆盖默认值，并以像素为单位定义表面板新的最小列宽。

例如，如果将最小值设置为 `75`，则所有列的宽度都将缩放至不小于 75 像素。

对于小屏幕设备（如智能手机或平板电脑），您可以将默认 `150` 像素值减小为 `50`，以便在控制面板中正确渲染表面板。

## 列对齐方式
<a name="v10-panels-table-alignment"></a>

选择 Grafana 对齐单元格内容的方式。
+ 自动（默认）
+ 靠左对齐
+ 居中对齐
+ 靠右对齐

## 单元格类型
<a name="v10-panels-table-cell-type"></a>

默认情况下，Grafana 会自动选择显示设置。您可以选择以下选项之一来覆盖设置，为所有字段设置默认值。对于某些单元格类型，还可提供其他配置。

**注意**  
如果您在**字段**选项卡中进行设置，该类型将应用于所有字段，包括时间字段。您可以在**覆盖**选项卡中进行设置，以将更改应用于一个或多个字段。

**颜色文本**

如果设置了阈值，则字段文本将以相应的阈值颜色显示。

**彩色背景（渐变或纯色）**

如果设置了阈值，则字段背景将以相应的阈值颜色显示。

**计量表**

单元格可以显示为图形仪表，具有几种不同的表示类型。
+ *基本*：基本模式将显示一个简单的仪表，其阈值水平定义了仪表的颜色。
+ *渐变*：阈值水平定义渐变。
+ *LCD*：将仪表分成点亮或不点亮的小单元格。

此外，可将仪表旁边显示的标签设置为按值着色、匹配主题文本颜色或隐藏。
+ **值颜色**
+ **文本颜色**
+ **隐藏**

**JSON 视图**

显示格式化为代码的值。如果值是对象，则允许浏览 JSON 对象的 JSON 视图在悬停时显示。

**迷你图**

显示渲染为迷你图的值。需要进行[时间序列到表](v10-panels-xform-functions.md#v10-panels-xform-funcs-series)的数据转换。

## 单元格值检查
<a name="v10-panels-table-cell-value"></a>

从表单元格启用值检查。原始值显示在模态窗口中。

**注意**  
仅当单元格显示模式设置为自动、彩色文本、彩色背景或 JSON 视图时，单元格值检查才可用。

## 列筛选器
<a name="v10-panels-table-col-filter"></a>

您可以暂时更改列数据的显示方式。例如，您可以按从高到低的顺序排列值，或者隐藏特定的值。有关更多信息，请参阅[筛选表列](#v10-panels-table-filter)。

## 分页
<a name="v10-panels-table-pagination"></a>

使用此选项启用或禁用分页。这是一个前端选项，不影响查询。启用后，页面大小会自动调整为表的高度。

## 筛选表列
<a name="v10-panels-table-filter"></a>

如果打开**列筛选器**，可以筛选表选项。

**打开列筛选**

1. 在 Grafana 中，导航到表控制面板，其中包含要筛选的列。

1. 在要筛选的表面板上，打开面板编辑器。

1. 选择**字段**选项卡。

1. 在**表**选项中，打开**列筛选器**选项。

每个列标题旁边都会显示一个筛选器（漏斗）图标。

**筛选列值**

要筛选列值，请选择列标题旁边的筛选器（漏斗）图标。Grafana 会显示该列的筛选选项。

选中要显示的值旁边的复选框。在顶部的搜索字段中输入文本，在显示屏中显示这些值，这样您就可以从中选择，而不用滚动来查找。

从多个运算符中选择以显示列值：
+ **包含**：匹配正则表达式模式（默认为运算符）。
+ **表达式**：计算布尔表达式。字符 `$` 表示表达式中的列值（例如，`$ >= 10 ≈& $ <= 12`）。
+ **比较运算符**：您可以使用典型的比较运算符：`=`、`!=`、`<`、`<=`、`>` 和 `>=`。

选中**确定**和**取消**按钮上方的复选框，在筛选器中添加或删除所有显示的值。

**清除列筛选条件**

应用筛选条件的列在标题旁边会显示一个蓝色的漏斗。

要删除筛选条件，请选择蓝色漏斗图标，然后选择**清除筛选条件**。

## 表脚注
<a name="v10-panels-table-footer"></a>

您可以使用表脚注来显示字段的[计算](v10-panels-calculation-types.md)。

启用表脚注后，您可以选择**计算**，然后选择要计算的**字段**。

如果未选择字段，系统会将计算应用于所有数值字段。

**计算行数**

如果要显示数据集中的行数，而不是所选字段中的值数，请选择**计数**计算并启用**计算行数**。

# 文本
<a name="v10-panels-text"></a>

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

文本可视化使您能够直接在控制面板中包含文本或 HTML。可将其用于添加上下文信息和描述或嵌入复杂的 HTML。

**Mode (模式)**

**模式**决定了嵌入内容的显示方式。具有以下选项：
+ **Markdown**：此选项将内容格式化为 markdown。
+ **HTML**：此设置将内容渲染为经过清理的 HTML。
+ **代码**：此设置在只读代码编辑器中渲染内容。选择适当的语言，对嵌入文本应用语法突出显示。

**变量**

内容中的变量将展开以供显示。

# 时间序列
<a name="v10-panels-time-series"></a>

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

![\[显示 Grafana 中时间序列可视化示例的图像。\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/viz/time_series_example.png)


时间序列可视化是将时间序列数据可视化为图形的默认和主要方式。可将序列渲染为直线、点或条形。其用途广泛，几乎可以显示任何时间序列数据。

**注意**  
您可以将图形面板可视化迁移到时间序列可视化。若要迁移，请在**面板**选项卡上，选择**时间序列可视化**。Grafana 会传输所有适用的设置。

**Topics**
+ [工具提示选项](v10-time-series-panel-tooltip.md)
+ [图例选项](v10-time-series-panel-legend.md)
+ [图形样式](v10-time-series-graph.md)
+ [轴选项](v10-time-series-axis.md)
+ [颜色选项](v10-time-series-color.md)

# 工具提示选项
<a name="v10-time-series-panel-tooltip"></a>

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

工具提示选项控制将鼠标悬停在图形中的数据点上时显示的信息叠加。

**工具提示模式**
+ **单个**：悬停工具提示仅显示一个序列，即您将鼠标悬停在上面的序列。
+ **全部**：悬停工具提示显示可视化中的所有序列。Grafana 在工具提示的序列列表中以粗体突出显示您悬停在上面的序列。
+ **隐藏**：与可视化交互时不显示工具提示。

# 图例选项
<a name="v10-time-series-panel-legend"></a>

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

图例选项控制显示在图形下方或右侧的序列名称和统计数据。

**图例模式**

使用这些设置可定义图例在可视化中的显示方式。有关图例的更多信息，请参阅 [配置图例](v10-panels-configure-legend.md)。
+ **列表**：以列表形式显示图例。这是图例的默认显示模式。
+ **表**：以表的形式显示图例。
+ **隐藏**：隐藏图例。

**图例放置**

选择显示图例的位置。
+ **底部**：显示在图形下方。
+ **右**：显示在图形右侧。

**图例值**

选择要在图例中显示的[标准计算](v10-panels-calculation-types.md)。可以有多个。

# 图形样式
<a name="v10-time-series-graph"></a>

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

可使用此选项定义如何显示时间序列数据。您可以使用覆盖在同一个图形中组合多种样式。
+ **线**：在图形上将时间序列显示为一条线。
+ **条形图**：将时间序列显示为图形上的一系列条形图，每个条形图对应一个数据点。
+ **点**：将时间序列显示为图形上的一系列点，每个点对应一个数据点。

## 条形图对齐
<a name="v10-time-series-graph-bar"></a>

设置条形图相对于数据点的位置（该点将绘制在图形上）。由于条形图具有宽度，可将其放置在点的前面、后面或居中。适用的选项包括：
+ ![\[An image showing a bar graph aligned before a point.\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/viz/bar-alignment-before.png) **前**：条形图绘制在点之前。该点放置在条形图的尾角。
+ ![\[An image showing a bar graph aligned around a point.\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/viz/bar-alignment-center.png) **居中**：条形图围绕该点绘制。该点放置在条形图的中央。这是默认值。
+ ![\[An image showing a bar graph aligned after a point.\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/viz/bar-alignment-after.png) **后**：条形图绘制在点之后。该点放置在条形图的前角。

## 线宽
<a name="v10-time-series-graph-linewidth"></a>

线宽是一个滑块，用于控制系列线条的粗细或条形图的轮廓。

## 填充不透明度
<a name="v10-time-series-graph-fill"></a>

设置填充颜色的不透明度。例如，填充用于显示折线图中线条下方的区域，或用作条形图中条形的颜色。

## 渐变模式
<a name="v10-time-series-graph-gradient"></a>

渐变模式指定渐变填充，该填充基于序列颜色。要更改颜色，请使用标准颜色方案字段选项。有关更多信息，请参阅 [颜色方案](v10-panels-configure-standard-options.md#v10-panels-standard-options-color-scheme)。

渐变模式选项包括：
+ **无**：无渐变填充。这是默认设置。
+ **不透明度**：一种不透明度渐变，其中填充的不透明度随着 Y 轴值的增加而增加。
+ **色调**：一种基于序列色调的微渐变。
+ **方案**：由您的颜色方案定义的颜色渐变。该设置用于填充区域和线条。有关更多信息，请参阅 [颜色选项](v10-time-series-color.md)。

渐变外观受**填充不透明度**设置的影响。

## 显示点
<a name="v10-time-series-graph-showpoints"></a>

您可以使用以下选项将可视化配置为向线条或条形图添加点。
+ **自动**：Grafana 根据数据的密度决定是否显示点。当密度较低时，
+ **始终**：无论数据密度如何，都会显示点。
+ **从不**：不显示点。

## 点大小
<a name="v10-time-series-graph-pointsize"></a>

设置点的大小，直径从 1 到 40 像素不等。

## 线插值
<a name="v10-time-series-graph-interpolation"></a>

选择 Grafana 插入序列线的方式。

![\[显示 Grafana 中在点之间绘制线条的不同方式的图像。\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/viz/line-interpolation.png)


选项包括：
+ **线性**：点由直线连接。
+ **平滑**：点由曲线连接，曲线可平滑点之间的过渡。
+ **前一步**：线条显示为点之间的步长。点在步结束时渲染。
+ **后一步**：线条显示为点之间的步长。点在步开始时渲染。

## 线型
<a name="v10-time-series-graph-linestyle"></a>

设置线条样式。要更改颜色，请使用标准颜色方案字段选项。

线条样式的选择有：
+ **实线**：显示实线。这是默认设置。
+ **虚线**：显示虚线。选择此选项时，会出现一个列表，供您选择虚线的长度和间隙（长度、间隙）。默认情况下，虚线间距设置为 10。
+ **点**：显示虚线。选择此选项时，会出现一个列表，供您选择点间距的间隙长度。默认情况下，点间距设置为 10。

## 连接 null 值
<a name="v10-time-series-graph-null"></a>

选择 null 值（数据中的间隙）在图形上的显示方式。可将 null 值连接起来形成一条连续的线，也可以设置一个阈值，如果超过该阈值，数据间隙将不再连接。

连接 null 值的选项有：
+ **从不**：数据中存在间隙的时间序列数据点从不连接。
+ **始终**：数据中存在间隙的时间序列数据点始终连接。
+ **阈值**：指定一个阈值，如果超过该阈值，数据间隙将不再连接。当数据中连接的间隙大小已知或在已知范围内时，这种方法会很有用，超出此范围的间隙不应再连接。

## 断开值连接
<a name="v10-time-series-graph-disconnect"></a>

选择是否在数据中的值之间添加间隔，以使这些值之间的间隔超过指定的阈值。

断开值连接的选项有：
+ **从不**：时间序列数据点从不断开连接。
+ **阈值**：指定一个阈值，如果超过该阈值，数据中的值将断开连接。当数据中所需的值具有已知的大小或在已知范围内时，这种方法会很有用，超出此范围的值不应再连接。

## 堆栈序列
<a name="v10-time-series-graph-stack"></a>

*堆叠*允许 Grafana 相互叠加显示序列。在可视化中使用堆叠时要小心，因为很容易创建误导性图形。要了解为什么堆叠可能不是最佳方法的更多信息，请参阅[堆叠问题](https://www.data-to-viz.com/caveat/stacking.html)。

堆叠的选项有：
+ **关闭**：关闭序列堆叠。
+ **正常**：将序列堆叠在一起。
+ **100%**：按百分比堆叠，其中所有序列相加为 100%。

**分组堆叠序列**

您可以覆盖堆叠行为以分组堆叠序列。有关创建覆盖的更多信息，请参阅 [配置字段覆盖](v10-panels-configure-overrides.md)。

**分组堆叠序列**

1. 编辑面板并选择**覆盖**。

1. 为**堆栈系列**选项创建字段覆盖。

1. 在堆叠模式下，选择**正常**。

1. 为您希望序列显示在其中的堆叠组命名。

   堆叠组名称选项仅在您创建覆盖时可用。

## 填充至下方
<a name="v10-time-series-graph-fillbelow"></a>

**填充至下方**选项填充两个序列之间的区域。此选项仅以序列或字段覆盖形式提供。

使用此选项，您可以填充两个序列之间的区域，而不是从序列线向下填充到 0。例如，如果您有两个名为 *Max* 和 *Min* 的序列，您可以选择 *Max* 序列并将其覆盖，以**填充至下方** *Min* 序列。这将仅填充两条序列线之间的区域。

# 轴选项
<a name="v10-time-series-axis"></a>

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

轴类别下的选项会更改 x 和 y 轴的渲染方式。某些选项只有在您编辑的字段选项框外部单击后才会生效。也可以按 `Enter` 键。

## 时区
<a name="v10-time-series-axis-timezone"></a>

设置要沿 x 轴显示的所需时区。

## 放置
<a name="v10-time-series-axis-placement"></a>

设置 Y 轴的放置。选项包括：
+ **自动**：自动为序列分配 y 轴。当有两个或多个具有不同单位的序列时，Grafana 将左轴分配给第一个单位，将右轴分配给下一个单位。
+ **左**：在左侧显示所有 y 轴。
+ **右**：在右侧显示所有 y 轴。
+ **隐藏**：隐藏所有轴。

要有选择地隐藏轴，请针对特定字段[添加字段覆盖](v10-panels-configure-overrides.md)。

## 标签
<a name="v10-time-series-axis-label"></a>

设置 y 轴文本标签。如果有多个 y 轴，可使用覆盖分配不同的标签。

## 宽度
<a name="v10-time-series-axis-width"></a>

设置轴的固定宽度。默认情况下，Grafana 会动态计算轴的宽度。

通过设置轴的宽度，具有不同轴类型的数据可以共享相同的显示比例。此设置让您更容易比较多个图形的数据，因为轴在视觉上不会相互错位或拉伸。

## 显示网格线
<a name="v10-time-series-axis-gridlines"></a>

设置轴网格线的可见性。
+ **自动**：根据数据的密度自动显示网格线。
+ **开**：始终显示网格线。
+ **关**：从不显示网格线。

## 颜色
<a name="v10-time-series-axis-color"></a>

设置轴的颜色
+ **文本**：根据主题文本颜色设置颜色。
+ **序列**：根据序列颜色设置颜色。

## 显示边框
<a name="v10-time-series-axis-border"></a>

设置轴边框的可见性。

## 比例尺
<a name="v10-time-series-axis-scale"></a>

设置 y 轴刻度。
+ **线性**：将刻度分成相等的部分。
+ **对数**：使用对数刻度。选择此选项时，会出现一个列表，供您选择二进制（以 2 为基数）或通用（以 10 为基数）对数刻度。
+ **Symlog**：使用对称的对数刻度。选择此选项时，会出现一个列表，供您选择二进制（以 2 为基数）或通用（以 10 为基数）对数刻度。线性阈值选项允许您设置刻度从线性变为对数的阈值。

## 居中零点
<a name="v10-time-series-axis-centered"></a>

将 y 轴设置为居中零点。

## 软最小值和软最大值
<a name="v10-time-series-axis-softminmax"></a>

设置**软最小值**或**软最大值**选项，以更好地控制 y 轴限制。默认情况下，Grafana 会根据数据集自动设置 y 轴的范围。

软最小值和软最大值设置可防止数据中的微小变化在基本平坦时被放大。相比之下，硬最小值和最大值有助于通过将间歇性尖峰剪过特定点来防止掩盖数据中的有用细节。

要定义 y 轴的硬限制，请设置标准 min/max 选项。有关更多信息，请参阅[配置标准选项](v10-panels-configure-standard-options.md)。

## 转换
<a name="v10-time-series-axis-transform"></a>

使用此选项可转换序列值，而不会影响工具提示、上下文菜单或图例中显示的值。您有两个转换选项：
+ **负 Y 转换**：将结果翻转为 Y 轴上的负值。
+ **常量**：将第一个值显示为常量线。

**注意**  
转换选项只能作为覆盖选项使用。

## 显示多个 y 轴
<a name="v10-time-series-axis-multiple"></a>

在某些情况下，您希望显示多个 y 轴。例如，如果您有一个数据集，显示一段时间内的温度和湿度，则可能需要为这两个序列显示两个具有不同单位的 y 轴。

要显示多个 y 轴，请[添加字段覆盖](v10-panels-configure-overrides.md#v10-panels-overrides-add-a-field)。根据需要多次执行这些步骤，以添加任意数量的 y 轴。

# 颜色选项
<a name="v10-time-series-color"></a>

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

默认情况下，图形使用标准[颜色方案](v10-panels-configure-standard-options.md#v10-panels-standard-options-color-scheme)选项来指定序列颜色。您也可以通过选择图例序列颜色图标，使用图例打开颜色选取器。以这种方式设置颜色会自动创建覆盖规则，为特定序列设置特定颜色。

以下是可用于覆盖序列颜色默认值的其他选项。

## 经典调色板
<a name="v10-time-series-color-classic"></a>

最常见的设置是使用**经典调色板**绘制图形。此方案根据每个字段或序列的顺序自动为其分配颜色。如果查询中字段的顺序发生变化，颜色也会发生变化。您可以使用覆盖规则手动配置特定字段的颜色。

## 单色
<a name="v10-time-series-color-single"></a>

使用此模式指定颜色。您还可以选择图例中每个序列旁边的彩色线条图标来打开颜色选取器。这将自动创建一个新的覆盖，将颜色方案设置为单色和选定颜色。

## 按值颜色方案
<a name="v10-time-series-color-byvalue"></a>

如果您选择按值配色方案，例如**从阈值（按值）**或 **Green-Yellow-Red （按值）**，则会出现 “**按系列着色**” 选项。此选项控制使用哪个值（最后一个、最小值、最大值）为序列指定颜色。

## 方案渐变模式
<a name="v10-time-series-color-gradient"></a>

位于**图形样式**下方的**渐变模式**选项有一个名为 **Scheme** 的模式。启用 **Scheme** 时，线条或条形图会收到根据选定**方案**定义的渐变颜色。

**来自阈值**

如果将**颜色方案**设置为**来自阈值（按值）**，将**渐变模式**设置为**方案**，则线条或条形图颜色在超出定义的阈值时会发生变化。您只会看到在方案中选择的具体颜色。

**渐变颜色方案**

使用渐变颜色方案而*不*将**渐变模式**设置为**方案**，这意味着当序列中的值在设置的阈值之间移动时，所选颜色将在所选颜色之间形成渐变。

# 跟踪
<a name="v10-panels-traces"></a>

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

跟踪可视化使您可以在请求遍历基础设施中的服务时跟踪请求。跟踪可视化在图中显示跟踪数据，以便您轻松解释这些数据。

有关跟踪及其使用方法的更多信息，请参阅以下文档：
+ [Explore 中的跟踪](v10-explore-tracing.md)
+ [Tempo 数据来源](tempo-data-source.md)
+ *Grafana Labs Tempo 文档*中的[开始使用 Tempo](https://grafana.com/docs/tempo/latest/getting-started/)。

## 添加带有跟踪可视化效果的面板
<a name="v10-panels-traces-add"></a>

一旦 Grafana 堆栈中有可用的跟踪数据，就可以将跟踪面板添加到 Grafana 控制面板。

使用控制面板变量 `traceID`，可以创建查询以显示给定跟踪 ID 的特定跟踪。有关控制面板变量的更多信息，请参阅[变量文档](v10-dash-variables.md)。

**先决条件**

在开始之前，您需要：
+ Amazon Managed Grafana 工作区。
+ 连接到工作区的 [Tempo 数据来源](tempo-data-source.md)。

要在控制面板中查看和分析跟踪数据，您需要将跟踪可视化添加到控制面板，并使用面板编辑器定义查询。查询决定了可视化中显示的数据。有关面板编辑器的更多信息，请参阅[面板编辑器文档](v10-panels-editor-overview.md)。

此过程使用仪表板变量和模板来允许您输入跟踪 IDs ，然后可以将其可视化。您将使用名为 `traceId` 的变量，将其添加为模板查询。

**添加跟踪可视化查询**

1. 在您的工作区中，创建一个新控制面板或转到要在其中添加跟踪可视化效果的现有控制面板。

1. 从新控制面板中选择**添加可视化**或在现有控制面板上选择**添加面板**。

1. 选择相应的跟踪数据来源。

1. 在面板编辑器的右上角，选择**可视化**选项卡，然后选择**跟踪**。

1. 在**面板选项**下，输入跟踪面板的**标题**。有关面板编辑器的更多信息，请参阅 [配置面板选项](v10-panels-configure-panel-options.md)。

1. 在查询编辑器中，选择 **TraceQL** 查询类型选项卡。

1.  在 TraceQL 查询字段中输入 `${traceId}` 以创建控制面板变量。此变量用作模板查询。

1. 在面板编辑器中选择**应用**，将面板添加到控制面板。

1. 转到控制面板**设置**，添加一个名为 `traceId`，变量类型为**自定义**的新变量，为其添加标签（如果需要）。选择**应用**将变量添加到控制面板。

1. 对用于跟踪面板的数据来源使用有效的跟踪 ID，并在控制面板变量中编辑 ID，验证面板是否正常工作。

## 添加带有表可视化效果的 TraceQL
<a name="v10-panels-traces-traceql"></a>

虽然您可以向仪表板添加跟踪可视化，但必须手动将跟踪添加 IDs 为仪表板变量很麻烦。相反，能够使用 TraceQL 查询来搜索特定类型的跟踪，然后从匹配结果中选择适当的跟踪效果更好。

**先决条件**

此过程假定您已完成上述过程。

**添加带有表可视化效果的 TraceQL**

1. 在添加跟踪可视化的同一控制面板中，选择**添加面板**以添加新的可视化面板。

1. 选择在上一节中使用的同一跟踪数据来源。

1. 在面板编辑器的右上角，选择**可视化**选项卡，然后选择**表**。

1. 在查询编辑器中，选择 **TraceQL** 选项卡。

1. 在**面板选项**下，输入跟踪面板的**标题**。

1. 添加适当的 TraceQL 查询，搜索要在控制面板中可视化的跟踪。例如，这是一个来自名为的服务器的简单静态查询*my-server*。

   ```
   { .service.name = "my-server" && .http.status_code=500 }
   ```

   您可以将 TraceQL 查询编写为模板查询，以利用其他控制面板变量（如果存在）。这样，您就可以基于这些变量创建动态查询。

当查询返回结果时，结果将渲染在面板的表中。

跟踪可视化中的结果包括指向渲染跟踪的 **Explore** 页面的链接。您可以在表中添加指向跟踪的其他链接，这些跟踪在选中时填充 `traceId` 控制面板变量，以便在同一控制面板中可视化跟踪。

要在面板中创建一组数据链接，请按以下步骤操作。

**使用变量向跟踪添加其他链接**

1. 在右侧菜单中的**数据链接**下，选择**添加链接**。

1. 为数据链接添加**标题**。

1. 在渲染整个控制面板时，查看浏览器的地址栏来查找控制面板的路径。由于这是指向同一 Grafana 堆栈中控制面板的链接，因此只需要提供控制面板的路径。

   例如，如果您的路径是：

   ```
   https://g-example.grafana-workspace.us-east-1.amazonaws.com/d/1234abcd5/my-dashboard?orgId=1
   ```

   那么控制面板的路径是：

   ```
   /d/1234abcd5/my-dashboard?orgId=1
   ```

1. 在 **URL** 字段中，对包含两个面板的控制面板进行自引用。此自引用使用表中选定跟踪的值来填充控制面板变量。使用上一步中控制面板的路径，然后使用 TraceQL 表中的选定结果填写 `traceId` 的值。跟踪 ID 是使用返回结果中的 `traceID` 数据字段公开的，因此将其用作控制面板变量的值。例如：

   ```
   /d/1234abcd5/my-dashboard?orgId=1&var-traceId=${__data.fields["traceID"]}
   ```

1. 选择**保存**以保存数据链接。

1. 从面板编辑器中选择**应用**，将面板应用于控制面板。

1. 保存控制面板。

现在，您应该可以在表可视化中看到匹配的跟踪列表。选择 **TraceID** 或 **SpanID** 字段时，您可以选择打开 **Explore** 页面以可视化跟踪或点击数据链接，选择任何其他字段（例如 `Start time`、`Name` 或 `Duration`）以自动点击数据链接，填写 `traceId` 控制面板变量，然后在跟踪面板中显示相关追踪。

# 趋势
<a name="v10-panels-trend"></a>

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

趋势可视化应用于具有连续数字 X（而非时间）的数据集。一些示例包括函数图、 rpm/torque 曲线、供需关系以及赛道上的海拔或心率图（以 x 为起点的距离或持续时间）。

趋势可视化支持[时间序列可视化](v10-panels-time-series.md)中可用的所有视觉样式和选项，但以下情况除外：
+ 无注释或时间区域
+ 无共享光标（或十字准线）
+ 无多时区 x 轴
+ 无法通过拖动选择来更改控制面板的时间范围

**X 字段选择**

使用此选项选择包含递增数值的字段。

 例如，您可以表示发动机功率和扭矩与速度的关系，其中速度绘制在 x 轴上，功率和扭矩绘制在 y 轴上。

# XY 图表
<a name="v10-panels-xychart"></a>

XY 图表提供了一种在图形中可视化任意 x 和 y 值的方法，以便轻松显示两个变量之间的关系。XY 图表通常用于创建散点图。您也可以使用它们来创建气泡图，其中字段值决定了每个气泡的大小。

![\[显示 Grafana 中 XY 图表可视化示例的图像。\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/viz/xy-chart-example.png)


## 支持的数据格式
<a name="v10-panels-xychart-formats"></a>

您可以在 XY 图表中使用任何类型的表数据，其中至少有两个数值字段。这种类型的可视化不需要时间数据。

## 面板选项
<a name="v10-panels-xychart-paneloptions"></a>

在面板编辑器窗格的**面板选项**部分，您可以设置面板标题和描述等基本选项。您还可以在此部分配置重复面板。有关更多信息，请参阅 [配置面板选项](v10-panels-configure-panel-options.md)。

## XY 图表选项
<a name="v10-panels-xychart-options"></a>

**序列映射**

设置序列数据在图表中的映射方式。
+ **自动**：从所有可用数据帧（或数据集）自动生成序列。您可以筛选以仅选择一个帧。
+ **手动**：通过从可用数据帧中进行选择来显式定义序列。

根据序列映射选择，**帧**、**X 字段**和 **Y 字段**选项会有所不同。自动和手动序列映射部分描述了这些不同的选项。

**自动序列映射选项**

当您选择**自动**作为序列映射模式时，以下选项已预先配置，但您也可以自己定义。
+ **帧**：默认情况下，XY 图表显示所有数据帧。您可以筛选以仅选择一个帧。
+ **X 字段**：选择 X 代表哪个字段。默认情况下，这是每个数据帧中的第一个数字字段。
+ **Y 字段**：设置 X 字段后，默认情况下，数据帧中剩余的所有数字字段都被指定为 Y 字段。您可以使用此选项显式选择要用于 Y 的字段。

  图表序列由 Y 字段生成。要更改 XY 图表中的序列，请覆盖 Y 字段。您在“大小”字段或“颜色”字段中使用的任何字段都不会生成序列。

  您也可以使用覆盖来单独排除 Y 字段。为此，请为要删除的每个 Y 字段添加具有以下属性的覆盖：
  + 覆盖类型：**带名称的字段**
  + 覆盖属性：**序列 > 隐藏在区域中**
  + 区域：**Viz**

**手动序列映射选项**

选择**手动**作为序列模式时，可以添加、编辑和删除序列。要管理序列，请选择**序列**字段。要重命名序列，请选择序列名称。

在**手动**模式下，必须设置以下选项：
+ **帧**：选择数据帧或数据集。您可以根据需要添加任意数量的帧。
+ **X 字段**：选择 X 代表哪个字段。
+ **Y 字段**：选择 Y 代表哪个字段。

**大小字段**

使用此选项可设置哪个字段的值控制图表中点的大小。该值相对于数据帧中所有值的最小值和最大值。

选择此选项后，您可以设置最小和最大点大小选项。

**颜色字段**

使用此选项可设置哪个字段的值控制图表中点的颜色。要使用**标准选项**下的颜色值选项，必须设置此字段。

通常，当图表中只显示一个序列时，会使用此选项。

**Show (显式)**

设置值在可视化中的表示方式。
+ **点**：将值显示为点。选择此选项后，还会显示点大小选项。
+ **线**：在值之间添加一条线。选择此选项时，还会显示线条样式和线宽选项。
+ **二者**：同时显示点和线。

**点大小**

设置图表中所有点的大小，直径从 1 到 100 像素不等。默认大小为 5 像素。您可以设置覆盖以按序列（Y 字段）设置像素大小。

**最小/最大点大小**

设置**大小字段**选项后，使用这些选项来控制最小或最大点大小。您可以为特定序列覆盖这些选项。

**线型**

设置线条样式。要更改颜色，请使用标准颜色方案字段选项。
+ **实线**：显示实线。这是默认设置。
+ **虚线**：显示虚线。选择此选项时，将显示一个下拉列表，您可以在其中选择虚线的长度和间隙设置。默认情况下，长度和间隙设置为 `10, 10`。
+ **点**：显示虚线。选择此选项时，将显示一个下拉列表，您可以在其中选择点间距。默认情况下，点间距设置为 `0, 10`（第一个数字代表点长，且始终为零）。

**线宽**

设置线条的宽度（像素）。

## 工具提示选项
<a name="v10-panels-xychart-tooltipoptions"></a>

工具提示选项控制将鼠标悬停在图形中的数据点上时显示的信息叠加。

**工具提示模式**
+ **单个**：悬停工具提示仅显示一个序列，即您将鼠标悬停在上面的序列。
+ **隐藏**：与可视化交互时不显示工具提示。

使用覆盖从工具提示隐藏单个序列。

**最大高度**

设置工具提示框的最大高度。默认为 600 像素。

## 图例选项
<a name="v10-panels-xychart-legendoptions"></a>

图例选项控制显示在图形下方或右侧的序列名称和统计数据。有关图例的更多信息，请参阅 [配置图例](v10-panels-configure-legend.md)。

**可见性**

切换开关以打开或关闭图例。

**Mode (模式)**

使用这些设置可定义图例在可视化中的显示方式。
+ **列表**：以列表形式显示图例。这是图例的默认显示模式。
+ **表**：以表的形式显示图例。

**放置**

选择显示图例的位置。
+ **底部**：显示在图形下方。
+ **右**：显示在图形右侧。

**值**

选择要在图例中显示的[标准计算](v10-panels-calculation-types.md)。可以有多个。

**Width (宽度)**

控制图例放置在可视化右侧时的宽度。只有将图例放置设置为**右**时，才会显示此选项。

## 轴选项
<a name="v10-panels-xychart-axis"></a>

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

轴类别下的选项会更改 x 和 y 轴的渲染方式。某些选项只有在您编辑的字段选项框外部单击后才会生效。也可以按 `Enter` 键。

**放置（y 轴）**

设置 Y 轴的放置。选项包括：
+ **自动**：自动为序列分配 y 轴。当有两个或多个具有不同单位的序列时，Grafana 将左轴分配给第一个单位，将右轴分配给下一个单位。
+ **左**：在左侧显示所有 y 轴。
+ **右**：在右侧显示所有 y 轴。
+ **隐藏**：隐藏所有轴。

要有选择地隐藏轴，请针对特定字段[添加字段覆盖](v10-panels-configure-overrides.md)。

**标签**

设置 y 轴文本标签。如果有多个 y 轴，可使用覆盖分配不同的标签。

**Width (宽度)**

设置轴的固定宽度。默认情况下，Grafana 会动态计算轴的宽度。

通过设置轴的宽度，具有不同轴类型的数据可以共享相同的显示比例。此设置让您更容易比较多个图形的数据，因为轴在视觉上不会相互错位或拉伸。

**显示网格线**

设置轴网格线的可见性。
+ **自动**：根据数据的密度自动显示网格线。
+ **开**：始终显示网格线。
+ **关**：从不显示网格线。

**Color (颜色)**

设置轴的颜色
+ **文本**：根据主题文本颜色设置颜色。
+ **序列**：根据序列颜色设置颜色。

**显示边框**

设置轴边框的可见性。

**Scale**

设置 y 轴刻度。
+ **线性**：将刻度分成相等的部分。
+ **对数**：使用对数刻度。选择此选项时，会出现一个列表，供您选择二进制（以 2 为基数）或通用（以 10 为基数）对数刻度。
+ **Symlog**：使用对称的对数刻度。选择此选项时，会出现一个列表，供您选择二进制（以 2 为基数）或通用（以 10 为基数）对数刻度。线性阈值选项允许您设置刻度从线性变为对数的阈值。

*居中零点*

将 y 轴设置为居中零点。

**软最小值和软最大值**

设置**软最小值**或**软最大值**选项，以更好地控制 y 轴限制。默认情况下，Grafana 会根据数据集自动设置 y 轴的范围。

软最小值和软最大值设置可防止数据中的微小变化在基本平坦时被放大。相比之下，硬最小值和最大值有助于通过将间歇性尖峰剪过特定点来防止掩盖数据中的有用细节。

要定义 y 轴的硬限制，请设置标准 min/max 选项。有关更多信息，请参阅[配置标准选项](v10-panels-configure-standard-options.md)。

**转换**

使用此选项可转换序列值，而不会影响工具提示、上下文菜单或图例中显示的值。您有两个转换选项：
+ **负 Y 转换**：将结果翻转为 Y 轴上的负值。
+ **常量**：将第一个值显示为常量线。

**注意**  
转换选项只能作为覆盖选项使用。

**显示多个 y 轴**

在某些情况下，您希望显示多个 y 轴。例如，如果您有一个数据集，显示一段时间内的温度和湿度，则可能需要为这两个序列显示两个具有不同单位的 y 轴。

要显示多个 y 轴，请[添加字段覆盖](v10-panels-configure-overrides.md#v10-panels-overrides-add-a-field)。根据需要多次执行这些步骤，以添加任意数量的 y 轴。

## 标准选项
<a name="v10-panels-xychart-standard"></a>

面板编辑器中的**标准选项**可以让您更改字段数据在可视化中的显示方式。设置标准选项后，更改会应用于所有字段或序列。有关对字段显示的更精细控制，请参阅 [配置字段覆盖](v10-panels-configure-overrides.md)。

您可以自定义以下标准选项：
+ **字段最小值/最大值**：启用**字段最小值/最大值**，让 Grafana 根据字段的最小值或最大值单独计算每个字段的最小值或最大值。
+ **颜色方案**：为整个可视化设置一种或多种颜色。

有关更多信息，请参阅 [配置标准选项](v10-panels-configure-standard-options.md)。

## 数据链接
<a name="v10-panels-xychart-datalinks"></a>

数据链接让您可以链接到其他面板、控制面板和外部资源，同时保持来源面板的上下文。您可以创建包含序列名称甚至光标下值的链接。

对于每个数据链接，请设置以下选项：
+ **标题**
+ **URL**
+ **在新选项卡中打开**

有关更多信息，请参阅 [配置数据链接](v10-panels-configure-data-links.md)。

## 字段覆盖
<a name="v10-panels-xychart-fieldoverrides"></a>

您可以通过覆盖自定义特定字段或序列的可视化设置。添加覆盖规则时，您可以针对一组特定的字段，并为这些字段的显示方式定义多个选项。

请选择以下覆盖选项之一：
+ **带名称的字段**：从所有可用字段列表中选择一个字段。
+ **名称与正则表达式匹配的字段**：使用该选项来指定要用正则表达式覆盖的字段。
+ **带类型的字段**：使用该选项可以按类型选择字段，例如字符串、数值或时间。
+ **查询返回的字段**：选择特定查询返回的所有字段。
+ **带值的字段**：选择定义的 reducer 条件返回的所有字段，例如**最小值**、**最大值**、**计数**或**总计**。

有关更多信息，请参阅 [配置字段覆盖](v10-panels-configure-overrides.md)。

# Grafana 10 中的 Explore
<a name="v10-explore"></a>

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

Grafana 的控制面板 UI 提供了构建可视化控制面板的功能。*Explore* 去掉了控制面板和面板选项，以便您专注于查询。这有助于您进行迭代，直到得到有效的查询，然后您可以根据查询构建控制面板。

**注意**  
如果您只想浏览数据，而不想创建控制面板，Explore 可以让该操作变得更加容易。如果数据来源支持图形和表数据，Explore 会以图形和表的形式显示结果。这样，您就可以同时查看数据趋势和更多详细信息。

此页面将引导您开始探索自己的数据。以下主题提供了有关 Explore 的特定功能和用途的更多详细信息。
+ [Explore 中的查询管理](v10-explore-manage.md)
+ [登录 Explore](v10-explore-logs.md)
+ [Explore 中的跟踪](v10-explore-tracing.md)
+ [Explore 中的关联编辑器](v10-explore-correlations.md)
+ [Explore 中的检查器](v10-explore-inspector.md)

## 开始探索
<a name="v10-explore-start"></a>

**注意**  
要访问 Explore，您必须具有编辑者或管理员角色。

**访问 Explore**

1. 在 Grafana 工作区中，从左侧菜单栏中选择 Explore 菜单项。

   这将打开一个空的 Explore 选项卡。

   或者，要从面板中的现有查询开始，请从“面板”菜单中选择 Explore 选项。这将打开 Explore 选项卡，其中包含来自面板的查询，并让您可以在控制面板之外调整或迭代查询。

1. 从左上角的下拉列表中选择数据来源。

   您还可以选择**打开高级数据来源选取器**以查看更多选项，包括添加数据来源（仅限管理员）。

1. 使用所选数据来源提供的查询编辑器编写查询。

   有关查询的详细信息，请参阅 [查询和转换数据](v10-panels-query-xform.md)。

1. 使用右上角的按钮运行查询。

## 拆分和比较
<a name="v10-explore-compare"></a>

拆分视图提供了一种比较可视化效果 side-by-side或在一个页面上一起查看相关数据的简便方法。

**顶部打开拆分视图**

1. 在 “浏览” 视图中，选择 “**拆分**” 按钮以复制当前查询，并将页面拆分为两个 side-by-side查询。
**注意**  
可以为新查询选择其他数据来源，例如，比较两个不同服务器的同一查询，或比较暂存环境和生产环境。

   在拆分视图中，选择附加到其中一个时间选取器的时间同步按钮，可以链接两个面板的时间选取器（如果更改一个，另一个也会更改）。链接时间选取器可使拆分视图查询的开始和结束时间保持同步。这样可确保您在两个拆分面板中看到相同的时间间隔。

1. 要关闭新创建的查询，请选择**关闭拆分**按钮。

## 内容大纲
<a name="v10-explore-outline"></a>

内容大纲是一个侧面导航栏，用于跟踪您在 Explore 中创建的查询和可视化。您可以在它们之间快速导航。

内容大纲也适用于拆分视图。在拆分视图中，会为每个窗格生成内容大纲。

**打开内容大纲**

1. 选择 **Explore** 屏幕左上角的**大纲**按钮。

1. 选择内容大纲中的任何面板图标，以导航到该面板。

## 分享探索 URLs
<a name="v10-explore-shareurl"></a>

使用 Explore 时，浏览器地址栏中的 URL 会随着您对查询的更改而更新。您可以共享或将此 URL 加入书签。

**注意**  
探索可能会产生相对较长的时间 URLs。如果 URL 太长，不适合使用工具，也可以生成并共享[短链接](#v10-explore-share)。

**使用外部工具生 URLs 成 Explore**

由于 Explore URLs 具有已定义的结构，因此您可以从外部工具构建 URL，然后在 Grafana 中将其打开。URL 结构为：

```
http://<workspace_url>/explore?panes=<panes>&schemaVersion=<schema_version>&orgId=<org_id>
```

其中：
+ `org_id` 为组织 ID。
+ `schema_version` 为架构版本（应设置为最新版本，即 `1`）。
+ `panes` 是窗格的 URL 编码 JSON 对象，其中每个键都是窗格 ID，每个值都是符合以下模式的对象：

  ```
  {
    datasource: string; // the pane's root datasource UID, or `-- Mixed --` for mixed datasources
    queries: {
      refId: string; // an alphanumeric identifier for this query, must be unique within the pane, i.e. "A", "B", "C", etc.
      datasource: {
        uid: string; // the query's datasource UID ie: "AD7864H6422"
        type: string; // the query's datasource type-id, i.e: "loki"
      }
      // ... any other datasource-specific query parameters
    }[]; // array of queries for this pane
    range: {
      from: string; // the start time, in milliseconds since epoch
      to: string; // the end time, in milliseconds since epoch
    }
  }
  ```
**注意**  
`from` 和 `to` 字段还接受 [设置控制面板时间范围](v10-dash-using-dashboards.md#v10-dash-setting-dashboard-time-range) 主题中所述的相对范围。

## 共享短链接
<a name="v10-explore-share"></a>

共享缩短链接功能允许您创建更小、更简单 URLs的 /goto/:uid 格式，而不必在查询参数中使用更长的时间。 URLs 要创建指向查询结果的短链接，请在 Explore 工具栏中选择**共享**选项。从未使用过的短链接将在七（7）天后自动删除。如果链接至少使用过一次，则该链接不会被删除。

**在绝对时间内共享短链接**

短链接有两个选项：保留相对时间（例如，从两个小时前到当前时间）或绝对时间（例如，从上午 8 点到上午 10 点）。默认情况下，共享短链接将复制选定时间范围、相对时间范围或绝对时间范围。通过选择共享短链接按钮旁边的下拉按钮，然后选择**时间同步 URL 链接**的一个选项，您可以创建具有绝对时间的短链接，这意味着任何收到链接的人都将看到与您看到的相同数据，即使他们在其他时间打开此链接。此选项不会影响在 Explore 视图中选择的时间范围。

# Explore 中的查询管理
<a name="v10-explore-manage"></a>

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

您可以管理在 Explore 中创建的查询，包括已运行查询的历史记录和已加星标的查询。

## 查询历史记录
<a name="v10-explore-manage-history"></a>

查询历史记录是您在 Explore 中使用的查询列表。历史记录存储在 Grafana 数据库中，不与其他用户共享。历史查询的保留期为两周。超过两周的查询会被自动删除。要打开历史记录并与之交互，请在 Explore 中选择**查询历史记录**按钮。

**注意**  
带星号（收藏）的查询不受两周保留期的限制，也不会被删除。

## 查看查询历史记录
<a name="v10-explore-manage-history-view"></a>

您可以通过“查询历史记录”查看查询历史记录。对于每个单独的查询，您可以：
+ 运行查询。
+ 创建 and/or 编辑评论。
+ 将查询复制到剪贴板。
+ 将包含查询的短链接复制到剪贴板。
+ 为查询加上星号（收藏）。

## 管理收藏的查询
<a name="v10-explore-manage-history-favorites"></a>

“查询历史记录”选项卡中所有标有星号的查询都会显示在“已加星标”选项卡上。这让您可以快速访问收藏的查询，且无需从头开始键入，即可重用这些查询。

## 对查询历史记录排序
<a name="v10-explore-manage-history-sort"></a>

默认情况下，查询历史记录会显示最新的查询。您可以按日期或数据来源名称以升序或降序对历史记录排序。

**对查询历史记录排序**

1. 选择**查询排序依据**字段。

1. 选择下列选项之一：
   + **最新的优先**
   + **最早的优先**

## 筛选查询历史记录
<a name="v10-explore-manage-history-filter"></a>

您可以在“查询历史记录”和“已加星标”选项卡中将查询历史记录筛选到特定的数据来源。

**将历史记录筛选到数据来源**

1. 选择**筛选特定数据来源查询**字段。

1. 选择要为其筛选历史记录的数据来源。您也可以选择多个数据来源。

**注意**  
使用混合数据来源运行的查询仅在筛选混合数据来源时才会出现，按单个数据来源筛选时不会显示。

在**查询历史记录**选项卡中，还可以使用滑块按日期筛选查询：
+ 使用垂直滑块按日期筛选查询。
+ 拖动底部手柄调整开始日期。
+ 拖动顶部手柄调整结束日期。

## 在查询历史记录中搜索
<a name="v10-explore-manage-history-search"></a>

您可以在历史记录中跨查询和评论进行搜索 在“查询历史记录”选项卡和“已加星标”选项卡中搜索查询。

**在查询历史记录中搜索**

1. 选择**搜索查询**字段。

1. 在搜索字段中输入您要搜索的术语。

## 查询历史记录设置
<a name="v10-explore-manage-history-settings"></a>

您可以在“设置”选项卡中自定义查询历史记录。下表描述了这些选项。


| 设置 | 默认 值 | 
| --- | --- | 
| 更改默认的活动选项卡 | “查询历史记录”选项卡 | 

**注意**  
查询历史记录设置是全局型的，在拆分模式下应用于两个面板。

# 登录 Explore
<a name="v10-explore-logs"></a>

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

Explore 让您可以调查不同数据来源中的日志，包括：
+ [OpenSearch](using-opensearch-in-AMG.md)
+ [Amazon CloudWatch](using-amazon-cloudwatch-in-AMG.md)
+ [InfluxDB](using-influxdb-in-AMG.md)
+ [Loki](using-loki-in-AMG.md)

在基础设施监控和事件响应期间，您可以深入挖掘指标和日志，找出原因。Explore 还允许您通过查看日志与其他遥测信号（例如指标、轨迹或配置文件）关联起来。 side-by-side

日志查询的结果显示为单独的日志行和显示选定时间段内日志量的图形。

## 日志卷
<a name="v10-explore-logs-volume"></a>

在处理支持全范围日志卷的数据来源时，Explore 会自动显示一个图形，其中显示所有输入日志查询的日志分布情况。 OpenSearch 和 Loki 数据源目前支持此功能。

**注意**  
在 Loki 中，这种全范围的日志卷通过指标查询来呈现，可能开销较大，具体取决于查询的时间范围。对于较小的 Loki 安装来说，处理这种查询尤其具有挑战性。为了缓解这种情况，您可以在 Loki 前面使用像 [nginx](https://www.nginx.com/) 这样的代理来为这些查询设置自定义超时（例如 10 秒）。可通过查找带有 HTTP 标头 `X-Query-Tags`（值为 `Source=logvolhist`）的查询来识别日志卷直方图查询；Grafana 会将这些标头添加到所有日志卷直方图查询中。

如果数据来源不支持加载全范围日志卷，则日志模型会通过对日志行进行计数，并根据自动计算的时间间隔将其整理到桶中来计算时间序列。第一个日志行的时间戳用于在结果中锚定日志卷的开始位置。时间序列的末尾锚定到时间选取器的 **To** 范围。这样，即使数据来源不提供全方位支持，您也能高效地分析和可视化日志数据。

## 日志
<a name="v10-explore-logs-overview"></a>

在以下各节中，您将找到有关如何在 Explore 中可视化单个日志并与之交互的详细说明。

## 日志导航
<a name="v10-explore-logs-navigation"></a>

日志导航位于日志行的右侧，可用于轻松请求更多日志。您可以单击导航底部的**旧日志**按钮完成此操作。当您达到行限制并希望查看更多日志时，这尤其有用。然后，从导航中运行的每个请求都会作为单独页面显示在导航中。每个页面都显示传入日志行的 `from` 和 `to` 时间戳。您可以通过单击每个页面来查看之前的结果。Explore 会缓存从日志导航中运行的最后五个请求，因此您在单击页面时不会重新运行相同的查询，从而节省时间和资源。

## 可视化选项
<a name="v10-explore-log-visualization-options"></a>

 您可以自定义日志的显示方式，并选择显示哪些列。


| 选项 | 描述 | 
| --- | --- | 
| 时间 | 显示或隐藏时间列。这是与数据来源报告的日志行关联的时间戳。 | 
| 唯一标签 | 显示或隐藏仅包含非常用标签的唯一标签列。上面显示了所有常用标签。 | 
| 换行 | 如果希望使用换行显示，请将其设置为 true。如果设置为 false，则会导致水平滚动。 | 
| 修饰 JSON |  将其设置为 true 可打印所有 JSON 日志。此设置不会影响 JSON 以外的任何格式的日志。 | 
| 重复数据删除 | 日志数据可能有很多重复，而 Explore 可以隐藏重复的日志行。您可以使用几种不同的重复数据删除算法。精确：除日期字段外，对整行进行精确匹配。数字：去除持续时间、IP 地址等数字后，在行上进行匹配。签名：最激进的重复数据删除方法，该方法会去除所有字母和数字，匹配剩余的空格和标点符号。 | 
| 显示结果顺序 | 您可以将接收日志的顺序从默认降序（最新的优先）改为升序（最早的优先）。 | 

## 下载日志行
<a name="v10-explore-download-log-lines"></a>

要下载 `txt` 或 `json` 格式的日志结果，请使用**下载**按钮。此功能允许保存日志数据以供进一步分析，或以方便且易于访问的格式与他人共享。

## 记录结果元信息
<a name="v10-explore-log-result-meta-information"></a>

在收到的日志行上方，您可以找到基本的元信息，包括：
+ **接收的日志数**：表示当前查询或时间范围内收到的日志总数。
+ **错误**：在日志结果中显示可能存在的错误。
+ **常用标签**：显示常用标签。
+ **处理的总字节数**：表示以字节为单位处理的日志数据的累积大小。

**注意**  
某些元信息的可用性可能取决于数据来源，因此，您可能只能看到特定数据来源的部分详细信息。

## 转义换行符
<a name="v10-explore-log-escaping-newlines"></a>

Explore 可自动检测日志行中的一些错误转义序列，如换行符（`\n`、`\r`）或制表符（`\t`）。当检测到此类序列时，Explore 会提供**转义换行符**选项。

**自动修复 Explore 检测到的错误转义序列**

1. 选择**转义换行符**来替换序列。

1. 手动检查替换项以确认其正确性。

Explore 将替换这些序列。替换时，选项将从**转义换行符**变为**删除转义**。评估变更，因为根据接收的输入，解析可能不准确。您可以选择**删除转义**来恢复替换项。

## 日志级别
<a name="v10-explore-log-level"></a>

对于指定了 `level` 标签的日志，我们会使用此标签值来确定日志级别，并相应地更新每个日志行的颜色。如果日志未指定级别标签，则会尝试查明其内容是否与任何受支持的表达式匹配（有关更多信息，请参阅下表）。日志级别始终由第一个匹配项决定。如果 Grafana 无法推断日志级别字段，则会使用未知的日志级别对其可视化。

**注意**  
如果使用 Loki 数据来源，且 `level` 是日志行的一部分，请使用解析程序（JSON、logfmt、regex,..）将级别信息提取到用于确定日志级别的级别标签中。这允许直方图在单独的条形图中显示不同的日志级别。

**支持的日志级别以及日志级别缩写和表达式的映射：**


| 日志级别 | 颜色 | 支持的表达式 | 
| --- | --- | --- | 
| critical | purple | emerg、fatal、alert、crit、critical | 
| 错误 | red | err、eror、error | 
| warning | yellow | warn、warning | 
| info | green | info、information、informational、notice | 
| debug | blue | dbug、debug | 
| trace | light blue | trace | 
| unknown | grey | \$1 | 

## 突出显示搜索的词
<a name="v10-explore-highlight-searched-words"></a>

当您的查询包含要搜索的特定词或表达式时，Explore 将在日志行中突出显示这些词或表达式，以便更好地查看。通过此突出显示功能，您可以更轻松地识别和关注日志中的相关内容。

**注意**  
突出显示搜索词的能力可能因数据来源而异。对于某些数据来源，可能无法突出显示搜索词。

## 日志详细信息
<a name="v10-explore-log-details-view"></a>

在 Explore 中，每条日志行都有一个名为*日志详细信息*的可扩展部分，可通过选择日志行将其打开。日志详细信息视图以附加到日志行的*字段*和*链接*的形式提供其他信息和探索选项，从而实现更强大的交互和分析。

**字段**

在日志详细信息视图中，您可以通过两种方式筛选显示的字段：正筛选条件（关注特定字段）和负筛选条件（排除特定字段）。这些筛选条件将更新生成日志行的相应查询，相应地添加等式和不等式表达式。如果数据源有支持（例如 Loki 和） OpenSearch，则日志详细信息将检查该字段是否已存在于当前查询中显示和活动状态（仅适用于正向筛选器），允许您将其关闭查询，或者将筛选表达式从正值更改为负值。

通过单击眼睛图标，您可以在日志列表中选择要可视化的字段子集，而不是完整的日志行。每个字段都有一个统计图标，以显示与所有显示的日志相关的统计信息。

**Links**

Grafana 提供了数据链接或关联的功能，使您能够将日志消息的任何部分转换为内部或外部链接。这些链接可用于导航到相关数据或外部资源，提供了一种无缝和方便的方式来探索进一步的信息。

## 日志上下文
<a name="v10-explore-log-context"></a>

日志上下文显示与特定搜索查询匹配的日志条目相关的附加上下文行。这有助于理解日志条目的上下文，类似于 `grep` 命令中的 `-C` 参数。

您可能会遇到长行文本，这使得难以阅读和分析每个日志条目相关的上下文。这就是**换行**开关派上用场的地方。启用此开关后，Grafana 将自动换行长行文本，使其适合查看器的可见宽度。这样可以更容易阅读和理解日志条目。

 **在拆分视图中打开**按钮允许您在 Explore 视图的分屏中对日志条目执行上下文查询。选择此按钮将打开一个新的 Explore 窗格，在日志条目旁边显示上下文查询，从而更容易分析和理解相关上下文。

也可以在新的浏览器选项卡中打开日志上下文查询，方法是在选择按钮以打开上下文模式的同时按 `Ctrl`（或 `Cmd`）键。在新选项卡中打开时，还会应用先前选择的筛选条件。

## 复制日志行
<a name="v10-explore-copy-log-line"></a>

通过选择**复制日志行**按钮，可将选定日志行的内容轻松复制到剪贴板。

## 将链接复制到日志行
<a name="v10-explore-copy-link-to-log-line"></a>

通过 Grafana 中的日志行链接，您可以快速导航到特定日志条目进行精确分析。选择日志行的**复制短链接**按钮后，您可以生成并复制一个短 URL，在绝对时间范围内直接访问确切的日志条目。打开链接后，Grafana 会自动滚动到相应的日志行，以蓝色背景突出显示，便于识别和关注相关信息。

**注意**  
只有 Loki 和其他提供 `id` 字段的数据来源支持此功能。

## 实时跟踪
<a name="v10-explore-log-live-tailing"></a>

要查看来自受支持数据来源的实时日志，您可以利用 Explore 中的实时跟踪功能。

**使用实时跟踪近乎实时地查看日志**

1. 选择 Explore 工具栏中的**实时**按钮以切换到实时跟踪视图。

1. 在实时跟踪视图中，新日志将出现在屏幕底部，并具有渐变的对比背景，以便您轻松跟踪新增内容。

1. 如果您想暂停实时跟踪并不间断地查看以前的日志，可以选择**暂停**按钮或直接滚动日志视图。

1. 要清除视图并从显示中删除所有日志，请选择**清除日志**按钮。此操作将重置日志视图，并为您提供一个全新的样本，以便继续进行日志分析。

1. 要恢复实时跟踪并继续查看实时日志，请选择**恢复**按钮。

1. 如果要退出实时跟踪并返回 Explore 标准视图，请选择**停止**按钮。

通过实时跟踪功能，您可以密切关注最新日志，从而更容易监控实时事件并及时检测问题。

**日志示例**

如果所选数据来源实现了日志示例，同时支持日志和指标查询，那么对于指标查询，您将能够自动查看有助于可视化指标的日志行示例。Loki 数据来源目前支持此功能。

**从指标切换到日志**

 如果您从实施 `DataSourceWithQueryExportSupport` 的指标数据来源（例如 Prometheus）到支持 `DataSourceWithQueryImportSupport` 的日志记录数据来源（例如 Loki），则其将保留日志中存在的查询标签，并使用这些标签来查询日志流。

例如，在切换到 Loki 数据来源后，以下 Prometheus `grafana_alerting_active_alerts{job='grafana'}` 查询将变为 `{job='grafana'}`。这将返回选定时间范围内可供 grepped/text 搜索的大量日志。

# Explore 中的跟踪
<a name="v10-explore-tracing"></a>

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

您可以通过 Explore 可视化来自数据来源的跟踪。

支持以下数据来源。
+ [Tempo](tempo-data-source.md)（支持的摄取格式： OpenTelemetry、Jaeger 和 Zipkin）
+ [Jaeger](jaeger-data-source.md)
+ [AWS X-Ray](x-ray-data-source.md)
+ [Zipkin](zipkin-data-source.md)

有关如何为上述数据来源配置查询的信息，请参阅特定数据来源的文档。

## 查询编辑器
<a name="v10-explore-trace-queryeditor"></a>

您可以使用数据来源的查询编辑器来查询和搜索跟踪数据。

每个数据来源可以有自己的查询编辑器。Tempo 数据来源的查询编辑器与 Jaeger 数据来源的查询编辑器略有不同。

有关查询每个数据来源的信息，请参阅其文档。
+ [Tempo](tempo-data-source.md)
+ [Jaeger](jaeger-data-source.md)
+ [AWS X-Ray](x-ray-data-source.md)
+ [Zipkin](zipkin-data-source.md)

## 跟踪视图说明
<a name="v10-explore-trace-view"></a>

本节介绍了跟踪视图控制面板的元素。

**标题**

跟踪视图的标题包含以下元素
+ 标题：显示根跨度的名称和跟踪 ID。
+ 搜索：突出显示包含搜索文本的跨度。
+ 元数据：关于跟踪的各种元数据。

**缩微贴图**

显示精简视图或跟踪时间线。将鼠标指针拖到锁位贴图上方可缩小时间范围。缩放还会更新主时间线，所以容易看到较短的时间跨度。将鼠标悬停在缩微贴图上，缩放时将显示**重置选择**按钮，以重置缩放。

**跨度筛选条件**

使用跨度筛选条件，您可以在跟踪时间轴查看器中筛选跨度。添加的筛选条件越多，筛选的跨度就越具体。

您可以添加以下一个或多个筛选条件：
+ 资源服务名称
+ 跨度名称
+ Duration
+ 标签（包括标签、流程标签和日志字段）

要仅显示已匹配的跨度，请选择**仅显示匹配项**开关。

**时间表**

显示跟踪中的跨度列表。每个跨度行由以下组件组成：
+ 展开子项按钮：展开或折叠所选跨度的所有子跨度。
+ 服务名称：记录跨度的服务的名称。
+ 操作名称：跨度代表的操作名称。
+ 跨度持续时间条：跟踪中操作持续时间的直观表示。

**跨度详细信息**

选择跨度行可显示跨度详细信息，包括以下内容。
+ 操作名称
+ 跨度元数据
+ 标签：与此跨度关联的任何标签。
+ 流程元数据：记录此跨度的进程的元数据。
+ 日志：此跨度记录的日志列表和相关键值。如果是 Zipkin，则日志部分显示 Zipkin 注释。

**日志跟踪**

您可以从跟踪视图中的跨度直接导航到与该跨度相关的日志。这适用于 Tempo、Jaeger 和 Zipkin 数据来源。有关如何配置每个数据来源的说明，请参阅相关文档。

选择文档图标，在 Explore 中打开一个包含已配置数据来源的拆分视图，并查询该跨度的相关日志。

**跟踪指标**

**注意**  
此功能目前为测试版。

您可以从跟踪视图中的跨度直接导航到与该跨度相关的指标。此功能适用于 Tempo、Jaeger 和 Zipkin 数据来源。有关配置的详细信息，请参阅相关文档。

**跟踪配置文件**

使用跟踪配置文件，您可以通过添加跟踪和配置文件之间的链接功能，利用 Grafana 来关联不同的信号。

## 节点图
<a name="v10-explore-trace-node-graph"></a>

您可以选择展开显示的跟踪的节点图。根据数据来源的不同，可以将跟踪的跨度显示为图中的节点，也可以添加一些额外的上下文，包括基于当前跟踪的服务图。

## 服务图视图
<a name="v10-explore-trace-graph"></a>

服务图视图能够可视化跨度指标（速率、错误率和持续时间（RED）的跟踪数据）和服务图。设置要求后，此预配置的视图将立即可用。

有关更多信息，请参阅 [Tempo](tempo-data-source.md) 数据来源页面。您还可以在*服务图视图页面*中查看 [Grafana Labs Tempo 文档](https://grafana.com/docs/tempo/latest/metrics-generator/service-graph-view/)。

## 数据 API
<a name="v10-explore-trace-dataapi"></a>

这种可视化需要从数据来源返回特定形状的数据，以便正确显示。

数据来源需要返回数据框并设置 `frame.meta.preferredVisualisationType = 'trace'`。

**数据帧结构**

必填字段：


| 字段名称 | Type | 说明 | 
| --- | --- | --- | 
| traceID | 字符串 | 整个跟踪的标识符。数据帧中应只有一个跟踪。 | 
| spanID | 字符串 | 当前跨度的标识符。每条轨迹的跨度IDs 应该是唯一的。 | 
| parentSpanID | 字符串 | 父跨度的 SpanID，用于在跟踪视图中创建子跨度与父跨度的关系。对于没有父级的根跨度，可以是 undefined。 | 
| serviceName | 字符串 | 此跨度所属服务的名称。 | 
| serviceTags | TraceKeyValuePair[] | 与服务相关的标签列表。 | 
| startTime | 数字 | 跨度的开始时间（毫秒纪元时间）。 | 
| duration | 数字 | 跨度的持续时间（毫秒）。 | 

 可选字段：


| 字段名称 | Type | 说明 | 
| --- | --- | --- | 
| logs | TraceLog[] | 与当前跨度关联的日志列表。 | 
| 标签 | TraceKeyValuePair[] | 与当前跨度关联的标签列表。 | 
| warnings | string[] | 与当前跨度关联的警告列表。 | 
| stackTraces | string[] | 与当前跨度关联的堆栈跟踪列表。 | 
| errorIconColor | 字符串 | 如果跨度标记为 error: true，则表示错误图标的颜色。 | 

有关这些类型的详细信息 [TraceSpanRow](https://github.com/grafana/grafana/blob/main/packages/grafana-data/src/types/trace.ts#L28)，请参阅[TraceKeyValuePair[TraceLog](https://github.com/grafana/grafana/blob/main/packages/grafana-data/src/types/trace.ts#L12)](https://github.com/grafana/grafana/blob/main/packages/grafana-data/src/types/trace.ts#L4)和 GitHub。

# Explore 中的关联编辑器
<a name="v10-explore-correlations"></a>

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

关联允许用户在任意两个数据来源之间建立链接。有关更多信息，包括关联概述，请参阅 [Grafana 10 版本中的关联](v10-correlations.md)。

## 创建关联
<a name="v10-explore-corr-create-a-correlation"></a>

您可以从 Explore 页面创建关联。

**创建关联**

1. 在您的 Amazon Managed Grafana 工作区中，导航至 Explore 页面。

1. 选择要作为新关联来源的数据来源。

1. 运行查询，在支持的可视化中生成数据。
**注意**  
支持的可视化为[日志](v10-panels-logs.md)和[表](v10-panels-table.md)。

1. 在顶部工具栏中选择 **\$1 添加**，然后选择**添加关联**（您也可以从[命令调色板](v10-search.md#v10-search-palette)中选择**关联编辑器**）。

   Explore 现在处于关联编辑器模式，由蓝色边框和顶部栏指示。您可以在顶部栏中选择**退出**以退出关联编辑器。

1. 现在，您可以为可视化创建以下新的关联，其中包含附加到可用于构建新查询的数据的链接：
   + *日志*：链接显示在每个日志行的日志详细信息中的字段值旁。
   + *表*：每个表单元格都是一个链接。

1. 选择链接以添加新的关联。链接与用作关联结果字段的字段相关联。有关更多详细信息，请参阅[关联配置](v10-correlations-config.md)。

1. 在打开的拆分视图中，使用右侧窗格设置关联的目标查询来源。有关更多详细信息，请参阅[目标查询](v10-correlations-config.md#v10-correlations-config-target-query)。

1. 使用[变量语法](v10-dash-variable-syntax.md)生成目标查询，可从窗格顶部提供的列表中选择变量。该列表包含选定数据行中的样本值。

1. 提供标签和描述（可选）。标签将用作可视化中链接的名称，可包含变量。

1. 提供转换（可选；详情见下文）。

1. 在顶部工具栏中选择**保存**，以保存关联并退出关联编辑器模式。用于创建关联的链接将被每行中的数据链接所取代。选择链接后，您定义的查询将在另一个窗格中运行，变量将动态替换为所选行中的值。

## 转换
<a name="v10-explore-corr-transformations"></a>

通过转换，可以提取字段中存在的值和其他数据。例如，通过转换，您可以提取日志行的一部分以用于关联。有关关联转换的更多信息，请参阅 [关联转换](v10-correlations-config.md#v10-correlations-config-transformations)。

在编辑器模式下选择一个生成的链接后，您可以在**转换**下拉菜单中选择**添加转换**来添加转换。

**在关联中使用转换**

1. 选择要应用转换的字段。选择要用于转换的字段。例如，日志行。一旦选中，此字段中的值可帮助您构建转换。

1. 选择转换的类型。有关选项和相关设置，请参阅 [关联转换](v10-correlations-config.md#v10-correlations-config-transformations)。

1. 根据您的选择，您可能会看到一个或多个变量填充，或者您可能需要在显示的选项中提供更多规范。

1. 选择**向关联添加转换**，将指定的变量添加到可用变量列表中。

**注意**  
对于此对话框中的正则表达式，其他文档中引用的 `mapValue` 在此处称为 `Variable Name`。Grafana 会突出显示与字段值中的表达式匹配的任何文本。使用正则表达式捕获组来选择应提取的匹配部分。如果提供了有效的正则表达式，则变量和该变量的值将显示在 `Variable Name` 字段下方。

## 关联示例
<a name="v10-explore-corr-examples"></a>

以下示例说明了如何使用 Explore 中的关联编辑器创建关联。如果要遵循这些示例，请确保设置[测试数据来源](testdata-data-source.md)。

### 创建文本到图形的关联
<a name="v10-explore-corr-text-to-graph"></a>

此示例说明了如何使用 Explore 中的关联编辑器创建关联。

关联允许使用查询的结果在任何数据来源中运行新查询。在本例中，您将运行一个渲染表数据的查询。该数据将用于运行不同的查询，以生成图形结果。

要遵循此示例，请确保已设置[测试数据来源](testdata-data-source.md)。

**创建文本到图形的关联**

1. 在 Grafana 中，导航到 **Explore**。

1. 从页面左上角的下拉菜单中，选择**测试数据来源**。

1. 在右侧的下拉菜单中选择 **\$1 添加**，然后选择**添加关联**。

1. Explore 现在处于关联编辑器模式，由蓝色边框指示。

1. 从场景下拉菜单中选择以下场景：**CSV 文件**。

1. 选择文件 **population\$1by\$1state.csv**。每个单元格都是一个链接，单击后即可开始创建新的关联。

1. 单击 `State` 列中的任何单元格以创建新的关联，将数据链接附加到该条目。例如，选择 `California`。

1. 在拆分视图中，选择您在左侧窗格中选择的同一数据来源。查询编辑器上方的帮助程序包含可用于目标查询的所有可用变量。变量包含选定行中的所有数据字段（表列）。

1. 在**场景**菜单中，选择 **CSV 指标值**。查询编辑器中的 `String Input` 字段提供了具有每年人口值的变量：`${1980},${2000},${2020}`。这将使用变量值生成图形。

1. 在查询编辑器**别名**字段中，输入 `${State}`。

   运行查询，查看其是否使用变量中的示例值生成图形。

1. 选择**保存**以保存关联并退出关联编辑器。

   保存关联后，Explore 将在左侧窗格中重新运行查询。通过单击状态名称，将重新运行右侧的查询，并将该行的值插入 CSV，从而更改图形。每次单击状态名称时，都会使用更新的值重新运行查询。

您可以对任何数据来源应用相同的步骤。关联允许您在可视化中创建链接，以根据所选数据运行动态查询。在此示例中，我们使用查询返回的数据来构建新查询，以使用相同的数据来源生成不同的可视化效果。但您可以在任何数据来源之间创建关联，以创建自定义探索流程。

### 创建日志到表的关联
<a name="v10-explore-corr-logs-to-table"></a>

在此示例中，您将创建关联，以演示如何使用转换从日志行和另一个字段中提取值。

要遵循此示例，请确保已设置[测试数据来源](testdata-data-source.md)。

**创建日志到表的关联**

1. 在 Grafana 中，导航到 **Explore**。

1. 从页面左上角的下拉菜单中，选择**测试数据来源**。

1. 在右侧的下拉菜单中选择 **\$1 添加**，然后选择**添加关联**。

1. Explore 现在处于关联编辑器模式，由蓝色边框指示。

1. 在**场景**菜单中，选择**日志**。

1. 展开日志行以查看关联链接。选择 `Correlate with hostname`。

1. Explore 将在拆分视图中打开。选择您在左侧窗格中选择的同一数据来源。查询编辑器上方的帮助程序包含可用于目标查询的所有可用变量。

1. 展开转换部分，然后单击**添加转换**。

1. 在**字段**下拉菜单中，选择**消息**。日志行显示为示例数据。

1. 在**类型**下，选择 **Logfmt**。这将填充变量列表。

1. 选择**向关联添加转换**。

1. 再次选择**添加转换**，然后在**字段**下选择**主机名**。

1. 在**类型**下，选择**正则表达式**。

1. 在**表达式**下，输入以下内容：`-([0-9]\*)`。这将选择破折号右侧的任何数字。

1. 在**变量名称**下，输入以下内容：`hostNumber`。这将填充变量列表。

1. 选择**向关联添加变换**，将其添加到其他变量中。

1. 在数据来源编辑器中，打开**场景**下拉菜单，然后选择 **CSV 内容**。

1. 在下面的文本框中，提供以下内容并保存关联：

   ```
   time,msg,hostNumber,status
   ${time},${msg},${hostNumber},${status}
   ```

   这将关闭拆分视图并重新运行左侧查询。展开任何日志行以查看关联按钮。选择关联按钮将打开拆分视图，其中包含`time`（a 字段）、`msg`（使用 *logfmt* 从日志行中提取）、`host number`（使用*正则表达式*从 `hostname` 中提取）和 `status`（使用 *logfmt* 从日志行中提取）。

# Explore 中的检查器
<a name="v10-explore-inspector"></a>

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

检查器有助于您了解查询并进行问题排查。您可以检查原始数据，将该数据导出到逗号分隔值（CSV）文件，以 TXT 格式导出日志结果，并查看查询请求。

## 检查器 UI
<a name="v10-explore-inspector-ui"></a>

检查器包含以下选项卡：
+ **统计选项卡**：显示查询花费的时间和返回的数量。
+ **查询选项卡**：显示 Grafana 查询数据来源时向服务器发送的请求。
+ **JSON 选项卡**：允许查看和复制数据 JSON 和数据帧结构 JSON。
+ **数据选项卡**：显示查询返回的原始数据。
+ **错误选项卡**：显示错误。仅在查询返回错误时可见。

## 检查器任务
<a name="v10-explore-inspector-tasks"></a>

您可以在 Explore 检查器中执行各种任务。

**打开检查器**

运行要检查的查询后，选择**检查器**按钮。

检查器面板在屏幕底部打开。

**检查原始查询结果**

您可以在表中查看原始查询结果，即查询返回的数据。

在**检查器**选项卡中，单击**数据**选项卡。

对于多个查询或多个节点的查询，还提供了其他选项。
+ **显示数据帧**：选择要查看的结果集数据。
+ **按时间连接的序列**：一次查看所有查询的原始数据，每列一个结果集。您可以单击列标题对数据进行排序。

**以 CSV 格式下载原始查询结果**

Grafana 会在默认浏览器下载位置生成一个 CSV 文件。您可以在所选的查看器中打开该文件。

1. 在**检查器**选项卡中，按照上述说明获取原始查询结果。

1. 优化查询设置，直到可以看到要导出的原始数据。

1. 选择**下载 CSV**。

要下载专门针对 Excel 格式化的 CSV 文件，请展开**数据选项**，打开**下载 Excel** 开关，然后再选择**下载 CSV **选项。

**以 TXT 格式下载日志结果**

在**检查器**选项卡中选择**下载日志**，生成当前正在查看的日志的 TXT 文件。

**下载跟踪结果**

根据数据来源类型，Grafana 可以采用其中一种支持格式对跟踪结果生成 JSON 文件：Jaeger、Zipkin 或 OTLP 格式。

1. 打开检查器。

1. 检查日志查询结果。优化结果，直到看到要导出的原始日志。

1. 选择**下载日志**。

**检查查询性能**

**统计**选项卡显示统计数据，告诉您查询需要多长时间、发送的查询数量以及返回的行数。此信息有助于您对查询进行问题排查，尤其是在任何数字意外偏高或偏低时。

统计数据以只读格式显示。

**查看 JSON 模型**

您可以浏览和导出数据以及数据帧 JSON 模型。

**查看 JSON 模型**

1. 在检查器面板中，单击 **JSON** 选项卡。

1. 在**选择来源**下拉列表中，选择以下选项之一：
   + **数据**：显示一个 JSON 对象，该对象表示返回到 Explore 的数据。
   + **DataFrame 结构**-显示原始结果集。

1. 您可以展开或折叠 JSON 的某些部分以查看不同的部分。您也可以选择**复制到剪贴板**选项，来复制 JSON 正文并将其粘贴到其他应用程序中。

**查看对数据来源的原始请求和响应**

在使用 Explore 和检查器选项卡时，您可以查看通过查询生成的原始请求和响应数据。在检查器中，选择**查询**选项卡，然后选择**刷新**以查看原始数据。

Grafana 将查询发送到服务器并显示结果。您可以向下钻取查询的特定部分，展开或折叠所有部分，或者将数据复制到剪贴板以在其他应用程序中使用。

# Grafana 10 版本中的关联
<a name="v10-correlations"></a>

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

通过设置“关联”，您可以为 Explore 可视化创建交互式链接，以运行与显示的数据相关的查询。

相关性定义了如何使用一个数据来源中的数据来查询另一个数据来源中的数据。一些示例：
+ 可通过日志数据来源中返回的应用程序名称查询指标数据来源与应用程序相关的指标。
+ 可通过 SQL 数据来源返回的用户名查询日志数据来源中与特定用户相关的日志。

Explore 采用用户定义的关联来显示可视化中的链接。您可以单击链接来运行相关查询，并在 Explore 拆分视图中查看结果。

Explore 当前支持基于关联显示链接的可视化：
+ [日志](v10-panels-logs.md)
+ [表](v10-panels-table.md)

您可以使用 Grafana 中的**“管理”>“插件和数据”>“关联”**页面或直接在 [Explore](v10-explore-correlations.md) 中配置关联。

**Topics**
+ [关联配置](v10-correlations-config.md)
+ [创建新的关联](v10-correlations-create.md)

# 关联配置
<a name="v10-correlations-config"></a>

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

 每个关联都配置了以下选项：

**标签**  
可视化显示的链接标签。

**描述**  
可选描述。

**源数据来源**  
显示链接的结果来源。

**结果字段**  
定义链接在可视化中的显示位置。

**目标查询**  
单击链接时运行目标查询。

**转换**  
对传递给目标查询的源数据执行的可选操作。

有关创建关联的详细信息，请参阅[创建关联](v10-correlations-create.md)。

## 源数据来源和结果字段
<a name="v10-correlations-config-source-and-result"></a>

链接显示在 Explore 可视化中，用于查看关联源数据来源的结果。为关联配置提供的结果中的某个字段（结果字段）分配链接。每种可视化都以不同的方式显示带有链接的字段。

## 目标查询
<a name="v10-correlations-config-target-query"></a>

在可视化中单击某个链接时，将运行目标查询。您可以使用所选目标数据来源的查询编辑器来指定目标查询。可在包含变量的目标查询中访问源数据结果。

### 关联变量
<a name="v10-correlations-config-variables"></a>

您可以在目标查询中使用变量来访问与查询相关的源数据。关联使用 [Grafana 变量语法](v10-dash-variable-syntax.md)。选择链接时，变量将填充源结果中的值。您可以使用两种类型的变量：
+ [字段变量](v10-panels-configure-data-links.md#v10-panels-data-link-variables)（访问字段值和标签）。
+ 关联变量（访问字段值和转换）。

示例：如果源结果包含一个名为 `employee` 的字段，则可以通过以下方式访问该字段的值：
+ 字段变量 `${__data.fields.employee}`。
+ 一个关联变量，可将上面的字段值映射到 `${employee}`。

除了将字段值映射到较短的变量名之外，还可以对现有字段应用转换来创建更多的关联变量。

仅当所有变量在选定的数据行中都有值时，关联才会创建数据链接。[全局变量](v10-dash-variable-add.md#v10-dash-variable-add-global)是该规则的例外，不需要从返回的数据中填充。这些变量由数据来源自动插值。

### 关联转换
<a name="v10-correlations-config-transformations"></a>

转换提供了一种从字段值中提取更多变量的方法。转换的输出是一组新变量，可以像任何其他变量一样访问。

有两种类型的转换：logfmt 和正则表达式。

每种转换都使用选定的字段值作为输入。转换的输出是一组基于转换类型和选项的新变量。

### Logfmt 转换
<a name="v10-correlations-config-logfmt-transformation"></a>

logfmt 转换解构一个字段值，其中包含使用 [logfmt 键/值对](https://brandur.org/logfmt)格式化的文本。每对成为一个变量，键是变量的名称。

如果您希望将转换应用于与结果字段不同的字段，则 logfmt 转换仅需要指定输入字段名称。`field = "host=srv001 endpoint=/test app=foo"` 示例输出变量：


| name | 值 | 
| --- | --- | 
| host | srv001 | 
| 端点 | /test | 
| 应用程序 | foo | 

### 正则表达式转换
<a name="v10-correlations-config-regular-expression-transformation"></a>

正则表达式转换基于提供的正则表达式解构字段值。

正则表达式转换选项：

**field**  
输入字段名称

**expression**  
正则表达式。命名捕获组将映射到与组名称匹配的变量。如果使用未命名的匹配组，则会根据第一个匹配项创建变量。该值将覆盖与输入字段匹配的变量，或者如果提供了 mapValue，则会创建一个新变量（参见下表中的示例）。

**mapValue**  
与未命名匹配组的简单正则表达式组一起使用。默认情况下，第一个匹配项会用作为输入的字段名称覆盖变量。要更改默认行为，您可以指定 mapValue 属性。提供的名称用于创建新变量。如果您的目标查询既需要精确值，又需要通过转换提取的部分值，那么这将非常有用。

示例：假设所选字段名称为 `employee`，字段值为 `John Doe`。

基于表达式和 mapValue 选项的各种输出变量：


| expression | mapValue | 输出变量 | comment | 
| --- | --- | --- | --- | 
| /\$1w\$1 (\$1w\$1)/ | - | employee=Doe | 未提供 mapValue。第一个匹配项映射到现有的字段名变量（employee）。 | 
| /(\$1w\$1) (\$1w\$1)/ | name | name=John | 第一个匹配项映射到名为 name 的新变量。 | 
| /(?\$1w\$1) (?\$1w\$1)/ | - | firstName=John, lastName=Doe | 使用命名组时，它们是输出变量的名称，而 mapValue 会被忽略。 | 
| /(?\$1w\$1) (?\$1w\$1)/ | name | firstName=John, lastName=Doe | 同上 | 

# 创建新的关联
<a name="v10-correlations-create"></a>

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

您可以在 Explore 关联编辑器中创建关联，或使用 Amazon Managed Grafana 工作区中的 Grafana **管理**页面创建关联。

**先决条件**

您必须拥有添加新关联的权限。只有对数据来源具有写入权限的用户才能定义新的关联。

## 在 Explore 关联编辑器中创建关联
<a name="v10-correlations-create-explore"></a>

您可以在 Explore 关联编辑器中创建关联。有关更多详细信息，请参阅[创建关联](v10-explore-correlations.md#v10-explore-corr-create-a-correlation)。

## 在“管理”页面中创建关联
<a name="v10-correlations-create-administration"></a>

您可以使用 Grafana 控制台**管理**页面创建关联。

**在“管理”页面中创建关联**

1. 转到 Grafana 的**管理**部分。

1. 在**插件和数据**下，打开**关联**页面。

1. 选择右上角的**添加**按钮。

1. 为关联提供**标签**。

1. （可选）提供**描述**。

1. 转到下一页。

1. 提供**目标数据来源**。

1. 使用变量提供**目标查询**。

1. 转到下一页。

1. 提供**源数据来源**。

1. 提供**结果字段**。

1. 如果您需要的变量不是源数据来源中的字段，请添加转换。

1. 选择**添加**以添加新的转换。

1. 选择转换的类型。

1. 根据选定的类型配置转换。

1. 保存关联。

您可以用同样的方式编辑关联，但在编辑时，不能更改选定的数据来源。

# Grafana 10 版本中的警报
<a name="v10-alerts"></a>

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

在 Grafana v10 中，Amazon Managed Grafana 允许访问更新的警报系统 *Grafana Alerting*，该系统将警报信息集中在一个可搜索的视图中。Grafana 警报在 Grafana v8 中作为一项可选功能引入， GrafanaLabs 并宣布在版本 11 中删除旧版警报。

**注意**  
本文档介绍了 Grafana Alerting。有关旧版警报的信息，请参阅 [经典控制面板警报](old-alerts-overview.md)。

通过 Grafana Alerting，您可以在系统出现问题后立即了解情况。

监控传入的指标数据或日志条目，设置警报系统来监视特定事件或情况，然后在发现这些情况时发送通知。

这样，您就不再需要人工监控，还可以为系统中断或可能演变成重大事故的变更提供了第一道防线。

借助 Grafana Alerting，您可以从多个数据来源创建查询和表达式，无论数据存储在何处，都能够以新颖和独特的方式灵活组合数据，并针对指标和日志发出警报。然后，您可以从单一的整合视图中创建、管理和处理警报，从而提高团队快速发现和解决问题的能力。

通过 Mimir 和 Loki 警报规则，您可以更好地监控数据，并大规模警运行警报表达式，所有这些都由您所熟悉的 Grafana UI 管理。

**注意**  
如果您是从早期版本的 Grafana 迁移过来，在早期版本中使用的是旧版 Grafana Alerting，那么了解[旧版警报系统和新版 Grafana Alerting 之间的区别](v10-alerting-use-grafana-alerts.md#v10-alerting-diff-old-new)可能会有所帮助。

## 主要功能和优势
<a name="v10-alerting-key-features"></a>

**单页显示所有警报**

单个 Grafana Alerting 页面将 Grafana 管理的警报和驻留在兼容 Prometheus 的数据来源中的警报整合到一个位置。

**多维警报**

警报规则可为每个警报规则创建多个单独的警报实例（称为多维警报），让您只需一个警报规则，就能获得对整个系统的可见性。为此，您可以在查询中添加标签以指定正在监控哪个组件，并为单个警报规则生成多个警报实例。例如，如果要监控集群中的每台服务器，则多维警报将针对每个 CPU 发出警报，而标准警报将针对整个服务器发出警报。

**路由警报**

根据您定义的标签，将每个警报实例路由到特定的联系点。通知策略是一组规则，规定了在何处、何时以及如何将警报分组并路由到联系点。

**静默警报**

静默会阻止创建通知，且只能在指定的时间段内持续。您可以通过静默停止接收来自一个或多个警报规则的持续通知。您也可以根据特定标准部分暂停警报。静默有自己的专用部分，以便更好地整理和查看，让您可以扫描暂停的警报规则，而不会使主警报视图混乱。

**静音定时**

静音定时是一个重复的时间间隔，在此期间，不会针对某个策略生成或发送新的通知。使用静音定时可防止警报在特定的重复时间段（如定期维护时间段）内触发。

与静默类似，静音定时不会阻止对警报规则进行评估，也不会阻止警报实例显示在用户界面中。只会阻止创建通知。

## 设计警报系统
<a name="v10-alerting-design"></a>

监控复杂的 IT 系统并了解一切是否正常运行是一项艰巨的任务。因此，建立一个有效的警报管理系统至关重要，在出现问题时发出通知，以免对业务成果造成影响。

设计和配置有效的警报管理设置需要时间。

以下是有关如何为您的企业创建有效的警报管理设置的一些提示：

**您想要监控和发出警报的业务关键指标有哪些？**
+ 查找需要了解的重要事件，避免过于琐碎或频繁，以至于收件人忽略这些事件。
+ 仅为需要立即关注或干预的重大事件创建警报。
+ 考虑质量而不是数量。

**您想使用哪种类型的警报？**
+ 选择 Grafana 管理的警报或 Grafana Mimir 或 Loki 管理的警报或二者。

**您想如何整理警报和通知？**
+ 选择性地设置接收警报的对象。考虑将其发送给随时待命的人员或特定的 Slack 频道。
+ 使用 Alerting API 或警报即代码（Terraform）尽可能自动化。

**如何减少警觉疲劳？**
+ 使用静默、静音定时或暂停警报规则评估，避免发出不必要的噪音警报。
+ 不断调整警报规则，查看有效性。删除警报规则，避免警报重复或无效。
+ 仔细考虑优先级和严重性级别。
+ 持续查看阈值和评估规则。

## Grafana Alerting 限制
<a name="v10-alerting-limitations"></a>
+ 聚合来自其他系统的规则时，Grafana Alerting 系统可以从所有可用的 Amazon Managed Service for Prometheus、Prometheus、Loki 和 Alertmanager 数据来源中检索规则。但可能无法从其他受支持的数据来源获取规则。

**Topics**
+ [主要功能和优势](#v10-alerting-key-features)
+ [设计警报系统](#v10-alerting-design)
+ [Grafana Alerting 限制](#v10-alerting-limitations)
+ [概述](v10-alerting-overview.md)
+ [设置警报](v10-alerting-setup.md)
+ [配置警报](v10-alerting-configure.md)
+ [管理警报](v10-alerting-manage.md)

# 概述
<a name="v10-alerting-overview"></a>

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

无论您是刚开始使用 Grafana Alerting，还是经验丰富的用户，都可以了解有助于您创建、管理和响应警报的基础知识和可用功能；以及如何提高团队快速解决问题的能力。

## Principles
<a name="v10-alerting-overview-principles"></a>

在基于 Prometheus 的警报系统中，警报生成器负责创建警报，警报接收器负责接收警报。例如，Prometheus 是一个警报生成器，负责评估警报规则，而 Alertmanager 是一个警报接收器，负责分组、抑制、静默和发送有关触发和已解决警报的通知。

Grafana Alerting 基于 Prometheus 警报系统的设计模型而构建。该系统有一个内部警报生成器，负责调度和评估警报规则，以及一个内部警报接收器，负责分组、抑制、静默和发送通知。Grafana 并不使用 Prometheus 作为其警报生成器，因为除了 Prometheus 之外，Grafana Alerting 还需要处理许多其他数据来源。而是使用 Alertmanager 作为其警报接收器。

警报被发送到警报接收器，在那里进行路由、分组、抑制、静默和通知。在 Grafana Alerting 中，默认的警报接收器是嵌入在 Grafana 中的 Alertmanager，称为 Grafana Alertmanager。但您也可以使用其他 Alertmanager，这些被称为[外部 Alertmanager](v10-alerting-setup-alertmanager.md)。

## 基础知识
<a name="v10-alerting-overview-fundamentals"></a>

以下内容概述了 Grafana Alerting 的不同组成部分。

### 警报规则
<a name="v10-alerting-overview-alert-rules"></a>

警报规则是一组确定何时触发警报的标准。由一个或多个查询和表达式、需要满足的条件、确定评估警报规则频率的间隔以及必须满足条件才能触发警报的持续时间组成。

警报规则在其间隔内进行评估，每个警报规则一次可以触发零个、一个或任意数量的警报。警报规则的状态取决于其最 `severe` 的警报，可以是“正常”、“待处理”或“触发”。例如，如果警报规则中至少有一个警报触发，则该警报规则也会触发。警报规则的运行状况取决于其最新评估的状态。这些可以是 OK、Error 和 NoData。

警报规则的一个非常重要的特征是其支持自定义注释和标签。这样，您可以为警报添加摘要和描述等附加元数据，并添加附加标签，以便将警报路由到特定的通知策略。

### 警报
<a name="v10-alerting-overview-alerts"></a>

警报由一组名为 “标签” 的 key/value 配对进行唯一标识。每个键都是一个标签名称，每个值都是一个标签值。例如，一个警报具有标签 `foo=bar`，而另一个警报具有标签 `foo=baz`。一个警报可以有多个标签（例如 `foo=bar,bar=baz`），但不能有两个相同的标签（例如 `foo=bar,foo=baz`）。两个警报的标签也不能相同，如果两个警报的标签相同（例如 `foo=bar,bar=baz` 和 `foo=bar,bar=baz`），那么其中一个警报将被丢弃。当不再满足警报规则中的条件或删除警报规则时，警报即得到解决。

在 Grafana 管理的警报中，警报可以处于“正常”、“待处理”、“警报”、“无数据”或“错误”状态。在数据源托管警报（例如 Mimir 和 Loki）中，警报可以处于 “正常”、“待处理” 和 “警报” 状态，但不能 NoData 处于 “错误” 状态。

### 联系点
<a name="v10-alerting-overview-contact-points"></a>

联系点决定了通知的发送位置。例如，你可能有一个联系人，负责向电子邮件地址、Slack、事件管理系统 (IRM)（例如 Grafana OnCall 或 Pagerduty）或 webhook 发送通知。

您可以使用通知模板自定义从联系点发送的通知。还可以使用通知模板来更改通知的标题、消息和结构。通知模板并不特定于单个集成或联系点。

### 通知策略
<a name="v10-alerting-overview-notification-policies"></a>

通知策略将警报分组，然后路由到联系点。这些策略决定了何时发送通知，以及重复发送通知的频率。

使用标签匹配程序将警报与通知策略匹配。这些是人类可读的表达式，用于断言警报的标签是否完全匹配、不完全匹配、包含或不包含某些预期文本。例如，匹配程序 `foo=bar` 匹配带有标签 `foo=bar` 的警报，而匹配程序 `foo=~[a-zA-Z]+` 则匹配带有任何名为 foo 的标签，且其值匹配正则表达式 `[a-zA-Z]+` 的警报。

默认情况下，一个警报只能匹配一个通知策略。但是，使用 `continue` 功能，警报可以同时匹配任意数量的通知策略。有关通知策略的更多信息，请参阅[通知策略](v10-alerting-explore-notifications-policies-details.md)。

### 静默和静音定时
<a name="v10-alerting-overview-silences-and-mute-timings"></a>

您可以通过静默和静音定时暂停特定警报，甚至暂停整个通知策略。使用静默可临时暂停通知，例如在修复警报时；使用静音定时可定期暂停通知，例如在定期维护窗口期间。

**Topics**
+ [Principles](#v10-alerting-overview-principles)
+ [基础知识](#v10-alerting-overview-fundamentals)
+ [数据来源和 Grafana Alerting](v10-alerting-overview-datasources.md)
+ [基于数值数据的警报](v10-alerting-overview-numeric.md)
+ [标签和注释](v10-alerting-overview-labels.md)
+ [关于警报规则](v10-alerting-explore-rules.md)
+ [Alertmanager](v10-alerting-explore-alertmanager.md)
+ [联系点](v10-alerting-explore-contacts.md)
+ [通知](v10-alerting-explore-notifications.md)
+ [警报高可用性](v10-alerting-explore-high-availability.md)

# 数据来源和 Grafana Alerting
<a name="v10-alerting-overview-datasources"></a>

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

有许多数据来源与 Grafana Alerting 兼容。每个数据来源都由一个插件支持。Grafana Alerting 要求数据来源插件是*后端*插件，以便使用数据来源评估规则，因为评估引擎在后端运行。插件还必须指定其与 Grafana Alerting 兼容。

数据来源随着时间的推移而添加和更新。已知以下数据来源与 Grafana Alerting 兼容。
+ [Connect 连接到亚马逊 CloudWatch 数据源](using-amazon-cloudwatch-in-AMG.md)
+ [连接到 Azure Monitor 数据来源](using-azure-monitor-in-AMG.md)
+ [Connect 连接到亚马逊 OpenSearch 服务数据源](using-Amazon-OpenSearch-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)
+ [连接到 Amazon Managed Service for Prometheus 和开源 Prometheus 数据来源](prometheus-data-source.md)
+ [连接到 Jaeger 数据来源](jaeger-data-source.md)
+ [连接到 Zipkin 数据来源](zipkin-data-source.md)
+ [连接到 Tempo 数据来源](tempo-data-source.md)
+ [配置用于测试 TestData 的数据源](testdata-data-source.md)

有关 Amazon Managed Grafana 中数据来源和数据来源插件的更多详细信息，请参阅 [连接到数据来源](AMG-data-sources.md)。

# 基于数值数据的警报
<a name="v10-alerting-overview-numeric"></a>

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

本主题将介绍 Grafana 如何处理数值数据而非时间序列数据的警报。

在某些数据来源中，非时间序列的数值数据可以直接发出警报，或传递到服务器端表达式（SSE）。这样可以在数据来源中进行更多处理，从而提高效率，还可以简化警报规则。当基于数值数据（而不是时间序列数据）生成警报时，不需要将每个带标签的时间序列缩减为一个单一数字。相反，带标签的数字会返回给 Grafana。

## 表格数据
<a name="v10-alerting-numeric-tabular"></a>

查询表格数据的后端数据来源支持此功能：
+ SQL 数据来源，比如 MySQL、Postgres、MSSQL 和 Oracle。
+ 基于 Azure Kusto 的服务：Azure Monitor（日志）、Azure Monitor（Azure Resource Graph）和 Azure Data Explorer。

如果满足以下条件，则使用 Grafana 管理的警报或 SSE 的查询在这些数据来源中会被视为数值查询：
+ 在数据来源查询中，“格式为”选项设置为“表”。
+ 从查询返回给 Grafana 的表响应仅包含一个数值（例如 int、double、float）列和可选的附加字符串列。

如果存在字符串列，这些列将成为标签。列的名称将成为标签名称，每行的值将成为相应标签的值。如果返回多行，则每行都应通过其标签进行唯一标识。

## 示例
<a name="v10-alerting-numeric-tabexample"></a>

对于名为 “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="v10-alerting-overview-labels"></a>

****  
本文档主题专为支持 **Grafana 10.x 版本**的 Grafana 工作区而设计。  
对于支持 Grafana 9.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 9](using-grafana-v9.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 使用率（有关如何执行此操作，请参阅 [模板化标签和注释](v10-alerting-overview-labels-templating.md) 上的文档）。这种描述更适合作为注释。

## 标签
<a name="v10-alerting-overview-labels-labels"></a>

标签包含用于识别警报的信息。标签的示例为 `server=server1`。每个警报可以有多个标签，警报的完整标签集称为其标签集。正是这个标签集可以识别警报。

例如，一个警报具有标签集 `{alertname="High CPU usage",server="server1"}`，而另一个警报具有标签集 `{alertname="High CPU usage",server="server2"}`。这是两个独立的警报，因为尽管它们的 `alertname` 标签相同，但 `server` 标签却不同。

警报的标签集是数据来源中的标签、警报规则中的自定义标签和许多保留标签（比如 `alertname`）的组合。

**自定义标签**

自定义标签是警报规则中的附加标签。与注释一样，自定义标签必须有一个名称，其值可包含文本和模板代码的组合，在警报触发时进行评估。有关如何模板化自定义标签的文档，请在[此处](v10-alerting-overview-labels-templating.md)查找。

在模板中使用自定义标签时，请务必确保标签值在警报规则的连续评估之间不会发生变化，因为这最终会创建大量不同的警报。但是，模板可以为不同的警报生成不同的标签值。例如，不要将查询的值放在自定义标签中，因为这最终会在每次值更改时创建一组新的警报。改为使用注释。

此外，请务必确保警报的标签集没有两个或多个同名标签。如果自定义标签与数据来源中的标签同名，则会替换该标签。但如果自定义标签与保留标签同名，则该自定义标签将从警报中省略。

## Annotations
<a name="v10-alerting-overview-labels-annotations"></a>

注释是为现有警报添加其他信息的命名对。Grafana 中有许多建议的注释，例如 `description`、`summary`、`runbook_url`、`dashboardUId` 和 `panelId`。与自定义标签一样，注释必须有一个名称，其值可包含文本和模板代码的组合，在警报触发时进行评估。如果注释包含模板代码，则在触发警报时会对模板进行一次评估。即使警报已解决，也不会重新评估。有关如何模板化注释的文档，请在[此处](v10-alerting-overview-labels-templating.md)查找。

**Topics**
+ [标签](#v10-alerting-overview-labels-labels)
+ [Annotations](#v10-alerting-overview-labels-annotations)
+ [标签匹配的工作原理](v10-alerting-overview-labels-matching.md)
+ [Grafana Alerting 中的标签](v10-alerting-overview-labels-alerting.md)
+ [模板化标签和注释](v10-alerting-overview-labels-templating.md)

# 标签匹配的工作原理
<a name="v10-alerting-overview-labels-matching"></a>

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

使用标签和标签匹配程序将警报规则与通知策略和静默相关联。这提供了一种非常灵活的方式来管理您的警报实例，指定由哪个策略处理这些实例，以及哪些警报需要静默。

标签匹配程序由 3 个不同的部分组成：**标签**、**值**和**运算符**。
+ **标签**字段是要匹配的标签名称。必须与标签名称完全匹配。
+ **值**字段与指定**标签**名称的相应值匹配。匹配方式取决于**运算符**值。
+ **运算符**字段是与标签值匹配的运算符。可用的运算符有：


| 运算符 | 说明 | 
| --- | --- | 
| `=` | 选择与该值完全相等的标签。 | 
| `!=` | 选择与该值不相等的标签。 | 
| `=~` | 选择与该值正则表达式匹配的标签。 | 
| `!~` | 选择不与该值正则表达式匹配的标签。 | 

如果您使用多个标签匹配程序，则使用 AND 逻辑运算符将其组合在一起。这意味着所有匹配程序都必须匹配，才能将规关联到策略。

## 示例
<a name="v10-alerting-overview-labels-matching-ex"></a>

如果为警报定义了一组标签：

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

那么：
+ 定义为 `foo=bar` 的标签匹配程序与此警报规则匹配。
+ 定义为 `foo!=bar` 的标签匹配程序*不*与此警报规则匹配。
+ 定义为 `id=~[0-9]+` 的标签匹配程序与此警报规则匹配。
+ 定义为 `baz!~[0-9]+` 的标签匹配程序与此警报规则匹配。
+ 定义为 `foo=bar` 和 `id=~[0-9]+` 的两个标签匹配程序与此警报规则匹配。

## 排除标签
<a name="v10-alerting-overview-labels-matching-exclude"></a>

您也可以编写标签匹配程序来排除标签。

下面是一个示例，显示了如何排除标签 `team`。您可以选择其中任何一个值来排除标签。
+ `team=""`
+ `team!~.+`
+ `team=~^$`

# Grafana Alerting 中的标签
<a name="v10-alerting-overview-labels-alerting"></a>

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

本主题解释了为什么标签是警报的基本组成部分。
+ 警报的完整标签集是 Grafana 警报中唯一标识警报的部分。
+ Alertmanager 使用标签将警报与通知策略中的静默和警报组进行匹配。
+ 警报 UI 显示评估该规则期间生成的每个警报实例的标签。
+ 联系点可以访问标签，以动态生成通知，其中包含与生成通知的警报相关的特定信息。
+ 可将标签添加到[警报规则](v10-alerting-configure.md)。标签可手动配置，使用模板函数，并可以引用其他标签。如果标签之间发生冲突，则添加到警报规则的标签优先（Grafana 保留标签除外，更多信息见下文）。

## 外部 Alertmanager 兼容性
<a name="v10-alerting-overview-labels-alerting-external"></a>

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 保留标签
<a name="v10-alerting-overview-labels-alerting-reserved"></a>

**注意**  
Grafana 保留带有前缀 `grafana_` 的标签，用于特殊用途。如果添加以 `grafana_` 开头的手动配置标签，在发生冲突的情况下，该标签将被覆盖。

Grafana 保留标签的使用方式与手动配置的标签相同。当前可用的保留标签列表：


| 标签 | 说明 | 
| --- | --- | 
| grafana\$1folder | 包含警报的文件夹标题。 | 

# 模板化标签和注释
<a name="v10-alerting-overview-labels-templating"></a>

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

您可以使用模板在标签和标注中包含来自查询和表达式的数据。例如，您可能希望根据查询的值设置警报的严重性标签，或者在摘要注释中使用查询的实例标签，以便了解哪台服务器的 CPU 使用率较高。

所有模板都应以 [text/template](https://pkg.go.dev/text/template) 编写。无论您是模板化标签还是注释，都应将每个模板内联写入要模板化的标签或注释中。这意味着您不能在标签和注释之间共享模板，而是需要将模板复制到任何要使用它们的位置。

每当评估警报规则时，都会评估每个模板，并针对每个警报单独评估每个模板。例如，如果您的警报规则具有模板化摘要注释，而警报规则有 10 个触发警报，则模板将执行 10 次，每个警报一次。应尽量避免在模板中进行开销较大的计算。

## 示例
<a name="v10-alerting-overview-labels-templating-examples"></a>

与其写完整的教程，不text/template, the following examples attempt to show the most common use-cases we have seen for templates. You can use these examples verbatim, or adapt them as necessary for your use case. For more information about how to write text/template如参阅[文本/模板文档](https://pkg.go.dev/text/template)。

**打印所有标签（以逗号分隔）**

要打印所有标签（以逗号分隔），请打印 `$labels` 变量：

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

例如，给定一个带有标签 `alertname=High CPU usage`、`grafana_folder=CPU alerts` 和 `instance=server1` 的警报，将会打印：

```
alertname=High CPU usage, grafana_folder=CPU alerts, instance=server1
```

**注意**  
如果您使用的是经典条件，则 `$labels` 不会包含查询中的任何标签。有关更多信息，请参阅 [\$1labels 变量](#v10-alerting-overview-labels-templating-the-labels-variable)。

**打印所有标签（每行一个）**

要打印所有标签（每行一个），请使用遍历每 key/value 对标签并单独打印。`range`这里 `$k` 是指名称，`$v` 时值当前标签的值：

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

例如，给定一个带有标签 `alertname=High CPU usage`、`grafana_folder=CPU alerts` 和 `instance=server1` 的警报，将会打印：

```
alertname=High CPU usage
grafana_folder=CPU alerts
instance=server1
```

**注意**  
如果您使用的是经典条件，则 `$labels` 不会包含查询中的任何标签。有关更多信息，请参阅 [\$1labels 变量](#v10-alerting-overview-labels-templating-the-labels-variable)。

**打印单个标签**

要打印单个标签，请使用带有 `$labels` 变量的 `index` 函数：

```
The host {{ index $labels "instance" }} has exceeded 80% CPU usage for the last 5 minutes
```

例如，给定一个带有标签 `instance=server1` 的警报，将会打印：

```
The host server1 has exceeded 80% CPU usage for the last 5 minutes
```

**注意**  
如果您使用的是经典条件，则 `$labels` 不会包含查询中的任何标签。有关更多信息，请参阅 [\$1labels 变量](#v10-alerting-overview-labels-templating-the-labels-variable)。

**打印查询的值**

要打印即时查询的值，可使用 `index` 函数和 `$values` 变量打印其 Ref ID：

```
{{ index $values "A" }}
```

例如，给定一个返回值为 81.2345 的即时查询，将会打印：

```
81.2345
```

要打印范围查询的值，必须先使用 reduce 表达式将其从时间序列简化为即时向量。然后，您可以改用 Ref ID 来打印 reduce 表达式的结果。例如，如果 reduce 表达式取 A 的平均值并具有 Ref ID B，则可以编写：

```
{{ index $values "B" }}
```

**打印查询的 humanize 值**

要打印即时查询的 humanize 值，请使用 `humanize` 函数：

```
{{ humanize (index $values "A").Value }}
```

例如，给定一个返回值为 81.2345 的即时查询，将会打印：

```
81.234
```

要打印范围查询的 humanize 值，必须先使用 reduce 表达式将其从时间序列简化为即时向量。然后，您可以改用 Ref ID 来打印 reduce 表达式的结果。例如，如果 reduce 表达式取 A 的平均值并具有 Ref ID B，则可以编写：

```
{{ humanize (index $values "B").Value }}
```

**以百分比形式打印查询的值**

要以百分比形式打印即时查询的值，请使用 `humanizePercentage` 函数：

```
{{ humanizePercentage (index $values "A").Value }}
```

此函数期望值是介于 0 和 1 之间的十进制数。如果该值是介于 0 和 100 之间的十进制数，则可以在查询中或使用数学表达式将其除以 100。如果查询是范围查询，必须先使用 reduce 表达式将其从时间序列简化为即时向量。

**根据查询的值设置严重性**

要根据查询的值设置严重性标签，请使用 if 语句和 greater than 比较函数。与 text/template 不支持类型强制的 as进行比较`$values`时 `80.0` `50.0``0.0`，请务必使用小数（、、等）。您可以在[此处](https://pkg.go.dev/text/template#hdr-Functions)找到所有支持的比较函数列表。

```
{{ if (gt $values.A.Value 80.0) -}}
high
{{ else if (gt $values.A.Value 50.0) -}}
medium
{{ else -}}
low
{{- end }}
```

**根据经典条件打印所有标签**

如果使用经典条件，则不能使用 `$labels` 根据查询打印标签，而必须使用 `$values`。原因是经典条件会丢弃这些标签以强制执行一维行为（每个警报规则最多一个警报）。如果经典条件未丢弃这些标签，则返回许多时间序列的查询将导致警报在触发和解决之间不断波动，因为每次评估警报规则时标签都会变化。

而 `$values` 变量包含触发条件下所有时间序列的简化值。例如，如果您有一个警报规则，其查询 A 返回两个时间序列，而经典条件 B 具有两个条件，则 `$values` 将包含 `B0`、`B1`、`B2` 和 `B3`。如果经典条件 B 只有一个条件，则 `$values` 只包含 `B0` 和 `B1`。

要打印触发时间序列的所有标签，请使用以下模板（如果正则表达式不同，请确保将正则表达式中的 `B` 替换为经典条件的 Ref ID）：

```
{{ range $k, $v := $values -}}
{{ if (match "B[0-9]+" $k) -}}
{{ $k }}: {{ $v.Labels }}{{ end }}
{{ end }}
```

例如，两个时间序列的经典条件超过单个条件，将会打印：

```
B0: instance=server1
B1: instance=server2
```

如果经典条件有两个或多个条件，而时间序列同时超出多个条件，则每个超出的条件都会重复其标签：

```
B0: instance=server1
B1: instance=server2
B2: instance=server1
B3: instance=server2
```

如果需要打印唯一标签，则应考虑将警报规则从一维更改为多维。您可以将经典条件替换为 reduce 和 math 表达式来做到这一点。

**根据经典条件打印所有值**

要打印经典条件中的所有值，请使用前面的示例并将 `$v.Labels` 替换为 `$v.Value`：

```
{{ range $k, $v := $values -}}
{{ if (match "B[0-9]+" $k) -}}
{{ $k }}: {{ $v.Value }}{{ end }}
{{ end }}
```

例如，两个时间序列的经典条件超过单个条件，将会打印：

```
B0: 81.2345
B1: 84.5678
```

如果经典条件有两个或多个条件，并且一个时间序列同时超过多个条件，则 `$values` 将包含所有条件的值：

```
B0: 81.2345
B1: 92.3456
B2: 84.5678
B3: 95.6789
```

## 变量
<a name="v10-alerting-overview-labels-templating-variables"></a>

在模板化标签和注释时，您可以使用以下变量：

### 标签变量
<a name="v10-alerting-overview-labels-templating-the-labels-variable"></a>

`$labels` 变量包含查询中的所有标签。例如，假设您有一个查询，该查询返回所有服务器的 CPU 使用率；有一个警报规则，当任何服务器在过去 5 分钟内 CPU 使用率超过 80% 时触发。您要在警报中添加摘要注释，提醒您哪台服务器的 CPU 使用率较高。您可以使用 `$labels` 变量，编写一个模板来打印可读的句子，例如：

```
CPU usage for {{ index $labels "instance" }} has exceeded 80% for the last 5 minutes
```

**注意**  
如果您使用的是经典条件，则 `$labels` 不会包含查询中的任何标签。经典条件会丢弃这些标签以强制执行一维行为（每个警报规则最多一个警报）。如果您想在模板中使用查询的标签，请按照前面的*打印经典条件中的所有标签*示例操作。

### 值变量
<a name="v10-alerting-overview-labels-templating-the-value-variable"></a>

`$value` 变量是一个字符串，包含所有即时查询的标签和值；阈值、reduce 和 math 表达式以及警报规则中的经典条件。但不包含范围查询的结果，因为这些查询可以返回 10 到 10000 行或指标。如果是这样，对于特别大的查询，单个警报可能会占用 10 秒 MBs 的内存，而 Grafana 很快就会耗尽内存。

要在摘要中打印 `$value` 变量，可以这样编写：

```
CPU usage for {{ index $labels "instance" }} has exceeded 80% for the last 5 minutes: {{ $value }}
```

内容如下所示：

```
CPU usage for instance1 has exceeded 80% for the last 5 minutes: [ var='A' labels={instance=instance1} value=81.234 ]
```

这里 `var='A'` 指的是 Ref ID A 的即时查询，`labels={instance=instance1}` 指的是标签，`value=81.234` 指的是过去 5 分钟内的平均 CPU 使用率。

如果您只想打印部分字符串而不是完整字符串，请使用 `$values` 变量。其中包含与 `$value` 相同的信息，但采用的是结构化表，使用起来比编写正则表达式来匹配所需的文本要简单得多。

### 值变量
<a name="v10-alerting-overview-labels-templating-the-values-variable"></a>

该`$values`变量是一个包含所有即时查询和表达式的标签和浮点值的表，并以其 Ref IDs 为索引。

要打印带有 Ref ID A 的即时查询的值：

```
CPU usage for {{ index $labels "instance" }} has exceeded 80% for the last 5 minutes: {{ index $values "A" }}
```

例如，给定一个带有标签 `instance=server1` 的警报和带有值 `81.2345` 的即时查询，将会打印：

```
CPU usage for instance1 has exceeded 80% for the last 5 minutes: 81.2345
```

如果 Ref ID A 中的查询是范围查询，不是即时查询，则添加一个带有 Ref ID B 的 reduce 表达式，并将 `(index $values "A")` 替换为 `(index $values "B")`：

```
CPU usage for {{ index $labels "instance" }} has exceeded 80% for the last 5 minutes: {{ index $values "B" }}
```

## 函数
<a name="v10-alerting-overview-labels-templating-functions"></a>

在模板化标签和注释时，您可以使用以下函数：

**args**

`args` 函数将对象列表转换为带有 arg0、arg1 等键的映射。这是为了允许将多个参数传递给模板。

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

```
1 2
```

**externalURL**

`externalURL` 函数返回 Grafana 服务器的外部 URL。

```
{{ externalURL }}
```

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

**graphLink**

`graphLink` 函数返回给定表达式和数据来源在 [Grafana 10 中的 Explore](v10-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` 函数返回 Grafana 服务器的路径。

```
{{ pathPrefix }}
```

```
/grafana
```

**tableLink**

`tableLink` 函数返回给定表达式和数据来源在 [Grafana 10 中的 Explore](v10-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="v10-alerting-explore-rules"></a>

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

警报规则是一组评估标准，用于确定警报实例是否会触发。该规则包含一个或多个查询和表达式、一个条件、评估频率以及开始触发需要满足条件的持续时间。

当查询和表达式选择要评估的数据集时，*条件*设置警报必须达到或超过该阈值才能创建警报。

*时间间隔*指定评估警报规则的频率。配置的*持续时间*表示必须满足条件的持续时间。警报规则还可以定义缺少数据时的警报行为。

**Topics**
+ [警报规则类型](v10-alerting-explore-rules-types.md)
+ [记录规则](v10-alerting-explore-rule-recording.md)
+ [查询和条件](v10-alerting-explore-rules-queries.md)
+ [警报实例](v10-alerting-rules-instances.md)
+ [命名空间、文件夹和组](v10-alerting-rules-grouping.md)
+ [警报规则评估](v10-alerting-rules-evaluation.md)
+ [警报规则的状态和运行状况](v10-alerting-explore-state.md)
+ [通知模板化](v10-alerting-rules-notification-templates.md)

# 警报规则类型
<a name="v10-alerting-explore-rules-types"></a>

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

Grafana 支持多种警报规则类型。了解每种警报规则类型及其工作原理，并确定哪种类型最适合您的用例。

## Grafana 管理的警报
<a name="v10-alerting-explore-rule-types-grafana"></a>

Grafana 管理的规则是最灵活的警报规则类型。通过这些规则，您可以创建警报，而这些警报可以作用于任何现有数据来源中的数据。

除了支持多个数据来源，您还可以添加[表达式](v10-panels-query-xform-expressions.md)来转换数据和表示警报条件。

在 Grafana 管理的警报中：
+ 警报规则是在 Grafana 中根据一个或多个数据来源创建的。
+ 警报规则由 Grafana 中的警报规则评估引擎评估。
+ 警报使用内部 Grafana Alertmanager 发送。

**注意**  
您也可以将警报配置为使用外部 Alertmanager 发送，或者同时使用内部和外部 Alertmanager。有关更多信息，请参阅[添加外部 Alertmanager](v10-alerting-setup-alertmanager.md)。

## 数据来源管理的警报
<a name="v10-alerting-explore-rule-types-datasource"></a>

要创建数据来源管理的警报规则，您必须拥有兼容的 Prometheus 或 Loki 数据来源。您可以通过测试数据来源并观察是否支持 Ruler API 来检查您的数据来源是否支持通过 Grafana 创建规则。

在数据来源管理的警报中：
+ 警报规则在数据来源中创建和存储。
+ 警报规则只能基于 Prometheus 数据创建。
+ 警报规则评估和发送分布在多个节点上，以实现高可用性和容错性。

## 选择警报规则类型
<a name="v10-alerting-explore-rule-types-choose"></a>

在选择要使用的警报规则类型时，请考虑以下 Grafana 管理的警报规则和数据来源管理的警报规则之间的比较。


| 功能 | Grafana 管理的警报规则 | Loki/Mimir 管理的警报规则 | 
| --- | --- | --- | 
| 根据我们支持的任何数据来源中的数据创建警报规则 | 是 | 否：您只能创建基于 Prometheus 数据的警报规则。数据来源必须启用 Ruler API。  | 
| 混合搭配数据来源 | 是 | 否 | 
| 包括对记录规则的支持 | 否 | 是 | 
| 添加表达式以转换数据并设置警报条件 | 是 | 否 | 
| 在警报通知中使用映像 | 是 | 否 | 
| 扩展 | 更资源密集型，依赖于数据库，可能会出现暂时性错误。只能垂直扩展。 | 将警报规则存储在数据来源中，并允许“无限”扩展。从数据位置生成和发送警报通知。 | 
| 警报规则评估和发送 | 警报规则评估和发送是在 Grafana 中使用外部 Alertmanager 或两者完成的。 | 警报规则评估和警报发送是分布式的，这意味着不存在单点故障。 | 

# 记录规则
<a name="v10-alerting-explore-rule-recording"></a>

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

*记录规则仅适用于兼容的 Prometheus 或 Loki 数据来源。*

记录规则让您可以预先计算经常需要或计算开销较大的表达式，将其结果另存为一组新的时间序列。如果要对聚合数据运行警报，或者如果您的控制面板重复查询计算开销较大的表达式，此功能将非常有用。

查询这个新时间序列的速度更快，特别是对于控制面板而言，因为控制面板每次刷新时都会查询相同的表达式。

阅读有关 Prometheus 中[记录规则](https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/)的更多信息。

# 查询和条件
<a name="v10-alerting-explore-rules-queries"></a>

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

在Grafana中，查询在从支持的数据源获取和转换数据方面起着至关重要的作用，这些数据源包括MySQL和PostgreSQL等数据库、Prometheus、InfluxDB和Graphite等时间序列数据库以及亚马逊、Azure Monitor和谷歌云监控等服务。 OpenSearch CloudWatch

有关支持的数据来源的更多信息，请参阅 [数据来源和 Grafana Alerting](v10-alerting-overview-datasources.md)。

执行查询的过程包括定义数据来源、指定要检索的数据以及应用相关的筛选条件或转换。使用特定于所选数据来源的查询语言或语法来构造这些查询。

在 Alerting 中，定义查询以获取要测量的数据，以及触发警报规则之前需要满足的条件。

警报规则由一个或多个查询和表达式组成，用于选择要测量的数据。

有关查询和表达式的更多信息，请参阅 [查询和转换数据](v10-panels-query-xform.md)。

## 数据来源查询
<a name="v10-alerting-explore-rules-queries-data-source-queries"></a>

Grafana 中的查询可以通过多种方式应用，具体取决于使用的数据来源和查询语言。每个数据来源的查询编辑器都提供了一个自定义的用户界面，可帮助您编写利用其独特功能的查询。

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

一些常见的查询组件类型包括：

**指标或数据字段**：指定要检索的特定指标或数据字段，例如 CPU 使用率、网络流量或传感器读数。

**时间范围**：定义要提取数据的时间范围，例如最近一小时、特定日期或自定义时间范围。

**筛选条件**：应用筛选条件，根据特定标准缩小数据范围，例如按特定标签、主机或应用程序筛选数据。

**聚合**：对数据执行聚合，以计算给定时间段内的平均值、总和或计数等指标。

**分组**：按特定维度或标签对数据分组，以创建聚合视图或细分。

**注意**  
Grafana 不支持使用模板变量的警报查询。有关更多信息，请访问[此处](https://community.grafana.com/t/template-variables-are-not-supported-in-alert-queries-while-setting-up-alert/2514)的 Grafana Labs 论坛。

## 表达式查询
<a name="v10-alerting-explore-rules-queries-expression-queries"></a>

在 Grafana 中，表达式用于对数据来源查询的数据执行计算、转换或聚合。您可以根据数学运算、函数或逻辑表达式创建自定义指标或修改现有指标。

通过利用表达式查询，用户可以执行诸如计算两个值之间的百分比变化、应用对数或三角函数等函数、聚合特定时间范围或维度的数据以及实施条件逻辑来处理不同场景等任务。

在 Alerting 中，您只能对 Grafana 管理的警报规则使用表达式。对于每个表达式，您可以选择 math、reduce 和 resample 表达式。这些表达式称为多维规则，因为它们为每个序列生成单独的警报。

您还可以使用经典条件，该条件创建一个警报规则，在满足条件时触发单个警报。因此，即使满足多个序列的警报条件，Grafana 也只发送一个警报。

**注意**  
经典条件的存在主要是出于兼容性原因，应尽可能避免使用。

**Reduce**

将选定时间范围内的时间序列值聚合为一个值。

**数学**

对时间序列和数字数据执行自由形式的数学运算 functions/operations 。可用于预处理时间序列数据或定义数字数据的警报条件。

**Resample**

将时间范围重新对齐到一组新的时间戳，此功能在比较来自不同数据来源的时间序列数据时很有用，否则时间戳不会对齐。

**Threshold**

检查是否有任何时间序列数据符合阈值条件。

您可以使用阈值表达式比较两个单一值。当条件为 false 时返回 `0`，条件为 true 时，返回 `1`。可使用以下阈值函数：
+ 大于（x > y）
+ 小于（x < y）
+ 在范围内（x > y1 且 x < y2）
+ 超出范围（x < y1 且 x > y2）

**经典条件**

检查是否有任何时间序列数据符合警报条件。

**注意**  
无论有多少个时间序列满足条件，经典条件表达式查询始终只生成一个警报实例。经典条件的存在主要是出于兼容性原因，应尽可能避免使用。

## 聚合
<a name="v10-alerting-explore-rules-queries-aggregations"></a>

Grafana Alerting 提供以下聚合函数，使您能够进一步优化查询。

这些函数仅适用于 **Reduce** 和**经典条件**表达式。


| 函数 | Expression | 作用 | 
| --- | --- | --- | 
| avg | Reduce/经典 | 显示平均值 | 
| min | Reduce/经典 | 显示最低值 | 
| max | Reduce/经典 | 显示最高值 | 
| sum | Reduce/经典 | 显示所有值的和 | 
| count | Reduce/经典 | 计算结果中值的数量 | 
| last | Reduce/经典 | 显示最后一个值 | 
| median | Reduce/经典 | 显示中位值 | 
| diff | Classic | 显示最新值和最旧值的差值 | 
| diff\$1abs | Classic | 显示差值的绝对值 | 
| percent\$1diff | Classic | 显示最新值和最旧值的百分比差值 | 
| percent\$1diff\$1abs | Classic | 显示百分比差值的绝对值 | 
| count\$1non\$1null | Classic | 显示结果集中非 null 值的计数 | 

## 警报条件
<a name="v10-alerting-explore-rules-queries-alert-condition"></a>

警报条件是一个查询或表达式，可根据警报产生的值决定是否触发警报。触发警报的条件只能有一个。

定义查询 and/or 表达式后，选择其中一个作为警报规则条件。

当查询的数据满足定义的条件时，Grafana 会触发关联的警报，该警报可以配置为通过各种渠道发送通知，例如电子邮件、Slack 或。 PagerDuty通知会通知您满足的条件，以便您采取适当的措施或调查潜在问题。

默认情况下，最后添加的表达式用作警报条件。

## 恢复阈值
<a name="v10-alerting-explore-rules-queries-recovery-threshold"></a>

为了减少警报抖动带来的噪音，您可以设置一个不同于警报阈值的恢复阈值。

当指标徘徊在警报阈值条件附近时，就会出现抖动警报，这可能会导致频繁的状态变化，从而生成过多的通知。

Grafana 管理的警报规则将在特定的时间间隔内评估。在每次评估期间，都会根据警报规则中设置的阈值检查查询结果。如果指标的值高于阈值，则会触发警报规则并发送通知。当该值低于阈值，且该指标存在活动警报时，警报将得到解决，并发送另一个通知。

为有噪声的指标创建警报规则可能很麻烦。也就是说，指标的值持续高于或低于阈值。这称为抖动，并导致一系列“触发-已解决-触发”通知和嘈杂的警报状态历史记录。

例如，如果您有一个阈值为 1000 毫秒的延迟警报，并且该数字在 1000 附近波动（例如 980 ->1010 -> 990 -> 1020 等），则每个警报都将触发通知。

要解决此问题，您可以设置一个（自定义）恢复阈值，这基本上意味着有两个阈值而不是一个。当超过第一个阈值时会触发警报，只有在超过第二个阈值时才会解决。

例如，您可以将阈值设置为 1000 毫秒，将恢复阈值设置为 900 毫秒。这样，警报规则仅在低于 900 毫秒时停止触发，并且抖动减少。

# 警报实例
<a name="v10-alerting-rules-instances"></a>

****  
本文档主题专为支持 **Grafana 10.x 版本**的 Grafana 工作区而设计。  
对于支持 Grafana 9.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 9](using-grafana-v9.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="v10-alerting-rules-grouping"></a>

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

您可以使用 Grafana 管理的规则文件夹以及 Mimir、Loki 或 Prometheus 规则和组名称的命名空间来整理警报。

**命名空间和文件夹**

创建 Grafana 管理的规则时，可使用文件夹执行访问控制，并授予或拒绝对特定文件夹内所有规则的访问权限。

一个命名空间包含一个或多个组。组中的规则以固定时间间隔按顺序运行。默认的时间间隔为一分钟。您可以重命名 Grafana Mimi 或 Loki 规则命名空间和组，并编辑组评估间隔。

**组**

组中的规则以固定的间隔按顺序运行，这意味着不会同时评估任何规则，并按显示顺序评估。默认的时间间隔为一分钟。您可以重命名 Grafana Mimir 或 Loki 规则命名空间或 Loki 规则命名空间和组，并编辑组评估间隔。

**提示**  
如果您希望按不同的时间间隔同时评估规则，请考虑将其存储在不同的组中。

**注意**  
Grafana 管理的警报规则是同时评估，而不是按顺序评估的。

# 警报规则评估
<a name="v10-alerting-rules-evaluation"></a>

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

使用警报规则评估来确定评估警报规则的频率以及更改状态的速度。

为此，您需要确保警报规则位于正确的评估组中，并设置最适合用例的待处理时间段。

## 评估组
<a name="v10-alerting-rules-evaluation-group"></a>

每个警报规则都是评估组的一部分。每个评估组都包含一个评估间隔，用于确定检查警报规则的频率。

同一组中**数据来源管理的**警报规则会逐一评估，而不同组中的警报规则可同时评估。当您要确保在任何警报规则之前评估记录规则时，此功能特别有用。

无论警报规则组如何，**Grafana 管理的**警报规则都会同时评估。默认评估间隔设置为 10 秒，这意味着 Grafana 管理的警报规则每 10 秒评估一次，评估时间接近时钟上的 10 秒窗口，例如 10:00:00、10:00:10、10:00:20 等。如果需要，您还可以配置自己的评估间隔。

**注意**  
通知策略中的评估组和警报分组是两个独立的东西。通知策略中的分组允许在同一时间消息中发送共享标签的多个警报。

## 待处理期
<a name="v10-alerting-rules-evaluation-pending-period"></a>

设置待处理期后，可以避免因临时问题而发出不必要的警报。

在待处理期，您可以选择警报规则在触发之前可以违反条件的时段。

**示例**

假设您将警报规则评估间隔设置为每 30 秒一次，将待处理期设置为 90 秒。

评估方式如下：

[00:30] 第一次评估 - 未满足条件。

[01:00] 第二次评估 - 违反条件。待处理计数器启动。**警报开始待处理。**

[01:30] 第三次评估 - 违反条件。待处理计数器 = 30 秒。**待处理状态。**

[02:00] 第四次评估 - 违反条件。待处理计数器 = 60 秒**待处理状态。**

[02:30] 第五次评估 - 违反条件。待处理计数器 = 90 秒。**警报开始触发**

如果警报规则有一个条件，需要在违反该条件一定时间后才能采取行动，则其状态将发生如下变化：
+ 第一次违反条件时，规则将进入“待处理”状态。
+ 规则一直处于“待处理”状态，直到在规定的时间（待处理期）内违反条件。
+ 一旦过了规定的时间，规则就会进入“触发”状态。
+ 如果在待处理期不再违反条件，规则就会恢复到正常状态。

**注意**  
如果要跳过待处理状态，只需将待处理期设置为 0。这实际上跳过了待处理期，一旦违反条件，警报规则就会立即触发。

当警报规则触发时，会生成警报实例，然后发送到 Alertmanager。

# 警报规则的状态和运行状况
<a name="v10-alerting-explore-state"></a>

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

警报规则的状态和运行状况可帮助您了解有关警报的几个关键状态指标。

有三个关键组件：*警报规则状态*、*警报实例状态*和*警报规则运行状况*。尽管相关，但每个组件传达的信息略有不同。

**警报规则状态**

警报规则可能处于以下状态之一：


| 州 | 说明 | 
| --- | --- | 
| Normal | 评估引擎返回的时间序列均未处于 `Pending` 或 `Firing` 状态。 | 
| 待定 | 评估引擎返回的时间序列中至少有一个处于 `Pending` 状态。 | 
| 触发 | 评估引擎返回的时间序列中至少有一个处于 `Firing` 状态。 | 

**注意**  
警报先过渡到 `pending`，然后过渡到 `firing`，因此至少需要两个评估周期才会触发警报。

**警报实例状态**

警报实例可能处于以下状态之一：


| 州 | 说明 | 
| --- | --- | 
| Normal | 警报的状态既不是触发也不是待处理，一切正常。 | 
| 待定 | 警报处于活动状态的时间少于配置的阈值持续时间。 | 
| 警报 | 警报处于活动状态的时间超过配置的阈值持续时间。 | 
| NoData | 在配置的时间窗口内未收到任何数据。 | 
| 错误 | 尝试评估警报规则时发生的错误。 | 

**保留上一状态**

可以将警报规则配置为在遇到 `NoData` 或 `Error` 状态时保留上一个状态。这既可以防止警报触发，也可以阻止解决和重新触发。与正常评估一样，待处理期过后，警报规则将从 `Pending` 变为 `Firing`。

**警报规则运行状况**

警报规则可能具有以下运行状况之一：


| 州 | 说明 | 
| --- | --- | 
| 确定 | 评估警报规则时无错误。 | 
| 错误 | 在评估警报规则时发生错误。 | 
| NoData | 规则评估期间返回的至少一个时间序列中没有数据。 | 

**`NoData` 和 `Error` 的特殊警报**

当警报规则的评估产生 `NoData` 或 `Error` 状态时，Grafana Alerting 将生成具有以下附加标签的特殊警报：


| 标签 | 说明 | 
| --- | --- | 
| alertname | `DatasourceNoData` 或 `DatasourceError`，视状态而定。 | 
| datasource\$1uid | 导致该状态的数据来源 UID。 | 

您可以像处理常规警报一样处理这些警报，方法是添加静默、路由到联系点等。

# 通知模板化
<a name="v10-alerting-rules-notification-templates"></a>

****  
本文档主题专为支持 **Grafana 10.x 版本**的 Grafana 工作区而设计。  
对于支持 Grafana 9.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 9](using-grafana-v9.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) 是自定义模板的有用参考。

大部分联系点字段都可以模板化，因此您可以创建可重复使用的自定义模板，并在多个联系点中使用它们。要了解使用模板的自定义通知，请参阅 [自定义通知](v10-alerting-manage-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`。您可以编辑此文件，以更改所有警报电子邮件的外观。

# Alertmanager
<a name="v10-alerting-explore-alertmanager"></a>

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

Alertmanager 让您可以快速高效地管理和响应警报。还可以接收警报、处理静音、抑制、分组和路由，通过您选择的渠道（如电子邮件或 Slack）发送通知。

在 Grafana 中，您可以使用 Grafana Alertmanager 或外部 Alertmanager。您也可以运行多个 Alertmanager，具体取决于您的设置和警报的生成位置。

**Grafana Alertmanager**

Grafana Alertmanager 是一个预先配置的内部 Alertmanager，默认情况下可供选择。

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="v10-alerting-explore-contacts"></a>

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

联系点包含发送通知的配置。联系点是一个集成列表，每个集成都会向特定的电子邮件地址、服务或 URL 发送通知。联系点可以是多个相同类型的集成，也可以是不同类型集成的组合。例如，联系点可以包含一个 Pagerduty 集成；一个 Amazon SNS 和 Slack 集成；或一个 Pagerduty 集成、一个 Slack 集成和两个 Amazon SNS 集成。您也可以配置没有集成的联系点；在这种情况下，不发送任何通知。

联系点只有在添加到通知策略后才能发送通知。一个通知策略只能向一个联系点发送警报，但是一个联系点可以同时添加到多个通知策略。当警报与通知策略匹配时，警报将发送到该通知策略中的联系点，然后由联系点向其配置中的每个集成发送通知。

可以为 Grafana Alertmanager 以及外部 Alertmanager 配置联系点。

您还可以使用通知模板来自定义联系点类型的通知消息。

**支持的联系点类型**

下表列出了 Grafana 支持的联系点类型。


| Name | Type | 
| --- | --- | 
| Amazon SNS | `sns` | 
| OpsGenie | `opsgenie` | 
| Pager Duty | `pagerduty` | 
| Slack | `slack` | 
| VictorOps | `victorops` | 

有关联系点的更多信息，请参阅 [配置联系点](v10-alerting-configure-contactpoints.md) 和 [自定义通知](v10-alerting-manage-notifications.md)。

# 通知
<a name="v10-alerting-explore-notifications"></a>

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

选择发送警报通知的方式、时间和地点是设置警报系统的重要组成部分。这些决定将直接影响您快速解决问题的能力，并且不会错过任何重要的事情。

首先，定义[联系点](v10-alerting-explore-contacts.md)，这些联系点定义了向何处发送警报通知。联系点是一组用于发送通知的一个或多个集成。向联系点添加通知模板，以便在通知中实现重用和一致的消息传递。

接下来，创建通知策略，该策略包含一组规则，规定了警报在何处、何时以及如何路由到联系点。在通知策略中，您可以选择创建的一个联系点，来定义将警报通知发送到何处。

## Alertmanager
<a name="v10-alerting-explore-notifications-alertmanager"></a>

Grafana 使用 Alertmanager 发送触发和已解决警报的通知。Grafana 有自己的 Alertmanager，在用户界面中称为 **Grafana**，但也支持从其他 Alertmanager 发送通知，例如 [Prometheus Alertmanager](https://prometheus.io/docs/alerting/latest/alertmanager/)。Grafana Alertmanager 使用通知策略和联系点来配置通知发送的方式和地点；通知发送的频率；以及警报是否在同一个通知中发送，根据一组标签在分组通知中发送，还是作为单独的通知发送。

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

通知策略控制着通知的发送时间和地点。通知策略可以选择在同一通知中一起发送所有警报，根据一组标签在分组通知中发送警报，或者将警报作为单独的通知发送。您可以配置每个通知策略来控制发送通知的频率，设置一个或多个静音定时，在一天中的特定时间和一周中的几天禁止通知。

通知策略采用树形结构，在树的根部有一个称为默认策略的通知策略。默认策略只能有一个，而且不能删除。

特定的路由策略是根策略的子策略，可用于根据一组匹配标签来匹配所有警报或部分警报。当通知策略的匹配标签与警报中的标签匹配时，通知策略就会与警报匹配。

嵌套策略可以有自己的嵌套策略，从而实现更多的警报匹配。嵌套策略的一个例子是向运营团队发送基础设施警报；而子策略可能会向 Pagerduty 发送高优先级警报，向 Slack 发送低优先级警报。

所有警报（无论其标签如何）都匹配默认策略。但是，当默认策略收到警报时，会查看每个嵌套策略，并将警报发送到与警报匹配的第一个嵌套策略。如果嵌套策略还有其他嵌套策略，则会尝试将警报与其嵌套策略之一进行匹配。如果没有嵌套策略与警报匹配，则策略本身就是匹配的策略。如果没有嵌套策略，或者没有嵌套策略与警报匹配，则默认策略就是匹配的策略。

有关通知策略的更多详细信息，请参阅 [通知策略](v10-alerting-explore-notifications-policies-details.md)。

## 通知模板
<a name="v10-alerting-explore-notifications-templating"></a>

您可以使用模板自定义通知。例如，模板可用于更改发送到 Slack 的通知标题和消息。

模板并不限于单个集成或联系点，还可以在同一联系点的多个集成中使用，甚至是跨不同联系点的集成。例如，Grafana 用户可以创建一个名为 `custom_subject_or_title` 的模板，将其用于 Pager Duty 中的模板主题和 Slack 消息标题，而不必创建两个单独的模板。

所有通知模板均使用 [Go 的模板语言](https://pkg.go.dev/text/template)编写，位于“警报”页面的“联系点”选项卡中。

有关自定义通知的更多详细信息，请参阅 [自定义通知](v10-alerting-manage-notifications.md)。

## 静默
<a name="v10-alerting-explore-notifications-silences"></a>

您可以使用静默将来自一个或多个触发规则的通知静音。静默不会阻止警报触发或解决，也不会在用户界面中隐藏触发警报。静默持续的时间取决于其持续时间，可按分钟、小时、天、月或年配置。

有关使用静默的更多详细信息，请参阅 [静默警报通知](v10-alerting-silences.md)。

# 通知策略
<a name="v10-alerting-explore-notifications-policies-details"></a>

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

通知策略为您提供了一种灵活的方式，可将警报路由给不同的接收者。您可以使用标签匹配程序，修改警报通知的发送方式，而无需更新每一条警报规则。

在本节中，您将详细了解通知策略的工作原理和结构，以便您可以充分利用通知策略的设置。

## 策略树
<a name="v10-alerting-explore-notifications-policy-tree"></a>

通知策略*不是*列表，而是根据树形结构来构建的。这意味着每个策略都可以有子策略，以此类推。通知策略树的根称为**默认通知策略**。

每条策略都由一组标签匹配程序（0 个或多个）组成，这些标签匹配程序指定了需要或不需要处理的标签。

有关匹配标签的更多信息，请参阅 [标签匹配的工作原理](v10-alerting-overview-labels-matching.md)。

**注意**  
如果没有为通知策略配置任何标签匹配程序，通知策略将匹配*所有*警报实例。除非您在通知策略上启用了**继续匹配同级策略**，否则这可能会阻止对子策略的评估。

## 路由
<a name="v10-alerting-explore-notifications-routing"></a>

要确定哪个通知策略将处理哪些警报实例，必须先查看现有的通知策略集，从默认通知策略开始。

如果除默认策略外没有配置任何策略，则默认策略将处理警报实例。

如果定义了默认策略以外的策略，则将按照通知策略的显示顺序对其进行评估。

如果通知策略的标签匹配程序与警报实例的标签匹配，则该策略将下降到其子策略，如果有匹配项，则将继续查找可能具有标签匹配程序的任何子策略，以进一步缩小标签集，依次类推，直到找不到更多子策略。

如果通知策略中未定义子策略，或者子策略中没有任何与警报实例标签匹配的标签匹配程序，则使用父通知策略。

一旦找到匹配策略，系统就不会继续寻找其他匹配策略。如果要继续查找可能匹配的其他策略，请在特定策略上启用**继续匹配同级策略**。

最后，如果未选择任何通知策略，则使用默认通知策略。

### 路由示例
<a name="v10-alerting-explore-notifications-routing-example"></a>

下面是一个相对简单的通知策略树和一些警报实例的示例。

![\[图中以树结构形式显示了一组通知策略，以及一组具有不同标签，可匹配策略的警报实例。\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/notification-routing.png)


以下是如何选择这些策略的明细：

**卡在里 CrashLoop面的 Pod** 没有`severity`标签，因此其子策略都不匹配。其具有 `team=operations` 标签，因此会匹配第一个策略。

由于我们已找到匹配项，并且没有为该策略配置**继续匹配同级策略**，因此未评估 `team=security` 策略。

**Disk Usage - 80%** 具有 `team` 和 `severity` 标签，匹配运营团队的子策略。

**Unauthorized log entry** 具有 `team` 标签，但不匹配第一个策略（`team=operations`），因为值不同，所以会继续搜索并匹配 `team=security` 策略。由于没有任何子策略，附加 `severity=high` 标签会被忽略。

## 继承
<a name="v10-alerting-explore-notifications-inheritance"></a>

子策略除了是路由警报实例的有用概念之外，还继承父策略的属性。这也适用于作为默认通知策略的子策略的任何策略。

以下属性由子策略继承：
+ 联系点
+ 分组选项
+ 定时选项
+ 静音定时

如果您希望覆盖继承的属性，则每个属性都可以由单个策略覆盖。

要从父策略继承联系点，请将其留空。要覆盖继承的分组选项，请启用**覆盖分组**。要覆盖继承的定时选项，请启用**覆盖常规定时**。

### 继承示例
<a name="v10-alerting-explore-notifications-inheritance-example"></a>

下面的示例显示了前面示例中的通知策略树如何允许 `team=operations` 的子策略继承其联系点。

这样，我们可以避免为每个子策略多次指定同一个联系点。

![\[图中以树形结构显示了一组通知策略，其中一些策略分配了联系点，但有些子策略继承了其父策略的联系点，而不是定义自己的联系点。\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/notification-inheritance.png)


## 其他配置选项
<a name="v10-alerting-explore-notifications-additional-configuration-options"></a>

### 分组
<a name="v10-alerting-explore-notifications-grouping"></a>

分组是 Grafana Alerting 的一项重要功能，因为其允许将相关警报批处理合并成数量较少的通知。如果通知是发送给第一响应人员（如值班工程师），这一点尤为重要，因为在短时间内收到大量通知可能会让人不知所措，在某些情况下，还会影响第一响应人员对事故的响应。例如，假设发生一次大面积停机，导致许多系统瘫痪。在这种情况下，分组可能是接听 1 个电话呼叫和 100 个电话呼叫的区别。

您可以使用通知策略中的“分组依据”选项来选择如何将警报分组。默认情况下，Grafana 中的通知策略使用 `alertname` 和 `grafana_folder` 标签按警报规则将警报分组（因为警报名称在多个文件夹中并不唯一）。如果您希望按警报规则以外的方式对警报进行分组，请将分组方式更改为任何其他标签组合。

#### 禁用分组
<a name="v10-alerting-explore-notifications-disable-grouping"></a>

如果您希望将每个警报作为单独的通知接收，可使用一个名为 `...` 的特殊标签进行分组。当警报发送到自动系统而不是第一响应者时，这个功能就非常有用。

#### 所有警报在一个组
<a name="v10-alerting-explore-notifications-a-single-group-for-all-alerts"></a>

如果您希望在一个通知中同时接收所有警报，可以将“分组依据”留空。

### 定时选项
<a name="v10-alerting-explore-notifications-timing-options"></a>

定时选项决定了每组警报发送通知的频率。您需要了解三个定时器：组等待、组间隔和重复间隔。

#### 组等待
<a name="v10-alerting-explore-notifications-group-wait"></a>

组等待是 Grafana 在发送新一组警报的第一条通知之前等待的时间。组等待时间越长，其他警报到达的时间就越长。组等待时间越短，第一条通知发送的就越早，但发送的通知可能不完整。您应始终选择对您的用例最有意义的组等待。

**默认值** 30 秒

#### 组间隔
<a name="v10-alerting-explore-notifications-group-interval"></a>

发送了新一组警报的第一条通知后，Grafana 就会启动组间隔定时器。这是 Grafana 在向组发送更改通知前等待的时间。例如，另一个触发警报可能刚刚添加到组中，而现有警报可能已解决。如果由于组等待而导致警报太晚而无法包含在第一个通知中，则会包含在组间隔之后的后续通知中。组间隔结束后，Grafana 会重置组间隔定时器。如此重复，直到组中不再有警报，然后删除该组。

**默认值** 5 分钟

#### 重复间隔
<a name="v10-alerting-explore-notifications-repeat-interval"></a>

重复间隔决定了在自上次通知以来，组未发生变化的情况下重复通知的频率。您可以将这些视为某些警报仍在触发的提醒。重复间隔与组间隔密切相关，这意味着您的重复间隔不仅必须大于或等于组间隔，还必须是组间隔的倍数。如果重复间隔不是组间隔的倍数，则将被强制转换为一个倍数。例如，如果您的组间隔为 5 分钟，重复间隔为 9 分钟，则重复间隔将四舍五入到最接近的 5 的倍数，即 10 分钟。

**默认值** 4 小时

# 警报高可用性
<a name="v10-alerting-explore-high-availability"></a>

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

Amazon Managed Grafana 配置了高可用性，包括跨多个可用区为您创建的每个工作区运行多个实例。

Grafana Alerting 使用 Prometheus 模型，将警报规则的评估与通知的发送分开。在此模型中，警报规则的评估在警报生成器中完成，通知的发送在警报接收器中完成。在 Grafana Alerting 中，警报生成器是 Scheduler，接收器是 Alertmanager。

在高可用性配置下，将在所有实例上评估警报规则。您可以认为警报规则的评估是重复的。这样，Grafana Alerting 确保只要至少有一个 Grafana 实例在运行，就会评估警报规则，并且仍会发送警报通知。您将在状态历史记录中看到这种重复，这是判断您是否在使用高可用性的一个好方法。

# 设置警报
<a name="v10-alerting-setup"></a>

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

配置创建和管理警报所需的功能和集成。

**先决条件**

在设置警报之前，您必须执行以下操作。
+ 配置[数据来源](AMG-data-sources.md)。
+ 确保您选择的数据来源与 [Grafana Alerting](v10-alerting-overview-datasources.md) 兼容并受支持。

**设置警报**

1. 配置[警报规则](v10-alerting-configure.md)。
   + 创建 Grafana 管理或数据来源管理的警报规则和记录规则。

1. 配置[联系点](v10-alerting-configure-contactpoints.md)。
   + 检查默认联系点，然后更新系统的联系点。
   + （可选）添加新的联系点和集成。

1. 配置[通知策略](v10-alerting-explore-notifications-policies-details.md)
   + 检查默认通知策略，然后更新您的系统。
   + （可选）添加其他嵌套策略。
   + （可选）添加标签和标签匹配程序来控制警报路由。

以下主题为您提供了有关其他配置选项的更多信息，包括配置外部警报管理器以及在 Grafana 外部路由 Grafana 管理的警报。

**Topics**
+ [将经典控制面板警报迁移到 Grafana Alerting](v10-alerting-use-grafana-alerts.md)
+ [添加外部 Alertmanager](v10-alerting-setup-alertmanager.md)
+ [预置 Grafana Alerting 资源](v10-alerting-setup-provision.md)

# 将经典控制面板警报迁移到 Grafana Alerting
<a name="v10-alerting-use-grafana-alerts"></a>

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

选择不使用 Grafana Alerting 的工作区，使用 [经典控制面板警报](old-alerts-overview.md)。要切换到新的 Grafana Alerting，必须选择启用此功能。要详细了解经典控制面板警报和 Grafana 警报之间的区别，请参阅。[Grafana Alerting 与旧版控制面板警报对比](#v10-alerting-diff-old-new) GrafanaLabs 已宣布将在版本 11 中删除经典仪表板警报。

使用经典控制面板警报时，Amazon Managed Grafana 会显示 Grafana Alerting 的预览，您可以在完成升级之前查看和修改升级后的警报。

## 预览 Grafana 警报
<a name="v10-alerting-preview-grafana-alerts"></a>

在迁移之前，您可以在 Grafana Alerting 中预览警报。在预览中，您可以对将更改迁移的警报进行更改。

**预览 Grafana Alerting 迁移**

1. 登录 Grafana 工作区。

1. 从左侧菜单中，选择**警报（旧版）**以查看当前警报。

1. 从左侧菜单中，选择**警报升级**，在 Grafana Alerting 中查看警报。

   在此视图中，您可以查看迁移后的警报。

**注意**  
您还可以在此视图中进行影响迁移的更改。要撤消所做的任何更改，请选择升级页面右上角的**重置升级**。

如果您准备好升级警报，请参阅下一节。

## 迁移到 Grafana Alerting 系统
<a name="v10-alerting-use-grafana-alerts-opt-in"></a>

您可以使用、或亚马逊托管 Grafana API 将您的亚马逊托管 Grafana 实例配置为使用 Grafana 警报。 AWS 管理控制台 AWS CLI有关如何配置 Amazon Managed Grafana（包括打开或关闭 Grafana Alerting）的详细信息，请参阅 [配置 Amazon Managed Grafana 工作区](AMG-configure-workspace.md)。

开启 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="v10-alerting-use-grafana-alerts-limitations"></a>
+ Grafana Alerting 系统可从所有可用的 Prometheus、Loki 和 Alertmanager 数据来源检索规则。但可能无法从其他受支持的数据来源获取警报规则。
+ 在 Grafana 警报和经典控制面板警报之间来回迁移可能会导致一个系统支持的功能丢失数据，而另一个则不会。
**注意**  
如果您迁移回经典控制面板警报，则在启用 Grafana Alerting 时对警报配置进行的所有更改都将丢失，包括创建的任何新警报规则。

## Grafana Alerting 与旧版控制面板警报对比
<a name="v10-alerting-diff-old-new"></a>

Grafana 8 中引入的 Grafana Alerting 与旧版控制面板警报相比有多项增强。

### 多维警报
<a name="v10-alerts-diff-multi-dimensional"></a>

现在，您可以创建警报，通过单个警报规则提供系统范围的可见性。根据单个警报规则生成多个警报实例。例如，您可以创建一条规则，来监控一台主机上多个挂载点的磁盘使用情况。评估引擎会从单个查询返回多个时间序列，每个时间序列由其标签集标识。

### 在控制面板外部创建警报
<a name="v10-alerts-diff-alerts-outside-of-dashboards"></a>

与旧版控制面板警报不同，Grafana 警报允许创建查询和表达式，以独特的方式组合来自多个来源的数据。您仍然可以使用控制面板和面板的 ID，将控制面板和面板链接到警报规则，并快速对观察的系统进行故障排除。

由于统一警报不再与面板查询直接关联，因此通知邮件中不包含图像或查询值。您可以使用自定义通知模板来查看查询值。

### 创建 Loki 和 Grafana Mimir 警报规则
<a name="v10-alerts-diff-loki-mimir-alerting-rules"></a>

在 Grafana Alerting 中，您可以使用与 Grafana 管理的警报相同的 UI 和 API 管理 Loki 和 Grafana Mimir 警报规则。

### 查看和搜索来自 Prometheus 兼容数据来源的警报
<a name="v10-alerts-diff-view-alerts-from-prometheus"></a>

Prometheus 兼容数据来源的警报现在位于 Grafana 警报部分下。您可以跨多个数据来源搜索标签，以快速查找相关警报。

### 警报状态 NoData 和错误的特殊警报
<a name="v10-alerts-diff-special-alerts"></a>

Grafana Alerting 引入了警报状态的新概念。当对警报规则的评估产生状态 NoData 或错误时，Grafana Alerting 将生成带有以下标签的特殊警报：
+ `alertname`使用值 DatasourceNoData 或 DatasourceError 取决于州。
+ 特殊警报所属的警报规则的 `rulename` 名称。
+ `datasource_uid` 具有导致该状态的数据来源的 UID。
+ 原始警报规则的所有标签和注释

您可以像处理常规警报一样处理这些警报，方法是添加静默、路由到联系点等。

**注意**  
如果规则使用多个数据来源，而其中一个或多个数据来源未返回任何数据，则将为导致警报状态的每个数据来源创建特殊警报。

# 添加外部 Alertmanager
<a name="v10-alerting-setup-alertmanager"></a>

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

将 Grafana 设置为使用外部 Alertmanager 作为单一 Alertmanager 接收所有警报。然后，可以在 Grafana 中配置和管理此外部 Alertmanager。

**注意**  
您不能将 Amazon Managed Service for Prometheus 用作外部 Alertmanager。

添加 Alertmanager 后，您可以使用 Grafana Alerting UI 来管理静默、联系点和通知策略。通过这些页面中的下拉选项，您可以在不同的 Alertmanager 之间切换。

现在，应使用 Grafana 主导航菜单中的 Grafana 配置将外部 Alertmanager 配置为数据来源。这使您能够从 Grafana 中管理外部 Alertmanager 的联系点和通知策略，还可以加密以前通过 URL 配置外部 Alertmanager 时可见的 HTTP 基本身份验证凭证。

**注意**  
从 Grafana 9.2 开始，不推荐使用“警报”页面上“管理”选项卡中外部 Alertmanager 的 URL 配置。这将在未来版本中删除。

**添加外部 Alertmanager**

1. 从左侧主菜单中选择**连接**。

1. 搜索 `Alertmanager`。

1. 选择**创建新的数据来源**按钮。

1. 根据需要填写页面上的字段。

   如果要预置数据来源，请将 `jsonData` 字段中的标志 `handleGrafanaManagedAlerts` 中设置为 `true`，以将 Grafana 管理的警报发送到此 Alertmanager。
**注意**  
支持 Prometheus、Grafana Mimir 和 Cortex 实现 Alertmanager。对于 Prometheus，Grafana Alerting UI 中的联系点和通知策略为只读。

1. 选择**保存并测试**。

# 预置 Grafana Alerting 资源
<a name="v10-alerting-setup-provision"></a>

****  
本文档主题专为支持 **Grafana 10.x 版本**的 Grafana 工作区而设计。  
对于支持 Grafana 9.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 9](using-grafana-v9.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 创建和管理警报资源](v10-alerting-setup-provision-terraform.md)
+ [在 Grafana 中查看预置的警报资源](v10-alerting-setup-provision-view.md)

# 使用 Terraform 创建和管理警报资源
<a name="v10-alerting-setup-provision-terraform"></a>

****  
本文档主题专为支持 **Grafana 10.x 版本**的 Grafana 工作区而设计。  
对于支持 Grafana 9.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 9](using-grafana-v9.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="v10-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="v10-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="v10-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="v10-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="v10-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="v10-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="v10-alerting-setup-provision-tf-rules"></a>

[警报规则](v10-alerting-configure.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="v10-alerting-setup-provision-view"></a>

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

您可以验证是否在 Grafana 中创建了警报资源。

**在 Grafana 中查看预置的资源**

1. 打开 Grafana 实例。

1. 导航到警报。

1. 单击警报资源文件夹，例如 Alert rules。

   预置的资源带有 **Provisioned** 标记，很明显这些资源不是手动创建的。

**注意**  
您无法从 Grafana 编辑预置的资源。只能通过更改配置文件并重新启动 Grafana 或执行热重载来更改资源属性。这样可以防止对资源进行更改，如果再次配置文件或执行热重载，这些更改会被覆盖。

# 配置警报
<a name="v10-alerting-configure"></a>

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

配置创建和管理警报所需的功能和集成。

**Topics**
+ [配置 Grafana 管理的警报规则](v10-alerting-configure-grafanamanaged.md)
+ [配置数据来源管理的警报规则](v10-alerting-configure-datasourcemanaged.md)
+ [配置记录规则](v10-alerting-configure-recordingrules.md)
+ [配置联系点](v10-alerting-configure-contactpoints.md)
+ [配置通知策略](v10-alerting-configure-notification-policies.md)

# 配置 Grafana 管理的警报规则
<a name="v10-alerting-configure-grafanamanaged"></a>

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

Grafana 管理的规则是最灵活的警报规则类型。通过这些规则，您可以创建警报，而这些警报可以作用于我们支持的任何数据来源中的数据。除了支持多个数据来源，您还可以添加表达式来转换数据和设置警报条件。还支持在警报通知中使用映像。这是唯一允许在单个规则定义中从多个数据来源发出警报的规则类型。

一条警报规则可以创建多个警报实例（也称为多维警报）。

Grafana 管理的警报规则只能由对存储规则的文件夹具有编辑权限的用户编辑或删除。

如果删除在 UI 中创建的警报资源，则无法再对其检索。要备份配置并恢复已删除的警报资源，请使用 Terraform 或警报 API 创建警报资源。

在以下过程中，我们将引导您完成创建 Grafana 管理的警报规则的过程。

要创建 Grafana 管理的警报规则，请使用工作区内警报创建流程，并按照以下步骤操作。

**设置警报规则名称**

1. 选择**警报** -> **警报规则** -> **\$1 新建警报规则**。

1. 输入名称以识别警报规则。

   此名称将显示在警报规则列表中。这也是根据此规则创建的每个警报实例的 `alertname` 标签。

接下来，定义查询以获取要测量的数据，以及触发警报规则之前需要满足的条件。

**定义查询和条件**

1. 选择数据来源。

1. 从**选项**下拉列表中，指定[时间范围](v10-dash-using-dashboards.md#v10-dash-setting-dashboard-time-range)。
**注意**  
Grafana Alerting 仅支持固定的相对时间范围，例如 `now-24hr: now`。  
但不支持绝对时间范围：`2021-12-02 00:00:00 to 2021-12-05 23:59:592` 或半相对时间范围：`now/d to: now`。

1. 添加查询。

   要添加多个[查询](v10-panels-query-xform.md#v10-panels-query-xform-add)，请选择**添加查询**。

   默认情况下，所有警报规则均由 Grafana 管理。如果要切换到数据来源管理的警报规则，请单击**切换到数据来源管理的警报规则**。

1. 添加一个或多个[表达式](v10-panels-query-xform-expressions.md)。

   1. 对于每个表达式，可选择**经典条件**来创建单条警报规则，或从 **Math**、**Reduce** 和 **Resample** 选项中选择，为每个序列生成单独的警报。
**注意**  
使用 Prometheus 时，您可以使用即时向量和内置函数，因此无需添加额外的表达式。

   1. 选择**预览**以验证表达式是否成功。

1. [可选] 要添加恢复阈值，请打开**自定义恢复阈值**开关，并填写警报规则停止触发的时间值。

   您只能在查询中添加一个恢复阈值，且该阈值必须是警报条件。

1. 在要设置为警报条件的查询或表达式上选择**设置为警报条件**。

使用警报规则评估来确定评估警报规则的频率以及更改状态的速度。

为此，您需要确保警报规则位于正确的评估组中，并设置最适合用例的待处理时间段。

**设置警报评估行为**

1. 选择一个文件夹或选择 **\$1 新建文件夹**。

1. 选择评估组或单击 **\$1 新建评估组**。

   如果要创建新的评估组，请指定该组的间隔。

   同一组中的所有规则在同一时间间隔内同时进行评估。

1. 输入待处理期。

   待处理期是指警报规则在触发之前可以违反条件的时段。

   满足条件后，警报将进入**待处理**状态。如果条件在指定的持续时间保持为激活状态，警报将转入**触发**状态，否则将恢复为**正常**状态。

1. 如果需要，请开启暂停警报通知。
**注意**  
暂停警报规则评估，以防止在调整警报时发出嘈杂的警报。暂停会停止警报规则评估，且不会创建任何警报实例。这与静音定时不同，静音定时会停止发送通知，但仍允许评估警报规则和创建警报实例。  
您可以暂停警报规则评估，以防止在调整警报时发出嘈杂的警报。暂停会停止警报规则评估，且不会创建任何警报实例。这与静音定时不同，静音定时会停止发送通知，但仍允许评估警报规则和创建警报实例。

1. 在**配置无数据和错误处理**中，配置缺少数据情况下的警报行为。

   使用本节后面的指南。

在警报规则中添加标签，以设置由哪个通知策略处理触发警报实例。

所有警报规则和实例（无论其标签如何）都匹配默认通知策略。如果没有嵌套策略，或者没有嵌套策略与警报规则或警报实例中的标签相匹配，则默认通知策略就是匹配的策略。

**配置通知**

1. 如果要更改通知的路由方式，请添加标签。

   从下拉列表中选择现有键值对来添加自定义标签，或者输入新的键或值来添加新标签。

1. 预览警报实例路由设置。

   根据添加的标签，警报实例将路由到显示的通知策略。

   展开每个通知策略以查看更多详细信息。

1. 选择**查看详细信息**以查看警报路由详细信息和预览。

添加[注释](v10-alerting-overview-labels.md#v10-alerting-overview-labels-annotations)以在警报通知消息中提供有关警报的更多上下文。

注释添加了元数据，可在警报通知消息中提供更多警报信息。例如，添加 **Summary** 注释，以便告知哪个值导致警报触发，或者警报发生在哪个服务器上。

**添加注释**

1. [可选] 添加摘要。

   简要总结了发生的事件和原因。

1. [可选] 添加描述。

   描述警报规则的作用。

1. [可选] 添加运行手册 URL。

   存放警报运行手册的网页

1. [可选] 添加自定义注释

1. [可选] 添加控制面板和面板链接。

   将警报链接到控制面板中的面板。

1. 选择**保存规则**。

**单维和多维规则**

对于 Grafana 管理的警报，您可以创建具有经典条件的规则，也可以创建多维规则。
+ **经典条件下的规则**

  使用经典条件表达式创建规则，可在满足条件时触发单个警报。对于返回多个序列的查询，Grafana 不会跟踪每个序列的警报状态。因此，即使满足多个序列的警报条件，Grafana 也只发送一个警报。
+ **多维警报**

  要为每个序列生成单独的警报，请创建多维规则。使用 `Math`、`Reduce` 或 `Resample` 表达式创建多维规则。例如：
  + 为每个查询添加 `Reduce` 表达式，将选定时间范围内的值聚合为一个值（[使用数值数据的规则](v10-alerting-overview-numeric.md)不需要）。
  + 添加包含规则条件的 `Math` 表达式。如果查询或 reduce 表达式已返回 `0`（如果规则不应触发），则不需要，如果规则应触发，则返回正数。一些例子：`$B > 70`如果B query/expression 的值大于70，它是否应该触发。 `$B < $C * 100`以防如果 B 的值小于 C 的值乘以 100，则它应该触发。如果要比较的查询在其结果中包含多个序列，那么对于来自不同查询的序列，如果它们具有相同的标签，或者其中一个序列的标签是另一个序列标签的子集，就会进行匹配。

**注意**  
Grafana 不支持使用模板变量的警报查询。更多信息可在 [https://community.grafana.co template-variables-are-not](https://community.grafana.com/t/template-variables-are-not-supported-in-alert-queries-while-setting-up-alert/2514) m/t/-/2514 上找到。supported-in-alert-queries while-setting-up-alert

**配置无数据和错误处理**

配置警报规则评估返回无数据或错误时的警报行为。

**注意**  
配置为在评估返回无数据或错误时触发的警报规则，仅在整个评估期结束时触发。这意味着，警报规则不会在违反警报规则条件时立即触发，而是会等到 **For** 字段中设置的时间结束后再触发，从而减少警报噪音，并允许出现临时数据可用性问题。

如果您的警报规则评估返回无数据，则可以将警报规则的状态设置为如下所示：


| 无数据 | 说明 | 
| --- | --- | 
| 无数据 | 使用警报规则的名称和 UID，以及返回无数据作为标签的数据来源 UID 创建新的警报 DatasourceNoData。 | 
| 警报 | 将警报规则状态设置为 Alerting。警报规则会等到 For 字段中设置的时间结束，然后再触发。 | 
| 确定 | 将警报规则状态设置为 Normal。 | 

如果您的评估返回错误，则可以将警报规则的状态设置为如下所示：


| 错误 | 说明 | 
| --- | --- | 
| 错误 | 使用警报规则的名称和 UID，以及返回无数据作为标签的数据来源 UID 创建警报实例 DatasourceError。 | 
| 警报 | 将警报规则状态设置为 Alerting。警报规则会等到 For 字段中设置的时间结束，然后再触发。 | 
| 确定 | 将警报规则状态设置为 Normal。 | 

**解决过时的警报实例**

如果警报实例的维度或序列在两次评估间隔内从查询结果中完全消失，则该警报实例被视为过时。

处于 `Alerting`/`NoData`/`Error` 状态的过时警报实例会自动标记为 `Resolved`，并将 `grafana_state_reason` 注释与原因 `MissingSeries` 一起添加到警报实例。

**从面板创建警报**

从任何面板类型创建警报。这意味着您可以重用面板中的查询，并基于这些查询创建警报。

1. 在控制面板部分导航到**控制面板**。

1. 在面板的右上角，选择三个点（省略号）。

1. 从下拉菜单中，选择**更多...**，然后选择**新建警报规则**。

这将打开警报规则表单，您可以根据当前面板的查询配置和创建警报。

# 配置数据来源管理的警报规则
<a name="v10-alerting-configure-datasourcemanaged"></a>

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

为启用了 ruler API 的外部 Grafana Mimir 或 Loki 实例创建警报规则；这些规则称为数据来源管理的警报规则。

**注意**  
具有编辑者或管理员角色的用户可以编辑或删除外部 Grafana Mimir 或 Loki 实例的警报规则。  
如果删除在 UI 中创建的警报资源，则无法再对其检索。要备份配置并恢复已删除的警报资源，请使用 Terraform 或警报 API 创建警报资源。

**先决条件**
+ 验证您是否拥有 Prometheus 或 Loki 数据来源的写入权限。如果没有，您将无法创建或更新 Grafana Mimir 管理的警报规则。
+ 对于 Grafana Mimir 和 Loki 数据来源，通过配置其各自的服务启用 Ruler API。
  + **Loki**：`local` 规则存储类型是 Loki 数据来源的默认设置，仅支持查看规则。要编辑规则，请配置其他规则存储类型之一。
  + **Grafana Mimir**：使用 `/prometheus` 前缀。Prometheus 数据来源同时支持 Grafana Mimir 和 Prometheus，并且 Grafana 预期 [Query API](https://grafana.com/docs/mimir/latest/operators-guide/reference-http-api/#querier--query-frontend) 和 [Ruler API](https://grafana.com/docs/mimir/latest/operators-guide/reference-http-api/#ruler) 使用相同的 URL。您不能为 Ruler API 提供单独的 URL。

**注意**  
如果您不想管理特定 Loki 或 Prometheus 数据来源的警报规则，请转到其设置，并清除**通过 Alerting UI 管理警报**复选框。

在以下过程中，我们将引导您完成创建数据来源管理的警报规则的过程。

要创建数据来源管理的警报规则，请使用工作区内警报创建流程，并按照以下步骤操作。

**设置警报规则名称**

1. 选择**警报** -> **警报规则** -> **\$1 新建警报规则**。

1. 输入名称以识别警报规则。

   此名称将显示在警报规则列表中。这也是根据此规则创建的每个警报实例的 `alertname` 标签。

定义查询以获取要测量的数据，以及触发警报规则之前需要满足的条件。

**定义查询和条件**

1. 默认情况下，所有警报规则均由 Grafana 管理。要切换到数据来源管理的警报规则，请选择**切换到数据来源管理的警报规则**。

1. 从下拉列表中选择数据来源。

   您还可以选择**打开高级数据来源选取器**以查看更多选项，包括添加数据来源（仅限管理员）。

1. 输入 PromQL 或 LogQL 查询。

1. 选择**预览警报**。

使用警报规则评估来确定评估警报规则的频率以及更改状态的速度。

**设置警报评估行为**

1. 选择命名空间或选择 **\$1 新建命名空间**。

1. 选择评估组或选择 **\$1 新建评估组**。

   如果要创建新的评估组，请指定该组的间隔。

   同一组中的所有规则在同一时间间隔内按顺序进行评估。

1. 输入待处理期。

   待处理期是指警报规则在触发之前可以违反条件的时段。

   满足条件后，警报将进入 `Pending` 状态。如果条件在指定的持续时间保持为激活状态，警报将转入 `Firing` 状态，否则将恢复为 `Normal` 状态。

在警报规则中添加标签，以设置由哪个通知策略处理触发警报实例。

所有警报规则和实例（无论其标签如何）都匹配默认通知策略。如果没有嵌套策略，或者没有嵌套策略与警报规则或警报实例中的标签相匹配，则默认通知策略就是匹配的策略。

**配置 通知**
+ 如果要更改通知的路由方式，请添加标签。

  从下拉列表中选择现有键值对来添加自定义标签，或者输入新的键或值来添加新标签。

添加[注释](v10-alerting-overview-labels.md#v10-alerting-overview-labels-annotations)以在警报通知中提供有关警报的更多上下文。

注释添加了元数据，可在警报通知中提供更多警报信息。例如，添加 `Summary` 注释，以便告知哪个值导致警报触发，或者警报发生在哪个服务器上。

**添加注释**

1. [可选] 添加摘要。

   简要总结了发生的事件和原因。

1. [可选] 添加描述。

   描述警报规则的作用。

1. [可选] 添加运行手册 URL。

   存放警报运行手册的网页

1. [可选] 添加自定义注释

1. [可选] 添加控制面板和面板链接。

   将警报链接到控制面板中的面板。

1. 选择**保存规则**。

# 配置记录规则
<a name="v10-alerting-configure-recordingrules"></a>

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

您可以为外部 Grafana Mimir 或 Loki 实例创建和管理记录规则。记录规则会预先计算经常需要的表达式或计算成本高昂的表达式，并将结果保存为一组新的时间序列。查询这个新时间序列的速度更快，特别是对于控制面板而言，因为控制面板每次刷新时都会查询相同的表达式。

**注意**  
记录规则作为实例规则运行，每 10 秒运行一次。

**先决条件**
+ 验证您是否拥有 Prometheus 或 Loki 数据来源的写入权限。您将在数据来源中创建或更新警报规则。
+ 对于 Grafana Mimir 和 Loki 数据来源，通过配置其各自的服务启用 ruler API。
  + **Loki**：`local` 规则存储类型是 Loki 数据来源的默认设置，仅支持查看规则。要编辑规则，请配置其他存储类型之一。
  + **Grafana Mimir**：使用 `/prometheus` 前缀。Prometheus 数据来源同时支持 Grafana Mimir 和 Prometheus，并且 Grafana 预期 Query API 和 Ruler API 使用相同的 URL。您不能为 Ruler API 提供单独的 URL。

**注意**  
如果您不想管理特定 Loki 或 Prometheus 数据来源的警报规则，请转到其设置，并清除**通过警报用户界面管理警报**复选框。

**创建记录规则**

1. 在 Grafana 控制台的 Grafana 菜单中，选择**警报**和**警报规则**。

1. 选择**新建记录规则**。

1. 设置规则名称。

   记录规则名称必须是 Prometheus 指标名称，且不包含空格。

1. 定义查询
   + 选择您的 Loki 或 Prometheus 数据来源。
   + 输入查询。

1. 添加命名空间和组。
   + 从**命名空间**下拉列表中，选择现有的规则命名空间或添加新的命名空间。命名空间可以包含一个或多个规则组，并且只能用于组织目的。
   + 从**组**下拉列表中，选择选定命名空间中的现有组或添加新的组。新创建的规则会附加到该组的末尾。组内的规则以固定时间间隔按顺序运行，评估时间相同。

1. 添加标签。
   + 从下拉列表中选择现有键值对来添加自定义标签，或者输入新的键或值来添加新标签。

1. 选择**保存规则**以保存规则，或者**选择保存并退出**，以保存规则并返回警报页面。

# 配置联系点
<a name="v10-alerting-configure-contactpoints"></a>

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

使用联系点定义当警报规则触发时如何通知联系人。

**注意**  
您可以为 Grafana 管理的警报创建和编辑联系点。数据来源管理的警报的联系点为只读。

## 使用联系点
<a name="v10-alerting-configure-contactpoints-working"></a>

以下过程介绍了如何添加、编辑、删除和测试联系点。

**添加联系点**

1. 在左侧菜单中，选择**警报**。

1. 选择**联系点**。

1. 从**选择 Alertmanager** 下拉列表中，选择 Alertmanager。默认选择 Grafana Alertmanager。

1. 在**联系点**选项卡上，选择 **\$1 添加联系点**。

1. 输入联系点的**名称**。

1. 从**集成**中选择一种类型，并根据该类型填写必填字段。例如，如果您选择 Slack，请输入应联系的 Slack 频道和用户。

1. 如果您选择的联系点可用，请选择所需的**可选设置**来指定其他设置。

1. 在**通知设置**下，如果您不希望在警报得到解决时收到通知，可以选择**禁用已解决消息**。

1. 要添加其他联系点集成，请选择**添加联系点集成**，然后对所需的每个联系点类型重复这些步骤。

1. 保存更改。

**编辑联系点**

1. 在左侧菜单中，选择**警报**。

1. 选择**联系点**，以查看现有联系点列表。

1. 选择要编辑的联系点，然后选择**编辑**。

1. 更新联系点，然后保存更改。

您可以删除通知策略不使用的联系点。

**删除联系点**

1. 在左侧菜单中，选择**警报**。

1. 选择**联系点**，以打开现有联系点列表。

1. 在**联系点**上，选择要删除的联系点，然后选择**更多**、**删除**。

1. 在确认对话框中，选择**是，删除**。

**注意**  
如果通知策略正在使用该联系点，则必须先删除通知策略，或对其进行编辑以使用不同的联系点，然后再删除该联系点。

创建联系点后，您可以发送测试通知，以验证其配置是否正确。

**发送测试通知**

1. 在左侧菜单中，选择**警报**。

1. 选择**联系点**，以打开现有联系点列表。

1. 在**联系点**上，选择要测试的联系点，然后选择**编辑**。如果需要，您还可以创建新的联系点。

1. 选择**测试**以打开联系点测试对话框。

1. 选择是发送预定义的测试通知，还是通过选择**自定义**，在测试通知中添加您自己的自定义注释和标签。

1. 选择**发送测试通知**，使用给定的联系点测试警报。

## 配置联系点集成
<a name="v10-alerting-configure-contactpoints-integration"></a>

在 Grafana 中配置联系点集成，以选择在警报规则触发时接收通知的首选通信渠道。每个集成都有自己的配置选项和设置过程。大多数情况下，需要提供 API 密钥或 Webhook URL。

配置后，您可以将集成作为联系点的一部分，以便在警报状态发生变化时接收通知。在本节中，我们将以此 PagerDuty 为例，介绍配置集成的基本步骤，这样您就可以开始接收实时警报并随时掌握监控数据。

**支持的集成列表**

下表列出了 Grafana 支持的联系点类型。


| Name | Type | 
| --- | --- | 
| Amazon SNS | `sns` | 
| OpsGenie | `opsgenie` | 
| Pager Duty | `pagerduty` | 
| Slack | `slack` | 
| VictorOps | `victorops` | 

** PagerDuty 为警报进行配置**

要进行设置 PagerDuty，必须提供集成密钥。提供以下详细信息。


| 设置 | 说明 | 
| --- | --- | 
| 集成密钥 | 的集成密钥 PagerDuty | 
| 严重性 | 动态通知的级别。默认值为 critical。 | 
| 自定义详细信息 | 有关事件的其他详细信息 | 

`CustomDetails` 字段是一个包含任意键值对的对象。用户定义的详细信息与默认使用的详细信息合并。

`CustomDetails` 默认值如下所示：

```
{
	"firing":       `{{ template "__text_alert_list" .Alerts.Firing }}`,
	"resolved":     `{{ template "__text_alert_list" .Alerts.Resolved }}`,
	"num_firing":   `{{ .Alerts.Firing | len }}`,
	"num_resolved": `{{ .Alerts.Resolved | len }}`,
}
```

如果密钥重复，用户定义的详细信息会覆盖默认的详细信息。

# 配置通知策略
<a name="v10-alerting-configure-notification-policies"></a>

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

通知策略决定如何将警报路由到联系点。

策略具有树形结构，其中每个策略都可以有一个或多个嵌套策略。除了默认策略外，每个策略还可以匹配特定的警报标签。

每个警报都由默认策略评估，随后由每个嵌套策略评估。

如果为嵌套策略启用了 `Continue matching subsequent sibling nodes` 选项，则即使有一个或多个匹配项，评估仍会继续。父策略的配置设置和联系点信息控制着与任何子策略都不匹配的警报的行为。默认策略将管理所有与嵌套策略不匹配的警报。

有关通知策略的更多信息，请参阅 [通知](v10-alerting-explore-notifications.md)。

以下过程演示了如何创建和管理通知策略。

**编辑默认通知策略**

1. 在左侧菜单中，选择**警报**。

1. 选择**通知策略**。

1. 从 **Alertmanager** 下拉列表中，选择要编辑的 Alertmanager。

1. 在**默认策略**部分，选择 **...**，然后选择**编辑**。

1. 在**默认联系点**中，更新当警报规则与任何特定策略都不匹配时，应向其发送规则通知的联系点。

1. 在**分组依据**中，选择用于对警报进行分组的标签。如果此策略有多个警报匹配，则按这些标签对其分组。按组发送通知。如果该字段为空（默认），则所有通知都在一个组中发送。使用特殊标签 `...` 按所有标签对警报分组（这实际上禁用了分组）。

1. 在**定时选项**中，选择以下选项。
   + **组等待**：在发送初始通知前，缓冲同一组警报的等待时间。默认值为 30 秒。
   + **组间隔**：一个组的两次通知之间的最短时间间隔。默认值为 5 分钟。
   + **重复间隔**：如果组内未添加新警报，在重新发送通知之前的最短时间间隔。默认为 4 小时。

1. 选择 **保存** 以保存您的更改。

要创建新的通知策略，您需要遵循其树形结构。在树干（默认策略）上创建的新策略就是树枝。每个分支可以有自己的嵌套策略。这就是为什么您总是在默认策略下或已嵌套的策略下添加新的**嵌套**策略。

**添加新的嵌套策略**

1. 在左侧菜单中，选择**警报**。

1. 选择**通知策略**。

1. 从 **Alertmanager** 下拉列表中，选择要编辑的 Alertmanager。

1. 要添加顶级特定策略，请转到特定路由部分（转到默认策略，或转到要在其中添加新嵌套策略的其他现有策略），然后选择 **\$1 新建嵌套策略**。

1. 在匹配标签部分，添加一个或多个匹配的警报标签的规则。

1. 在**联系点**下拉列表中，如果警报仅与此特定策略匹配，而与任何嵌套策略不匹配，请选择要向其发送通知的联系点。

1. （可选）启用**继续匹配后续同级节点**以继续匹配同级策略，即使警报与当前策略匹配后也是如此。启用此选项后，您可以收到关于一个警报的多个通知。

1. （可选）启用**覆盖分组**以指定与默认策略相同的分组。如果未启用该选项，则使用默认策略分组。

1. （可选）启用**覆盖一般定时**以覆盖组通知策略中配置的定时选项。

1. 选择**保存策略**以保存您的更改。

**添加嵌套策略**

1. 在左侧菜单中，选择**警报**。

1. 选择**通知策略**。

1. 选择要编辑的策略，然后选择 **...**、**编辑**。

1. 进行更改（如添加嵌套策略时）。

1. 保存更改。

**搜索策略**

您可以按*标签匹配程序*或*联系点*在策略树中进行搜索。
+ 要按联系点搜索，请在**按联系点搜索**字段中输入联系点的部分或全部名称。使用该联系点的策略将在用户界面中突出显示。
+ 要按标签搜索，请在**按匹配程序搜索**输入字段中输入有效的标签匹配程序。您可以输入多个匹配程序，以逗号分隔。例如，有效的匹配程序输入为 `severity=high, region=~EMEA|NA`。
**注意**  
按标签搜索时，所有匹配的策略都将完全匹配。不支持部分匹配和正则表达式匹配。

# 管理警报
<a name="v10-alerting-manage"></a>

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

设置警报规则、联系点和通知策略后，您就可以在实践中使用 Grafana Alerting 来管理警报。

**Topics**
+ [自定义通知](v10-alerting-manage-notifications.md)
+ [管理联系点](v10-alerting-manage-contactpoints.md)
+ [静默警报通知](v10-alerting-silences.md)
+ [查看和筛选警报规则](v10-alerting-manage-rules-viewfilter.md)
+ [静音定时](v10-alerting-manage-muting.md)
+ [查看警报规则的状态和运行状况](v10-alerting-manage-rulestate.md)
+ [按警报组查看和筛选](v10-alerting-manage-viewfiltergroups.md)
+ [查看通知错误](v10-alerting-manage-viewnotificationerrors.md)

# 自定义通知
<a name="v10-alerting-manage-notifications"></a>

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

使用通知模板自定义通知。

您可以使用通知模板来更改通知中消息的标题、内容和格式。

通知模板不与 Amazon SNS 或 Slack 等特定联系点集成绑定。但您可以选择为不同的联系点集成创建单独的通知模板。

您可以使用通知模板：
+ 在通知中添加、移除或重新排序信息，包括摘要、描述、标签和注释、值和链接
+ 为文本设置粗体和斜体格式，添加或移除换行符

您不能使用通知模板：
+ 更改 Slack 和 Microsoft Teams 等即时消息服务中的通知设计

**Topics**
+ [使用 Go 的模板语言](v10-alerting-notifications-go-templating.md)
+ [创建通知模板](v10-alerting-create-templates.md)
+ [使用通知模板](#v10-alerting-use-notification-templates)
+ [模板参考](v10-alerting-template-reference.md)

# 使用 Go 的模板语言
<a name="v10-alerting-notifications-go-templating"></a>

****  
本文档主题专为支持 **Grafana 10.x 版本**的 Grafana 工作区而设计。  
对于支持 Grafana 9.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 9](using-grafana-v9.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="v10-go-dot"></a>

里面 text/template 有一个叫做 dot 的特殊光标，写成`.`了。您可以将此光标看作一个变量，其值会根据在模板中使用的位置而变化。例如，在通知模板 `.` 的开头引用 `ExtendedData` 对象，该对象包含多个字段，例如包括 `Alerts`、`Status`、`GroupLabels`、`CommonLabels`、`CommonAnnotations` 和 `ExternalURL`。但是，当在列表上的 `range` 中使用、在 `with` 中使用或编写要在其他模板中使用的功能模板时，dot 可能引用其他内容。您可以在 [创建通知模板](v10-alerting-create-templates.md) 中看到相关示例，在 [模板参考](v10-alerting-template-reference.md) 中看到所有数据和函数。

## 开始和结束标签
<a name="v10-go-openclosetags"></a>

在 text/template 中，模板以 `{{` 开头，以 `}}` 结尾，无论模板是打印变量还是运行 if 语句等控制结构。这与 Jinja 等其他模板语言不同，在 Jinja 中，打印变量使用 `{{` 和 `}}`，控制结构使用 `{%` 和 `%}`。

## Print（打印）
<a name="v10-go-print"></a>

要打印某项的值，请使用 `{{` 和 `}}`。您可以打印 dot 的值、dot 的字段、函数的结果和[变量](#v10-go-variables)的值。例如，要打印 `Alerts` 字段，其中 dot 引用 `ExtendedData`，您可以编写以下内容：

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

## 迭代警报
<a name="v10-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="v10-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 }}
```

## 索引函数
<a name="v10-go-index"></a>

要打印特定的注释或标签，请使用 `index` 函数。

```
{{ range .Alerts }}
The name of the alert is {{ index .Labels "alertname" }}
{{ end }}
```

## If 语句
<a name="v10-go-if"></a>

可在模板中使用 if 语句。例如，要在 `.Alerts` 中没有警报的情况下打印 `There are no alerts`，您可以编写以下内容：

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

## With
<a name="v10-go-with"></a>

With 与 if 语句类似，但又有所不同，`with` 会更新 dot 以引用 with 的值：

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

## 变量
<a name="v10-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="v10-go-rangeindex"></a>

您可以在范围的开头定义 index 和 value 变量来获取范围内每个警报的索引：

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

## 定义模板
<a name="v10-go-define"></a>

您可以使用 `define` 和双引号中的模板名称来定义可在其他模板中使用的模板。定义的模板不能与其他模板同名，包括 `__subject`、`__text_values_list`、`__text_alert_list`、`default.title` 和 `default.message` 等默认模板。如果创建的模板与默认模板或其他通知模板中的模板同名，Grafana 可能会使用其中任何一个模板。当存在两个或多个同名模板时，Grafana 不会阻止或显示错误消息。

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

## 执行模板
<a name="v10-go-execute"></a>

您可以使用 `template`、双引号中的模板名称以及应传递给模板的光标在模板中执行定义的模板：

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

## 将数据传递给模板
<a name="v10-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="v10-go-comments"></a>

您可以使用 `{{/*` 和 `*/}}` 添加注释：

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

要防止注释添加换行符，请使用：

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

## 缩进
<a name="v10-go-indentation"></a>

您可以使用缩进、制表符和空格以及换行符，来提高模板的可读性：

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

但模板中的缩进也将出现在文本中。接下来，我们看如何将其移除。

## 移除空格和换行符
<a name="v10-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="v10-alerting-create-templates"></a>

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

创建可重用的通知模板发送给联系点。

您可以向通知模板添加一个或多个模板。

通知模板名称必须唯一。同一通知模板或不同通知模板中不能有两个同名的模板。避免定义与默认模板同名的模板，例如：`__subject`、`__text_values_list`、`__text_alert_list`、`default.title` 和 `default.message`。

在“联系点”选项卡中，您可以看到通知模板的列表。

## 创建通知模板
<a name="v10-alerting-creating-templates"></a>

**创建通知模板**

1. 选择**警报**、**联系点**。

1. 选择**通知模板**选项卡，然后选择 **\$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. 选择**通知模板**选项卡，然后选择 **\$1 添加通知模板**。

1. 输入整个通知模板的名称。例如 `email`。

1. 在内容字段中写入每个模板，包括每个模板开头和结尾的 `{{ define "name-of-template" }}` 和 `{{ end }}`。您可以为通知模板中的每个模板使用描述性名称，例如，`email.subject` 或 `email.message`。在这种情况下，不要重复使用您在上面输入的通知模板的名称。

   后面的部分展示了您可能创建的模板的详细示例。

1. 点击保存。

## 预览通知模板
<a name="v10-alerting-preview-templates"></a>

在联系点中使用通知模板之前，先预览通知模板的外观，这有助于您了解创建的模板效果，并允许在保存模板之前修复任何错误。

**注意**  
通知预览仅适用于 Grafana Alertmanager。

**预览通知模板**

1. 选择**警报**、**联系点**。

1. 选择**通知模板**选项卡，然后选择 **\$1 添加通知模板**，或添加现有模板。

1. 添加或更新模板内容。

   提供了默认数据，您可以向其中添加或编辑警报数据以及警报实例。您可以直接在有效载荷数据窗口中添加警报数据，或者单击**选择警报实例**或**添加自定义警报**。

1. [可选] 要从现有警报实例中添加警报数据，请执行以下操作：

   1. 选择**选择警报实例**。

   1. 将鼠标悬停在警报实例上，可查看有关每个警报实例的更多信息。

   1. 选择**确认**将警报实例添加到有效载荷。

1. [可选] 要使用警报数据编辑器添加警报数据，请选择**添加自定义数据**：

   1. 添加注释、自定义标签或设置控制面板或面板。

   1. 切换“触发”或“已解决”，具体取决于您要在通知中添加触发警报还是已解决警报。

   1. 选择**添加警报数据**。

   1. 选择**刷新预览**，查看模板内容的外观以及相应的有效载荷数据。

   如果模板中存在任何错误，这些错误会显示在预览中，您可以在保存之前进行更正。

1. 保存更改。

## 为消息主题创建模板
<a name="v10-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="v10-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="v10-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 "slack.title" . }}
   ```

## 为 Slack 消息内容创建模板
<a name="v10-alerting-create-template-slack-message"></a>

为 Slack 消息内容创建模板，其中包含所有触发和已解决警报的描述，包括其标签、注释和控制面板 URL。

**注意**  
此模板仅适用于 Grafana 管理的警报。要将模板用于数据来源管理的警报，请删除对 DashboardURL 和 SilenceURL 的引用。有关配置 Prometheus 通知的更多信息，请参阅 [Prometheus 通知文档](https://prometheus.io/docs/alerting/latest/notifications/)。

```
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 "slack.message" . }}
   ```

## 使用共享模板对电子邮件和 Slack 进行模板化
<a name="v10-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="v10-alerting-use-notification-templates"></a>

使用联系点中的模板来自定义通知。

**在创建联系点时使用模板**

1. 从**警报**菜单中，选择**联系点**选项卡，以查看现有联系点列表。

1. 选择 **New (新建)**。或者，您可以选择**编辑**图标来编辑现有联系点。

1. 在**消息**或**主题**等字段中输入要使用的模板。要输入模板，请使用表单`{{ template "template_name" . }}`，*template\$1name*替换为要使用的模板的名称。

1. 选择**保存联系点**。

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

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

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

**警报（类型）**

警报类型包含以下数据。


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

 **ExtendedData**

该 ExtendedData 对象包含以下属性。


| Name | 类型 | 说明 | 示例 | 
| --- | --- | --- | --- | 
|  接收方  |  `string`  |  发送通知的联系点名称。  |  `{{ .Receiver }}`  | 
|  Status  |  `string`  |  如果至少触发一个警报，则状态为 `firing`，否则为 `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="v10-alerting-manage-contactpoints"></a>

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

**联系点**列表视图列出了所有现有联系点和通知模板。

在**联系点**选项卡上，您可以：
+ 搜索联系点和集成的名称和类型。
+ 查看所有现有联系点和集成。
+ 查看每个联系点用于多少个通知策略，并直接导航到链接的通知策略。
+ 查看通知的发送状态。
+ 以 JSON、YAML 或 Terraform 格式导出单个联系点或所有联系点。
+ 删除通知策略不使用的联系点。

在**通知模板**选项卡上，您可以：
+ 查看、编辑、复制或删除现有通知模板。

# 静默警报通知
<a name="v10-alerting-silences"></a>

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

您可以通过*静默*来抑制警报通知。静默只会阻止创建通知：静默不会阻止评估警报规则，也不会阻止警报实例显示在用户界面中。当警报静默时，您可以指定抑制警报的时间范围。

**注意**  
要按固定的时间间隔（例如，在定期维护期间）抑制警报通知，请使用 [静音定时](v10-alerting-manage-muting.md) 而不是静默。

**添加静默**

1. 在 Grafana 控制台的 Grafana 菜单中，选择**警报**。

1. 选择**静默**。

1. 从 **Alertmanager** 下拉列表中选择 Alertmanager。

1. 选择**创建静默**。

1. 在**静默开始和结束**中选择开始和结束日期，以指示静默应何时生效和结束。

1. 除了设置结束时间之外，还可以在**持续时间**中指定强制静默的时长。这会自动更新**静默开始和结束**字段中的结束时间。

1. 在**标签**和**值**字段中，输入一个或多个*匹配标签*。匹配程序决定静默适用于哪些规则。任何匹配的警报（处于触发状态）都将显示在**受影响的警报实例**字段中。

1. （可选）添加**注释**以描述静默。

1. 选择**提交**。

**编辑静默**

1. 在 Grafana 控制台的 Grafana 菜单中，选择**警报**。

1. 选择**静默**以查看现有静默列表。

1. 找到要编辑的静默，然后选择**编辑**（钢笔图标）。

1. 进行所需的更改，然后选择**提交**以保存更改。

您可以选择**编辑**图标（钢笔）来编辑现有静默。

**创建指向静默表单的 URL 链接**

链接到静默表单时，通过 `matcher` 和 `comment` 查询参数提供默认匹配标签和注释。`matcher` 参数应采用以下格式 `[label][operator][value]`，其中 `operator` 参数可以是以下格式之一：`=` （等于，非正则表达式）、`!=`（不等于，非正则表达式）、`=~`（等于，正则表达式）、`!~`（不等于，正则表达式）。URL 可以包含许多带有 `matcher` 键的查询参数。例如，要链接到带有匹配标签 `severity=critical` & `cluster!~europe-.*` 和注释 `Silence critical EU alerts` 的静默表单，请创建一个 URL `https://mygrafana/alerting/silence/new?matcher=severity%3Dcritical&matcher=cluster!~europe-*&comment=Silence%20critical%20EU%20alert`。

要链接到外部 Alertmanager 的新静默页面，请添加 `alertmanager` 查询参数

**移除静默**

1. 在 Grafana 控制台的 Grafana 菜单中，选择**警报**。

1. 选择**静默**以查看现有静默列表。

1. 选择要结束的静默，然后选择**取消静默**。这将结束警报抑制。
**注意**  
取消静默会结束警报抑制，就像为当前时间设置的结束时间一样。已结束（自动或手动）的静默会保留并列出五天。您无法从列表中手动删除静默。

# 查看和筛选警报规则
<a name="v10-alerting-manage-rules-viewfilter"></a>

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

**警报**页面列出了警报规则。默认情况下，规则按数据来源类型分组。**Grafana** 部分列出了 Grafana 管理的规则。此处还列出了 Prometheus 兼容的数据来源的警报规则。您可以查看兼容 Prometheus 的数据来源的警报规则，但无法编辑。

Mimir/Cortex/Loki规则部分列出了 Mimir、Cortex 或 Loki 数据源的所有规则。本节还列出了云警报规则。

管理大量警报时，可使用扩展的警报规则搜索功能筛选文件夹、评估组和规则。此外，您还可以按标签、状态、类型和运行状况等属性筛选警报规则。

## 查看警报规则
<a name="v10-alerting-manage-rules-view"></a>

使用 Grafana 警报，您可以在一个页面中查看所有警报。

**查看警报详细信息**

1. 在 Grafana 控制台的 Grafana 菜单中，选择**警报**和**警报规则**。默认情况下，显示列表视图。

1. 在**查看方式**中，您可以选择自己喜欢的选项，在分组、列表和状态视图之间切换。

1. 展开规则行可查看规则标签、注释、数据来源、规则查询以及规则生成的警报实例列表。

在此页面中，您还可以创建警报规则副本，以便重用现有规则。

## 导出警报规则
<a name="v10-alerting-manage-rules-export"></a>

您可以在 Grafana 工作区中将规则导出为 YAML 或 JSON。
+ 选择每个警报规则组旁边的**导出规则组**图标，以导出为 YAML、JSON 或 Terraform。
+ 选择**导出规则**将所有 Grafana 管理的警报规则导出为 YAML、JSON 或 Terraform。
+ 选择组中每个警报规则旁边的**更多**和**修改导出**，编辑预置的警报规则并导出修改后的版本。

## 查看预置警报的查询定义
<a name="v10-alerting-manage-rules-querydef"></a>

查看预置警报的只读查询定义。快速检查您的警报规则查询是否正确，无需深入 "as-code" 存储库中查找规则定义。

**分组视图**

分组视图显示按文件夹分组的 Grafana 警报规则以及按 `namespace` \$1 `group` 分组的 Loki 或 Prometheus 警报规则。这是默认的规则列表视图，用于管理规则。您可以展开每个组，查看该组中的规则列表。进一步展开规则，查看详细信息。您还可以展开操作按钮和规则产生的警报，查看其详细信息。

**状态视图**

状态视图显示按状态分组的警报规则。使用此视图可以大致了解哪些规则处于何种状态。可以展开每条规则查看其详细信息。其中包括操作按钮和由此规则生成的任何警报，而每个警报都可以进一步展开以查看其详细信息。

## 筛选警报规则
<a name="v10-alerting-manage-rules-filter"></a>

您可以通过多种方式筛选**警报**页面上显示的警报规则。

**筛选警报规则**

1. 从**选择数据来源**中，选择一个数据来源。您可以看到查询选定数据来源的警报规则。

1. 在**按标签搜索**中，使用标签选择器输入搜索条件。例如 `environment=production;region=~US|EU,severity!=warning`。

1. 从**按状态筛选警报**中，选择要查看的警报状态。您可以看到与该状态匹配的警报规则。与其他状态匹配的规则将会隐藏。

# 静音定时
<a name="v10-alerting-manage-muting"></a>

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

静音定时是一个重复的时间间隔，在此期间，不会针对某个策略生成或发送新的通知。使用静音定时可防止警报在特定的重复时间段（如定期维护时间段）内触发。

与静默类似，静音定时不会阻止对警报规则进行评估，也不会阻止警报实例显示在用户界面中。只会阻止创建通知。

您可以配置 Grafana 管理的静音定时，以及外部 Alertmanager 数据来源的静音定时。

## 静音定时与静默
<a name="v10-alerting-manage-muting-compare"></a>

下表重点说明了静音定时与静默之间的区别。


| 静音定时 | 静默 | 
| --- | --- | 
| 使用可重复发生的时间间隔定义。 | 有固定的开始时间和结束时间。 | 
| 创建后添加到通知策略中。 | 使用标签与警报进行匹配，以确定是否静默。 | 

## 添加静音定时
<a name="v10-alerting-manage-muting-add"></a>

您可以在 Grafana 工作区中创建静音定时。

**添加静音定时**

1. 在 Grafana 控制台的 Grafana 菜单中，选择**警报**。

1. 选择**通知策略**，然后选择**静音定时**选项卡。

1. 从 **Alertmanager** 下拉列表中，选择要编辑的 Alertmanager。

1. 选择 **\$1 添加静音定时**按钮。

1. 填写表单以创建一个[时间间隔](#v10-alerting-manage-muting-interval)，以匹配您的静音定时。

1. 保存静音定时。

## 向通知策略添加静音定时
<a name="v10-alerting-manage-muting-add-notif"></a>

设置静音定时后，就可以将其添加到要以定期间隔静音的通知策略中使用。

**向通知策略添加静音定时**

1. 在 Grafana 控制台的 Grafana 菜单中，选择**警报**。

1. 选择**通知策略**，然后选择**通知策略**选项卡。

1. 选择要向其添加静音定时的通知策略，然后选择 **...**、**编辑**。

1. 从**静音定时**下拉列表中，选择要添加到策略中的静音定时。

1. 保存更改。

## 时间间隔
<a name="v10-alerting-manage-muting-interval"></a>

时间间隔是抑制警报的特定持续时间。持续时间通常包括特定的时间范围以及一周、一月或一年中的几天。

支持的时间间隔选项包括：
+ **时间范围**：包含开始时间但不包含结束时间的时间（如果未选择位置，则以 UTC 为单位，否则为本地时间）。
+ **位置**：设置定时的位置，时间范围以该位置的当地时间显示。
+ **星期几**：一周中的哪几天。例如 `monday:thursday`。
+ **月中日期**：一个月中的哪几天。值范围为 `1` 到 `31`。负值可按相反顺序指定月中日期，因此 `-1` 代表月中最后一天。
+ **月份**：一年中的月份，可以是数字名称，也可以是完整日历月名称。例如 `1, may:august`。
+ **年份**：间隔的年份。例如 `2023:2024`。

这些元素中的每一个都可以是一个列表，并且必须满足元素中的至少一项才能匹配。字段还支持范围，使用 `:`。例如 `monday:thursday`。

如果字段留空，则任何时刻都将与该字段匹配。要匹配完整的时间间隔，所有字段必须匹配。静音定时可以包含多个时间间隔。

如果要指定确切的持续时间，请指定该持续时间所需的所有选项。例如，如果您想为当月第一个星期一（3 月、6 月、9 月和 12 月）创建一个介于 12:00 和 24:00 UTC 之间的时间间隔，则您的时间间隔规范可以是：
+ 时间范围：
  + 开始时间：`12:00`
  + 结束时间：`24:00`
+ 星期几：`monday`
+ 月份：`3, 6, 9, 12`
+ 月中日期：`1:7`

# 查看警报规则的状态和运行状况
<a name="v10-alerting-manage-rulestate"></a>

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

警报规则的状态和运行状况提供了警报的几个关键状态指标。

共有三个组件：
+ [警报规则状态](#v10-alerting-manage-rulestate-state)
+ [警报实例状态](#v10-alerting-manage-rulestate-instance)
+ [警报规则运行状况](#v10-alerting-manage-rulestate-health)

尽管相关，但每个组件传达的信息略有不同。

**查看警报规则的状态和运行状况**

1. 在 Grafana 控制台的 Grafana 菜单中，选择**警报**。

1. 选择**警报规则**以查看现有警报的列表。

1. 选择一条警报规则以查看其状态和运行状况。

## 警报规则状态
<a name="v10-alerting-manage-rulestate-state"></a>

警报规则可能处于以下任何状态：


| 州 | 说明 | 
| --- | --- | 
| 正常 | 评估引擎返回的时间序列均未处于 pending 或 firing 状态。 | 
| 待处理 | 评估引擎返回的时间序列中至少有一个处于 pending 状态。 | 
| 触发 | 评估引擎返回的时间序列中至少有一个处于 firing 状态。 | 

**注意**  
警报先过渡到 `pending`，然后过渡到 `firing`，因此至少需要两个评估周期才会触发警报。

## 警报实例状态
<a name="v10-alerting-manage-rulestate-instance"></a>

警报实例可能处于以下任何状态：


| 州 | 说明 | 
| --- | --- | 
| 正常 | 既不是 pending 也不是 firing 的警报状态。一切正常。 | 
| 待处理 | 警报处于活动状态的时间少于配置的阈值持续时间。 | 
| 提示 | 警报处于活动状态的时间超过配置的阈值持续时间。 | 
| 无数据 | 在配置的时间窗口内未收到任何数据。 | 
| 提示 | 尝试评估警报规则时出错。 | 

## 保留上一状态
<a name="v10-alerting-manage-rulestate-keepstate"></a>

可以将警报规则配置为在遇到 `NoData` 或 `Error` 状态时保留上一个状态。这既可以防止警报触发，也可以阻止解决和重新触发。与正常评估一样，待处理期过后，警报规则将从 `pending` 变为 `firing`。

## 警报规则运行状况
<a name="v10-alerting-manage-rulestate-health"></a>

警报规则可能具有以下运行状况之一。


| 州 | 说明 | 
| --- | --- | 
| Ok | 评估警报规则时无错误。 | 
| 错误 | 评估警报规则时出错。 | 
| NoData | 规则评估期间返回的至少一个时间序列中没有数据。 | 
| \$1状态\$1， KeepLast | 该规则本应收到另一种状态，但配置为保留警报规则的最后状态。 | 

## 特殊警报 NoData 和错误
<a name="v10-alerting-manage-rulestate-special"></a>

当警报规则的评估产生 `NoData` 或 `Error` 状态时，Grafana Alerting 将生成具有以下附加标签的特殊警报。


| 标签 | 说明 | 
| --- | --- | 
| alertname | DatasourceNoData 或 DatasourceError，视状态而定。 | 
| datasource\$1uid | 导致该状态的数据来源 UID。 | 

**注意**  
如 [配置 Grafana 管理的警报规则](v10-alerting-configure-grafanamanaged.md) 主题所述，您需要在警报规则中将无数据或错误处理设置为 `NoData` 或 `Error`，以生成其他标签。

您可以像处理常规警报一样处理这些警报，包括添加静默、路由到联系点等。

# 按警报组查看和筛选
<a name="v10-alerting-manage-viewfiltergroups"></a>

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

警报组显示来自 Alertmanager 实例的分组警报。默认情况下，警报规则按通知策略中默认策略的标签键进行分组。将常见警报规则分组到一个警报组中可以防止触发重复的警报规则。

您可以查看警报组，也可以筛选符合特定条件的警报规则。

**查看警报分组**

1. 在 Grafana 控制台的 Grafana 菜单中，选择**警报**。

1. 选择**组**以查看现有组。

1. 从 **Alertmanager** 下拉菜单中，选择外部 Alertmanager 作为数据来源。

1. 从**自定义分组依据**下拉列表中，选择标签组合，以查看默认分组以外的分组。这对于调试和验证通知策略分组非常有用。

如果警报不包含根策略分组或自定义分组中指定的标签，则会将警报添加到标题为 `No grouping` 的全包分组中。

您可以按标签或警报状态筛选警报。

**按标签筛选**
+ 在**搜索**中，输入现有标签，以查看与该标签匹配的警报。

  例如 `environment=production,region=~US|EU,severity!=warning`。

**按状态筛选**
+ 在**状态**中，从“活动”、“已抑制”或“未处理”状态中选择，以查看与所选状态匹配的警报。所有其他警报均已隐藏。

# 查看通知错误
<a name="v10-alerting-manage-viewnotificationerrors"></a>

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

查看通知错误，了解发送失败或未收到通知的原因。

**注意**  
只有 Grafana Alertmanager 支持此功能。

**查看通知错误**

1. 在左侧菜单中，选择**警报**，然后选择**联系点**。

   如果任何联系点出现故障，工作区的右上角会显示一条消息，提醒您存在错误以及错误的数量。

1. 选择某个联系点，查看该联系点的错误详情。

   如果将鼠标悬停在错误图标上，则会显示错误详情。

   如果联系点有多个集成，您会看到列出的每个集成的所有错误。

1. 在“运行状况”列中，检查通知的状态。

   可能是“正常”、“未尝试”或“错误”。

# 使用 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. 在“运行状况”列中，检查通知的状态。

   可能是“正常”、“未尝试”或“错误”。

# 使用 Grafana 版本 8
<a name="using-grafana-v8"></a>

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

创建 Grafana 工作区时，您可以选择使用哪个版本的 Grafana。以下主题介绍了如何使用运行 Grafana 版本 8 的 Grafana 工作区。

**Topics**
+ [面板](Grafana-panels.md)
+ [控制面板](dashboard-overview.md)
+ [Explore](explore.md)
+ [链接](linking-in-Amazon-Managed-Service-for-Grafana.md)
+ [模板和变量](templates-and-variables.md)
+ [Grafana Alerting](alerts-overview.md)

# 面板
<a name="Grafana-panels"></a>

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

该面板是 Grafana 服务器中的基本可视化构建块。面板是一个或多个查询的可视表示，但少数特殊用途面板除外。查询显示一段时间内的数据。所显示数据的范围从温度波动到当前服务器状态，再到日志或警报列表。

每个面板都有一个特定于面板中所选数据来源的查询编辑器。查询编辑器允许您提取可视化效果以显示在面板上。



要显示数据，您的工作区中必须至少有一个数据来源。有关数据来源的详细信息，请参阅 [连接到数据来源](AMG-data-sources.md)。

每个面板都有各种各样的样式和格式选项。可以拖动面板、将其重新排列和调整其大小。

**Topics**
+ [添加面板](add-a-panel-to-a-dashboard.md)
+ [删除面板](Deleting-a-panel.md)
+ [查询](panel-queries.md)
+ [已记录查询](recorded-queries.md)
+ [转换](panel-transformations.md)
+ [字段选项和覆盖](field-options-overrides.md)
+ [面板编辑器](AMG-panel-editor.md)
+ [库面板](AMG-library-panel.md)
+ [可视化](AMG-visualizations.md)

# 添加面板
<a name="add-a-panel-to-a-dashboard"></a>

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

 您可以使用面板，以可视化形式显示数据。本主题将引导您完成构建面板的基本步骤。

**要将面板添加到控制面板**

1.  选择要向其中添加面板的控制面板。

1.  选择**添加面板**图标。

1.  选择**添加新面板**。

    Grafana 工作区会创建一个空的图表面板，并在其中选择您的默认数据来源。

1.  我们建议您为面板添加有用的标题和描述（虽然这不是必需操作）。您可以选择使用在任一字段中定义的变量，但不能使用全局变量。有关更多信息，请参阅 [模板和变量](templates-and-variables.md)。
   + **面板标题**：在此字段中输入的文本将显示在面板编辑器和控制面板中面板的顶部。
   + **描述**：在此字段输入的文本将显示在面板左上角的工具提示中。请为面板和要显示的数据编写描述。

1. 为面板编写查询。要显示可视化结果，每个面板至少需要一个查询。您可以在面板编辑器的**查询**选项卡上编写查询。有关更多信息，请参阅 [查询](panel-queries.md)。

   1. 选择一个数据来源。在**查询**选项卡的第一行，选择下拉列表，查看所有可用的数据来源。此列表包括您添加的所有数据来源。有关数据来源的详细信息，请参阅 [连接到数据来源](AMG-data-sources.md)。

   1. 使用数据来源的查询语言编写或构造查询。选项会有所不同。有关具体指南，请参阅特定数据来源的文档。

1.  在**面板**选项卡的**可视化**部分，选择一种可视化类型。Grafana 工作区将显示应用了该可视化类型的查询结果预览。

1. 我们建议您在选择**保存**之前，添加备注来描述您的更改。如果您需要将控制面板恢复到以前的版本，注释会很有帮助。

1.  要保存控制面板，请在屏幕右上角选择**保存**。

# 删除面板
<a name="Deleting-a-panel"></a>

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

要删除 Grafana 中的面板，请完成以下步骤：
+  选择面板标题旁边的下拉列表并选择**移除面板**。

或者
+ 将指针悬停在面板上，然后使用键盘快捷键序列 "p r"。

# 查询
<a name="panel-queries"></a>

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

 Grafana 工作区面板使用*查询*与数据来源进行通信，以获取用于可视化的数据。查询是用数据来源使用的查询语言编写的问题。如果查询格式正确，则数据来源会做出响应。在面板数据来源选项中，您可以调整向数据来源发送查询的频率以及收集的数据点数量。

 Grafana 工作区每个面板最多支持 26 个查询。

## 查询编辑器
<a name="query-editors"></a>

 查询编辑器是帮助您编写查询的表单。根据您的数据来源，查询编辑器可能会提供自动完成功能、指标名称或变量建议。

 由于查询语言之间的差异，数据来源的查询编辑器可能看起来有所不同。

## 查询语法
<a name="query-syntax"></a>

 数据来源有不同的查询语言和语法来请求数据。以下是两个查询示例。

 **PostgreSQL** 

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

 **PromQL** 

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

 有关为数据来源编写查询的详细信息，请参阅该数据来源的文档。[连接到数据来源](AMG-data-sources.md) 中列出了数据来源。

## 查询选项卡 UI
<a name="query-tab-ui"></a>

 **查询**选项卡由以下元素组成：
+  数据来源选择器 
+  查询选项 
+  查询检查器按钮 
+  查询编辑器列表 

### 数据来源选择器
<a name="data-source-selector"></a>

 数据来源选择器是一个下拉列表。选择它可选择已添加的数据来源。创建面板时，Amazon Managed Grafana 会自动选择您的默认数据来源。有关数据来源的详细信息，请参阅 [连接到数据来源](AMG-data-sources.md)。

 除了您在 Grafana 工作区中配置的数据来源外，还有三个特殊的数据来源可用。
+ **TestDataDB** — 生成随机游走数据的内置数据源。Grafana 数据来源对于测试可视化和运行实验非常有用。
+  **混合**：用于在同一面板中查询多个数据来源的数据来源。选择此数据来源后，您可以为添加的每个新查询选择一个数据来源。
  +  第一个查询将使用在您选择**混合**之前选择的数据来源。
  +  您不能将现有查询更改为使用混合数据来源。
+ **控制面板**：用于在同一控制面板中使用来自其他面板的结果集的数据来源。

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

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

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

 可以使用以下面板中的数据来源查询选项：
+  **最大数据点数**：如果数据来源支持该选项，则为返回的每个序列设置最大数据点数。如果查询返回的数据点数超过了最大数据点设置，则数据来源会合并这些数据点（通过按平均值或最大值或其他函数将它们聚合在一起来减少返回的数据点数）。

   限制点数的主要原因有两个：性能和让线变得平滑。默认值为图表的宽度（或像素数），这样可以避免数据点数超过图形面板所能显示的数量。

   对于流式处理数据，最大数据点值用于滚动缓冲区。（流式处理是一种持续的数据流，而缓冲是将数据流分成块的一种方式）。
+  **最小间隔**：为自动计算的间隔设置最小限制，通常是最小抓取间隔。如果每 15 秒保存一次数据点，则无需将间隔设置为小于该间隔。另一个用例是将其设置为比抓取间隔更高的最小值，以获得更粗粒度、运行更良好的查询。
+  **间隔**：按时间对数据点进行聚合或分组时可以使用的时间范围。

   Amazon Managed Grafana 会自动计算适当的间隔，该间隔可用作模板化查询中的变量。变量要么以秒为单位：`$__interval`；要么以毫秒为单位：`$__interval_ms`。它通常用于聚合函数，例如 `sum` 或 `average`。例如，这是一个使用间隔变量 `rate(http_requests_total[$__interval])` 的 Prometheus 查询。

   此自动间隔是根据图形的宽度计算的。如果用户缩小很多，则间隔会变大，从而获得更粗粒度的聚合。如果用户放大，则间隔会缩短，从而获得更细粒度的聚合。

   有关更多信息，请参阅 [全局变量](variables-types.md#global-variables)。
+  **相对时间**：覆盖各个面板的相对时间范围，使它们与控制面板右上角控制面板时间选择器中所选择的时间不同。这使您能够在同一个控制面板上显示不同时间段或日期的指标。
+  **时间移位**：提供另一种方法来覆盖各个面板的时间范围。此功能仅适用于相对时间范围，您可以调整时间范围。

   例如，您可以将面板的时间范围移至比控制面板时间选择器早 2 小时。有关更多信息，请参阅 [时间范围控件](dashboard-time-range-controls.md)。
+  **缓存超时**：（仅当此字段在您的数据来源中可用时，您才能看到它。） 如果您的时间序列存储具有查询缓存，则覆盖默认的缓存超时。它被指定为以秒为单位的数值。

### 查询检查器按钮
<a name="query-inspector-button"></a>

 您可以选择**查询检查器**来打开面板检查器的**查询**选项卡。在**查询**选项卡上，您可以看到面板发送的查询请求以及响应。

 选择**刷新**可查看此面板向服务器发送的请求的全文。

**注意**  
 在查询检查器返回结果之前，您需要至少添加一个查询。

 有关面板检查器的详细信息，请参阅 [检查面板](inspect-a-panel.md)。

### 查询编辑器列表
<a name="query-editor-list"></a>

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

## 在面板之间共享查询结果
<a name="share-query-results-between-panels"></a>

 通过 Amazon Managed Grafana，您可以将一个面板中的查询结果用于控制面板中的任何其他面板。跨面板共享查询结果可以减少对数据来源的查询次数，从而提高控制面板的性能。

 控制面板数据来源允许您在控制面板中选择一个面板，其中包含要共享结果的查询。Amazon Managed Grafana 没有为每个面板发送单独的查询，而是发送一个查询，而其他面板则使用查询结果来构造可视化。

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

**要与另一个面板共享数据来源查询**

1.  创建控制面板。有关更多信息，请参阅 [创建控制面板](getting-started-grafanaui.md#create-a-dashboard)。

1.  添加面板。有关更多信息，请参阅 [添加面板](add-a-panel-to-a-dashboard.md)。

1.  将标题更改为 **Source panel**。您将使用此面板作为其他面板的来源。定义要共享的一个或多个查询。如果您目前没有可用的数据来源，则可以使用 **Grafana** 数据来源，它会返回一个可用于测试的随机时间序列。

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

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

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

 要转到定义查询的面板，请选择该查询。

# 已记录查询
<a name="recorded-queries"></a>

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

您可以通过使用已记录查询按设定的间隔拍摄数据点的快照，从而查看一段时间内的趋势。这可以让您深入了解历史趋势。

对于不返回时间序列的插件，绘制历史数据可能会很有用。例如，您可能想通过查询**ServiceNow**来查看请求响应时间的历史记录，但它只能返回当前 point-in-time指标。

## 已记录查询是如何运作的
<a name="how-recorded-queries-work"></a>

已记录查询仅适用于后端数据来源插件。有关详细信息，请参阅[后端数据来源插件](https://grafana.com/tutorials/build-a-data-source-backend-plugin/)。您可以记录三种类型的查询：
+ 单行和列：返回单行和单列的查询。
+ 行计数：返回有意义的行计数的查询。
+ 表达式：任意表达式。要了解有关创建和使用表达式的更多信息，请参阅 [Expressions](https://grafana.com/docs/grafana/next/panels-visualizations/query-transform-data/expression-queries/)。

创建或启用已记录查询后，它会立即创建快照并继续按设定的时间间隔创建快照。当已记录查询被禁用、删除或 Grafana 未运行时，该查询会停止拍摄快照。通过运行已记录查询并将每个结果转发到启用了远程写入功能的 Prometheus 实例，在后端收集数据点。

**注意**  
必须先配置 Prometheus 数据来源并将其与远程写入目标相关联，然后才能使用已记录查询。

## 创建已记录查询
<a name="create-a-recorded-query"></a>

要创建已记录查询，请完成以下步骤：

1. 在编辑面板中查找或创建要在控制面板上记录的查询。该查询只能返回一行和一列。如果返回的结果更多，您仍然可以使用*计数*选项记录返回的结果数。查询的数据来源必须是后端数据来源。表达式可用于聚合来自时间序列查询的数据。要了解有关创建和使用表达式的更多信息，请参阅[表达式](https://grafana.com/docs/grafana/next/panels-visualizations/query-transform-data/expression-queries/)。

1. 选择位于查询编辑器中的**记录查询**菜单。

1. 输入已记录查询信息。除非另有说明，否则所有字段均为必填字段。
   + 名称：已记录查询的名称。
   + 描述：（可选）描述您希望已记录查询在已记录查询列表中的显示方式。
   + 间隔：拍摄快照的时间间隔。该间隔从您创建已记录查询时开始，如果您暂停或删除已记录查询，则间隔停止。有关暂停和删除已记录查询的更多信息，请参阅[管理已记录查询](https://grafana.com/docs/grafana/latest/enterprise/recorded-queries/#manage-recorded-queries)。
   + 范围：查询的相对时间范围。如果您选择的范围为 30m，间隔为 1h，则查询将在过去 30 分钟内每小时拍摄一次快照。
   + 对查询结果计数：如果您想对查询返回的行数进行计数，请启用此选项。如果此选项处于关闭状态，则您的查询必须返回一行，其中包含一个值。

1. 选择测试已记录查询按钮，测试您的已记录查询。

1. 选择**开始记录查询**。

## 添加已记录查询
<a name="Adding-a-recorded-query"></a>

您可以将现有的已记录查询添加到控制面板中的面板。对于您添加的每个已记录查询，都会创建一个 Prometheus 查询：`generated_recorded_query_name{id="generated_id", name="recorded query name"}`。从 Prometheus 创建的查询会返回所有已记录查询中收集的快照。

1. 在控制面板中导航到要在其中添加已记录查询的面板。

1. 选择 **\$1 已记录查询**菜单。

1. 如果要按数据来源筛选已记录查询，请从“按数据来源筛选”下拉菜单中选择一个数据来源。

1. 在已记录查询上选择**添加**菜单，将其添加到面板中。

在将已记录查询添加到面板后，面板数据来源将变为 `-- Mixed --`。您的已记录查询由 `Prometheus` 查询表示，其中名称标签与已记录查询名称相匹配。要了解有关 Prometheus 数据来源的更多信息，请参阅 [Prometheus](https://grafana.com/docs/grafana/latest/datasources/prometheus/)。

如果在添加已记录查询后，出现了包含 `-- Mixed --` 数据来源而不是 Prometheus 数据来源的查询，则可能意味着没有为已记录查询设置 `Prometheus ` 远程写入目标。要设置远程写入点，请参阅[远程写入目标](https://grafana.com/docs/grafana/latest/enterprise/recorded-queries/#remote-write-target)。

## 使用已记录查询
<a name="using-a-recorded-query"></a>

要使用已记录查询，请创建一个查询并将其添加到控制面板中。之后，可以在**已记录查询**选项卡的**首选项**中对其进行管理。

## 管理已记录查询
<a name="managing-recorded-queries"></a>

可以从“首选项”的“已记录查询”选项卡中暂停或激活已记录查询，也可以删除已记录查询。删除已记录查询会将其从 Grafana 中移除，但在 Prometheus 中收集的信息仍然存在。在恢复已记录查询之前，暂停已记录查询将不再收集新的数据点。

## 远程写入目标
<a name="remote_write_target"></a>

远程写入目标是写入已记录查询数据点的 **Prometheus** 数据来源。您需要启用了远程写入功能的 Prometheus，而且您需要为该 Prometheus 创建一个数据来源。

要编辑远程写入目标，请在**首选项**的**已记录查询**选项卡的控制台菜单中选择**编辑远程写入目标**。选择已启用远程写入功能 **Prometheus** 数据来源，然后输入远程写入路径。

# 转换
<a name="panel-transformations"></a>

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

在结果集传递到可视化之前，转换会对其进行处理。您可以在 Amazon Managed Grafana 面板编辑器的**转换**选项卡中访问转换。

您可以使用转换来重命名字段，将单独的时间序列联接在一起，跨查询进行数学运算等。如果您的控制面板很大，或者查询量很大，那么能够将查询结果从一个面板复用到另一个面板可以带来巨大的性能提升。

**注意**  
转换有时会导致无法对数据绘图。发生这种情况时，Amazon Managed Grafana 会显示有关可视化的建议。选择建议以切换到表可视化。这通常可以帮助您更好地了解转换对您的数据执行了哪些操作。

Amazon Managed Grafana 按照屏幕上列出的顺序应用转换。每次转换都会创建一个新的结果集，该结果集将传递给管道中的下一个转换。

该顺序可以对结果的显示效果产生巨大影响。例如，如果您使用减少转换将一列的所有结果压缩为单个值，则只能对该单个值应用转换。

**先决条件**

在应用转换之前，必须满足以下所有条件：
+ 您已输入查询并从数据来源返回数据。有关查询的详细信息，请参阅[查询](panel-queries.md)。
+ 您应用了支持查询的可视化，例如以下可视化之一：
  + 条形仪表
  + 计量表
  + 图表
  + 热图
  + 日志
  + Stat
  + 表

## 应用转换
<a name="apply-a-transformation"></a>

 可以在面板编辑器底部窗格的**转换**选项卡（位于**查询**选项卡旁边）进行转换。

**要应用转换**

1.  在要添加转换的面板上，选择面板标题，然后选择**编辑**。

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

1.  选择一个转换。

    在出现的转换行中，您可以配置转换选项。

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

 如果您遇到问题，请选择调试图标来[调试您的转换](#debug-transformations)。

 要移除转换，请选择垃圾桶图标。

## 转换类型和选项
<a name="transformation-types-and-options"></a>

 Grafana 工作区包括以下转换。

**Topics**
+ [Reduce](#reduce)
+ [合并](#merge)
+ [按名称筛选](#filter-by-name)
+ [按查询筛选数据](#filter-data-by-query)
+ [整理字段](#organize-fields)
+ [按字段联接（外部联接）](#join-by-field-outer-join)
+ [从计算添加字段](#add-field-from-calculation)
+ [标签到字段](#labels-to-fields)
+ [分组依据](#sort-by)
+ [分组依据](#group-by)
+ [序列到行](#series-to-rows)
+ [按值筛选数据](#filter-data-by-value)
+ [调试转换](#debug-transformations)

### Reduce
<a name="reduce"></a>

 如果要将结果简化为一个值，请应用**减少**转换。减少基本上移除了时间部分。如果可视化为表，则会将一列较少为一行（值）。

 在**计算**字段中，输入一种或多种计算类型。选择以查看计算选项的列表。有关可用计算的信息，请参阅 [计算列表](list-of-calculations.md)。

在您选择了至少一个计算后，Amazon Managed Grafana 会使用您选择的计算显示一个值。如果选择多个计算，则显示多个值。

### 合并
<a name="merge"></a>

 使用此转换将来自多个查询的结果合并为一个结果。这在使用表面板可视化时很有用。可以合并的值将合并到同一行中。如果共享字段包含相同的数据，则可以合并值。

 在以下示例中，两个查询返回表数据。在应用转换之前，数据会被可视化为两个单独的表。

查询 A


|  时间  |  任务  |  正常运行时间  | 
| --- | --- | --- | 
|  2020-07-07 11:34:20  |  节点  |  25260122  | 
|  2020-07-07 11:24:20  |  postgre  |  123001233  | 

查询 B


|  时间  |  任务  |  错误  | 
| --- | --- | --- | 
|  2020-07-07 11:34:20  |  节点  |  15  | 
|  2020-07-07 11:24:20  |  postgre  |  5  | 

 以下是应用**合并**转换后的结果。


|  时间  |  任务  |  错误  |  正常运行时间  | 
| --- | --- | --- | --- | 
|  2020-07-07 11:34:20  |  节点  |  15  |  25260122  | 
|  2020-07-07 11:24:20  |  postgre  |  5  |  123001233  | 

### 按名称筛选
<a name="filter-by-name"></a>

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

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

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

### 按查询筛选数据
<a name="filter-data-by-query"></a>

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

 Amazon Managed Grafana 以深灰色文本显示查询标识字母。要切换筛选，请选择查询标识。如果查询字母是白色的，则会显示结果。如果查询字母是深色的，则会隐藏结果。

### 整理字段
<a name="organize-fields"></a>

 使用此转换可以重命名、重新排序或隐藏查询返回的字段。

**注意**  
 此转换仅适用于具有单个查询的面板。如果您的面板有多个查询，则必须应用**按字段联接（外部联接）**转换或移除多余的查询。

 Amazon Managed Grafana 会显示查询返回的字段列表。您可以进行以下任意更改：
+  通过将光标悬停在字段上来更改字段顺序。光标变成一只手，然后您可以将该字段拖到新的位置。
+  通过选择字段名称旁边的眼睛图标隐藏或显示字段。
+  通过在**重命名**框中键入新名称来重命名字段。

### 按字段联接（外部联接）
<a name="join-by-field-outer-join"></a>

 使用此转换可以按字段联接结果集中的多个时间序列。

 如果要合并查询以便能够计算字段的结果，则此转换非常有用。

### 从计算添加字段
<a name="add-field-from-calculation"></a>

 使用此转换可以添加一个根据其他两个字段计算得出的新字段。每次转换都允许您添加一个新字段。
+  **模式**：选择一种模式：
  +  **减少行**：对选定字段的每一行分别应用所选计算。
  +  **二元选项**：对两个选定字段的单行中的值应用基本的数学运算（`sum`、`multiply` 等等）。
+  **字段名称**：选择要在新字段的计算中使用的字段名称。
+  **计算**：选择在 Amazon Managed Grafana 创建新字段时使用的计算。选择该字段以查看计算选项列表。有关可用计算的信息，请参阅 [计算列表](list-of-calculations.md)。
+  **别名**：（可选）输入新字段的名称。如果将此项保留为空，则将对该字段命名以与计算匹配。
+  **替换所有字段**：（可选）如果您想在可视化中隐藏所有其他字段并仅显示经过计算字段，请使用此选项。

### 标签到字段
<a name="labels-to-fields"></a>

**注意**  
 要应用此转换，您的查询需要返回带标签的字段。

 当您选择此转换时，Amazon Managed Grafana 会自动将所有带标签的数据转换为字段。

 例如，假设有一个查询结果包含两个时间序列。

 1：标签 Server=Server A、Datacenter=EU 2：标签 Server=Server B、Datacenter=EU 

 该转换会生成以下表。


|  时间  |  服务器  |  Datacenter  |  值  | 
| --- | --- | --- | --- | 
|  2020-07-07 11:34:20  |  Server A  |  EU  |  1  | 
|  2020-07-07 11:34:20  |  Server B  |  EU  |  2  | 

 **值字段名称**；如果您选择 `Server` 作为**值字段名称**，则 `Server` 标签的每个值都将获得一个字段。


|  时间  |  Datacenter  |  Server A  |  Server B  | 
| --- | --- | --- | --- | 
|  2020-07-07 11:34:20  |  EU  |  1  |  2  | 

### 分组依据
<a name="sort-by"></a>

此转换按已配置的字段对每个帧进行排序。选中 `reverse` 后，将按相反的顺序返回值。

### 分组依据
<a name="group-by"></a>

 此转换按指定的字段（列）值对数据进行分组，并处理每个组的计算。可用的计算与减少转换的计算相同。

 以下是原始数据的示例：


|  时间  |  Server ID  |  CPU 温度  |  服务器状态  | 
| --- | --- | --- | --- | 
|  2020-07-07 11:34:20  |  server 1  |  80  |  关闭  | 
|  2020-07-07 11:34:20  |  server 3  |  62  |  OK  | 
|  2020-07-07 10:32:20  |  server 2  |  90  |  过载  | 
|  2020-07-07 10:31:22  |  server 3  |  55  |  正常  | 
|  2020-07-07 09:30:57  |  server 3  |  62  |  Rebooting  | 
|  2020-07-07 09:30:05  |  server 2  |  88  |  OK  | 
|  2020-07-07 09:28:06  |  server 1  |  80  |  OK  | 
|  2020-07-07 09:25:05  |  server 2  |  88  |  OK  | 
|  2020-07-07 09:23:07  |  server 1  |  86  |  OK  | 

 该转换分两个步骤。首先，指定一个或多个字段作为数据分组依据。这会将这些字段的所有相同值分组到一起，就像对它们进行排序一样。例如，如果您按 `Server ID` 字段作为**分组依据**，它将按以下方式对数据进行分组：


|  时间  |  Server ID  |  CPU 温度  |  服务器状态  | 
| --- | --- | --- | --- | 
|  2020-07-07 11:34:20  |  server 1  |  80  |  关闭  | 
|  2020-07-07 09:28:06  |  server 1  |  80  |  OK  | 
|  2020-07-07 09:23:07  |  server 1  |  86  |  OK  | 

```
2020-07-07 10:32:20 | server 2 | 90 | Overload
2020-07-07 09:30:05 | server 2 | 88 | OK
2020-07-07 09:25:05 | server 2 | 88 | OK

2020-07-07 11:34:20 | server 3 | 62 | OK
2020-07-07 10:31:22 | server 3 | 55 | OK
2020-07-07 09:30:57 | server 3 | 62 | Rebooting
```

包含相同 `Server ID` 值的所有行将分组在一起。

选择作为数据分组依据的字段后，可以在其他字段上添加各种计算，计算将应用于每组行。例如，您可能想要计算每台服务器的 `CPU temperature` 平均值。您可以添加应用于 `CPU Temperature` 字段的*均值*计算以获得以下结果。


|  Server ID  |  CPU 温度（平均值）  | 
| --- | --- | 
|  server 1  |  82  | 
|  server 2  |  88.6  | 
|  server 3  |  59.6  | 

您可以添加多个计算。例如，您可以使用以下计算。
+  对于字段 `Time`，您可以计算*上次*值，以了解每台服务器上一个数据点的接收时间。
+  对于字段 `Server Status`，您可以计算*上次*值以了解每台服务器上一次的状态值。
+  对于字段 `Temperature`，您还可以计算*上次*值以了解每台服务器的最新监控温度。

 分组依据转换会产生以下结果。


|  Server ID  |  CPU 温度（平均值）  |  CPU 温度（上个值）  |  时间（上个值）  |  服务器状态（上个值）  | 
| --- | --- | --- | --- | --- | 
|  server 1  |  82  |  80  |  2020-07-07 11:34:20  |  关闭  | 
|  server 2  |  88.6  |  90  |  2020-07-07 10:32:20  |  过载  | 
|  server 3  |  59.6  |  62  |  2020-07-07 11:34:20  |  OK  | 

使用此转换，您可以从时间序列中提取一些关键信息，并以便捷的方式显示这些信息。

### 序列到行
<a name="series-to-rows"></a>

使用此转换可将多个时间序列数据查询的结果合并为一个结果。这在使用表面板可视化时很有用。

此转换的结果将包含三列：`Time`、`Metric` 和 `Value`。添加该 `Metric` 列是为了让您可以看到该指标来自哪个查询。通过在来源查询上定义 `Label` 来自定义此值。

在下面的示例中，两个查询返回时间序列数据。在应用转换之前，它被可视化为两个单独的表。

 查询 A 


|  时间  |  温度  | 
| --- | --- | 
|  2020-07-07 11:34:20  |  25  | 
|  2020-07-07 10:31:22  |  22  | 
|  2020-07-07 09:30:05  |  19  | 

 查询 B 


|  时间  |  湿度  | 
| --- | --- | 
|  2020-07-07 11:34:20  |  24  | 
|  2020-07-07 10:32:20  |  29  | 
|  2020-07-07 09:30:57  |  33  | 

 应用 `Series to rows` 转换会产生以下结果。


|  时间  |  指标  |  值  | 
| --- | --- | --- | 
|  2020-07-07 11:34:20  |  温度  |  25  | 
|  2020-07-07 11:34:20  |  湿度  |  22  | 
|  2020-07-07 10:32:20  |  湿度  |  29  | 
|  2020-07-07 10:31:22  |  温度  |  22  | 
|  2020-07-07 09:30:57  |  湿度  |  33  | 
|  2020-07-07 09:30:05  |  温度  |  19  | 

### 按值筛选数据
<a name="filter-data-by-value"></a>

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

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

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

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

您可以向筛选器添加多个条件。当您有多个条件时，可以选择是否要对与添加的所有或任何条件匹配的行应用包含或排除操作。

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

### 调试转换
<a name="debug-transformations"></a>

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

 Amazon Managed Grafana 在转换行下方显示转换调试视图。

# 字段选项和覆盖
<a name="field-options-overrides"></a>

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

 本节介绍了 Amazon Managed Grafana 中的字段选项和字段覆盖以及如何使用它们。

 Grafana 工作空间中使用的数据模型，即数据帧，是一种面向列的表结构，它统一了时间序列和表查询结果。此结构中的每一列都称为*字段*。一个字段可以表示单个时间序列或表列。

 字段选项允许您更改数据在可视化中的显示方式。您应用的选项和覆盖不会更改数据，它们会改变 Amazon Managed Grafana 显示数据的方式。

## 字段选项
<a name="field-options-overview"></a>

 可以在面板编辑器的**字段**选项卡上找到*字段选项*（标准和自定义）。在此选项卡上所做的更改适用于所有字段（即序列和列）。例如，如果将单位更改为百分比，则所有带有数值的字段都将以百分比显示。要了解如何应用字段选项，请参阅[配置所有字段](#configure-all-fields)。

## 字段覆盖
<a name="field-overrides-overview"></a>

 可以在面板编辑器的**覆盖**选项卡上添加*字段覆盖*。您可以在此处添加与**字段**选项卡上相同的选项，但它们仅适用于特定字段。了解如何在 [配置特定字段](#configure-specific-fields) 中应用覆盖。

## 可用的字段选项和覆盖
<a name="available-field-options-and-overrides"></a>

 字段选项类型在字段选项和字段覆盖中都很常见。唯一的区别是更改将应用于所有字段（应用于**字段**选项卡）还是应用于字段的子集（应用于**覆盖**选项卡）。
+  [标准字段选项](#standard-field-options) 适用于所有允许转换的面板可视化。
+  [表字段选项](table-panel.md#table-field-options) 仅应用于表面板可视化。

### 配置所有字段
<a name="configure-all-fields"></a>

 要更改所有字段显示数据的方式，可以更改**字段**选项卡上的选项。然后，在**覆盖**选项卡上，您可以覆盖特定字段的字段选项。有关更多信息，请参阅 [配置特定字段](#configure-specific-fields)。

 例如，您可以通过更改**小数**选项来更改所有字段中显示的小数位数。有关选项的详细信息，请参阅 [标准字段选项](#standard-field-options) 和 [表字段选项](table-panel.md#table-field-options)。

#### 更改字段选项
<a name="change-a-field-option"></a>

 您可以根据需要更改任意数量的选项。

**要更改字段选项**

1.  选择要编辑的面板，选择面板标题，然后选择**编辑**。

1.  选择**字段**选项卡。

1.  找到要更改的选项。您可以定义以下内容：
   +  [标准字段选项](#standard-field-options)，适用于所有允许转换的面板可视化。
   +  [表字段选项](table-panel.md#table-field-options)，仅适用于表面板可视化。

1.  通过在字段中添加值来添加选项。要将选项恢复为默认值，请删除字段中的白色文本。

1.  完成对控制面板的编辑后，选择**保存**。

#### 字段选项示例
<a name="field-option-example"></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  | 

### 配置特定字段
<a name="configure-specific-fields"></a>

 您可以使用覆盖，更改一个或多个字段的设置。覆盖的字段选项与特定可视化中可用的字段选项完全相同。唯一的区别是您可以选择将它们应用于哪些字段。

 例如，您可以通过更改类型与**数值**匹配的**字段**的**小数**选项来更改所有数值字段或列中显示的小数位数。有关选项的更多信息，请参阅[标准字段选项](#standard-field-options)（适用于所有允许转换的面板可视化），以及[表字段选项](table-panel.md#table-field-options)（适用于表面板可视化）。

#### 添加字段覆盖
<a name="add-a-field-override"></a>

 您可以根据需要覆盖任意数量的字段选项。

**添加字段覆盖**

1.  选择要编辑的面板，选择面板标题，然后选择**编辑**。

1.  选择**覆盖**选项卡。

1.  选择**为以下对象添加覆盖**。

1.  选择要对其应用覆盖规则的字段。
   +  **带名称的字段**：使用该选项从所有可用字段的列表中选择一个字段。使用此选择器添加到规则中的属性仅应用于此单个字段。
   +  **名称与正则表达式匹配的字段**：使用该选项来指定要用正则表达式覆盖的字段。使用此选择器向规则添加的属性将应用于字段名称与正则表达式匹配的所有字段。
   +  **带类型的字段**：使用该选项可以按类型选择字段，例如字符串、数值等。使用此选择器添加到规则中的属性将应用于与所选类型匹配的所有字段。

1.  选择**添加覆盖属性**。

1.  选择要应用的字段选项。

1.  通过在字段中添加值来输入选项。要将选项恢复为默认值，请删除字段中的白色文本。

1. 通过选择**添加覆盖属性**继续向该字段添加覆盖，或者您可以选择**添加覆盖**，然后选择其他要添加覆盖的字段。

1.  完成后，选择**保存**。

#### 删除字段覆盖
<a name="delete-a-field-override"></a>

1.  选择包含待删除覆盖的“覆盖”选项卡。

1.  选择覆盖旁边的垃圾桶图标。

#### 字段覆盖示例
<a name="field-override-example"></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  | 

 让我们应用 [字段选项示例](#field-option-example) 中的字段选项来应用摄氏度单位并去掉小数位。这将产生以下表。


|  时间  |  高温  |  低温  |  湿度  | 
| --- | --- | --- | --- | 
|  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="standard-field-options"></a>

 本节介绍可用的字段选项。它们按字母顺序列出。

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

 除非您在正在编辑的字段选项框之外进行选择或按 Enter，否则大多数字段选项不会影响可视化。

 有关应用这些选项的详细信息，请参阅以下章节：
+  [配置所有字段](#configure-all-fields) 
+  [配置特定字段](#configure-specific-fields) 

#### 小数
<a name="decimals"></a>

 此选项设置呈现值时要包含的小数位数。留空，让 Amazon Managed Grafana 使用数据来源提供的小数位数。

 要更改此设置，请在字段中输入一个数字。

#### 数据链接
<a name="data-links-overview"></a>

 此选项控制值或可视化链接到的 URL。有关更多信息和说明，请参阅 [数据链接](data-links.md)。

#### 显示名称
<a name="display-name"></a>

 此选项设置所有字段的显示标题。可以在字段标题中使用变量。有关模板化和模板变量的更多信息，请参阅 [模板和变量](templates-and-variables.md)。

 当显示多个统计数据、字段或序列时，此字段控制每个统计数据中的标题。您可以使用诸如 `${__field.name}` 的表达式以仅在标题中使用序列名称或字段名称。

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


|  表达式语法  |  示例  |  渲染为  |  说明  | 
| --- | --- | --- | --- | 
|  \$1\$1\$1\$1field.displayName\$1  |  与语法相同  |  Temp \$1Loc="PBI", Sensor="3"\$1  |  在 \$1\$1 中显示字段名称和标签（如果存在）。如果响应中只有一个标签键，那么对于标签部分，Amazon Managed 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="max"></a>

 此选项设置百分比阈值计算中使用的最大值。要根据所有序列和字段进行自动计算，请将此设置留空。

#### 最小值
<a name="min"></a>

 此选项设置百分比阈值计算中使用的最小值。要根据所有序列和字段进行自动计算，请将此设置留空。

#### 无值
<a name="no-value"></a>

 输入字段值为空或空值时 Amazon Managed Grafana 应显示的内容。

#### 单位
<a name="unit"></a>

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

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

 您也可以使用单位下拉列表来指定自定义单位、自定义前缀或后缀以及 date/time 格式。

 要选择自定义单位，请输入单位并选择下拉列表中的最后一个 `Custom: xxx` 选项。
+  `suffix:<suffix>` 表示应跟在值后面的自定义单位。
+  `time:<format>`用于自定义 date/time 格式；例如，`time:YYYY-MM-DD`。有关格式语法和选项，请参阅[显示](https://momentjs.com/docs/#/displaying/)。
+  `si:<base scale><unit characters>` 表示自定义 SI 单位；例如 `si: mF`。此选项稍微高级一点，因为您可以同时指定单位和来源数据比例。例如，如果您的来源数据表示为毫（千）单位，请在单位前面加上该 SI 比例字符。
+  `count:<unit>` 表示自定义计数单位。
+  `currency:<unit>` 表示自定义货币单位。

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

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

 Amazon Managed Grafana 有时可以解析字符串并将其显示为数字。要让 Amazon Managed Grafana 显示原始字符串，请创建一个字段覆盖并添加带有 `string` 单位的单位属性。

#### 颜色方案
<a name="color-scheme"></a>

 字段颜色选项定义了 Amazon Managed Grafana 如何为序列或字段着色。这里有多种工作方式不同的模式，它们的效用在很大程度上取决于当前选择的可视化效果。

 连续颜色模式使用相对于最小值和最大值的值百分比来插值颜色。
+  **单色**：使用颜色选择器设置的特定颜色。这在覆盖规则中最有用。
+  **来自阈值**：从匹配阈值派生的颜色。这对于计量表、统计数据和表可视化非常有用。

##### 按序列着色
<a name="color-by-series"></a>

 Amazon Managed Grafana 包含按序列定义颜色的配色方案。例如，这对于图形和饼图很有用。

##### 按值着色
<a name="color-by-value"></a>

 Amazon Managed Grafana 还包括连续（渐变）颜色方案。这对于为单个值着色的可视化非常有用；例如，统计面板和表面板。

#### Thresholds
<a name="thresholds-overview"></a>

 您可以使用阈值根据值更改字段的颜色。有关更多信息和说明，请参阅 [Thresholds](thresholds.md)。

#### 值映射
<a name="value-mapping"></a>

 您可以使用此选项来设置将字段值或值范围转换为显式文本的规则。您可以添加多个值映射。
+  **映射类型**：选择一个选项。
  +  **值**：输入值。如果字段值大于或等于该值，则显示**文本**。
  +  **从**和**至**：输入范围。如果字段值介于或等于该范围内的值，则会显示**文本**。
+  **文本**：字段中条件得到满足时显示的文本。此字段接受变量。

# 面板编辑器
<a name="AMG-panel-editor"></a>

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

 本主题介绍 Amazon Managed Grafana 面板编辑器的各个部分，并包含可查找更多信息的链接。

## 打开面板编辑器
<a name="open-the-panel-editor"></a>

 访问面板编辑器（也称为**编辑面板**屏幕、*编辑模式*或*面板编辑模式*）的方法有多种。
+  选择屏幕顶部的**添加面板**图标，然后选择**添加新面板**。新面板将在面板编辑器中打开。有关如何添加面板的更多信息，请参阅 [添加面板](add-a-panel-to-a-dashboard.md)。
+  选择现有面板的标题，然后选择**编辑**。面板将以编辑模式打开。
+  选择现有面板上的任意位置，然后按键盘上的 **e** 键。面板将以编辑模式打开。

## 调整面板编辑器分区的大小
<a name="resize-panel-editor-sections"></a>

 拖动可调整面板编辑器各分区的大小。如果侧窗格变得太窄，**面板**、**字段**和**覆盖**选项卡将变为下拉列表。

## 面板编辑器的各个部分
<a name="parts-of-the-panel-editor"></a>

 本节介绍面板编辑器屏幕的各个部分，以及与每个部分相关的字段、选项或任务的信息。

### 标题
<a name="header"></a>

 标题部分列出了面板所在控制面板的名称，以及一些控制面板命令。您也可以选择**返回**箭头，返回控制面板。

 在标题的右侧，有以下选项：
+  **控制面板设置（齿轮）图标**：选择该选项，可访问控制面板设置。
+  **丢弃**：选择该选项，将丢弃自上次保存控制面板之后，对面板所做的所有更改。
+  **保存**：选择该选项，将保存控制面板，包括在面板编辑器中所做的所有更改。
+  **应用**：选择该选项，将应用所做的更改，然后关闭面板编辑器，返回控制面板。还需要保存控制面板，以持久保留所应用的更改。

### 可视化预览
<a name="visualization-preview"></a>

 可视化预览部分包含查看选项、时间范围控件、可视化预览以及（如果适用）面板标题、坐标轴和图例。
+  **填充**：可视化预览会填充预览部分的可用空间。如果更改侧窗格的宽度或底部窗格的高度，可视化预览会适应并填充任何可用空间。
+  **适配**：可视化预览会填充可用空间，但保留面板的纵横比。
+  **精确**：可视化预览的大小与控制面板上的大小完全一致。如果可用空间不足，可视化大小会缩减，同时保留纵横比。
+  **时间范围控件**：有关更多信息，请参阅 [时间范围控件](dashboard-time-range-controls.md)。

### 数据部分（底部窗格）
<a name="data-section-bottom-pane"></a>

 数据部分包含用于输入查询、转换数据和创建警报规则（如适用）的选项卡。
+  **查询选项卡**：选择您的数据来源，并在此处输入查询。有关更多信息，请参阅 [查询](panel-queries.md)。
+  **转换选项卡**：应用数据转换。有关更多信息，请参阅 [转换](panel-transformations.md)。
+  **警报选项卡**：编写警报规则。有关更多信息，请参阅 [Grafana Alerting](alerts-overview.md)。

### 面板和字段选项（侧窗格）
<a name="panel-and-field-options-side-pane"></a>

 此部分包含的选项卡可用于控制数据可视化方式的几乎所有方面。并非所有选项卡都适用于每种可视化类型。

 这些选项卡的功能在以下主题中有记录：
+  [添加面板](add-a-panel-to-a-dashboard.md) 
+  [可视化](AMG-visualizations.md) 
+  [字段选项和覆盖](field-options-overrides.md) 
+  [面板链接](panel-links.md) 和 [数据链接](data-links.md)，可帮助您将可视化与其他资源关联起来 

# 库面板
<a name="AMG-library-panel"></a>

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

 库面板使用户能够创建可重复使用的面板，对库面板的一个实例所做的任何更改都会反映在每个控制面板上，并影响使用该面板的所有其他实例。这些面板可以保存在与控制面板相同的文件夹中，并简化面板在多个控制面板间的重复使用。

## 创建库面板
<a name="library-panel-create"></a>

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

**创建库面板**

1. 像平常一样创建面板。您也可以使用现有面板。

1. 选择面板的标题并选择**编辑**。

1. 在面板显示选项侧的窗格中，选择向下箭头选项，对可视化进行更改。

1. 选择**库面板**，然后选择**创建新库面板**。

1. 输入库面板的名称，然后选择文件夹将其保存。

1. 选择**创建库面板**，然后保存控制面板。

您也可以使用任何面板的**共享**选项来创建库面板。

创建之后，您可以使用任何包含该库面板的控制面板来修改库面板。保存库面板更改后，库面板的所有实例都将反映这些修改。

## 添加库面板
<a name="library-panel-add"></a>

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

1. 将鼠标悬停在左侧菜单中的 \$1 选项上，然后选择**创建**。

1. 选择**从面板库添加面板**。

1. 筛选库面板列表，找到想要的面板。

1. 选择该面板并将其添加到控制面板。

## 断开库面板的关联
<a name="library-panel-unlink"></a>

如果您要修改控制面板上的库面板，但不希望影响库面板的所有其他实例，您可以断开库面板的关联。

**要从控制面板断开库面板的关联**

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

1. 选择库面板。您将看到一个列表，列出所有使用该库面板的控制面板。

1. 选择要断开关联并更新的面板。

1. 选择面板的标题并选择**编辑**。

1. 选择**断开关联**。

## 删除库面板
<a name="library-panel-delete"></a>

在删除库面板之前，请确认该面板已不再在任何控制面板上使用。

**删除库面板**

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

1. 选择库面板。您将看到一个列表，列出所有使用该库面板的控制面板。

1. 选择要删除的面板。

1. 选择面板名称旁边的删除图标。

## 面板编辑器的各个部分
<a name="parts-of-the-panel-editor"></a>

 本节介绍面板编辑器屏幕的各个部分，以及与每个部分相关的字段、选项或任务的信息。

### 标题
<a name="header"></a>

 标题部分列出了面板所在控制面板的名称，以及一些控制面板命令。您也可以选择**返回**箭头，返回控制面板。

 在标题的右侧，有以下选项：
+  **控制面板设置（齿轮）图标**：选择该选项，可访问控制面板设置。
+  **丢弃**：选择该选项，将丢弃自上次保存控制面板之后，对面板所做的所有更改。
+  **保存**：选择该选项，将保存控制面板，包括在面板编辑器中所做的所有更改。
+  **应用**：选择该选项，将应用所做的更改，然后关闭面板编辑器，返回控制面板。还需要保存控制面板，以持久保留所应用的更改。

### 可视化预览
<a name="visualization-preview"></a>

 可视化预览部分包含查看选项、时间范围控件、可视化预览以及（如果适用）面板标题、坐标轴和图例。
+  **填充**：可视化预览会填充预览部分的可用空间。如果更改侧窗格的宽度或底部窗格的高度，可视化预览会适应并填充任何可用空间。
+  **适配**：可视化预览会填充可用空间，但保留面板的纵横比。
+  **精确**：可视化预览的大小与控制面板上的大小完全一致。如果可用空间不足，可视化大小会缩减，同时保留纵横比。
+  **时间范围控件**：有关更多信息，请参阅 [时间范围控件](dashboard-time-range-controls.md)。

### 数据部分（底部窗格）
<a name="data-section-bottom-pane"></a>

 数据部分包含用于输入查询、转换数据和创建警报规则（如适用）的选项卡。
+  **查询选项卡**：选择您的数据来源，并在此处输入查询。有关更多信息，请参阅 [查询](panel-queries.md)。
+  **转换选项卡**：应用数据转换。有关更多信息，请参阅 [转换](panel-transformations.md)。
+  **警报选项卡**：编写警报规则。有关更多信息，请参阅 [Grafana Alerting](alerts-overview.md)。

### 面板和字段选项（侧窗格）
<a name="panel-and-field-options-side-pane"></a>

 此部分包含的选项卡可用于控制数据可视化方式的几乎所有方面。并非所有选项卡都适用于每种可视化类型。

 这些选项卡的功能在以下主题中有记录：
+  [添加面板](add-a-panel-to-a-dashboard.md) 
+  [可视化](AMG-visualizations.md) 
+  [字段选项和覆盖](field-options-overrides.md) 
+  [面板链接](panel-links.md) 和 [数据链接](data-links.md)，可帮助您将可视化与其他资源关联起来 

# 可视化
<a name="AMG-visualizations"></a>

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

Amazon Managed Grafana 提供各种可视化功能，以适应不同的应用场景。以下各节列出了 Amazon Managed Grafana 中可用的可视化及其显示设置。

**Topics**
+ [警报列表面板](alert-list-panel.md)
+ [条形图面板](bar-chart-panel.md)
+ [条形仪表面板](alert-panel-bar-gauge-panel.md)
+ [时钟面板](clock-panel.md)
+ [控制面板列表面板](dashboard-list-panel.md)
+ [仪表面板](gauge-panel.md)
+ [Geomap 面板](AMG-Geomap.md)
+ [图形面板](graph-panel.md)
+ [热图](visualization-heatmap.md)
+ [直方图面板](histogram-panel.md)
+ [日志面板](logs-panel.md)
+ [新闻面板](news-panel.md)
+ [节点图形面板（测试版）](node-graph-panel.md)
+ [饼图面板](pie-chart-panel.md)
+ [Plotly 面板](plotly-panel.md)
+ [Sankey 面板](sankey-panel.md)
+ [散点面板](scatter-panel.md)
+ [统计面板](stat-panel.md)
+ [状态时间轴面板](state-timeline-panel.md)
+ [状态历史面板](status-history-panel.md)
+ [表面板](table-panel.md)
+ [文本面板](text-panel.md)
+ [时间序列面板](time-series-panel.md)
+ [Thresholds](thresholds.md)
+ [WindRose](windrose.md)
+ [检查面板](inspect-a-panel.md)
+ [计算列表](list-of-calculations.md)

# 警报列表面板
<a name="alert-list-panel"></a>

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

警报列表面板显示控制面板警报。您可以将列表配置为显示当前状态或最近的状态更改。有关警报的更多信息，请参阅 [Grafana Alerting](alerts-overview.md)。

使用这些设置来改进可视化结果。

## 选项
<a name="alert-list-panel-options"></a>
+  **显示**：选择面板应显示当前警报状态，还是最近的警报状态更改。
+  **最大项目数**：设置要列出的最大警报数。
+  **排序顺序**：选择显示警报的排序方式。
  +  **按字母顺序（升序）**：按字母顺序排列
  +  **按字母顺序（降序）**：按字母顺序倒序排列
  +  **重要性**：根据以下值，按重要性划分，其中 1 为最高：
    + 警报：1
    + 无数据：2
    + 待处理：3
    + 正常：4
    + 已暂停：5
+  **来自此控制面板的警报**：仅显示警报列表所在控制面板的警报。

## 筛选条件
<a name="alerts-panel-filter"></a>

使用以下选项筛选警报，使其与您选择的查询、文件夹或标签相匹配：
+  **警报名称**：输入警报名称查询。
+  **控制面板标题**：输入控制面板标题查询。
+  **文件夹**：选择一个文件夹。仅会显示所选文件夹中控制面板的警报。
+  **控制面板标签**：选择一个或多个标签。仅会显示带有一个或多个标签的控制面板的警报。

## 状态筛选条件
<a name="alert-panel-state-filter"></a>

选择要在此面板中显示的警报状态。
+ 正常
+ 已暂停
+ 无数据
+ 执行错误
+ 警报
+ 待定

# 条形图面板
<a name="bar-chart-panel"></a>

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

通过此面板可视化，您可以绘制分类数据图形。

## 支持的数据格式
<a name="bar-chart-formats"></a>

仅支持一个数据框，且该数据框至少需要一个字符串字段（用作 X 轴或 Y 轴的类别）和一个或多个数值字段。以下是数据格式的示例：


|  浏览器  |  市场占有率  | 
| --- | --- | 
|  Chrome  |  50  | 
|  Internet Explorer  |  17.5  | 

如果您有多个数值字段，面板会显示分组条形图。

### 可视化时间序列或多个结果集
<a name="bar-chart-visualization"></a>

如果您有多个时间序列或表，则首先需要使用 join 或 reduce 转换将其连接。例如，如果您有多个时间序列，并想要比较其最新值和最大值，请添加 Reduce 转换，并在计算下指定最大值和最新值选项。

## 条形图选项
<a name="bar-chart-options"></a>

使用以下选项来优化可视化效果：

**方向**
+  **自动**：Grafana 根据面板尺寸决定条形图的方向。
+  **水平**：将 X 轴设为类别轴。
+  **垂直**：将 Y 轴设为类别轴。

**显示值**

控制值是显示在条形图的顶部还是左侧。
+  **自动**：如果有空间，则显示值。
+  **始终**：始终显示值。
+  **从不**：从不显示值。

**组宽度**控制组的宽度。0=最小宽度，1=最大宽度。

**条形图宽度**控制条形图的宽度。0=最小宽度，1=最大宽度。

**线宽**控制条形图的线宽。

**填充不透明度**控制条形图的填充不透明度。

**渐变模式**设置渐变填充的模式。填充渐变基于线条颜色。要更改颜色，请使用标准颜色方案字段选项。渐变外观受填充不透明度设置的影响。
+  **无**：无渐变填充，这是默认设置。
+  **不透明度**：渐变的透明度是根据 y 轴上的值计算的。填充的不透明度随 Y 轴上的值增加而增加。
+  **色调**：渐变色是根据线条颜色的色调生成的。

**工具提示模式**：当您将光标悬停在可视化上时，Grafana 可显示工具提示。选择工具提示的行为方式。
+  **单个**：悬停工具提示仅显示一个序列，即您将鼠标悬停在可视化上面的序列。
+  **全部**：悬停工具提示显示可视化中的所有序列。Grafana 在工具提示的序列列表中以粗体突出显示您悬停在上面的序列。
+  **隐藏**：与可视化交互时不显示工具提示。

**注意**  
使用覆盖从工具提示隐藏单个序列。

**图例模式**：使用这些设置可以优化图例在可视化中的显示方式。
+  **列表**：以列表形式显示图例。这是图例的默认显示模式。
+  **表**：以表的形式显示图例。
+  **隐藏**：隐藏图例。

**图例放置**：选择图例的放置位置。
+  **底部**：显示在图形下方。
+  **右**：显示在图形右侧。

**图例计算**：选择要在图例中显示的标准计算。可以输入多个值。

**文本大小**：输入一个值以更改条形图上文本的大小。

**轴**：使用以下字段设置来优化轴的显示方式。除非您在正在编辑的字段选项框外部单击或按 Enter 键，否则某些字段选项不会影响可视化。
+  **放置**：设置 y 轴的放置。
+  **自动**：Grafana 会自动为序列分配 Y 轴。当有两个或多个具有不同单位的序列时，Grafana 将左轴分配给第一个单位，将右轴分配给下一个单位。
+  **左**：在左侧显示所有 Y 轴。
+  **右**：在右侧显示所有 Y 轴。
+  **隐藏**：隐藏所有 Y 轴。
+  **标签**：设置 Y 轴文本标签。如果有多个 Y 轴，可使用覆盖分配不同的标签。
+  **宽度**：设置轴的固定宽度。默认情况下，Grafana 会动态计算轴的宽度。

  通过设置轴的宽度，具有不同轴类型的数据可以共享相同的显示比例。这样就可以更容易比较多个图形的数据，因为轴在视觉上不会相互移动或拉伸。
+  **软最小值和软最大值**：设置软最小值或软最大值选项，以更好地控制 Y 轴限制。默认情况下，Grafana 会根据数据集自动设置 Y 轴的范围。

  软最小值或软最大值设置可以防止在数据大部分平缓的情况下，出现山峰状的突起，而从标准最小值和最大值字段选项派生的硬最小值或硬最大值，则可以通过剪裁超过定义点的尖峰，来防止间歇性尖峰压平有用的细节。

  您可以设置标准 min/max 选项来定义 Y 轴的硬限制。

# 条形仪表面板
<a name="alert-panel-bar-gauge-panel"></a>

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

条形仪表可将每个字段归约为单个值，从而简化数据。您可以为 Amazon Managed Grafana 选择计算归约的方式。

此面板可以显示一个或多个条形仪表，具体取决于查询返回的序列、行或列的数量。

## 数据和字段选项
<a name="bar-gauge-data-and-field-options"></a>

通过条形仪表可视化，您可以应用以下选项：
+  [转换](panel-transformations.md) 
+  [字段选项和覆盖](field-options-overrides.md) 
+  [Thresholds](thresholds.md) 

## 显示选项
<a name="bar-gauge-display-options"></a>

使用以下选项来优化您的可视化：
+  **显示**：选择 Amazon Managed Grafana 显示数据的方式。
  +  **计算**：显示基于所有行的计算值。有关可用计算的列表，请参阅 [计算列表](list-of-calculations.md)。
  +  **所有值**：为每行显示一个单独的统计数据。如果选择此选项，则还可以选择**限制**或要显示的最大行数。
+  **值**：选择 reducer 函数，Amazon Managed Grafana 将使用该函数将多个字段简化为单个值。选择**值**列表以查看函数和简要说明。
+  **方向**：选择堆叠方向。
  +  **自动**：Amazon Managed Grafana 会选择其认为最佳的方向。
  +  **水平**：从左到右水平拉伸条形图。
  +  **垂直**：从上到下垂直拉伸条形图。
+  **显示模式**：选择显示模式。
  +  **渐变**：选择阈值级别来定义渐变。
  +  **复古 LCD**：将仪表分成点亮或不点亮的小单元格显示。
  +  **基本**：根据匹配阈值使用单一颜色。
+  **显示未填充区域**：如果要将条形图的未填充区域渲染为深灰色，请选择此选项。此选项不适用于复古 LCD 显示模式。

# 时钟面板
<a name="clock-panel"></a>

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

时钟面板显示当前时间或倒计时。每秒更新一次。
+ **模式**：默认为**时间**。如果选择**倒计时**，请设置**倒计时截止时间**以开始倒计时。
+ **12 或 24 小时**：显示时间的选项有 12 小时制和 24 小时制。
+ **时区**：时区由时刻时区库提供。默认值为计算机上的时区。
+ **倒计时截止时间**：如果您已将**模式**设置为**倒计时**，请指定倒计时的时间和日期。
+ **倒计时结束文本**：指定倒计时结束时要显示的文本。
+ **日期/时间格式选项**-自定义字体大小、粗细和 date/time 格式。如果显示倒计时，但不想看到秒数减少，请将时间格式更改为 24 小时制 `hh:mm` 或 12 小时制 `h:mm A`。有关选项的完整列表，请参阅[显示](https://momentjs.com/docs/#/displaying/)。
+ **背景颜色**：为时钟选择背景颜色。

# 控制面板列表面板
<a name="dashboard-list-panel"></a>

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

控制面板列表面板显示指向其他控制面板的动态链接。可将该列表配置为使用已加星标的控制面板、最近查看的控制面板、搜索查询和控制面板标签。

每次加载仪表板时，此面板都会查询仪表板列表，始终提供最多的 up-to-date结果。

## 选项
<a name="options-1"></a>

使用以下选项来优化您的可视化：
+  **已加星标**：按字母顺序显示已加星标的控制面板。
+  **最近查看**：按字母顺序显示最近查看的控制面板。
+  **搜索**：按搜索查询或标签显示控制面板。此选项要求您在**查询**或**标签**中至少输入一个值。
+  **显示标题**：将所选列表选项（“已加星标”、“最近查看”、“搜索”）显示为标题。
+  **最大项数**：设置每个部分列出的最大项数。例如，在保留默认值 10 的情况下，如果选择显示已加星标和最近查看的控制面板，面板最多会显示总共 20 个控制面板，每个部分 10 个。

### Search
<a name="panel-dashboard-list-search"></a>

以下选项仅在选择**搜索**选项时适用。
+  **查询**：输入您要搜索的查询。查询不区分大小写，并接受部分值。
+  **文件夹**：选择要显示的控制面板文件夹。
+  **标签**：输入要搜索的标签。请注意，现有标签不会在您键入时显示，并且*区分*大小写。

**注意**  
当出现多个标签和字符串时，控制面板列表将显示符合*所有*条件的标签和字符串。

# 仪表面板
<a name="gauge-panel"></a>

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

 **计量表**是一个单值面板，可以为每个序列、列或行重复一个计量表。

## 数据和字段选项
<a name="gauge-panel-data-and-field-options"></a>

计量表可视化允许您应用以下选项：
+  [转换](panel-transformations.md) 
+  [字段选项和覆盖](field-options-overrides.md) 
+  [Thresholds](thresholds.md) 

## 显示选项
<a name="gauge-panel-display-options-2"></a>

要优化您的可视化，请使用以下选项：
+  **显示**：选择 Amazon Managed Grafana 显示数据的方式。
  +  **计算**：显示基于所有行的计算**值**。有关可用计算的列表，请参阅 [计算列表](list-of-calculations.md)。
  +  **所有值**：为每行显示一个单独的统计数据。如果选择此选项，则还可以选择**限制**或要显示的最大行数。
+  **方向**：选择堆叠方向。
  +  **自动**：Amazon Managed Grafana 会选择它认为最佳的方向。
  +  **水平**：从左到右水平拉伸条形图。
  +  **垂直**：从上到下垂直拉伸条形图。
+  **显示阈值标签**：选择是否显示阈值。
+  **显示阈值标记**：选择是否在内部计量表值范围之外显示阈值范围。

# Geomap 面板
<a name="AMG-Geomap"></a>

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

**Geomap** 面板可视化使您能够使用地理空间数据，查看和自定义世界地图。通过配置各种叠加样式和地图视图设置，您可以轻松聚焦于数据中基于位置的重要特征。

## 数据层
<a name="Data-Layer"></a>

Geomap 插件中的数据层决定了如何基于基础地图，实现地理空间数据的可视化。

### 位置
<a name="Location"></a>

**Geomap** 面板需要一个地理数据来源。这些数据来自数据库查询，数据有四种映射选项。
+ **自动**可自动搜索位置数据。当您的查询基于以下数据字段名称之一时，请使用此选项。
  + geohash: “geohash”
  + latitude: “latitude”, “lat”
  + longitude: “longitude”, “lng”, “lon”
  + lookup: “lookup”
+  **坐标**指定查询包含坐标数据。系统会提示您从数据库查询中选择纬度和经度的数值数据字段。
+  **地理哈希**指定您的查询包含地理哈希数据。系统会提示您从数据库查询中为地理哈希选择字符串数据字段。
+  **查找**指定查询包含需要映射为地理位置的名称数据。系统会提示您从数据库查询中选择查找字段，并选择 ` gazetteer`。` gazetteer ` 是用于将查询到的数据映射到地理点的目录。

## 标记图层
<a name="Markers-Layer"></a>

**标记**图层允许您将数据点显示为不同的标记形状，如圆形、方形、三角形、星形等。
+ **标记颜色**可配置标记的颜色。默认的“固定大小”会使所有点保持为单一颜色。还有一个备选选项，可根据数据点的值和在**阈值**部分设置的阈值设置多种颜色。
+  **标记大小**可配置标记的大小。默认值为 ` Fixed size`，即无论数据点的情况如何，所有标记的大小都保持相同。但是，也有一个选项可以根据对应的数据点缩放圆形的大小。需要设置 ` Min` 和 `Max ` 标记大小，以便标记层可以在这些范围内缩放。
+  **标记形状**提供了以不同方式可视化数据点的灵活性。
  + 圆形
  + 方形
  + 三角形
  + 十字形
  + X 形
+  **填充不透明度**可配置每个标记的透明度。

## 热图图层
<a name="Heatmap-layer"></a>

**热图**图层将各种数据点聚类，以直观显示不同密度的位置。要添加热图层，请在**数据层**下选择**热图**。



与**标记**类似，系统会提示您使用各种选项来确定要可视化的数据点以及可视化的方式。
+ **权重值**用于配置热图聚类的强度。固定值使所有数据点的权重值保持恒定。该值范围应为 0\$11。与**标记**类似，下拉列表中还有一个备选选项，可以根据数据值自动缩放权重值。
+  **半径**用于配置热图集群的大小。
+  **模糊**用于配置每个集群的模糊程度。

# 图形面板
<a name="graph-panel"></a>

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

图形面板可以呈现为直线、点路径或一系列条形。这种类型的图形用途广泛，几乎可以显示任何时间序列数据。

## 数据和字段选项
<a name="graph-panel-data-and-field-options"></a>

使用图形可视化时，可以应用以下选项：
+  [转换](panel-transformations.md) 
+ 警报。这是唯一允许设置警报的可视化类型。有关更多信息，请参阅 [Grafana Alerting](alerts-overview.md)。
+  [Thresholds](thresholds.md) 

## 显示选项
<a name="graph-panel-display-options"></a>

使用以下设置来优化可视化效果：
+  **条形图**：将值显示为条形图。
+  **折线图**：将值显示为折线图。
+  **线宽**：指定序列的线条宽度。默认 为 1。
+  **阶梯**：将相邻的点绘制成阶梯。
+  **区域填充**：指定序列的颜色填充量。默认值为 1，0 表示没有颜色。
+  **填充渐变**：指定区域填充的渐变程度。默认值为 0，表示没有渐变，10 表示急剧的渐变。
+  **点数**：显示值的点数。
+  **点半径**：控制点的大小。
+  **警报阈值**：在面板上显示警报阈值和区域。

### 堆叠和空值
<a name="stacking-and-null-value"></a>
+  **堆叠**：每个序列堆叠在另一个序列之上。
+  **百分比**：每个序列按所有序列总计的百分比绘制。选择**堆叠**后，此选项可用。
+  **空值**：指定空值的显示方式。*这是一项重要的设置。*请参阅下面的注释。
  +  **连接**：如果序列中存在间隙（即一个或多个空值），该行将跳过间隙并连接到下一个非空值。
  +  **空值** 如果序列中存在间隙（即空值），则图表中的直线将被打断并显示间隙。这是默认设置。
  +  **空值为零**：如果序列中存在间隙（即空值），则间隙将在图形面板中显示为零值。

**重要**  
如果您正在监视服务器的 CPU 负载并且负载达到 100%，则服务器将锁定，发送统计信息的代理将无法收集负载统计信息。这会导致指标中存在间隙，使用默认的*空值*设置意味着 Amazon Managed Grafana 将显示间隙并指明出现了问题。如果将其设置为*连接*，则很容易错过此信号。

### 悬停工具提示
<a name="graph-panel-hover-tooltip"></a>

使用这些设置可以更改工具提示的外观，该工具提示会在您将光标悬停在图形可视化效果上时出现。
+  **模式**：确定悬停工具提示显示的序列数量。
  +  **全部序列**：悬停工具提示显示图形中的所有序列。在工具提示的序列列表中，Grafana 工作区以粗体突出显示光标悬停在其上方的序列。
  +  **单个**：悬停工具提示仅显示一个序列，即图形中光标悬停在其上方的序列。
+  **排序顺序**：如果选择**所有序列**模式，则会对悬停工具提示中的序列排序。当光标悬停在图形上时，Amazon Managed Grafana 会显示与线条相关的值。通常，用户最感兴趣的是最高值或最低值。对这些值进行排序可以更轻松地找到所需的数据。
  +  **无**：工具提示中序列的顺序由查询中的排序顺序决定。例如，您可以按序列名称的字母顺序对序列排序。
  +  **递增**：悬停工具提示中的序列按值以递增顺序排序，最低值位于列表顶部。
  +  **递减**：悬停工具提示中的序列按值以递减顺序排序，最高值位于列表顶部。

## 序列覆盖
<a name="graph-panel-series-overrides"></a>

序列覆盖允许图形面板中的序列以与其他序列不同的方式呈现。您可以为每个序列自定义不同显示选项，也可以使用正则表达式规则来自定义显示选项。例如，可以将某个序列的线宽加粗，使其突出，或者将其移至 Y 轴右侧。

您可以添加多个序列覆盖。

**添加序列覆盖**

1. 选择**添加序列覆盖**。

1. 在**别名或正则表达式**中，键入或选择一个序列。选择字段以查看可用序列列表。

   例如，`/Network.*/` 将与名为 `Network out` 和 `Network in` 的两个序列匹配。

1. 选择 **\$1**，然后选择要应用于该序列的样式。您可以向每个条目添加多个样式。
+  **条形图**：将序列显示为条形图。
+  **折线图**：将序列显示为折线图。
+  **线条填充**：显示带有区域填充的折线图。
+  **填充渐变**：指定区域填充渐变量。
+  **线宽**：设置线宽。
+  **空值点模式**：使用此选项可以忽略空值或将其替换为零。如果要忽略数据中的间隙，此选项很重要。
+  **填充至下方**：填充两个序列之间的区域。
+  **阶梯线**：将序列显示为阶梯线。
+  **短横线**：显示带有短横线的线条。
+  **隐藏序列**：隐藏序列。
+  **短横线长度**：设置线条中短横线的长度。
+  **短横线间距**：设置线条中短横线之间的空格长度。
+  **点**：将序列显示为单独的点。
+  **点半径**：设置点渲染的半径。
+  **堆栈**：设置序列的堆栈组。
+  **颜色**：设置序列颜色。
+  **Y 轴**：设置序列 y 轴。
+  **Z 索引**：设置序列 z 索引（渲染顺序）。当您叠加不同的样式（例如条形图和面积图）时，此选项非常重要。
+  转换：将值转换为负值以在 y 轴下方呈现。
+  **图例**：控制序列是否显示在图例中。
+  **在工具提示中隐藏**：控制序列是否显示在图表工具提示中。

## 轴
<a name="graph-panel-axes"></a>

使用这些选项来控制可视化中轴的显示。

### 向左 Y/Right Y
<a name="left-yright-y"></a>

两个 y 轴的选项相同。
+  **显示**：选择显示或隐藏轴。
+  **单位**：选择 y 值的显示单位。
+  **刻度**：选择用于 y 值的刻度：**线性**或**对数**。默认值为**线性**。
+  **Y 最小值**：y 的最小值。默认值为 **auto**。
+  **Y 最大值**：y 的最大值。默认值为 **auto**。
+  **小数**：定义 y 值显示的小数位数。默认值为 **auto**。
+  **标签**：指定 y 轴标签。默认值为“"”。

### Y 轴
<a name="y-axes"></a>
+  **对齐**：按值对齐左右的 y 轴。默认为未选中/false。
+  **级别**：输入用于左右 y 轴对齐的值，从 Y=0 开始。默认值是 0。选择**对齐**后，此选项可用。

### X 轴
<a name="x-axis"></a>
+  **显示**：选择显示或隐藏轴。
+  **模式**：显示模式完全改变了图形面板的可视化效果。就像三个面板合而为一。主要模式是时间序列模式，而且 x 轴上显示了时间。另外两种模式包括基本的条形图模式（在 x 轴上显示序列而不是时间）和直方图模式。
  +  **时间**（默认值）：x 轴表示时间，数据按时间（例如，按小时或分钟）分组。
  +  **序列**：数据按序列分组，而不是按时间分组。y 轴仍然代表值。
    +  **值**：这是用于值的聚合类型。默认值为**合计**（将值相加）。
  +  **直方图**：此选项将图形转换为直方图。直方图是一种将数字分组为范围的条形图，通常称为桶或箱。条形越高表示该范围内的数据越多。

    有关此直方图的更多信息，请参阅 [直方图和热图简介](getting-started-grafanaui.md#introduction-to-histograms-and-heatmaps)。
    +  **桶**：设置要按其对值进行分组的桶数量。如果留空，Amazon Managed Grafana 会尝试计算合适的桶数量。
    +  **X 最小值**：筛选出直方图中小于此最小限制的值。
    +  **X 最大值**：筛选出大于此最大限制的值。

## 图例
<a name="graph-panel-legend"></a>

使用这些设置可以优化图例在可视化中的显示方式。

### 选项
<a name="graph-panel-legends-options"></a>
+  **显示**：清除以隐藏图例。默认选中（true）。
+  **作为表**：选择此选项可在表中显示图例。默认选中（true）。
+  **向右**：选择后可在右侧显示图例。
+  宽度：输入图例的最小宽度（以像素为单位）。选择**右对齐**后，此选项可用。

### 值
<a name="graph-panel-values"></a>

可以在图例名称旁边显示其他值。
+  **最小值**：指标查询返回的最小值。
+  **最大值**：指标查询返回的最大值。
+  **平均值**：指标查询返回的平均值。
+  **当前值**：从指标查询返回的最后一个值。
+  **总计**：从指标查询返回的所有值的总和。
+  **小数**：图例值和图形悬停工具提示显示的小数位数。

Amazon Managed Grafana 会计算客户端的图例值。这些图例值取决于指标查询使用的聚合类型或点合并类型。以上所有图例值不能同时正确。

例如，如果您绘制请求/秒之类的速率（可能使用平均值作为聚合器），则图例中的总数将不代表请求总数。这是 Amazon Managed Grafana 收到的所有数据点的总和。

### 隐藏序列
<a name="graph-panel-hide-series"></a>

当指标查询中某个序列的所有值均为特定值时，则隐藏序列。
+  **只有空值**：value=NULL（默认为未选中）
+  **只有零**：value=Zero（默认为未选中）

### 时间区域
<a name="graph-panel-time-regions"></a>

您可以在图形上突出显示特定的时间区域，以便于查看，例如周末、工作时间和下班时间。所有配置的时间区域均以 UTC 时间为准。

# 热图
<a name="visualization-heatmap"></a>

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

通过热图面板可视化，您可以查看随时间变化的直方图。有关此直方图的更多信息，请参阅 [直方图和热图简介](getting-started-grafanaui.md#introduction-to-histograms-and-heatmaps)。

## 轴选项
<a name="heatmap-axes-options"></a>

使用这些设置来调整轴在可视化中的显示方式。

### Y 轴
<a name="heatmap-y-axis"></a>
+  **单位**：y 轴值的显示单位
+  **刻度**：用于 y 轴值的刻度
  +  **线性**：线性刻度 
  +  **log（底数 2）**：底数为 2 的对数刻度
  +  **log（底数 10）**：底数为 10 的对数刻度
  +  **log（底数 32）**：底数为 32 的对数刻度
  +  **log（底数 1024）**：底数为 1024 的对数刻度
+  **Y-Min**：最小 y 值（默认为自动）
+  **Y-Max**：最大 y 值（默认为自动）
+  **小数**：渲染 y 轴值的小数位数（默认为自动）

### 存储桶
<a name="heatmap-buckets"></a>

**注意**  
如果数据格式为**时间序列桶**，则此部分不可用。
+  **Y 轴桶**：y 轴将拆分的桶数。
+  **大小**：每个 y 轴桶的大小（仅当**刻度**为*线性*时可见）。此选项的优先级高于 **Y 轴桶**。
+  **拆分因子**：（仅当**刻度**为 *log（底数 2）*或更大时才可见）。默认情况下，Amazon Managed Grafana 按对数底数拆分 y 值。使用此选项，您可以将每个默认桶拆分成指定数量的桶。
+  **X 轴桶**：x 轴将拆分的桶数。
+  **大小**：每个 x 轴桶的大小。数量或时间间隔（10s、5m、1h 等）。支持的间隔：ms、s、m、h、d、w、M、y。此选项的优先级高于 **X 轴桶**。

#### 桶边界
<a name="heatmap-bucket-bound"></a>

当数据格式为时间序列桶时，数据来源将返回名称表示桶边界的序列。但根据数据来源的不同，边界可以是上限或下限。您可以使用此选项调整边界类型。如果设置了**自动**，则可以根据面板的数据来源类型选择边界选项。

#### 桶大小
<a name="heatmap-bucket-size"></a>

Amazon Managed Grafana 使用桶计数和大小选项来计算热图中每个单元格的大小。您可以通过计数（第一个输入框）或指定大小间隔来定义桶大小。对于 y 轴，大小间隔只是一个值。对于 X 桶，可在**大小**输入中指定时间间隔。例如，您可以将时间范围设置为 `1h`。这将使单元格在 x 轴上宽 1h。

#### 数据格式
<a name="heatmap-data-format"></a>

在**格式**列表中选择一个选项。
+ **时间序列**：Amazon Managed Grafana 通过遍历所有时间序列值来进行分桶。可在**桶**选项中设置桶的大小和间隔。
+ **时间序列桶**：每个时间序列已经表示一个 y 轴桶。时间序列名称（别名）必须是表示桶上限或下限间隔的数值。Grafana 工作区不进行分桶，因此桶大小选项是隐藏的。

## 显示选项
<a name="heatmap-display-options"></a>

使用这些设置来改进可视化结果。

### 颜色
<a name="heatmap-colors"></a>

色谱控制值计数（在每个桶中）和分配给每个桶的颜色之间的映射。色谱上最左侧的颜色表示最小计数，最右侧的颜色表示最大计数。使用浅色主题时，某些颜色方案会自动反转。

您也可以将颜色模式更改为**不透明度**。在这种情况下，颜色不会改变，但不透明度会随桶数的变化而变化。
+  **Mode (模式)** 
  +  **不透明度**：由单元格不透明度表示的桶值。不透明单元格表示最大值。
    +  **颜色**：单元格基色。
    +  **刻度**：将桶值映射到不透明度的刻度。
      +  **线性**：线性刻度。桶值以线性方式映射到不透明度。
      +  **sqrt**：幂刻度。以 `value ^ k` 计算的单元格不透明度，其中 `k` 是配置的**指数**值。如果指数小于 `1`，则会得到一个对数刻度。如果指数大于 `1`，则会得到一个指数刻度。如果是 `1`，则刻度将与线性相同。
    +  **指数**：指数值，大于 `0`。
  +  **色谱**：用单元格颜色表示的桶值。
    +  **方案**：如果模式为**色谱**，则选择颜色方案。

### 色阶
<a name="heatmap-color-scale"></a>

默认情况下，Amazon Managed Grafana 根据最小和最大桶值计算单元格颜色。可使用**最小值**和**最大值**覆盖这些值。将桶值视为 z 轴，将最小值和最大值分别视为 Z-Min 和 Z-Max。
+  **最小值**：用于单元格颜色计算的最小值。如果桶值小于最小值，则将其映射到最小颜色。默认值为 `series min value`。
+  **最大值**：用于单元格颜色计算的最大值。如果桶值大于最大值，则将其映射到最大颜色。默认值为 `series max value`。

### 图例
<a name="heatmap-legend"></a>

选择是否在可视化上显示热图图例。

### 存储桶
<a name="heatmap-legend-buckets"></a>
+  **隐藏零**：不绘制零值单元格。
+  **间距**：设置单元格之间的间距（像素）。默认值为 1 像素。
+  **圆度**：设置单元格圆度（像素）。默认值为 0。

### Tooltip
<a name="heatmap-tooltip"></a>
+  **显示工具提示**：显示热图工具提示。
+  **直方图**：在工具提示上显示 y 轴直方图。直方图表示特定时间戳的桶值的分布。
+  **小数**：设置渲染桶值的小数位数（默认为自动）。

# 直方图面板
<a name="histogram-panel"></a>

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

直方图可视化计算值的分布并将其显示为条形图。Y 轴和每个条形的高度代表落入每个括号中的值的数量，而 X 轴代表值范围。

直方图可视化支持时间序列和任何带有一个或多个数值字段的表结果。

## 显示选项
<a name="histogram-options"></a>

使用以下选项来优化可视化效果：

**桶大小**

桶的大小。将此字段留空，以自动调整桶大小（约为全量程的 10%）。

**桶偏移**

第一个桶不应该从零开始。非零偏移会移动聚合窗口。例如，大小为 5（0–5、5–10、10–15）且默认偏移量为 0 的桶将变为 2–7、7–12、12–17，偏移量为 2；在这种情况下，0、5 或 10 的偏移量实际上没有任何作用。通常，此选项将与明确定义的桶大小一起使用，而不是与自动桶大小一起使用。要使此设置生效，偏移量应大于 0 且小于桶大小；超出此范围的值将与该范围内的值具有相同的效果。

**组合序列**

这会将所有序列和字段合并为一个组合的直方图。

**线宽**控制条形图的线宽。

**填充不透明度**控制条形图的填充不透明度。

**渐变模式**设置渐变填充的模式。填充渐变基于线条颜色。要更改颜色，请使用标准颜色方案字段选项。渐变外观受填充不透明度设置的影响。
+  **无**：无渐变填充，这是默认设置。
+  **不透明度**：渐变的透明度是根据 Y 轴上的 n 值计算的。填充的不透明度随 Y 轴上的值增加而增加。
+  **色调**：渐变色是根据线条颜色的色调生成的。

**工具提示模式** 当您将光标悬停在图形上时，Grafana 可以显示工具提示。选择工具提示的行为方式：
+  **单个**：悬停工具提示仅显示您悬停在上面的序列。
+  **全部**：悬停工具提示显示可视化中的所有序列。Grafana 在工具提示的序列列表中以粗体突出显示您悬停在上面的序列。
+  **隐藏**：不显示工具提示。

**注意**  
使用覆盖从工具提示隐藏单个序列。

## 图例选项
<a name="histogram-legend"></a>

启用图例选项后，可以显示值映射或阈值括号。要在图例中显示值映射，请务必将标准选项下的“颜色方案”选项设置为“单色”或“经典”调色板。要查看图例中的阈值括号，请将“颜色方案”设置为“来自阈值”。

**图例模式**：使用这些设置可以优化图例在可视化中的显示方式。
+  **列表**：以列表形式显示图例。这是图例的默认显示模式。
+  **表**：以表的形式显示图例。
+  **隐藏**：隐藏图例。

**图例放置**：选择图例的放置位置。
+  **底部**：显示在图形下方。
+  **右**：显示在图形右侧。

**图例计算**

选择要在图例中显示的计算。有关更多信息，请参阅 [计算列表](list-of-calculations.md)。

# 日志面板
<a name="logs-panel"></a>

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

日志面板可视化显示来自支持日志的数据来源（例如 Elastic、Influx 和 Loki）的日志行。通常，您可以使用图形面板旁边的此面板来显示相关进程的日志输出。

日志面板显示在**查询**选项卡上输入的查询结果。多个查询的结果按时间合并和排序。如果数据来源返回的行数超过了可以显示的行数，则可以在面板内滚动。

要限制渲染的行数，可以使用**查询选项**中的**最大数据点**设置。如果未设置，则数据来源通常会强制使用默认限制。

## 显示选项
<a name="logs-panel-display-options"></a>

使用以下设置来优化可视化效果：
+  **时间**：显示或隐藏时间列。这是与数据来源报告的日志行关联的时间戳。
+  **唯一标签**：显示或隐藏唯一标签列，该列仅显示非常见标签。
+  **换行**：切换换行符。
+  **顺序**：按时间降序或升序显示结果。默认为**降序**，首先显示最新的日志。设置为**升序**可首先显示最旧的日志行。

# 新闻面板
<a name="news-panel"></a>

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

此面板显示 RSS 源。默认情况下，显示来自 Grafana Labs 博客的文章。

在**显示**部分的 **URL** 字段中，输入 RSS 源的 URL。此面板类型不接受任何其他查询。

# 节点图形面板（测试版）
<a name="node-graph-panel"></a>

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

节点图面板可视化定向图形或网络。面板使用定向力布局来有效定位节点，有助于显示复杂的基础设施图、层次结构或执行图。

## 数据要求
<a name="node-graph-panel-requirements"></a>

节点图面板需要数据的特定形状才能显示其节点和边。并非每个数据来源或查询都可以在此面板中可视化。

节点图可视化由*节点*和*边*组成。
+ *节点*显示为圆形。从应用程序的角度来看，节点可能代表应用程序、服务或其他任何相关的内容。
+ *边*显示为一条连接两个节点的线。连接可能是请求、执行或两个节点之间的某种其他关系。

## Nodes
<a name="node-graph-panel-nodes"></a>

通常，节点在节点内部显示两个统计值，在节点正下方显示两个标识符，通常是名称和类型。节点还可以在节点周围用彩色圆圈显示另一组数值，不同颜色的部分代表不同的数值，这些数值相加应为 1。例如，您可以用圆圈的红色部分表示误差百分比。

其他详细信息可以显示在上下文菜单中，该菜单会在您选择节点时显示。上下文菜单中还可以有其他链接，这些链接可以指向 Grafana 工作区的其他部分或任何外部链接。

## Edges
<a name="node-graph-panel-edges"></a>

当您将鼠标悬停在边上时，边也可以显示统计数据。与节点类似，您也可以选择边以打开包含其他详细信息和链接的上下文菜单。

支持此可视化的第一个 AWS X-Ray 数据源是其服务地图功能的数据源。有关更多信息，请参阅 [Connect 连接到 AWS X-Ray 数据源](x-ray-data-source.md)。

其他详细信息可以显示在上下文菜单中，该菜单会在您选择节点时显示。上下文菜单中还可以有其他链接，这些链接可以指向 Grafana 工作区的其他部分或任何外部链接。

## 浏览节点图
<a name="node-graph-panel-navigation"></a>

通过选择任何节点或边的外部并拖动鼠标，可以在节点图内平移。

您可以使用节点图左上角的按钮进行缩放。

# 饼图面板
<a name="pie-chart-panel"></a>

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

饼图将来自一个或多个查询的简化序列或序列中的值（它们彼此相关）显示为饼图的切片。切片的弧长、面积和中心角都与切片值成正比，因为它与所有值的总和相关。如果您想以美观的形式快速比较一小组值，最好使用这种类型的图表。

饼图可视化允许您应用以下选项：
+  [转换](panel-transformations.md). 
+  [字段选项和覆盖](field-options-overrides.md). 
+  [Thresholds](thresholds.md).

## 选项
<a name="pie-chart-panel-options"></a>

您可以使用以下选项来优化可视化。
+  **显示**：选择要显示的信息量。**计算**将每个值归约为每个序列的单个值。**所有值**显示单个序列中的每个值。
+  **计算**：选择**计算**后，选择计算以减小每个序列。有关可用计算的信息，请参阅 [计算列表](list-of-calculations.md)。
+  **限制**：显示单个序列中的每个值时，这会限制显示的值的数量。
+  **字段**：选择要在可视化中显示的字段。
  + **数值字段**：所有包含数值的字段。
  + **所有字段**：所有未由转换删除的字段。
  + **时间**：所有带有时间值的字段。

## 标签
<a name="pie-charts-panel-labels"></a>

选择要在饼图上显示的标签。您可以选择多个标签。
+  **名称**：序列或字段名称。
+  **百分比**：占整体的百分比。
+  **值**：原始数值。

标签在图表正文上显示为白色。您可能需要选择颜色较深的图表，使其更加明显。较长的名称或数字可能会被截断。

## 图例位置和值
<a name="pie-charts-panel-legend"></a>

选择显示图例的位置。
+  **底部**：在图表下方。
+  **右**：在图表右侧。

您可以选择多个值以显示在图例中。**百分比**是整体的百分比，**值**是原始数值。

# Plotly 面板
<a name="plotly-panel"></a>

****  
本文档主题专为支持 **Grafana 8.x 版本**的 Grafana 工作区而设计。  
对于支持 Grafana 10.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 10](using-grafana-v10.md)。  
对于支持 Grafana 9.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 9](using-grafana-v9.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;
let y = data.series[0].fields[1].values;
let series = {
    x: x,
    y: y,
    name: variables.name, // where ‘name’ is the name of a Grafana dashboard variable
};

return {
    data: [series],
    config: {
        displayModeBar: false,
    },
};
```

*数据*、*布局*和*配置*字段中提供的脚本和 JSON 返回的对象将被合并（深度合并）。

如果未提供脚本，面板将仅使用*数据*、*布局*和*配置*字段。

# Sankey 面板
<a name="sankey-panel"></a>

****  
本文档主题专为支持 **Grafana 8.x 版本**的 Grafana 工作区而设计。  
对于支持 Grafana 10.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 10](using-grafana-v10.md)。  
对于支持 Grafana 9.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 9](using-grafana-v9.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="scatter-panel"></a>

****  
本文档主题专为支持 **Grafana 8.x 版本**的 Grafana 工作区而设计。  
对于支持 Grafana 10.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 10](using-grafana-v10.md)。  
对于支持 Grafana 9.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 9](using-grafana-v9.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 控制面板中，选择**添加面板**。有关添加面板的更多详细信息，请参阅[添加面板](add-a-panel-to-a-dashboard.md)。

1. 对于查询，编写一个将返回所需数据的查询。在这种情况下，您将使用 `SELECT * FROM HEIGHT` 之类的查询。

1. 选择**散点**可视化。

这将创建一个散点图，使用第一列作为 X 轴，其他数值列作为 Y 轴。

**配置选项**

散点面板提供以下四个自定义配置选项。
+ **X 轴**：您可以选择用作 X 轴的字段，以及轴的范围、标题和显示信息。
+ **Y 轴**：您可以选择用作 Y 轴的字段，包括每个字段的显示选项以及轴的范围和标题信息。您还可以选择显示每个字段的回归线。有关回归线配置的更多详细信息，请参阅以下信息。
+ **图例**：您可以打开或关闭面板的图例，也可以选择图例中文本的大小。
+ **显示**：您可以为图表设置其他选项，包括网格颜色和边框样式。

**回归线配置**

除了单个点之外，每个 Y 轴数据集还可以显示一条线。有五个线条类型的选项。
+ **无**：不显示回归线。
+ **简单**：显示连接数据集点的回归线。
+ **线性**：使用最小二乘法这种最佳拟合方法显示一条直线。
+ **指数**：显示指数最佳拟合回归线。
+ **幂**：显示幂最佳拟合回归线。

# 统计面板
<a name="stat-panel"></a>

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

统计面板显示一个很大的统计值，并带有可选的图表迷你图。您可以使用阈值来控制背景或值颜色。

默认情况下，统计面板显示以下内容之一：
+ 仅显示单个序列或字段的值。
+ 多个序列或字段的值和名称。

您可以使用**文本模式**选项来控制是否显示文本。

## 数据和字段选项
<a name="stat-panel-data-and-field-options"></a>

统计可视化使您能够应用以下选项：
+  [转换](panel-transformations.md).
+  [字段选项和覆盖](field-options-overrides.md).
+  [Thresholds](thresholds.md).

## 自动布局调整
<a name="stat-panel-automatic-layout-adjustment"></a>

面板会根据控制面板中的可用宽度和高度自动调整布局。如果面板变得太小，将会自动隐藏图形（迷你图）。

## 显示选项
<a name="stat-panel-display-options"></a>

使用以下选项来优化您的可视化：
+  **显示**：选择 Amazon Managed Grafana 显示数据的方式。
  +  **计算**：显示基于所有行的计算值。
    +  **计算**：选择要应用的计算。有关可用计算的信息，请参阅 [计算列表](list-of-calculations.md)。
  +  **所有值**：每行显示一个单独的统计数据。
    +  **限制**：指定要显示的最大行数。
+  **字段**：选择要包含在此面板中的字段名称或字段类型（包括**所有字段**或**数值字段**）。
+  **值**：选择 reducer 函数，Amazon Managed Grafana 将使用该函数将多个字段简化为单个值。选择**值**列表以查看函数和简要说明。
+  **方向**：选择堆叠方向。
  +  **自动**：Amazon Managed Grafana 会选择它认为最佳的方向。
  +  **水平**：从左到右水平拉伸条形图。
  +  **垂直**：从上到下垂直拉伸条形图。
+  **文本模式**：可以使用**文本模式**选项来控制面板显示的文本。如果只有名称和颜色很重要，而值不重要，则将**文本模式**更改为**名称**。该值仍用于确定颜色，并显示在工具提示中。
  +  **自动**：如果数据包含多个序列或字段，则同时显示名称和值。
  +  **值**：仅显示值，不显示名称。名称显示在工具提示中。
  +  **值和名称**：始终显示值和名称。
  +  **名称**：显示名称而不是值。值显示在工具提示中。
  +  **无**：不显示任何内容（空）。名称和值显示在工具提示中。
+  **颜色模式**：选择一种颜色模式。
  +  **值**：仅为值和图形区域着色。
  +  **背景**：同时为背景着色。
+  **图表模式**：选择图形模式。
  +  **无**：隐藏图表并仅显示值。
  +  **面积**：在值下方显示面积图。此选项要求您的查询返回时间列。
+  **对齐模式**：选择对齐模式。
  +  **自动**：如果仅显示单个值（不重复），则该值居中。如果显示多个序列或多行，则该值为左对齐。
  +  **中心**：统计值居中。

# 状态时间轴面板
<a name="state-timeline-panel"></a>

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

状态时间轴面板可视化显示一段时间内的离散状态变化。每个字段或序列都渲染为其唯一的水平段。状态区域可以用值或不用值渲染。此面板适用于字符串或布尔状态，但也可以与时间序列一起使用。与时间序列一起使用时，使用阈值将数值转换为离散状态区域。

## 状态时间轴选项
<a name="state-timeline-options"></a>

使用以下选项来优化可视化效果：

**合并相等的连续值**

控制 Grafana 是否合并相邻的相同值。

**显示值**

控制是否在状态区域内渲染数值。如果有足够的空间，Auto 将渲染值。

**对齐值**

控制状态区域内的值对齐。

**行高**

控制行间的间距。1 = 无间距，0.5 = 50% 间距。

**线宽**

控制状态区域的线宽。

**填充不透明度**

控制状态区域的不透明度。

## 值映射
<a name="state-timeline-valuemap"></a>

要为布尔值或字符串值分配颜色，请使用 [值映射](field-options-overrides.md#value-mapping)。

## 带阈值的时间序列数据
<a name="state-timeline-threshold"></a>

该面板也可以用于时间序列数据。在这种情况下，使用阈值将时间序列转换为离散的彩色状态区域。

## 图例选项
<a name="state-timeline-legend"></a>

启用图例选项后，可以显示值映射或阈值括号。要在图例中显示值映射，请务必将“标准”选项下的“颜色方案”选项设置为“单色”或“经典”调色板。要查看图例中的阈值括号，请将“颜色方案”设置为“来自阈值”。

**图例模式**：使用这些设置可以优化图例在可视化中的显示方式。
+  **列表**：以列表形式显示图例。这是图例的默认显示模式。
+  **表**：以表的形式显示图例。
+  **隐藏**：隐藏图例。

**图例放置**：选择图例的放置位置。
+  **底部**：显示在图形下方。
+  **右**：显示在图形右侧。

# 状态历史面板
<a name="status-history-panel"></a>

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

状态历史可视化显示一段时间内的周期性状态。每个字段或序列都渲染为水平行。然后渲染框并围绕每个值居中。

状态历史可视化适用于字符串、布尔值和数值字段或时间序列。时间字段为必填项。您可以使用值映射为字符串着色，或为数字范围赋予文本值。

## 显示选项
<a name="status-timeline-options"></a>

使用以下选项来优化可视化效果：

**显示值**

控制值是否在值框内渲染。如果有足够的空间，Auto 将渲染值。

**列宽**控制框的宽度。1 = 最大宽度，0 = 最小宽度。

**线宽**控制状态区域的线宽。

**填充不透明度**控制状态区域的填充不透明度。

## 值映射
<a name="status-history-valuemap"></a>

要为布尔值或字符串值分配颜色，请使用 [值映射](field-options-overrides.md#value-mapping)。

## 带阈值的时间序列数据
<a name="status-history-threshold"></a>

该面板也可以用于时间序列数据。在这种情况下，使用阈值为框着色。也可以使用渐变配色方案为值着色。

## 图例选项
<a name="status-history-legend"></a>

启用图例选项后，可以显示值映射或阈值括号。要在图例中显示值映射，请务必将“标准”选项下的“颜色方案”选项设置为“单色”或“经典”调色板。要查看图例中的阈值括号，请将“颜色方案”设置为“来自阈值”。

**图例模式**：使用这些设置可以优化图例在可视化中的显示方式。
+  **列表**：以列表形式显示图例。这是图例的默认显示模式。
+  **表**：以表的形式显示图例。
+  **隐藏**：隐藏图例。

**图例放置**：选择图例的放置位置。
+  **底部**：显示在图形下方。
+  **右**：显示在图形右侧。

# 表面板
<a name="table-panel"></a>

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

表面板支持时间序列以及表、注释和原始 JSON 数据的多种模式。此面板还提供日期格式、值格式和着色选项。

## 数据和字段选项
<a name="data-and-field-options"></a>

对于表可视化，您可以应用以下选项：
+  [转换](panel-transformations.md).
+  [字段选项和覆盖](field-options-overrides.md).
+  [Thresholds](thresholds.md).

## 显示选项
<a name="display-options"></a>
+  **显示标题**：显示或隐藏从数据来源导入的列名。
+  **按升序/降序排序**：选择列标题可将排序顺序从默认值更改为降序和升序。每次单击时，排序顺序都会变为循环中的下一个选项。一次只能按一列排序。
+  [表字段选项](#table-field-options)：更改字段选项，例如列宽、对齐方式和单元格显示模式。
+  [筛选表列](#filter-table-columns)：暂时更改列数据的显示方式。例如，您可以按从高到低的顺序排列值，或者隐藏特定的值。

## 注释支持
<a name="annotation-support"></a>

新表面板目前不支持注释。

## 表字段选项
<a name="table-field-options"></a>

本节介绍所有可用的表字段选项。这些选项以 Amazon Managed Grafana 中的相同顺序列出。本主题中列出的选项仅适用于表面板可视化。

您在正在编辑的字段选项框之外进行选择或按 Enter 之前，大多数字段选项不会影响可视化。

有关应用这些选项的更多信息，请参阅[配置所有字段](field-options-overrides.md#configure-all-fields)和[配置特定字段](field-options-overrides.md#configure-specific-fields)。

### 列对齐方式
<a name="column-alignment"></a>

选择 Amazon Managed Grafana 应如何与单元格内容对齐：
+ 自动（默认）
+ 靠左对齐
+ 居中对齐
+ 靠右对齐

### 列宽
<a name="column-width"></a>

默认情况下，Amazon Managed Grafana 会根据单元格内容自动计算列宽。在此字段选项中，您可以覆盖设置并定义所有列的宽度（以像素为单位）。

例如，如果您在字段中输入 `100`，则在字段外进行选择时，所有列的宽度都将设置为 100 像素。

### 单元格显示模式
<a name="cell-display-mode"></a>

默认情况下，Amazon Managed Grafana 会自动选择显示设置。您可以通过选择以下选项之一更改所有字段，从而覆盖设置。

**注意**  
如果您在**字段**选项卡中进行这些设置，则显示模式将应用于所有字段，包括时间字段。对于很多选项，如果您在**覆盖**选项卡中对它们进行设置，它们的效果能达到最佳。

#### 颜色文本
<a name="color-text"></a>

如果设置了阈值，则字段文本将以相应的阈值颜色显示。

#### 对背景着色
<a name="color-background"></a>

如果设置了阈值，则字段背景将以相应的阈值颜色显示。

#### 梯度表
<a name="gradient-gauge"></a>

阈值水平定义渐变。

#### 液晶表
<a name="lcd-gauge"></a>

将仪表分成点亮或不点亮的小单元格。

#### JSON 视图
<a name="json-view"></a>

该值以代码格式显示。如果值是一个对象，则当您将鼠标悬停在值上时，会出现允许您浏览 JSON 对象的 JSON 视图。

### 列筛选器
<a name="column-filter"></a>

## 筛选表列
<a name="filter-table-columns"></a>

如果您在表选项中打开**列筛选器**，则可以筛选表选项。有关更多信息，请参阅 [表字段选项](#table-field-options)。

### 打开列筛选
<a name="turn-on-column-filtering"></a>

1. 在 Amazon Managed Grafana 中，选择显示表的控制面板，而表中包含您要筛选的列。

1. 在要筛选的表面板上，[打开面板编辑器](AMG-panel-editor.md#open-the-panel-editor)。

1. 选择**字段**选项卡。

1. 在**表**选项中，打开**列筛选器**选项。

每个列标题旁边都会显示一个筛选器图标。

### 筛选列值
<a name="filter-column-values"></a>

要筛选列值，请选择列标题旁边的筛选器（漏斗）图标。Grafana 工作区显示该列的筛选器选项。

选中要显示的值旁边的复选框。在顶部的搜索字段中输入文本，在显示屏中显示这些值，这样您就可以从中选择，而不用滚动来查找。

### 清除列筛选条件
<a name="clear-column-filters"></a>

应用筛选条件的列在标题旁边会显示一个蓝色的漏斗。

要移除过滤器，请选择蓝色漏斗图标，然后选择**清除筛选器**。

# 文本面板
<a name="text-panel"></a>

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

您可以使用文本面板为控制面板创建信息和描述面板。

在**模式**中，选择是使用 markdown 还是 HTML 来设置文本样式，然后在下面的框中输入内容。Grafana 工作区包括标题和段落以帮助您入门，或者您可以从其他编辑器中粘贴内容。

# 时间序列面板
<a name="time-series-panel"></a>

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

时间序列面板可将时间序列渲染成线条、点路径或条形图序列。这种类型的图形用途广泛，几乎可以显示任何时间序列数据。

**注意**  
您可以将图形面板可视化迁移到时间序列可视化。若要迁移，请在**面板**选项卡上，选择**时间序列可视化**。Grafana 会传输所有适用的设置。

可以对时间序列可视化应用以下选项：
+  [转换](panel-transformations.md) 
+  [字段选项和覆盖](field-options-overrides.md) 
+  [Thresholds](thresholds.md) 

您还可以使用字段选项来创建不同类型的图形或调整轴。

使用这些设置来改进可视化结果。

## 工具提示模式
<a name="time-series-panel-tooltip"></a>

当您将光标悬停在图形上时，Grafana 可以显示工具提示。选择工具提示的行为方式：
+  **单个**：悬停工具提示仅显示您悬停在上面的序列。
+  **全部**：悬停工具提示显示图形中的所有序列。Grafana 在工具提示的序列列表中以粗体突出显示您悬停在上面的序列。
+  **隐藏**：不显示工具提示。

## 图例模式和放置
<a name="time-series-panel-legend"></a>

选择图例的显示方式。
+  **列表**：以列表形式显示图例。这是默认值。
+  **表**：以表的形式显示图例。
+  **隐藏**：隐藏图例。

选择显示图例的位置。
+  **底部**：显示在图形下方。
+  **右**：显示在图形右侧。

## 图例计算
<a name="time-series-panel-legend-calculations"></a>

选择要在图例中显示的计算。有关更多信息，请参阅 [计算列表](list-of-calculations.md)。

# 将时间序列绘制为线条
<a name="time-series-graph-lines"></a>

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

本节介绍了如何使用时间序列字段选项将时间序列数据可视化为线条，并说明了这些选项的作用。

**创建面板**

1. 创建一个面板，选择**时间序列**可视化。有关更多信息，请参阅 [添加面板](add-a-panel-to-a-dashboard.md)。

1. 在**面板编辑器**中，选择**字段**。

1. 在**样式**中，选择**线条**。

## 设置线条样式
<a name="time-series-graph-lines-style"></a>

有多种选项来设置线条的样式。
+ **线插值**：选择 Grafana 插入序列线的方式。选项包括**线性**、**平滑**、**前一步**和**后一步**。
+ **线宽**：将线条的粗细设置在 0 到 10 像素之间。
+ **填充不透明度**：设置序列填充的不透明度，范围为 0% 到 100%。
+ **渐变模式**：设置渐变填充的模式。填充渐变基于线条颜色。要更改颜色，请使用标准颜色方案字段选项。

  渐变外观受**填充不透明度**设置的影响。

  渐变填充的选项包括**无**、**不透明度**和**色调**。对于**不透明度**，渐变的透明度是根据 y 轴上的值计算的。填充的不透明度随 y 轴上的值增加而增加。对于**色调**，渐变颜色是根据线条颜色的色调生成的。
+ **线条样式**：设置线条的样式。要更改颜色，请使用标准颜色方案字段选项。

  线条样式的外观受**线宽**和**填充不透明度**设置的影响。

  线条样式的选项包括**实线**、**虚线**和**点线**。
+ **空值**：选择数据间隙的显示方式。可以将空值连接起来形成一条连续的线，也可以设置一个阈值，如果超过该阈值，数据间隙将不再连接。您可以选择**从不**连接有间隙的数据点，**始终**连接有间隙的数据点，或者设置一个**阈值**，当达到该阈值时，数据间隙将不再连接。
+ **显示点**：选择何时在图形上显示点。选项包括**自动**、**始终**和**从不**。

## 填充至下方
<a name="time-series-panel-legend-fillbelow"></a>

此选项仅在“覆盖”选项卡中可用。

**填充两个序列之间的区域**

1. 在下面选择要填充的字段。

1. 在**添加覆盖属性**中，选择**在下面填充**。

1. 选择希望填充停止的序列。

# 将时间序列绘制为条形图
<a name="time-series-graph-bars"></a>

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

本节介绍了如何使用时间序列字段选项将时间序列数据可视化为条形图，并说明了这些选项的作用。

**创建面板**

1. 创建一个面板，选择**时间序列**可视化。有关更多信息，请参阅 [添加面板](add-a-panel-to-a-dashboard.md)。

1. 在**面板编辑器**中，选择**字段**。

1. 在**样式**中，选择**条形图**。

## 设置条形图样式
<a name="time-series-graph-bars-style"></a>

有多种选项来设置条形图的样式。
+ **条形图对齐**：设置条形图相对于数据点的位置。选项包括**前**、**居中**和**后**。
+ **线宽**：将条形图轮廓的粗细设置在 0 到 10 像素之间。
+ **填充不透明度**：设置条形图填充的不透明度，范围为 0% 到 100%。
+ **渐变模式**：设置渐变填充的模式。填充渐变基于线条颜色。要更改颜色，请使用标准颜色方案字段选项。

  渐变外观受**填充不透明度**设置的影响。

  渐变填充的选项包括**无**、**不透明度**和**色调**。对于**不透明度**，渐变的透明度是根据 y 轴上的值计算的。填充的不透明度随 y 轴上的值增加而增加。对于**色调**，渐变颜色是根据线条颜色的色调生成的。
+ **显示点**：选择何时在图形上显示点。选项包括**自动**、**始终**和**从不**。

# 将时间序列绘制为点
<a name="time-series-graph-points"></a>

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

本节介绍了如何使用时间序列字段选项将时间序列数据可视化为点，并说明了这些选项的作用。

**创建面板**

1. 创建一个面板，选择**时间序列**可视化。有关更多信息，请参阅 [添加面板](add-a-panel-to-a-dashboard.md)。

1. 在**面板编辑器**中，选择**字段**。

1. 在**样式**中，选择**点**。

## 设置点样式
<a name="time-series-graph-points-style"></a>

当您以点的形式绘制时，可以选择点的大小。
+ **点大小**：选择点大小，直径介于 1 到 40 像素之间。

# 更改轴显示
<a name="time-series-change-axis"></a>

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

本节介绍了如何使用时间序列字段选项来控制可视化中轴的显示，并说明了轴选项的作用。

轴有多种选项。
+ **Y 轴放置**：设置 y 轴的放置。选项包括**左**、**右**和**隐藏**。
+ **Y 轴标签**：设置 y 轴的文本标签。如果有多个 y 轴，可使用**覆盖**选项卡为其分配不同的标签。
+ **宽度**：设置轴的固定宽度。默认情况下，Grafana 工作区会动态计算轴的宽度。通过设置轴的宽度，不同轴类型的数据可以共享相同的显示比例。这样就可以更容易比较多个图形的数据，因为轴在视觉上不会相互移动或拉伸。
+ **软最小值和软最大值**：设置**软最小值**或**软最大值**，以更好地控制 y 轴限制。默认情况下，Grafana 工作区会根据数据自动设置 y 轴的范围。

  **软最小值**或**软最大值**设置可以防止在数据大部分是平的情况下，出现山峰状的突起，而从标准最小值和最大值字段选项派生的硬最小值或硬最大值，则可以通过剪裁超过定义点的尖峰，来防止间歇性尖峰压平有用的细节。
+ **刻度**：设置用于 y 轴值的刻度。选项包括**线性**和**对数**。

# 用图形绘制堆叠时间序列
<a name="time-series-stacked"></a>

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

本节介绍了如何使用时间序列字段选项来控制序列的堆叠，并说明了堆叠选项的作用。堆叠允许 Grafana 相互叠加显示序列。在可视化中使用堆叠时要小心，因为很容易创建误导性图形。您可以在此处阅读有关为什么堆叠不是最佳方法的更多信息：[堆叠问题](https://www.data-to-viz.com/caveat/stacking.html)。

# 分组堆叠序列
<a name="time-series-stacked-groups"></a>

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

堆叠组选项只能作为覆盖选项使用。

**将序列堆叠在同一组中**

1. 在“覆盖”部分中，为**堆栈序列**选项创建字段覆盖。

1. 选择**正常**堆叠模式。

1. 为您希望序列显示在其中的堆叠组命名。堆叠组名称选项仅在创建覆盖时可用。

# Thresholds
<a name="thresholds"></a>

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

阈值根据您定义的条件设置值文本或背景的颜色。

可以通过以下两种方式之一定义阈值：
+ **绝对**阈值是根据数字定义的；例如，1 到 150 之间的 80。
+ **百分比**阈值是相对于最小值或最大值定义的；例如，80%。

您可以将阈值应用于以下可视化：
+ [条形仪表面板](alert-panel-bar-gauge-panel.md) 
+  [仪表面板](gauge-panel.md) 
+  [图形面板](graph-panel.md)
+  [统计面板](stat-panel.md)
+  [表面板](table-panel.md)

## 默认阈值
<a name="default-thresholds"></a>

在支持阈值的可视化中，Amazon Managed Grafana 会设置以下默认阈值：80 = 红色；基本 = 绿色；模式 = 绝对。

**基本**值表示负无穷大。它通常是*代表良好*的颜色。

## 添加阈值
<a name="add-a-threshold"></a>

您可以根据需要向面板添加任意数量的阈值。Grafana 工作区会自动将阈值从最高值到最低值排序。

**注意**  
这些说明仅适用于统计数据、计量表、条形仪表和表可视化。

1. 选择要向其中添加阈值的面板。

1. 选择**字段**选项卡。

1. 选择**添加阈值**。

   Amazon Managed Grafana 添加了一个阈值，其中包含建议的数字和颜色值。

1. 接受建议或编辑新的阈值。
   +  **编辑颜色**：选择要更改的色点，然后选择一种新颜色。
   +  **编辑编号**：选择要更改的编号，然后输入一个新编号。
   +  **阈值模式**：选择模式，以更改此面板上所有阈值的模式。

1. 选择**保存**将更改保存在控制面板中。

## 向图表面板添加阈值
<a name="add-a-threshold-to-a-graph-panel"></a>

在图表面板可视化中，您可以使用阈值向图表中添加任意线条或区域，以便更轻松地查看图表何时跨越特定阈值。

1. 选择要向其中添加阈值的图表面板。

1. 在**面板**选项卡上，选择**阈值**。

1. 选择**添加阈值**。

1. 根据需要填写任意数量的字段。只有 **T1** 字段是必填字段。
   +  **T1**：需要两个值才能显示阈值。
     +  **lt** 或 **gt**：选择 **lt** 表示小于，或选择 **gt** 表示大于，以指示阈值适用的范围。
     +  **值**：输入阈值。Grafana 工作区沿着 y 轴在该值的位置绘制一条阈值线。
   +  **颜色**：选择与颜色对应的条件，或定义自己的颜色。
     +  **自定义**：定义填充颜色和线条颜色。
     +  **critical**：填充和线条颜色为红色。
     +  **warning**：填充和线条颜色为黄色。
     +  **ok**：填充和线条颜色为绿色。
   +  **填充**：选择是否显示阈值填充。
   +  **线条**：选择是否显示阈值线条。
   +  **Y 轴**：选择**左**或**右**。

1. 选择**保存**将更改保存在控制面板中。

## 删除阈值
<a name="delete-a-threshold"></a>

1. 选择要从其中移除阈值的面板。

1. 选择**字段**选项卡。（或者，对于图表面板，选择**面板**选项卡。）

1. 选择要移除的阈值旁边的垃圾桶图标。

1. 选择**保存**将更改保存在控制面板中。

# WindRose
<a name="windrose"></a>

****  
本文档主题专为支持 **Grafana 8.x 版本**的 Grafana 工作区而设计。  
对于支持 Grafana 10.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 10](using-grafana-v10.md)。  
对于支持 Grafana 9.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 9](using-grafana-v9.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="windrose-options"></a>

该 WindRose 面板支持以下选项：
+ 轴频率
+ 轴样式（度数或指南针）
+ 刻度（线性、平方、对数）

# 检查面板
<a name="inspect-a-panel"></a>

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

面板检查器可帮助您了解面板并对其进行故障排除。您可以检查任何 Grafana 工作区面板的原始数据，将该数据导出到逗号分隔值（CSV）文件，查看查询请求，以及导出面板和数据 JSON。

## 面板检查器 UI
<a name="panel-inspector-ui"></a>

面板检查器在面板顶部显示 **Inspect: < NameOfPanelBeingInspected >**。选择右上角的箭头可展开或缩小窗格。

面板检查器由四个选项卡组成：
+  **数据选项卡**：显示应用转换后查询返回的原始数据。默认情况下，不会应用覆盖和值映射之类的字段选项。
+  **统计选项卡**：显示查询花费的时间和返回的数量。
+  **JSON 选项卡**：允许您查看和复制面板 JSON、面板数据 JSON 和数据帧结构 JSON。如果您要配置或管理 Amazon Managed Grafana，这会很有用。
+  **查询选项卡**：显示 Amazon Managed Grafana 查询数据来源时向服务器发送的请求。

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

## 面板检查器任务
<a name="panel-inspector-tasks"></a>

在面板检查器中，您可以检查面板、检查和下载原始查询结果、检查查询性能、查看面板 JSON 模型以及查看原始请求和对数据来源的响应。

### 打开面板检查器
<a name="open-the-panel-inspector"></a>

您可以检查任何可以查看的面板。

1. 在 Grafana 工作区控制面板中，选择包含想要检查的面板的控制面板。

1. 选择要检查的面板的标题，然后选择**检查**。或者将鼠标悬停在面板标题上，然后按 **i**。

面板检查器面板在屏幕右侧打开。

### 检查原始查询结果
<a name="inspect-raw-query-results"></a>

在表中查看原始查询结果。这些是应用转换后并在面板应用字段选项或字段选项覆盖之前由查询返回的数据。

1. 打开面板检查器，然后选择**数据**选项卡。或者在面板菜单中，选择**检查**、**数据**。

1. 如果您的面板包含多个查询或查询多个节点，您还有其他选项。
+  **选择结果**：选择要查看的结果集数据。
+  **转换数据** 
  +  **按时间加入**：同时查看所有查询中的原始数据，每列一个结果集。选择列标题以对数据重新排序。

  在应用了字段选项和选项覆盖的表中查看原始查询结果。

  1. 在面板检查器中打开**数据**选项卡。

  1. 在表上方，选择**数据显示选项**。

  1. 选择**应用字段配置**切换按钮。

### 将原始查询结果作为 CSV 文件下载
<a name="download-raw-query-results-as-csv"></a>

Amazon Managed Grafana 会在默认浏览器下载位置生成一个 CSV 文件。您可以在所选的查看器中打开该文件。

1. 打开面板检查器。

1. 如上所述，检查原始查询结果。调整设置，直到看到要导出的原始数据。

1. 选择**下载 CSV**。

要下载用于 Excel 的 CSV 格式的文件，请在选择**下载 CSV** 之前展开**数据选项**面板并打开**下载为 Excel 格式**选项。

### 检查查询性能
<a name="inspect-query-performance"></a>

**统计**选项卡显示统计数据，告诉您查询需要多长时间、发送的查询数量以及返回的行数。此信息有助于您对查询进行问题排查，尤其是在任何数字意外偏高或偏低时。

1. 打开面板检查器。

1. 选择**状态**选项卡。

统计数据以只读格式显示。

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

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

1. 打开面板检查器，然后选择 **JSON** 选项卡。或者，在面板菜单中，选择**检查**、**面板 JSON**。

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

1. 您可以展开或折叠 JSON 的某些部分进行浏览，也可以选择**复制到剪贴板**，然后将 JSON 粘贴到其他应用程序中。

### 查看对数据来源的原始请求和响应
<a name="view-raw-request-and-response-to-data-source"></a>

1. 打开面板检查器，然后选择**查询**选项卡。或者，在面板菜单中，选择**检查**、**查询**。

1. 选择**刷新**。

Amazon Managed Grafana 向服务器发送查询以收集信息，然后它会显示结果。您可以向下钻取查询的特定部分，展开或折叠所有部分，或者将数据复制到剪贴板以在其他应用程序中使用。

# 计算列表
<a name="list-of-calculations"></a>

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

本主题列出并定义了 Amazon Managed Grafana 中使用的计算方式。

在其他地方，这些计算用于**转换**选项卡以及条形仪表、计量表和统计数据可视化中。


|  计算  |  说明  | 
| --- | --- | 
|  全部为 null  |  当所有值都为 null 时为 True  | 
|  全部为 0  |  当所有值都为 0 时为 True  | 
|  更改计数  |  字段值更改的次数  | 
|  计数  |  字段中值的数量  | 
|  Delta  |  值的累积变化  | 
|  区别  |  字段第一个值和最后一个值的差  | 
|  去重计数  |  字段中唯一值的数量  | 
|  第一个（非 null）  |  第一个，字段中的非 null 值  | 
|  最大值  |  字段的最大值  | 
|  平均值  |  字段中所有值的平均值  | 
|  最小值  |  字段的最小值  | 
|  最小值（大于 0）  |  字段的最小正值  | 
|  Range  |  字段的最大值和最小值的差  | 
|  步骤  |  字段值之间的最小间隔  | 
|  Total  |  字段中所有值的总和  | 

# 控制面板
<a name="dashboard-overview"></a>

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

 *控制面板*是一组由一个或多个面板组成的集合，这些面板整理和排列成一行或多行。Amazon Managed Grafana 随附多种面板。Amazon Managed Grafana 可让您轻松构造正确的查询并自定义显示属性，从而创建所需的控制面板。每个面板都可以与任何已配置的数据来源中的数据交互。

## 管理控制面板
<a name="manage-dashboards"></a>

 要控制控制面板的时间段，可以使用控制面板右上方的 [时间范围控件](dashboard-time-range-controls.md)。

 控制面板可以使用模板和变量，使其更具动态性和交互性。有关更多信息，请参阅 [模板和变量](templates-and-variables.md)。

 控制面板可以使用 [Annotations](dashboard-annotations.md) 跨面板显示事件数据。这有助于将面板中的时间序列数据与其他事件关联起来。

 控制面板可以通过多种方式轻松共享。有关更多信息，请参阅 [共享控制面板](share-a-dashboard.md)。

 您可以对控制面板进行标记，而通过控制面板选择器，您可以快速地、以搜索方式访问特定组织中的所有控制面板。

## 行
<a name="dashboard-rows"></a>

 *行*是控制面板中的逻辑分隔线。用于将面板分成组。

 行的宽度始终为 12 个*单位*。这些单位会根据浏览器的水平分辨率自动缩放。您可以通过设置特定宽度，控制行内面板的相对宽度。

 Amazon Managed Grafana 使用单位抽象来优化所有屏幕尺寸上的外观。

**注意**  
 借助该 MaxDataPoint 功能，无论分辨率或时间范围如何，Amazon Managed Grafana 都可以显示所需数量的数据点。

 要折叠行，请选择行标题。如果在保存控制面板时有一行处于折叠状态，则控制面板将以该状态保存，并且在展开该行之前不会加载其中的图表。

 根据所选的模板变量，使用重复行功能可以动态创建或移除整行面板。

# Annotations
<a name="dashboard-annotations"></a>

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

 注释提供了一种用丰富的事件在图形上标记点的方法。将鼠标悬停在注释上时，您可以查看事件描述和事件标签。文本字段可以包含指向其他系统的链接，以提供更多详细信息。

## 原生注释
<a name="native-annotations"></a>

 Amazon Managed Grafana 自带原生注释存储，可直接从图形面板添加注释事件。

## 添加注释
<a name="adding-annotations"></a>

 要添加注释，请按 **Ctrl** 或 **Cmd**，然后选择要添加注释的位置。要使注释可从其他控制面板中搜索，请向其添加标签。

### 添加区域注释
<a name="adding-regions-events"></a>

 要为区域创建注释，请在选择该区域的同时，按 **Ctrl** 或 **Cmd**。

### 内置查询
<a name="annotation-built-in-query"></a>

 添加注释后，注释仍然可见。这是因为所有控制面板上都存在内置注释查询。此注释查询会获取源于当前控制面板的所有注释事件，并将其显示在创建事件的面板上。这包括警报状态历史记录注释。通过选择**控制面板设置**（齿轮）图标，选择**注释**，然后修改名为 `Annotations & Alerts (Built-in)` 的查询，您可以停止获取和显示注释。

 使用**另存为**功能复制控制面板时，新控制面板具有新的控制面板 ID，因此在源控制面板上创建的注释在副本上不可见。如果源控制面板注释有可筛选的标签，则可以通过添加新的**注释查询**并根据标签进行筛选，从而在副本上显示注释。

### 按标签查询
<a name="annotation-query-by-tag"></a>

 通过使用 `-- Grafana --` 数据来源并将**筛选条件**设置为**标签**，您可以创建新的注释查询，以从原生注释存储中获取注释。至少指定一个标签。例如，创建一个名为 `outages` 的注释查询，并指定一个名为 `outage` 的标签。此查询将显示您（通过任何控制面板或 API）创建的具有 `outage` 标签的所有注释。

默认情况下，如果您在注释查询中添加多个标签，Amazon Managed Grafana 只会显示具有您提供的所有标签的注释。要显示至少包含您提供的一个标签的注释，请开启**匹配任意**。

 在 Amazon Managed Grafana 中，可在标签查询中使用模板变量。例如，如果您有一个显示不同服务统计信息的控制面板和一个控制显示哪些服务的模板变量，您可以在注释查询中使用相同的模板变量，以仅显示这些服务的注释。

## 查询其他数据来源
<a name="querying-other-data-sources"></a>

 注释事件通过使用注释查询来获取。要在控制面板中添加新注释查询，请选择**控制面板设置**（齿轮）图标，选择 `Annotations`，然后选择**新建**。

 指定注释查询的名称。此名称会显示在用于显示或隐藏此查询注释事件的复选框旁。例如，您可能有两个名为 `Deploys` 和 `Outages` 的注释查询。您可以选择或清除复选框，以指定要显示的注释。

### 注释查询详细信息
<a name="annotation-query-details"></a>

 每个数据来源的注释查询选项都不同。
+ [使用 Graphite 查询编辑器的注释](https://docs.aws.amazon.com/en_us/grafana/latest/userguide/using-graphite-in-AMG.html#graphite-annotations)
+ [使用 OpenSearch 数据源的注释](https://docs.aws.amazon.com/en_us/grafana/latest/userguide/ES-use-datasource.html#ES-annotations)
+ [使用 Prometheus 的注释](https://docs.aws.amazon.com/en_us/grafana/latest/userguide/using-prometheus-datasource.html#p-annotations)
+ [使用 MySQL 的注释](https://docs.aws.amazon.com/en_us/grafana/latest/userguide/using-mysql-in-AMG.html#mysql-annotations)
+ [使用 PostgreSQL 的注释](https://docs.aws.amazon.com/en_us/grafana/latest/userguide/using-postgresql-in-AMG.html#postgresql-annotations)

# 控制面板文件夹
<a name="dashboard-folders"></a>

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

 文件夹是一种对控制面板进行组织和分组的方法。如果您有很多控制面板，或者多个团队使用同一个 Grafana 工作区，它将非常有用。

## 创建文件夹
<a name="how-to-create-a-folder"></a>

要创建文件夹，请执行以下操作之一：
+  在侧边菜单的 \$1 图标下，选择**创建文件夹**链接。
+  在**管理控制面板**页面，选择**创建文件夹**按钮。

 在**创建文件夹**页面，输入文件夹的唯一名称，然后选择**创建**。

保存控制面板，您可以选择现有文件夹或创建新文件夹。

## 管理控制面板
<a name="folders-manage-dashboards"></a>

 在**管理控制面板**页面，您可以执行各种任务：
+  创建一个文件夹。
+  创建控制面板。
+  将控制面板移入文件夹。
+  删除多个控制面板。
+  导航到文件夹页面（您可以在其中设置文件夹或其控制面板的权限）。

## 控制面板文件夹页面
<a name="dashboard-folder-page"></a>

 要打开“控制面板文件夹”页面，请在搜索结果中的控制面板列表上，或在“管理控制面板”页面上，将鼠标悬停在文件夹上，然后选择出现的齿轮图标。

 “控制面板文件夹”页面与“管理控制面板”页面类似。在“控制面板文件夹”页面，可以执行以下任务：
+  移动或删除文件夹中的控制面板。
+  重命名文件夹（在**设置**选项卡上）。
+  设置文件夹的权限（文件夹中的控制面板将继承此权限）。

## Permissions
<a name="folder-permissions"></a>

 权限可以分配给文件夹，并由文件夹中包含的控制面板继承。使用访问控制列表（ACL），可以为**组织角色**、**团队**和个人**用户**分配权限。有关更多信息，请参阅 [控制面板和文件夹权限](dashboard-and-folder-permissions.md)。

# 播放列表
<a name="dashboard-playlist"></a>

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

 播放列表是按顺序显示的控制面板列表。您可以使用播放列表来建立态势感知，或向团队或访客展示指标。

 Amazon Managed Grafana 可自动将控制面板缩放至任何分辨率，包括大屏幕。

 您可以从**控制面板**子菜单的侧边菜单访问**播放列表**功能。

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

 播放列表按顺序展示控制面板，控制面板之间有设定的顺序和时间间隔。

1.  要访问**播放列表**功能，请将鼠标悬停在侧边菜单上。

1.  选择**播放列表**。

1.  选择**新建播放列表**。

1.  在**名称**文本框中，输入播放列表的名称。

1.  在**时间间隔**文本框中，输入时间间隔。

   时间间隔是指，Amazon Managed Grafana 在前进到播放列表上的下一个控制面板之前，在特定控制面板上停留的时间。

1.  在要添加到播放列表的每个控制面板旁边，选择**添加到播放列表**。

1.  选择**创建**。

## 编辑播放列表
<a name="edit-a-playlist"></a>

 在创建播放列表时或保存后，您可以编辑播放列表。

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

1.  选择**播放列表**。

1.  选择您要编辑的播放列表。

### 编辑播放列表的名称
<a name="edit-the-name-of-a-playlist"></a>

1. 选择**名称**文本框。

1.  编辑名称。

1.  选择 **保存** 以保存您的更改。

### 编辑播放列表的时间间隔
<a name="edit-the-interval-of-a-playlist"></a>

1.  选择**时间间隔**文本框。

1.  编辑时间间隔。

1.  选择 **保存** 以保存您的更改。

### 向播放列表添加控制面板
<a name="add-a-dashboard-to-a-playlist"></a>

1.  在要添加的控制面板旁边，选择**添加到播放列表**。

1.  选择 **保存** 以保存您的更改。

### 搜索要添加的控制面板
<a name="search-for-a-dashboard-to-add"></a>

1. 在**添加控制面板**下，选择**按名称搜索控制面板**文本框。

1.  输入名称或正则表达式。

1. 如果需要，按已加星标的状态或标签筛选结果。默认情况下，已加星标的控制面板会显示为可添加到播放列表的选项。

1.  选择**保存**，保存您的更改。

### 重新排列控制面板顺序
<a name="rearrange-dashboard-order"></a>

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

1.  选择 **保存** 以保存您的更改。

### 移除控制面板
<a name="remove-a-dashboard"></a>

1.  选择 x 图标可从播放列表中移除控制面板。

1.  选择 **保存** 以保存您的更改。

### 删除播放列表
<a name="delete-a-playlist"></a>

1.  选择**播放列表**。

1.  在要删除的播放列表旁边选择 x 图标。

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

 您可以保存播放列表，将其添加到**播放列表**页面，然后在那里启动。保存之前，请务必添加希望出现在播放列表中的所有控制面板。

1.  要访问**播放列表**功能，请将鼠标悬停在侧边菜单上。

1.  选择**播放列表**。

1.  选择播放列表。

1.  编辑播放列表。

   确保播放列表已添加**名称**、**间隔**和至少一个**控制面板**。

1.  选择**保存**。

## 启动播放列表
<a name="start-a-playlist"></a>

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

 默认情况下，每个控制面板的显示时间长度都是在**时间间隔**字段中输入的时间，在创建或编辑播放列表时您可以设置此字段。启动播放列表后，可以通过屏幕顶部的导航栏进行控制。

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

1.  在要启动的播放列表旁，选择**启动播放列表**。

1.  在下拉列表中，选择以下显示模式之一：
   +  **正常模式** 
     +  侧边菜单仍然可见。
     +  导航栏、行和面板控件显示在屏幕顶部。
   +  **电视模式** 
     +  已隐藏或移除侧边菜单。
     +  导航栏、行和面板控件显示在屏幕顶部。
     +  用户处于非活动状态 1 分钟后，会自动开启电视模式。
     +  您可以使用 **d v** 序列快捷键手动开启电视模式，也可以通过将参数 `?inactive` 附加到控制面板 URL 末尾来开启电视模式。
     +  您可以通过任何鼠标移动或键盘操作来禁用电视模式。
   +  **电视模式（带有自动调整面板）** 
     +  已隐藏或移除侧边菜单。
     +  导航栏、行和面板控件显示在屏幕顶部。
     +  控制面板中的面板会自动调整以优化屏幕空间。
   +  **自助服务模式** 
     +  侧边菜单、导航栏、行和面板控件会完全隐藏或从视图中移除。
     +  播放列表启动后，您可以使用 **d v** 序列快捷键手动启用自助服务模式。
     +  您可以使用相同的快捷键手动关闭自助服务模式。
   +  **自助服务模式（带有自动调整面板）：**
     +  侧边菜单、导航栏、行和面板控件会完全隐藏或从视图中移除。
     +  控制面板中的面板会自动调整以优化屏幕空间。

## 控制播放列表
<a name="control-a-playlist"></a>

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


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

 要通过键盘停止播放列表，请按 **Esc** 键。

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

在您想要使用的视图模式中复制 URL 并粘贴到目标，就可以共享播放列表。

1.  从**控制面板**菜单中，选择**播放列表**。

1.  在要共享的播放列表旁边，选择**启动播放列表**，然后选择所需的视图模式。

1.  要将 URL 复制到剪贴板，请选择**复制链接地址**。

    例如，在自助服务模式下，Grafana Play 网站上播放列表的 URL 可能是 `https://play.grafana.org/d/000000010/annotations?orgId=1&kiosk` 

1.  将 URL 粘贴到目标。

# 控制面板搜索
<a name="dashboard-search"></a>

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

 控制面板可以按控制面板名称搜索，按一个（或多个）标签筛选，或按星标状态筛选。可以通过控制面板顶部导航栏中的控制面板选取器访问控制面板搜索。也可以使用快捷键 **F** 打开控制面板搜索。

仅使用键盘时，您可以使用键盘箭头键浏览结果，然后按 **Enter** 键打开所需的控制面板。

## 按控制面板名称查找
<a name="find-by-dashboard-name"></a>

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

控制面板搜索具有以下特点：
+ 实时
+ 不区分大小写
+  对于存储型控制面板和基于文件的控制面板，都能运作

## 按标签筛选
<a name="filter-by-tags"></a>

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

 要按标签筛选控制面板列表，请选择右侧列中出现的任何标签。您可以通过选择其他标签，进一步筛选列表。

要查看所有可用标签的列表，请选择**按标签筛选**下拉菜单。选择标签后，控制面板搜索会立即进行筛选。

只使用键盘时，按 **Tab** 键将焦点移至标签链接，按向下箭头键查找标签，按 **Enter** 键选择标签。

**注意**  
 选择多个标签时，Amazon Managed Grafana 会显示包含所有这些标签的控制面板。

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

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

 要共享控制面板，请选择顶部导航栏中的**共享控制面板**（共享图标）。此操作将打开**共享**对话框，您可以在其中看到指向当前控制面板的链接，并包含当前选定的时间范围和模板变量。如果您对控制面板进行了更改，请务必在复制链接之前保存这些更改。

## 控制面板快照
<a name="dashboard-snapshot"></a>

 控制面板快照是即时公开共享交互式控制面板的方式。创建快照时，Amazon Managed Grafana 会删除敏感数据，例如查询（指标、模板和注释）和面板链接，仅在控制面板中嵌入可见的指标数据和序列名称。任何拥有该链接并能访问 URL 的人都可以访问控制面板快照。

## 发布快照
<a name="publish-snapshots"></a>

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

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

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

 选择面板标题以打开面板菜单，然后在面板菜单中选择**共享**以打开**共享面板**对话框。您可以复制链接，这将带您进入包含当前时间范围和所选模板变量的面板。

# 时间范围控件
<a name="dashboard-time-range-controls"></a>

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

 Amazon Managed Grafana 提供了多种方法来管理正在可视化的数据的时间范围，包括控制面板级别和面板级别的时间范围。

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

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

## 时间单位和相对范围
<a name="time-units-and-relative-ranges"></a>

 支持以下时间单位：
+ `s`（秒）
+ `m`（分钟）
+ `h`（小时）
+ `d`（天）
+ `w`（周）
+ `M`（月）
+ `y`（年）

 使用减号运算符可以回退时间（相对于现在）。要显示单位的完整周期（如日、周或月），请附加 `/<time unit>`。

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

 下面是一些示例：


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

## 常用时间范围控件
<a name="common-time-range-controls"></a>

 控制面板和面板时间控件具有通用的用户界面，其中包含以下选项。

### 当前时间范围
<a name="current-time-range"></a>

 当前时间范围（也称为*时间选取器*）显示您正在查看的控制面板或面板中当前显示的时间范围。

 将光标悬停在字段上，可查看范围内的确切时间戳及其来源（如本地浏览器）。

 要更改时间范围，请选择当前时间范围。您可以使用*相对时间范围*（例如过去 15 分钟）或*绝对时间范围*（例如 `2020-05-14 00:00:00 to 2020-05-15 23:59:59`）来更改当前时间。

### 相对时间范围
<a name="relative-time-range"></a>

 可从**相对时间范围**列表中选择相对时间范围。下面是一些相对时间范围的示例：
+  过去 30 分钟 
+  过去 12 小时 
+  过去 7 天 
+  过去 2 年 
+  昨天 
+  前天 
+  上周的这一天 
+  今天到目前为止 
+  本周至今 
+  本月至今 

### 绝对时间范围
<a name="absolute-time-range"></a>

 通过两种方式之一来设置绝对时间范围：
+  在**从**和**至**字段中输入值。您可以输入精确的时间值或相对值，例如 `now-24h`，然后选择**应用时间范围**。
+  选择**从**或**至**字段。Amazon Managed Grafana 将显示日历。选择要用作当前时间范围的一个或多个日期，然后选择**应用时间范围**。

 Amazon Managed Grafana 还会显示最近使用的绝对范围。

### 缩小（Cmd\$1Z 或 Ctrl\$1Z）
<a name="zoom-out-cmdz-or-ctrlz"></a>

 要在控制面板或面板可视化中查看更大的时间范围，请选择**缩小时间范围**图标。

### 放大（仅适用于图形可视化）
<a name="zoom-in-only-applicable-to-graph-visualizations"></a>

 在图形可视化中，拖动以选择要查看的时间范围。

### 刷新控制面板
<a name="refresh-dashboard"></a>

 选择**刷新控制面板**图标可立即运行控制面板上的所有查询，并刷新可视化。当新的刷新开始时，Amazon Managed Grafana 会取消所有待处理的请求。

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

## 控制面板时间设置
<a name="dashboard-time-settings"></a>

 时间设置按控制面板保存。

 要访问控制面板时间设置，请选择屏幕顶部的**控制面板设置**（齿轮）图标。这些设置位于**常规**选项卡的**时间选项**部分中。
+  **时区**：您要监控的服务或系统的本地时区。当您监控跨多个时区运行的系统或服务时，这会很有帮助。
  +  **默认**：为用户个人资料、团队或组织选择的默认时区。如果没有为用户个人资料、用户所属的团队或组织指定时区，Amazon Managed Grafana 将使用本地浏览器时间。
  +  **浏览器时间** 为正在使用的浏览器配置的时区。这通常是在计算机上设置的时区。
  +  **协调世界时**：标准的 ISO 8601 时区，包括世界标准时间。有关详细信息，请参阅[时区列表](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)。
+  **自动刷新**：可自定义的相对时间和自动刷新设置选项。条目以逗号分隔，可以是任何有效的时间单位。
+  **现在延迟**：覆盖 `now` 值的时间延迟值。一般情况下，此功能用于通过顺应数据聚合中的已知延迟来避免空值。
+  **隐藏时间选择器**：用于不显示时间选择器的选项。

## 面板时间覆盖和时间偏移
<a name="panel-time-overrides-and-timeshift"></a>

 在 [查询选项](panel-queries.md#query-options) 中，您可以覆盖各个面板的相对时间范围，使它们与顶部导航栏的控制面板时间选择器中所选的内容不同。您可以同时显示不同时间段或日期的指标。

## 使用 URL 控制时间范围
<a name="control-the-time-range-using-a-url"></a>

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

# 导出和导入控制面板
<a name="dashboard-export-and-import"></a>

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

 通过用户界面或 [HTTP API]，可以轻松导出和导入 Amazon Managed Grafana 控制面板 

## 导出控制面板
<a name="exporting-a-dashboard"></a>

 控制面板以 Amazon Managed Grafana JSON 格式导出，其中包含您需要的一切内容，包括布局、变量、样式、数据来源和查询，以便日后导入控制面板。

 导出功能可在“共享”窗口中访问，在控制面板菜单中选择“共享”按钮即可打开该窗口。

### 使控制面板可移植
<a name="making-a-dashboard-portable"></a>

 导出控制面板供他人使用时，最好为指标前缀（使用常量变量）和服务器名称等值添加模板变量。

 `Constant` 类型的模板变量会自动在控制面板中隐藏。导入控制面板时，它也会作为必填输入被添加进来。有关模板化和模板变量的更多信息，请参阅 [模板和变量](templates-and-variables.md)。

## 导入控制面板
<a name="importing-a-dashboard"></a>

 要导入控制面板，请在侧边菜单中选择 \$1 图标，然后选择**导入**。

 您可以上传控制面板 JSON 文件、粘贴控制面板 URL，或直接将控制面板 JSON 文本粘贴到文本区域。

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

## 浏览 Grafana.com 上的控制面板
<a name="discover-dashboards-on-grafana.com"></a>

 在 [Grafana.com/dashboards](https://grafana.com/dashboards) 上查找常见服务器应用程序的控制面板。

# 控制面板版本历史记录
<a name="dashboard-version-history"></a>

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

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

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

## 比较两个控制面板版本
<a name="comparing-two-dashboard-versions"></a>

 要比较两个控制面板版本，请从列表中选择要比较的两个版本。选择两个版本后，选择**比较版本**以打开差异视图。默认情况下，您将看到更改的文本摘要，如下图所示。

 要查看代表您的控制面板的原始 JSON 的差异，请选择**查看 JSON 差异**。

 要恢复到与之比较的早期版本，请选择**还原到版本 <x>**。

## 恢复到之前保存的控制面板版本
<a name="restoring-to-a-previously-saved-dashboard-version"></a>

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

 恢复到先前版本后，将创建一个新版本，其中包含与先前版本完全相同的数据，但版本号不同。该版本在**注释**列中指明。这有助于确保您之前的控制面板版本不受更改的影响。

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

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

 Amazon Managed Grafana 有许多键盘快捷键可供选择。要显示您的 Amazon Managed Grafana 版本中可用的所有键盘快捷键，请按键盘上的 **Shift \$1 ?**。

 **Amazon Managed Grafana 包含以下常用快捷方式：**
+  **Ctrl\$1S** 可保存当前控制面板。
+  **Ctrl\$1F** 可打开控制面板查找器/搜索。
+  **Ctrl\$1H** 可隐藏所有控件（隐藏控件适用于电视显示器）。
+  在全屏模式或编辑模式下，**Escape** 会退出图形。

# 控制面板 JSON 模型
<a name="dashboard-json-model"></a>

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

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

**查看控制面板 JSON 对象**

1.  打开控制面板。

1.  在顶部导航栏选择**管理控制面板**。

1.  从下拉菜单中选择**查看 JSON**。

## JSON 字段
<a name="dashboard-json-fields"></a>

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

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

```
{
  "id": null,
  "uid": "cLV5GDCkz",
  "title": "New dashboard",
  "tags": [],
  "style": "dark",
  "timezone": "browser",
  "editable": true,
  "hideControls": false,
  "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  |  任何人都可以生成的唯一控制面板标识符。uid 是一个 8-40 个字符的字符串。 | 
|  删除实例快照  |  控制面板的当前标题。 | 
|  tags  |  与控制面板相关联的标签。在 JSON 中，标签是一个字符串数组。 | 
|  style  |  控制面板的主题（例如，dark 或 light）。 | 
|  timezone  |  控制面板的时区（utc 或 browser）。 | 
|  editable  |  是否可以编辑控制面板。 | 
|  graphTooltip  |  工具提示样式。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/dashboard-json-model.html)  | 
|  time  |  控制面板的时间范围（例如，过去 6 小时，过去 7 天）。 | 
|  timepicker  |  时间选取器元数据。有关更多信息，请参阅 [时间选取器](#dashboard-json-timepicker)。 | 
|  templating  |  模板元数据。有关更多信息，请参阅 [模板和变量](templates-and-variables.md)。 | 
|  annotations  |  注释元数据。有关更多信息，请参阅 [Annotations](dashboard-annotations.md)。 | 
|  refresh  |  自动刷新时间间隔。 | 
|  schemaVersion  |  JSON 架构的版本（整数），每当 Amazon Managed Grafana 更新对此架构进行更改时都会递增。 | 
|  version  |  控制面板的版本（整数），每次更新控制面板时都会递增。 | 
|  panels  |  面板数组。有关更多信息，请参阅 [面板](#dashboard-JSON-panels)。 | 

## 面板
<a name="dashboard-JSON-panels"></a>

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

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

### 面板大小和位置
<a name="panel-size-and-position"></a>

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

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

### 时间选取器
<a name="dashboard-json-timepicker"></a>

以下示例显示了 `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"
  }
```

 下表提供了 `timepicker` 的用法细节。


|  Name  |  用法  | 
| --- | --- | 
|  collapse  |  timepicker 是否折叠  | 
|  enable  |  timepicker 是否激活  | 
|  notice  |  TODO  | 
|  now  |  TODO  | 
|  refresh\$1intervals  |  TODO  | 
|  status  |  TODO  | 
|  type  |  TODO  | 

### 模板化
<a name="json-templating"></a>

 `templating` 字段包含一个模板变量数组，其中包括这些变量保存的值及其他元数据。以下示例显示 `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"
      }
    ]
  }
```

 下表为模板部分提供了用法细节。


|  Name  |  用法  | 
| --- | --- | 
|  enable  |  模板是否已激活。 | 
|  list  |  一个对象数组，每个对象代表一个模板变量  | 
|  allFormat  |  从数据来源获取所有值时使用的格式（例如 wildcard、glob、regex 和 pipe）。 | 
|  current  |  在控制面板上显示当前选定的变量文本/值  | 
|  data source  |  显示变量的数据来源  | 
|  includeAll  |  所有值选项是否可用  | 
|  multi  |  是否可以从变量值列表中选择多个值  | 
|  multiFormat  |  从数据来源获取时间序列时使用的格式  | 
|  name  |  变量的名称  | 
|  options  |  仪表板上可供选择的变量 text/value 对数组  | 
|  query  |  用于获取变量值的数据来源查询  | 
|  refresh  |  TODO  | 
|  regex  |  TODO  | 
|  type  |  变量的类型（custom、query 或 interval）  | 

# 脚本化控制面板
<a name="scripted-dashboards"></a>

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

**警告**  
 此功能已弃用，将在未来版本中移除。

 如果您有许多指标名称在定义的模式中发生变化（例如，新服务器），则不断创建新的控制面板可能会很耗时。

 使用脚本化仪表板，您可以使用动态创建仪表板。 JavaScript在 Grafana 安装文件夹中的 `public/dashboards/` 下，有一个名为 `scripted.js` 的文件。此文件包含脚本化控制面板的示例。您可以使用 URL 访问它：`http://grafana_url/dashboard/script/scripted.js?rows=3&name=myName`

 当您打开 `scripted.js` 时，您可以看到它如何从 `ARGS` 变量中读取 URL 参数，然后添加行和面板。

## 示例：scripted.js
<a name="example"></a>

```
var seriesName = 'argName';

if (!_.isUndefined(ARGS.name)) {
  seriesName = ARGS.name;
}

dashboard.panels.push({
  title: 'Events',
  type: 'graph',
  fill: 1,
  linewidth: 2,
  gridPos: {
    h: 10,
    w: 24,
    x: 0,
    y: 10,
  },
  targets: [
    {
      target: "randomWalk('" + seriesName + "')",
    },
    {
      target: "randomWalk('random walk2')",
    },
  ],
});

return dashboard;
```

## 更多示例
<a name="more-examples"></a>

 您可以在 Grafana 安装的 `public/dashboards/` 目录中找到更多示例。

# Explore
<a name="explore"></a>

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

 在 Grafana 工作区中，控制面板 UI 提供了用于构建可视化控制面板的工具。*Explore* 会删除所有控制面板和面板选项，这样您就可以专注于查询。迭代直到查询正常运行，然后规划和构建控制面板。

 对于基础设施监控和事件响应，您不再需要切换到其他工具来调试出现的问题。您可以使 Explore 更深入地挖掘您的指标和日志，找出原因。

 Explore 使您无需创建控制面板即可更轻松地查看数据。如果您的数据来源支持图表和表数据，则 Explore 会以图表和表的形式显示结果。这可以帮助您同时查看数据趋势和更多详细信息。

## 开始探索
<a name="start-exploring"></a>

**注意**  
 默认情况下，具有“查看者”角色的用户无法编辑，也无权访问 Explore。

 左侧菜单上的 **Explore** 图标会打开一个空的 Explore 选项卡。

 要从面板中的现有查询开始，请从**面板**菜单中选择 **Explore** 选项。这将打开 Explore 选项卡，其中包含来自面板的查询。然后，您可以在控制面板之外调整或迭代查询。

 从左上角的下拉列表中选择您的数据来源。Prometheus 有一个自定义的 Explore 实现。其他数据来源使用其标准查询编辑器。

 在查询字段中，您可以编写查询并探索数据。查询字段旁边有三个按钮：清除按钮（X）、添加查询按钮（\$1）和删除查询按钮（-）。与普通查询编辑器一样，您可以添加和移除多个查询。

## 拆分和比较
<a name="split-and-compare"></a>

 拆分视图功能是一种比较图表和表格， side-by-side或者在一个页面上一起查看相关数据的方法。选择 “**拆分**” 可复制当前查询，并将页面拆分为两个 side-by-side查询。您可以选择为新查询选择不同的数据来源。这使您有机会比较两个不同服务器的相同查询，或者将过渡环境与生产环境进行比较。

 在拆分视图中，通过选择附在时间选择器上的时间同步按钮之一，可以链接两个面板的时间选择器（如果您更改其中一个时间选择器，另一个也会更改）。链接时间选择器有助于保持拆分视图查询的开始和结束时间同步，这样您就可以在两个拆分面板中查看相同的时间间隔。

 您可以通过选择**关闭拆分**来关闭新创建的查询。

## 共享缩短的链接
<a name="share-shortened-link"></a>

 使用 “**共享缩短链接**” 功能创建更小、更简单的 URLs 格式，`/goto/:uid`而不是共享 URLs 包含复杂查询参数的较长格式。您可以通过在 Explore 工具栏中选择**共享**选项来创建缩短的链接。任何从未使用过的缩短的链接都会在 7 天后自动删除。

## 查询历史记录
<a name="query-history"></a>

 查询历史记录是您在 Explore 中使用的查询列表。历史记录是浏览器的本地记录，不会共享。要打开历史记录并与之交互，请在 Explore 中选择**查询历史记录**。

### 查看查询历史记录
<a name="view-query-history"></a>

 FIn 查询历史记录，你可以执行以下操作：
+  运行查询。
+  创建或编辑注释。
+  将查询复制到剪贴板。
+  将包含查询的短链接复制到剪贴板。
+  将查询标上星号 

### 管理收藏的查询
<a name="manage-favorite-queries"></a>

 “查询历史记录”选项卡中所有标有星号的查询都会显示在“已加星标”选项卡上。您可以更快地访问自己喜欢的查询并重复使用这些查询，而无需从中重新键入它们。

### 对查询历史记录进行排序
<a name="sort-query-history"></a>

 默认情况下，查询历史记录会显示最新的查询。您可以按日期或数据来源名称以升序或降序对历史记录排序。

在查询历史记录右侧的下拉列表中，选择以下选项之一：字段。
+  最新的优先 
+  最早的优先 
+  数据来源 A-Z 
+  数据来源 Z-A 

**注意**  
 如果您位于拆分视图中，则排序模式仅适用于活动面板。

### 筛选查询历史记录
<a name="filter-query-history"></a>

 在**查询历史记录**和**已加星标**选项卡上，您可以按数据来源名称筛选查询历史记录。

1. 选择**筛选特定数据来源的查询**。

1. 选择想要用于筛选历史记录的数据来源。您也可以选择多个数据来源。

在**查询历史记录**选项卡上，您可以使用垂直滑块按日期筛选查询：
+ 拖动下方的句柄可调整开始日期。
+ 拖动上方的句柄可调整结束日期。

**注意**  
如果您在拆分视图中，则筛选器仅适用于活动面板。

### 在查询历史记录中搜索
<a name="search-in-query-history"></a>

 您可以在历史记录中跨查询和评论进行搜索 可以在**查询历史记录**和**已加星标**选项卡中对查询进行搜索。

1.  选择**搜索查询**字段。

1.  在搜索框中，输入您的搜索词。

### 查询历史记录设置
<a name="query-history-settings"></a>

 您可以在**设置**选项卡中自定义查询历史记录。下表列出了可用的选项。


|  设置  |  默认 值  | 
| --- | --- | 
|  指定 Grafana 将保存您的查询历史记录的时长。 |  1 周  | 
|  更改默认的活动选项卡。 |  “查询历史记录”选项卡  | 
|  仅显示对当前在 Explore 中处于活动状态的数据来源的查询。 |  True  | 
|  清除查询历史记录。 |  （选择清除查询历史记录可永久删除所有已存储的查询。）  | 

**注意**  
查询历史记录设置是全局型的，在拆分模式下应用于两个面板。

## Prometheus 特定的功能
<a name="prometheus-specific-features"></a>

 Explore 功能的第一个版本提供了 Prometheus 的自定义查询体验。当您运行查询时，Grafana 实际上会运行两个查询：对图表的普通 Prometheus 查询和对表的即时查询。即时查询会返回每个时间序列的最后一个值，简要概括了图形中所示的数据。

### Metrics explorer
<a name="metrics-explorer"></a>

 在查询字段的左侧，选择**指标**以打开 Metric Explorer。这将显示一个分层菜单，其中包含按前缀分组的指标。例如，所有 Alertmanager 指标都分组在 `alertmanager` 前缀下。如果要探索哪些指标可用，这是一个不错的起点。

### “查询”字段
<a name="query-field"></a>

 “查询”字段支持指标名称和函数的自动完成，类似于标准的 Prometheus 查询编辑器的工作方式。按 **Enter** 运行查询。

 按 **Ctrl \$1 空格键**可以访问“自动完成”菜单。自动完成菜单包含一个新的“历史记录”部分，其中列出了最近运行的查询。

 建议可以显示在“查询”字段下。选择一个建议，使用建议的更改更新您的查询。
+  对于计数器（单调递增指标），建议使用 rate 函数。
+  对于存储桶，建议使用直方图函数。
+  对于记录规则，可将其展开。

### 表筛选器
<a name="table-filters"></a>

 在表面板的**标签**列中选择**筛选器**按钮，向查询表达式添加筛选器。您也可以为多个查询添加筛选器。将为所有查询添加筛选器。

## 日志集成
<a name="logs-integration"></a>

 您还可以使用 Explore 来调查包含以下数据来源的日志：
+  InfluxDB 
+  Elasticsearch 

### 日志可视化
<a name="logs-visualization"></a>

 日志查询的结果在图形中以直方图的形式显示，各个日志显示在下面。如果数据来源未发送请求的时间范围内的直方图数据，则日志模型将根据按自动计算的时间间隔进行分桶的日志行计数来计算时间序列。然后，直方图的开头由结果中第一行日志的时间戳锚定。时间序列的末尾锚定到时间选取器的 **To** 范围。

#### 日志级别
<a name="log-level"></a>

 对于指定了**级别**标签的日志，Grafana 会使用标签值来确定日志级别，并相应地更新颜色。如果日志没有指定级别标签，Grafana 会解析日志以确定其内容是否与任何支持的表达式匹配。日志级别始终由第一个匹配项决定。如果 Grafana 无法确定日志级别，则会使用**未知的**日志级别对其可视化。下表列出了日志级别以及日志级别缩写和表达式的映射。


|  支持的表达式  |  日志级别  |  颜色  | 
| --- | --- | --- | 
|  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="visualization-options"></a>

 您可以自定义日志的显示方式，并选择显示哪些列。

#### 时间
<a name="visualization-options-time"></a>

 此选项显示或隐藏时间列。这是与数据来源报告的日志行关联的时间戳。

#### 唯一标签
<a name="visualization-options-unique-labels"></a>

 该选项显示或隐藏唯一标签列，其中仅包含非常用标签。上面显示了所有常用标签。

#### 换行
<a name="visualization-options-wrap-lines"></a>

 要在显示中使用换行，请将其设置为 **True**。将此选项设置为 **False** 会导致水平滚动。

#### 删除重复数据
<a name="visualization-options-deduping"></a>

 日志数据的重复程度可能很高。Explore 可以通过隐藏重复的日志行来帮助解决这个问题。您可以从不同的重复数据删除算法中进行选择：
+  **精确**：除日期字段外，对整行进行精确匹配。
+  **数字**：去除持续时间、IP 地址等数字后，在行上进行匹配。
+  **签名**：最激进的重复数据删除，它会删除所有字母和数字。已对剩余的空格和标点符号进行匹配。

#### 翻转结果顺序
<a name="visualization-options-flip-results-order"></a>

 您可以将接收日志的顺序从默认降序（最新的优先）改为升序（最早的优先）。

### 标签和检测到的字段
<a name="labels-and-detected-fields"></a>

 每个日志行都有一个可扩展区域，其中带有标签和检测到的字段，以实现更可靠的交互。对于所有标签，您可以对选定标签进行筛选（正向筛选）和筛除（反向筛选）操作。每个字段或标签还有一个统计图标，以显示与所有显示的日志相关的一次性统计信息。

### 切换检测到的字段
<a name="toggle-detected-fields"></a>

 如果您的日志采用 JSON 或 logfmt 结构，则可以显示或隐藏检测到的字段。展开日志行，然后选择眼睛图标以显示或隐藏字段。

 \$1\$1< docs-imagebox img=”/img/docs/explore/parsed-fields-7-2.gif “max-width= “800px” caption= “在 Explore 中切换检测到的字段” >\$1\$1 

## 跟踪集成
<a name="tracing-integration"></a>

 您可以在 Explore 中可视化来自追踪数据来源的跟踪。目前支持的数据来源：
+ [连接到 Jaeger 数据来源](jaeger-data-source.md) 
+ [连接到 Tempo 数据来源](tempo-data-source.md) 
+ [Connect 连接到 AWS X-Ray 数据源](x-ray-data-source.md) 
+ [连接到 Zipkin 数据来源](zipkin-data-source.md) 

 有关使用查询编辑器的信息，请参阅特定数据来源的文档。

### 标题
<a name="explore-header"></a>

该标头包含以下项目：
+  标头标题，显示根跨度的名称和跟踪 ID 
+  搜索，它会突出显示包含搜索文本的跨度 
+  有关跟踪的元数据 

### 缩微贴图
<a name="explore-minimap"></a>

 缩微贴图显示精简视图或跟踪时间轴。将鼠标拖到缩微贴图上方可缩小时间范围。缩放还会更新主时间轴，所以容易看到较短的时间跨度。如果将光标悬停在缩微贴图上，当缩放时，您可以看到**重置选择**按钮，它会重置缩放。

### 时间轴
<a name="explore-timeline"></a>

 时间轴显示了跟踪内的跨度列表。每个跨度行包括以下组成部分：
+ **展开子项**按钮：展开或折叠所选跨度的所有子跨度 
+ 服务名称：记录跨度的服务的名称
+ 操作名称：此跨度所代表的操作的名称
+ 跨度持续时间条：跟踪中操作持续时间的直观表示。

选择跨度行上的任意位置即可显示跨度详细信息。

### 跨度详细信息
<a name="explore-span-details"></a>

跨度详细信息包含以下项：
+  操作名称 
+  跨度元数据 
+  标签（与此跨度关联的任何标签） 
+  流程元数据（有关记录此跨度的进程的元数据） 
+  日志：此跨度记录的日志列表和相关键值。如果是 Zipkin，则日志部分显示 Zipkin 注释。

## 在 Explore 和控制面板之间导航
<a name="navigating-between-explore-and-a-dashboard"></a>

 为了帮助加快涉及定期从 Explore 切换到控制面板的工作流程，反之亦然，我们增加了从面板下拉列表导航到 Explore 后返回到原始控制面板的功能。

 导航到 Explore 后，您应该会注意到 Explore 工具栏上有一个“后退”按钮。

 只需选择该按钮即可返回到原始控制面板，或者，如果您想将在 Explore 中所做的更改带回控制面板，只需选择按钮旁边的箭头即可显示“带着更改返回到面板”菜单项。

## 查询检查器
<a name="query-inspector"></a>

 为了帮助调试查询，Explore 允许您通过查询检查器调查查询请求和响应以及查询统计信息。此功能类似于面板检查器的**统计**选项卡和**查询**选项卡。有关更多信息，请参阅[检查查询性能](inspect-a-panel.md#inspect-query-performance)和[查看对数据来源的原始请求和响应](inspect-a-panel.md#view-raw-request-and-response-to-data-source)。

# 链接
<a name="linking-in-Amazon-Managed-Service-for-Grafana"></a>

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

 您可以使用链接在常用控制面板之间导航，或者将其他人连接到您的可视化。链接使您能够创建指向其他控制面板、面板甚至外部网站的快捷方式。

 Amazon Managed Grafana 支持控制面板链接、面板链接和数据链接。控制面板链接显示在控制面板顶部。选择面板左上角的图标即可访问面板链接。

## 您应使用哪种链接？
<a name="which-link-should-you-use"></a>

 首先，请检查您当前在控制面板之间导航的方式。如果您经常在一组控制面板之间跳来跳去，而且难以在每个控制面板中找到相同的上下文，那么链接有助于优化您的工作流程。

 下一步是找出哪种链接类型适合您的工作流程。尽管 Grafana 中的所有链接类型都用于创建指向其他控制面板或外部网站的快捷方式，但它们在不同的上下文中发挥作用。
+  要添加与控制面板中的大多数或全部面板相关的链接，请使用 [控制面板链接](dashboard-links.md)。
+  要深入了解特定的面板，请使用 [面板链接](panel-links.md)。
+  要链接到外部站点，您可以使用控制面板链接或面板链接。
+  要深入了解特定的序列，甚至是单个测量值，请使用 [数据链接](data-links.md)。

## 使用 URL 控制时间范围
<a name="controlling-time-range-using-the-url"></a>

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

# 控制面板链接
<a name="dashboard-links"></a>

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

 创建控制面板链接时，可包含时间范围和当前模板变量，以直接跳转到另一个控制面板中的相同上下文。这有助于确保您向其发送链接的人员看到的是正确数据。有关其他类型的链接，请参阅 [数据链接变量](linking-in-Amazon-Managed-Service-for-Grafana.md#data-link-variables)。

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

## 向控制面板添加链接
<a name="add-links-to-dashboards"></a>

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

1.  在查看要向其添加链接的控制面板时，选择屏幕顶部的齿轮图标，打开**控制面板设置**。

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

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

1.  选择链接选项：
   +  **带标签**：输入标签，将链接的控制面板限制为仅包含带有您所输入标签的控制面板。否则，Grafana 工作区将包含指向所有其他控制面板的链接。
   +  **作为下拉列表**：如果要链接到多个控制面板，选择此选项，并在下拉列表中添加可选标题。如果未选择此选项，Grafana 工作区会在控制面板顶部并排显示控制面板链接。
   +  **时间范围**：选择此选项可在链接中包含控制面板的时间范围。当用户选择链接时，链接的控制面板将会打开，并显示已设置的指示时间范围。
   +  **变量值**：选择此选项可在链接中包含当前用作查询参数的模板变量。当用户选择链接时，链接的控制面板中的任何匹配模板都将设置为链接中的值。
   +  **在新选项卡中打开**：选择此选项可在新选项卡或窗口中打开控制面板链接。

1.  选择**添加**。

## 向控制面板添加 URL 链接
<a name="add-a-url-link-to-a-dashboard"></a>

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

1.  在查看要链接到的控制面板时，选择屏幕顶部的齿轮图标，打开**控制面板设置**。

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

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

1.  选择链接选项：
   +  **Url**：输入要链接的 URL。根据目标，您可能希望包含字段值。
   +  **标题**：输入您希望链接显示的标题。
   +  **工具提示**：输入您希望用户将鼠标悬停在链接上时，链接显示的工具提示内容。
   +  **图标**：选择要与链接一起显示的图标。
   +  **时间范围**：选择此选项可在链接中包含控制面板的时间范围。当用户选择链接时，链接的控制面板将会打开，并显示已设置的指示时间范围。
     +  `from` 定义时间范围的下限，以毫秒纪元为单位指定。
     +  `to` 定义时间范围的上限，以毫秒纪元为单位指定。
     +  `time` 和 `time.window` 定义从 `time-time.window/2` 到 `time+time.window/2` 的时间范围。两个参数都应以毫秒为单位指定。例如，`?time=1500000000000&time.window=10000` 的结果是一个从 1499999995000 到 1500000005000 的 10 秒时间范围。
   +  **变量值**：选择此选项可在链接中包含当前用作查询参数的模板变量。当用户选择链接时，链接的仪表板中的所有匹配模板都将设置为链接中的值；例如 https://play.grafana。 org/d/000000074/alerting？ var-app=backend&var-server=backend\$101&var-server=backend\$103&var-interval=1h 
   +  **在新选项卡中打开**：选择此选项可在新选项卡或窗口中打开控制面板链接。

1.  选择**添加**。

## 更新控制面板链接
<a name="update-a-dashboard-link"></a>

 要更改或更新现有控制面板链接，请使用以下步骤。

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

1.  更改设置，然后选择**更新**。

## 复制控制面板链接
<a name="duplicate-a-dashboard-link"></a>

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

## 删除控制面板链接
<a name="delete-a-dashboard-link"></a>

 要删除现有控制面板链接，请选择要删除的链接旁边的垃圾桶图标。

# 面板链接
<a name="panel-links"></a>

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

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

选择面板左上角的图标以查看可用的面板链接。

## 添加面板链接
<a name="add-a-panel-link"></a>

1.  在要添加链接的面板上暂停，然后按 **e**。或者选择面板标题旁边的下拉箭头，然后选择**编辑**。

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

1.  展开**链接**，然后选择**添加链接**。

1.  输入链接的**标题**。标题将显示在 UI 中。

1.  输入要链接到的 **URL**。您可以包括在控制面板中定义的模板变量之一。按 **Ctrl \$1 空格键**或 **Cmd \$1 空格键**，然后选择 **URL** 字段以查看可用的变量。当您将模板变量添加到面板链接时，该链接会向用户显示正确的上下文，其中相关变量已设置完毕。您还可以使用时间变量 
   +  `from` 定义时间范围的下限，以毫秒纪元为单位指定。
   +  `to` 定义时间范围的上限，以毫秒纪元为单位指定。
   +  `time` 和 `time.window` 定义从 `time-time.window/2` 到 `time+time.window/2` 的时间范围。两个参数都应以毫秒为单位指定。例如，`?time=1500000000000&time.window=10000` 的结果是一个从 1499999995000 到 1500000005000 的 10 秒时间范围。

1.  要在新选项卡中打开，请选择**在新选项卡中打开**。

1.  选择**保存**以保存更改并关闭窗口。

1.  选择右上角的**保存**来将更改保存到控制面板。

## 更新面板链接
<a name="update-a-panel-link"></a>

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

1.  选择**编辑**（铅笔）图标以打开**编辑链接**窗口。

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

1.  选择**保存**以保存更改并关闭窗口。

1.  选择右上角的**保存**来将更改保存到控制面板。

## 删除面板链接
<a name="delete-a-panel-link"></a>

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

1.  选择要删除的链接旁边的 **X** 图标。

1.  选择右上角的**保存**来将更改保存到控制面板。

# 数据链接
<a name="data-links"></a>

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

 数据链接为您的链接提供了更精细的上下文。您可以创建包含序列名称甚至值的链接。例如，如果您的可视化显示四台服务器，则可以向其中一两台服务器添加数据链接。

 根据可视化效果，可通过不同的方式访问链接本身。对于图形面板，您需要选择一个数据点或线条。对于诸如统计数据、计量表或条形仪表之类的面板，您可以选择可视化中的任意位置来打开上下文菜单。

 您可以在数据链接中使用变量，将用户引导至具有保留数据筛选条件的详细控制面板。例如，您可以使用变量来指定时间范围、序列和变量选择。有关更多信息，请参阅 [数据链接变量](linking-in-Amazon-Managed-Service-for-Grafana.md#data-link-variables)。

## 提前输入建议
<a name="typeahead-suggestions"></a>

 创建或更新数据链接时，按键盘上的 **Ctrl \$1 空格键**或 **Cmd \$1 空格键**打开预输入建议，以便更轻松地向 URL 添加变量。

## 添加数据链接
<a name="add-a-data-link"></a>

1.  在要添加链接的面板上暂停，然后按 **e**。或者选择面板标题旁边的下拉箭头，然后选择**编辑**。

1.  在**字段**选项卡上，向下滚动到**数据链接**部分。

1.  展开**数据链接**，然后选择**添加链接**。

1.  输入链接的**标题**。标题将显示在 UI 中。

1.  输入要链接到的 **URL**。

    您可以添加在控制面板中定义的一个模板变量。选择 **URL** 字段，然后键入 **\$1**，或者按 ****Ctrl \$1 空格键或 **Cmd \$1 空格键**查看可用变量列表。当您将模板变量添加到面板链接时，该链接会向用户显示正确的上下文，其中相关变量已设置完毕。有关更多信息，请参阅 [数据链接变量](linking-in-Amazon-Managed-Service-for-Grafana.md#data-link-variables)。

1.  要在新选项卡中打开，请选择**在新选项卡中打开**。

1.  选择**保存**以保存更改并关闭窗口。

1.  选择右上角的**保存**来将更改保存到控制面板。

## 更新数据链接
<a name="update-a-data-link"></a>

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

1.  选择**编辑**（铅笔）图标以打开**编辑链接**窗口。

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

1.  选择**保存**以保存更改并关闭窗口。

1.  选择右上角的**保存**来将更改保存到控制面板。

## 删除数据链接
<a name="delete-a-data-link"></a>

1.  在**字段**选项卡上，找到要删除的链接。

1.  选择要删除的链接旁边的 **X** 图标。

1.  选择右上角的**保存**来将更改保存到控制面板。

## 数据链接变量
<a name="data-link-variables"></a>

 您可以使用数据链接中的变量来查看序列字段、标签和值。有关数据链接的更多信息，请参阅 [数据链接](data-links.md)。

 要查看可用变量列表，请在数据链接 **URL** 字段中输入 **\$1**。

 您也可以在数据链接中使用模板变量 URLs。有关更多信息，请参阅 [模板和变量](templates-and-variables.md)。

### 时间范围面板变量
<a name="time-range-panel-variables"></a>

 您可以使用以下变量在数据链接 URL 中包含当前时间范围：
+  `__url_time_range`：当前控制面板的时间范围；例如，`?from=now-6h&to=now`
+  `$__from and $__to`— 有关更多信息，请参阅 [全局变量] (\$1\$1< relref “.. /variables/variable-types/global-variables.md \$1\$1\$1from and-\$1\$1to” >\$1\$1)。

### 序列变量
<a name="series-variables"></a>

 特定于序列的变量在 `__series` 命名空间下可用：
+  `__series.name`：将序列名称添加到 URL 
+  `__series.labels.<LABEL>`：将标签的值添加到 URL。如果您的标签包含点，请使用 `__series.labels["<LABEL>"]` 语法。

### 字段变量
<a name="field-variables"></a>

 特定于字段的变量在 `__field` 命名空间下可用：
+  `__field.name`：字段的名称 

### 值变量
<a name="value-variables"></a>

 特定于值的变量在 `__value` 命名空间下可用：
+  `__value.time`：该值的时间戳（Unix 毫秒纪元）到 URL；例如，`?time=1560268814105`
+  `__value.raw`：原始值 
+  `__value.numeric`：值的数字表示 
+  `__value.text`：值的文本表示 
+  `__value.calc`：如果值是计算结果，则为计算名称 

### 模板变量
<a name="template-variables"></a>

 在链接到其他使用模板变量的控制面板时，请为选择链接的用户选择变量值。

 使用 `var-myvar=${myvar}`，其中 `myvar` 是模板变量的名称，该名称与您要使用的当前控制面板中的模板变量相匹配。

 要将当前控制面板的所有变量添加到 URL 中，请使用 `__all_variables`。

# 模板和变量
<a name="templates-and-variables"></a>

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

变量是值的占位符。您可以在指标查询和面板标题中使用变量。变量使您能够创建更具交互性和动态性的控制面板。无需在指标查询中对服务器、应用程序和传感器名称之类的内容进行硬编码，您可以使用变量来代替这些内容。

变量以下拉列表的形式显示在控制面板顶部。当您使用控制面板顶部的下拉列表更改值时，面板的指标查询会反映新的值。

对于希望允许查看者快速调整可视化效果但又不想向这些查看者授予完全编辑权限的管理员来说，这些功能可能特别有用。Grafana 查看器可以使用变量。

通过使用变量和模板，您可以让控制面板使用单个数据来源。如果有多个相同的数据来源或服务器，则可以创建一个控制面板，使用变量来更改您查看的内容。这简化了维护和修复的过程。

有关支持的变量类型的列表以及添加每类变量的说明，请参阅[变量类型](variables-types.md)

## 模板
<a name="templates"></a>

 *模板*是任何包含变量的查询。

例如，如果您要管理一个控制面板来监控多台服务器，则可以为每台服务器创建一个控制面板。或者，您也可以创建一个控制面板并使用包含模板查询的面板，如以下示例所示。

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

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

## 变量最佳实践
<a name="variable-best-practices"></a>

变量下拉列表按照**控制面板设置**的变量列表中列出的顺序显示。

将经常更改的变量放在顶部，这样它们就会首先显示在控制面板的最左边。

## 变量语法
<a name="variable-syntax"></a>

 面板标题和指标查询可以使用两种不同的语法来查看变量：
+  `$varname` 此语法更易于阅读，如以下示例所示：`apps.frontend.$server.requests.count`。但是，您不能在单词中间使用变量。
+  `${var_name}` 如果要在表达式中间插入变量，请使用此语法。
+  `${var_name:<format>}` 这种格式使您能够更好地控制 Grafana 如何插入值。有关更多信息，请参阅 [高级变量格式选项](#advanced-variable-format-options)。

 在将查询发送到您的数据来源之前，会对查询进行*插值*，这意味着变量将替换为其当前值。在插值过程中，变量值可能会被*转义*以符合查询语言的语法及其使用位置。例如，Prometheus 查询的正则表达式中使用的变量将通过正则表达式转义。有关插值期间进行值转义的详细信息，请阅读具体数据来源的文档主题。

 有关覆盖数据来源默认格式的高级语法的信息，请参见[高级变量格式选项](#advanced-variable-format-options)。

# 变量类型
<a name="variables-types"></a>

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

 Grafana 使用几种类型的变量。


|  变量类型  |  说明  | 
| --- | --- | 
|  Query  |  查询生成的值列表，例如指标名称、服务器名称、传感器 IDs、数据中心等。有关更多信息，请参阅 [添加查询变量](#add-a-query-variable)。 | 
|  自定义  |  使用逗号分隔的列表手动定义变量选项。有关更多信息，请参阅 [添加自定义变量](#add-a-custom-variable)。 | 
|  Text box（文本框）  |  显示带有可选默认值的文本输入字段。有关更多信息，请参阅 [添加文本框变量](#add-a-text-box-variable)。 | 
|  常量  |  定义隐藏的常量。有关更多信息，请参阅 [添加常量变量](#add-a-constant-variable)。 | 
|  数据来源  |  快速更改整个控制面板的数据来源。有关更多信息，请参阅 [添加数据来源变量](#add-a-data-source-variable)。 | 
|  Interval  |  间隔变量表示时间跨度。有关更多信息，请参阅 [添加间隔变量](#add-an-interval-variable)。 | 
|  临时筛选条件  |  Key/value 过滤器会自动添加到数据源的所有指标查询中（InfluxDB、Prometheus，仅限）。 OpenSearch 有关更多信息，请参阅 [添加临时筛选条件](#add-ad-hoc-filters)。 | 
|  全局变量  |  可在查询编辑器的表达式中使用的内置变量。有关更多信息，请参阅 [全局变量](#global-variables)。 | 
|  链式变量  |  变量查询可以包含其他变量。有关更多信息，请参阅 [链式变量](#chained-variables)。 | 

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

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

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

### 查询表达式
<a name="query-expressions"></a>

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

### 输入常规选项
<a name="enter-general-options"></a>

**输入查询变量的常规选项**

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

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

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

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

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

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

### 输入查询选项
<a name="enter-query-options"></a>

**输入查询变量的查询选项**

1. 在**数据来源**列表中，选择查询的目标数据来源。有关数据来源的详细信息，请参阅 [连接到数据来源](AMG-data-sources.md)。

1.  在**刷新**列表中，选择变量应何时更新选项。
   +  **从不**：缓存变量查询，且值不会更新。如果值从不改变，则没问题，但如果值是动态的并且变化很大，则会出现问题。
   +  **控制面板加载时**：每次加载控制面板时查询数据来源。这会减慢控制面板的加载速度，因为必需在初始化控制面板之前完成变量查询。
   +  **时间范围更改时**：当控制面板时间范围发生变化时查询数据来源。仅当变量选项查询包含时间范围筛选条件或依赖于控制面板时间范围时，才使用此选项。

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

1. （可选）在**正则表达式**字段中，键入正则表达式以筛选或捕获数据来源查询返回的名称的特定部分。有关示例，请参阅 [使用正则表达式过滤变量](templates-and-variables.md#filter-variables-with-regex)。

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

1. （可选）输入**选择选项**。有关更多信息，请参阅 [输入变量选择选项](templates-and-variables.md#enter-variable-selection-options)。

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

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

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

 对于不变的值，请使用*自定义*变量。这可能是数字、字符串，甚至是其他变量。

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

### 输入常规选项
<a name="variables-enter-general-options"></a>

**输入自定义变量的查询选项**

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

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

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

1.  在**类型**列表中，选择**自定义**。

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

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

### 输入自定义选项
<a name="enter-custom-options"></a>

**输入自定义变量的自定义选项**

1. **以逗号分隔的值**列表，在逗号分隔的列表中输入此变量的值。可以包含数字、字符串、其他变量或由冒号分隔的键值对。

1.  （可选）输入**选择选项**。有关更多信息，请参阅 [输入变量选择选项](templates-and-variables.md#enter-variable-selection-options)。

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

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

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

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

### 输入常规选项
<a name="text-box-enter-general-options"></a>

**输入文本框变量的常规选项**

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

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

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

1.  在**类型**列表中，选择**文本框**。

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

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

### 输入文本选项
<a name="enter-text-options"></a>

**输入文本框变量的文本选项**

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

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

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

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

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

常量变量不灵活。每个常量变量仅包含一个值。若要更新，则必须更新变量设置。

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

### 输入常规选项
<a name="constant-variable-enter-general-options"></a>

**输入常量变量的常规选项**

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

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

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

1.  在**类型**列表中，选择**常量**。

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

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

### 输入常量选项
<a name="enter-constant-options"></a>

**输入常量变量的常量选项**

1. 在**值**字段中，输入变量值。您可以输入字母、数字和符号。如果使用高级变量格式选项，则甚至可以使用通配符。有关更多信息，请参阅 [高级变量格式选项](templates-and-variables.md#advanced-variable-format-options)。

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

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

## 添加数据来源变量
<a name="add-a-data-source-variable"></a>

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

### 输入常规选项
<a name="data-source-enter-general-options"></a>

**输入数据来源变量的常规选项**

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

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

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

1.  在**类型**列表中，选择**数据来源**。

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

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

### 输入数据来源选项
<a name="enter-data-source-options"></a>

**输入数据来源变量的数据来源选项**

1.  在**类型**列表中，选择变量的目标数据来源。有关数据来源的详细信息，请参阅 [连接到数据来源](AMG-data-sources.md)。

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

1.  （可选）输入**选择选项**。有关更多信息，请参阅 [输入变量选择选项](templates-and-variables.md#enter-variable-selection-options)。

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

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

## 添加间隔变量
<a name="add-an-interval-variable"></a>

使用*间隔*变量来表示时间跨度，例如 `1m`、`1h`、`1d`。你可以把它们看作是仪表板范围内的命令 group-by-time。间隔变量会更改数据在可视化中的分组方式。您也可以使用“自动选项”在每个时间跨度返回一定数量的数据点。

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

### 输入常规选项
<a name="interval-variable-enter-general-options"></a>

**输入间隔变量的常规选项**

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

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

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

1.  在**类型**列表中，选择**间隔**。

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

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

### 输入间隔选项
<a name="enter-interval-options"></a>

**输入间隔变量的间隔选项**

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 个 2 分钟增量。

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

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

### 间隔变量示例
<a name="interval-variable-examples"></a>

 在 Graphite 函数中使用模板变量 `myinterval` 的示例：

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

 更复杂的 Graphite 示例：

```
groupByNode(summarize(movingAverage(apps.$app.$server.counters.requests.count, 5), '$interval', 'sum', false), 2, 'sum')
```

## 添加临时筛选条件
<a name="add-ad-hoc-filters"></a>

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

**注意**  
**注意：**一次性或临时筛选变量仅适用于 InfluxDB、Prometheus 和数据源。 OpenSearch 

### 输入常规选项
<a name="ad-hoc-filters-enter-general-options"></a>

**输入临时筛选条件的常规选项**

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

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

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

1.  在**类型**列表中，选择**临时筛选条件**。

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

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

### 输入选项
<a name="ad-hoc-enter-options"></a>

**输入临时筛选条件的选项**

1.  在**数据来源**列表中，选择目标数据来源。有关数据来源的详细信息，请参阅 [连接到数据来源](AMG-data-sources.md)。

1. 选择**添加**将变量添加到控制面板。

### 创建临时筛选条件
<a name="create-ad-hoc-filters"></a>

临时筛选条件是可用的最复杂、最灵活的变量选项之一。此变量允许构建控制面板范围的临时查询，而不是常规的变量选项列表。以这种方式应用的筛选条件将应用于控制面板上的所有面板。

## 链式变量
<a name="chained-variables"></a>

*链式变量*，也称为*链接变量*或*嵌套变量*，是变量查询中包含一个或多个其他变量的查询变量。本节说明了链式变量的工作原理，并提供了指向使用链式变量的示例控制面板的链接。

每个数据来源的链式变量查询都不同，但前提都是一样的。您可以在任何支持的数据来源中使用链式变量查询。

您可以构建复杂的链接、模板化控制面板，深度为 5 或 10 级。从技术上讲，深度和复杂程度没有限制，但链接越多，查询负荷就越大。

### 最佳实践和提示
<a name="variables-best-practices-and-tips"></a>

以下做法可使您的控制面板和变量更易于使用。

#### 创建新的链式变量
<a name="creating-new-linked-variables"></a>
+  链式变量会创建父-子依赖关系。您可以将其想象成梯子或树。
+ 创建新的链式变量最快的方法是复制要作为新变量基础的变量。在变量列表中，选择变量条目右侧的**复制变量**图标以创建副本。然后，您就可以为父变量添加查询。
+ 通过这种方式创建的新的链式变量显示在列表的底部。要为列表指定逻辑顺序，请将变量拖动到列表中的其他位置。

#### 变量顺序
<a name="variable-order"></a>

要更改控制面板变量列表中的变量顺序，请选择每个条目右侧的向上和向下箭头。Grafana 工作区根据此列表从左到右列出变量下拉列表，在最左侧的列表顶部显示变量。
+  在顶部列出没有依赖关系的变量，放在其子变量之前。
+  每个变量都应遵循其依赖的变量。
+ UI 不会指示哪些变量具有依赖关系。按逻辑顺序列出变量，以方便最终用户（和您自己）了解。

#### 复杂性考虑
<a name="complexity-consideration"></a>

变量中的依赖关系层越多，更改变量后更新控制面板所需的时间就越长。

例如，如果您有一系列四个链接变量（国家、地区、服务器、指标），并更改了根变量值（国家），Grafana 工作区必须先对所有因变量运行查询，然后才能更新控制面板中的可视化。

## 全局变量
<a name="global-variables"></a>

 Grafana 具有全局内置变量，可在查询编辑器的表达式中使用。本主题按字母顺序列出了这些变量，并对其进行了定义。这些变量在查询、控制面板链接、面板链接和数据链接中非常有用。

### \$1\$1\$1dashboard
<a name="global-variable-dashboard"></a>

此变量是当前控制面板的名称。

### \$1\$1\$1from 和 \$1\$1\$1to
<a name="global-variable-from-and-__to"></a>

Grafana 有两个内置的时间范围变量：`$__from` 和 `$__to`。默认情况下，当前始终插值为 epoch 毫秒，但您可以控制日期格式。


|  语法  |  示例结果  |  说明  | 
| --- | --- | --- | 
|  \$1\$1\$1\$1from\$1  |  1594671549254  |  Unix 毫秒 epoch  | 
|  \$1\$1\$1\$1from:date\$1  |  2020-07-13T20:19:09.254Z  |  无参数，默认为 ISO 8601/RFC 3339  | 
|  \$1\$1\$1\$1from:date:iso\$1  |  2020-07-13T20:19:09.254Z  |  ISO 8601/RFC 3339  | 
|  \$1\$1\$1\$1from:date:seconds\$1  |  1594671549  |  Unix 秒 epoch  | 
|  \$1\$1\$1\$1from:date:YYYY-MM\$1  |  2020-07  |  任何自定义数据格式。有关更多信息，请参阅[显示](https://momentjs.com/docs/#/displaying/)。 | 

上面的语法也适用于 `${__to}`。

你也可以在中 URLs 使用这个变量。例如，要将最终用户发送到显示从六小时前到现在的时间范围的仪表板，请使用以下 URL：https://play.grafana。 org/d/000000012/grafana-play-home？ viewpanel=2&orgid=1？ from=now-6h&to=now 

### \$1\$1\$1interval
<a name="global-variable-interval"></a>

你可以将该`$__interval`变量用作按时间（对于 InfluxDB、Myself、Postgres、MSSQL）、日期直方图间隔（对于）进行分组的参数，也可以用作*汇总*函数参数（对于 Graphite OpenSearch）。

Grafana 工作区会自动计算一个间隔，该间隔可用于在查询中按时间分组。当数据点多于图形上显示的数据点时，可通过按更大的间隔分组来提高查询的效率。例如，在查看 3 个月的数据时，按 1 天分组比按 10 秒分组更有效。图形看起来是一样的，查询速度也更快。`$__interval` 是使用时间范围和图形宽度（像素数）计算得出的。

 近似计算：`(from - to) / resolution`

例如，当时间范围为 1 小时且图形为全屏时，则可以将间隔计算为 `2m`，点按 2 分钟间隔分组。如果时间范围为 6 个月且图形为全屏时，则间隔可能是 `1d`（1 天），点按天分组。

 在 InfluxDB 数据来源中，传统变量 `$interval` 是同一个变量。请改用 `$__interval`。

 InfluxDB 和 OpenSearch 数据源具有用于硬编码间隔或使用语法-> 设置`$__interval`变量的最小限制的`Group by time interval`字段。`>` `>10m`

### \$1\$1\$1interval\$1ms
<a name="global-variable-interval_ms"></a>

 此变量是以毫秒为单位的 `$__interval` 变量，而不是时间间隔格式的字符串。例如，如果 `$__interval` 为 `20m`，则 `$__interval_ms` 为 `1200000`。

### \$1\$1\$1name
<a name="global-variable-name"></a>

 此变量仅在 Singlestat 面板中可用，可在**选项**选项卡上的前缀或后缀字段中使用。该变量将替换为序列名称或别名。

### \$1\$1\$1org
<a name="global-variable-org"></a>

 此变量是当前组织的 ID。变量 `${__org.name}` 是当前组织的名称。

### \$1\$1\$1user
<a name="global-variable-user"></a>

变量 `${__user.id}` 是当前用户的 ID。变量 `${__user.login}` 是当前用户的登录句柄。变量 `${__user.email}` 是当前用户的电子邮件。

### \$1\$1\$1range
<a name="global-variable-range"></a>

目前仅 Prometheus 数据来源支持此变量。此变量表示当前控制面板的范围。由 `to - from` 计算得出。此变量有毫秒和秒两种表示形式，分别称为 `$__range_ms` 和 `$__range_s`。

### \$1timeFilter 或 \$1\$1\$1timeFilter
<a name="global-variable-timefilter-or-__timefilter"></a>

`$timeFilter` 变量以表达式形式返回当前选定的时间范围。例如，时间范围间隔 `Last 7 days` 表达式为 `time > now() - 7d`。

 此变量可在多个地方使用，包括：
+ InfluxDB 数据来源的 WHERE 子句。在**查询编辑器**模式下，Grafana 会自动将其添加到 InfluxDB 查询。您可以在**文本编辑器**模式下手动添加：`WHERE $timeFilter`。
+  在 Azure Monitor 数据来源中记录分析查询。
+  MySQL、Postgres 和 MSSQL 中的 SQL 查询。
+  `$__timeFilter` 变量用于 MySQL 数据来源。

## 其他变量选项
<a name="other-variable-options"></a>

本节说明了其他可用的变量选项。

### 输入变量选择选项
<a name="enter-variable-selection-options"></a>

您可以使用**选择选项**来管理变量选项选择。所有选择选项都是可选的，默认处于关闭状态。

#### 多值
<a name="multi-value"></a>

如果启用此选项，则变量下拉列表支持同时选择多个选项。有关更多信息，请参阅 [格式化多值变量](#formatting-multi-value-variables)。

#### 包含全部选项
<a name="include-all-option"></a>

Grafana 工作区在变量下拉列表中添加了一个`All`选项。如果最终用户选择此选项，则会选择所有变量选项。

#### 自定义所有值
<a name="custom-all-value"></a>

仅当选择**包含全部选项**时，此选项才可见。

要定义`All`选项的值，请在**自定义所有值**字段中输入正则表达式、glob 或 Lucene 语法。

默认情况下，`All`值包括组合表达式中的所有选项。该值可能会变得很长，并且可能会出现性能问题。有时最好指定一个自定义所有值，比如通配符正则表达式。

在**自定义所有值**选项中使用自定义正则表达式、glob 或 Lucene 语法时，它永远不会被转义，因此必须考虑数据来源的有效值是什么。

### 高级变量格式选项
<a name="advanced-variable-format-options"></a>

 变量插值的格式取决于数据来源，但在某些情况下，可能需要更改默认格式。

 例如，MySQL 数据来源的默认格式是以逗号分隔的形式联接多个值，并使用引号：`'server01','server02'`。在某些情况下，您可能希望使用逗号分隔的字符串，但不使用引号：`server01,server02`。为此，请使用以下高级变量格式选项。

#### 一般语法
<a name="general-syntax"></a>

 语法：`${var_name:option}`

如果指定了任何无效的格式选项，`glob` 则为默认选项或备用选项。

#### CSV
<a name="variables-csv"></a>

 将具有多个值的变量格式化为逗号分隔的字符串。

```
servers = ['test1', 'test2']
String to interpolate: '${servers:csv}'
Interpolation result: 'test1,test2'
```

#### 分布式 OpenTSDB
<a name="distributed---opentsdb"></a>

 以 OpenTSDB 自定义格式来格式化具有多个值的变量。

```
servers = ['test1', 'test2']
String to interpolate: '${servers:distributed}'
Interpolation result: 'test1,servers=test2'
```

#### Doublequote
<a name="doublequote"></a>

 将单值和多值变量格式化为逗号分隔的字符串，在每个值中使用 `\"` 对 `"` 进行转义，并在每个值两侧加上 `"`。

```
servers = ['test1', 'test2']
String to interpolate: '${servers:doublequote}'
Interpolation result: '"test1","test2"'
```

#### Glob – Graphite
<a name="glob---graphite"></a>

 将具有多个值的变量格式化为 glob（用于 Graphite 查询）。

```
servers = ['test1', 'test2']
String to interpolate: '${servers:glob}'
Interpolation result: '{test1,test2}'
```

#### JSON
<a name="json"></a>

 将具有多个值的变量格式化为逗号分隔的字符串。

```
servers = ['test1', 'test2']
String to interpolate: '${servers:json}'
Interpolation result: '["test1", "test2"]'
```

#### Lucene- OpenSearch
<a name="lucene---opensearch"></a>

 以 Lucene 格式格式化具有多个值的变量。 OpenSearch

```
servers = ['test1', 'test2']
String to interpolate: '${servers:lucene}'
Interpolation result: '("test1" OR "test2")'
```

#### Percentencode
<a name="percentencode"></a>

 格式化单值和多值变量以用于 URL 参数。

```
servers = ['foo()bar BAZ', 'test2']
String to interpolate: '${servers:percentencode}'
Interpolation result: 'foo%28%29bar%20BAZ%2Ctest2'
```

#### Pipe
<a name="pipe"></a>

 将具有多个值的变量格式化为以竖线分隔的字符串。

```
servers = ['test1.', 'test2']
String to interpolate: '${servers:pipe}'
Interpolation result: 'test1.|test2'
```

#### Raw
<a name="raw"></a>

 关闭特定于数据来源的格式化，如 SQL 查询中的单引号。

```
servers = ['test1.', 'test2']
String to interpolate: '${var_name:raw}'
Interpolation result: '{test.1,test2}'
```

#### 正则表达式
<a name="regex"></a>

 将具有多个值的变量格式化为正则表达式字符串。

```
servers = ['test1.', 'test2']
String to interpolate: '${servers:regex}'
Interpolation result: '(test1\.|test2)'
```

#### Singlequote
<a name="singlequote"></a>

 将单值和多值变量格式化为逗号分隔的字符串，在每个值中使用 `\'` 对 `'` 进行转义，并在每个值两侧加上 `'`。

```
servers = ['test1', 'test2']
String to interpolate: '${servers:singlequote}'
Interpolation result: "'test1','test2'"
```

#### Sqlstring
<a name="sqlstring"></a>

 将单值和多值变量格式化为逗号分隔的字符串，在每个值中使用 `''` 对 `'` 进行转义，并在每个值两侧加上 `'`。

```
servers = ["test'1", "test2"]
String to interpolate: '${servers:sqlstring}'
Interpolation result: "'test''1','test2'"
```

#### 文本
<a name="text"></a>

 将单值和多值变量格式化为其文本表示形式。对于单个变量，仅返回文本表示形式。对于多值变量，它将返回与 `+` 组合的文本表示形式。

```
servers = ["test1", "test2"]
String to interpolate: '${servers:text}'
Interpolation result: "test1 + test2"
```

### 格式化多值变量
<a name="formatting-multi-value-variables"></a>

对选择了多个值的变量进行插值会比较麻烦，因为如何将多个值格式化为字符串，而且该字符串在使用该变量的给定上下文中有效，这不是个简单明了的过程。Grafana 尝试解决该问题的方式是，它会通过启用每个数据来源插件来通知模板插值引擎对多个值使用什么格式。

**注意**  
 变量上的**自定义所有值**选项必须为空，Grafana 才能将所有值格式化为单个字符串。如果将该选项留空，则 Grafana 会将查询中的所有值连接在一起（相加）。与 `value1,value2,value3` 类似。如果使用自定义 `all` 值，则该值将类似于 `*` 或 `all`。

#### 具有 Graphite 数据来源的多值变量
<a name="multi-value-variables-with-a-graphite-data-source"></a>

 Graphite 使用 glob 表达式。在这种情况下，如果当前变量值为 *host1*、*host2* 和 *host3*，则具有多个值的变量将插值为 `{host1,host2,host3}`。

#### 带有 Prometheus 或 InfluxDB 数据来源的多值变量
<a name="multi-value-variables-with-a-prometheus-or-influxdb-data-source"></a>

 InfluxDB 和 Prometheus 使用正则表达式，因此相同的变量将插值为 `(host1|host2|host3)`。每个值也将进行正则表达式转义。否则，带有正则表达式控制字符的值将中断正则表达式。

#### 带有 Elastic 数据来源的多值变量
<a name="multi-value-variables-with-an-elastic-data-source"></a>

Amazon OpenSearch 使用 Lucene 查询语法，因此相同的变量格式为。`("host1" OR "host2" OR "host3")`在这种情况下，必须对每个值进行转义，以便该值仅包含 Lucene 控制词和引号。

#### 格式问题故障排除
<a name="formatting-troubles"></a>

 自动转义和格式化可能会导致问题。理解问题背后的逻辑可能会比较困难，特别是对于 InfluxDB 和 Prometheus 来说，使用正则表达式语法要求在正则表达式运算符上下文中使用变量。

 如果您不希望 Grafana 执行这种自动正则表达式转义和格式化，您必须执行以下操作之一：
+ 关闭**多值****包含全部选项**选项。
+ 使用 [原始变量格式] (\$1\$1< relref "advanced-variable-format-options.md \$1raw" >\$1\$1)。

### 使用正则表达式过滤变量
<a name="filter-variables-with-regex"></a>

 使用 Regex Query 选项可以筛选变量查询返回的选项列表或修改返回的选项。

本节介绍如何使用正则表达式筛选和修改变量下拉列表中的值。

 通过 Regex Query 选项，您可以筛选变量查询返回的选项列表或修改返回的选项。有关详细信息，请参阅[正则表达式](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions)。

 对以下选项列表进行筛选的示例：

```
backend_01
backend_02
backend_03
backend_04
```

#### 筛选以仅返回以 `01` 或 `02` 结尾的选项
<a name="filter-so-that-only-the-options-that-end-with-01-or-02-are-returned"></a>

 正则表达式：

```
/.*[01|02]/
```

 结果：

```
backend_01
backend_02
```

#### 使用正则表达式捕获组筛选和修改选项以返回部分文本
<a name="filter-and-modify-the-options-using-a-regex-capture-group-to-return-part-of-the-text"></a>

 正则表达式：

```
/.*(01|02)/
```

 结果：

```
01
02
```

#### 筛选和修改 – Prometheus 示例
<a name="filter-and-modify---prometheus-example"></a>

 选项列表：

```
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
```

#### 使用命名文本和值捕获组进行筛选和修改
<a name="filter-and-modify-using-named-text-and-value-capture-groups"></a>

使用命名的捕获组可以从变量查询返回的选项中捕获单独的“文本”和“值”部分。变量下拉列表可以包含每个可选择值的友好名称。

 例如，在查询 `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="repeat-panels-or-rows"></a>

 您可以使用*模板变量*创建动态控制面板。在将查询发送到数据库之前，查询中的所有变量都会扩展为变量的当前值。使用变量，您可以为所有服务重复使用单个控制面板。

 模板变量对于在整个控制面板上动态地更改查询非常有用。如果您希望 Grafana 根据您选择的值动态地创建新的面板或行，则可以使用*重复*功能。

#### 重复面板
<a name="repeating-panels"></a>

 如果您开启了 `Multi-value` 或 `Include all value` 选项的变量，您可以选择一个面板，让 Grafana 为每个选定的值重复该面板。在面板编辑模式下，您可以在*常规选项卡*下找到*重复*功能。

 `direction` 控制面板的排列方式。

如果您愿意`horizontal`，则可以对面板进行排列 side-by-side。Grafana 会自动调整每个重复面板的宽度，以便填充整行。当前，您不能将一行中的其他面板与重复的面板混合使用。

 设置`Max per row`以告诉 Grafana 每行最多想要多少个面板。其默认值为 *4*。

如果您选择`vertical`，面板将从上到下排列成一列。重复面板的宽度与正在重复的第一个面板（原始模板）的宽度相同。

仅对第一个面板（原始模板）进行更改。要使更改在所有面板上生效，您需要开始动态重新构建控制面板。您可以通过更改变量值（即重复的基础）或重新加载控制面板来实现此目的。

**注意**  
重复面板要求变量选择一个或多个项目。您不能将面板重复零次以将其隐藏。

#### 重复行
<a name="repeating-rows"></a>

 如以上面板的示例中所示，如果使用 `Multi-value` 或 `Include all value` 选择选项设置了变量，则也可以重复行。

 要开启此功能，必须先使用*添加面板*菜单添加新*行*。然后，将鼠标悬停在行标题上并选择齿轮按钮以访问`Row Options`配置面板。然后，您可以选择要为其重复该行的变量。

 最佳做法是在行标题中也使用变量。

# Grafana Alerting
<a name="alerts-overview"></a>

****  
本文档主题专为支持 **Grafana 8.x 版本**的 Grafana 工作区而设计。  
对于支持 Grafana 10.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 10](using-grafana-v10.md)。  
对于支持 Grafana 9.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 9](using-grafana-v9.md)。

Grafana Alerting 可为您提供强大且可操作的警报，帮助您在系统出现问题后立即了解情况，最大限度地减少服务中断。

Amazon Managed Grafana 允许访问更新的警报系统 *Grafana Alerting*，该系统将警报信息集中在一个可搜索的视图中。包括以下功能：
+ 在集中视图中创建和管理 Grafana 警报。
+ 通过单一界面创建和管理 Cortex 和 Loki 管理的警报。有关更多信息，请参阅 [管理警报规则](v9-alerting-managerules.md)。
+ 查看来自 Prometheus、Amazon Managed Service for Prometheus 和其他 Alertmanager 兼容数据来源的警报信息。
+ 根据单条警报规则创建多个警报实例。有关更多信息，请参阅 [单维规则和多维规则](v9-alerting-managerules-grafana.md#v9-alerting-single-multi-rule)。
+ 使用 terraform 或预配置来管理您的警报资源。 APIs有关更多信息，请参阅 [预置 Grafana Alerting 资源](v9-alerting-setup-provision.md)。

对于现有的 Amazon Managed Grafana 工作区，默认为 [经典控制面板警报](old-alerts-overview.md)。要迁移到 Grafana Alerting，您必须参阅[迁移到 Grafana Alerting](alert-opt-in.md)。

要了解有关 Grafana Alerting 的更多信息，请参阅 [Grafana Alerting 中的新增功能](alerts-whats-new.md)。

Grafana Alerting 有四个关键组件：
+ [警报规则](alert-rules.md)：决定是否启动警报的评估标准。警报规则包含一个或多个查询和表达式、一个条件、评估频率，以及满足条件的持续时间（可选）。
+ [联系点](alert-contact-points.md)：满足警报规则条件时，发送通知的渠道。
+ [通知策略](alert-notifications.md)：用于确定通知频率的一组匹配和分组标准。
+ [静默](alert-silences.md)：用于将通知设置为静默状态的日期和匹配标准。

启用 Grafana Alerting 后，您可以：
+ [创建 Grafana 管理的警报规则](alert-rules.md#create-grafana-alert-rule)
+ [创建 Cortex 或 Loki 管理的警报规则](alert-rules.md#create-alert-rule)
+ [查看现有警报规则并管理其当前状态](alert-rules.md#manage-alert-rules)
+ [查看警报规则的状态和运行状况](alert-fundamentals.md#alerts-state)
+ [添加或编辑警报联系点](alert-contact-points.md#alert-working-contact-points)
+ [添加或编辑通知策略](alert-notifications.md#alert-notifications-working)
+ [添加或编辑静默](alert-silences.md)

## 限制
<a name="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**
+ [限制](#alert-limitations)
+ [Grafana Alerting 中的新增功能](alerts-whats-new.md)
+ [将经典控制面板警报迁移到 Grafana Alerting](alert-opt-in.md)
+ [警报基础知识](alert-fundamentals.md)
+ [创建和管理 Grafana Alerting规则](alert-rules.md)
+ [警报组](alert-groups.md)
+ [静默 Prometheus 数据来源的警报通知](alert-silences.md)
+ [使用联系点](alert-contact-points.md)
+ [使用消息传递模板](alert-message-templates.md)
+ [使用通知策略](alert-notifications.md)

# Grafana Alerting 中的新增功能
<a name="alerts-whats-new"></a>

****  
本文档主题专为支持 **Grafana 8.x 版本**的 Grafana 工作区而设计。  
对于支持 Grafana 10.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 10](using-grafana-v10.md)。  
对于支持 Grafana 9.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 9](using-grafana-v9.md)。

与经典控制面板警报相比，Grafana Alerting 有多项增强。

## 创建多维警报
<a name="alerts-new-dimensional"></a>

现在，您可以创建单一的警报规则，并通过一条警报规则生成多个警报实例，提供对整个系统的可视性。例如，您可以创建一条规则，来监控一台主机上多个挂载点的磁盘使用情况。评估引擎会从单个查询返回多个时间序列，每个时间序列由其标签集标识。

**注意**  
每个警报实例都会计入警报配额。如果多维规则创建的实例超过警报配额所能容纳的数量，则不会对其进行评估，并且会返回配额错误。有关更多信息，请参阅 [达到配额错误](alert-rules.md#rule-quota-reached)。

## 在控制面板外部创建警报
<a name="alerts-new-not-dashboard"></a>

与经典控制面板警报不同，使用 Grafana Alerting，您可以创建查询和表达式，以独特的方式组合来自多个来源的数据。您仍然可以使用控制面板和面板的 ID，将控制面板和面板链接到警报规则，并快速对观察的系统进行故障排除。

由于统一警报不再与面板查询直接关联，因此通知邮件中不包含图像或查询值。您可以使用自定义通知模板来查看查询值。

## 创建 Loki 和 Cortex 警报规则
<a name="alerts-new-loki-cortex"></a>

在 Grafana Alerting 中，您可以使用与 Grafana 管理的警报相同的用户界面和 API 管理 Loki 和 Cortex 警报规则。

## 查看和搜索来自 Amazon Managed Service for Prometheus 和其他 Prometheus 兼容数据来源的警报
<a name="alerts-new-prometheus"></a>

Amazon Managed Service for Prometheus 和 Prometheus 兼容数据来源的警报现在会在警报界面中列出。您可以跨多个数据来源搜索标签，以快速查找相关警报。

## 警报状态 NoData 和错误的特殊警报
<a name="alerts-new-error"></a>

当警报规则的评估产生 `NoData` 或 `Error` 状态时，Grafana Alerting 会生成具有以下标签的特殊警报：
+ `alertname`，值为 `DatasourceNoData` 或 `DatasourceError`（取决于状态）。
+ `rulename`，包含特殊警报所属警报规则的名称。
+ `datasource_uid`，包含导致该状态的数据来源的 UID。
+ 原始规则的所有标签和注释。

您可以像处理常规警报一样处理这些警报，例如，添加静默，或路由到联系点。

**注意**  
如果规则使用多个数据来源，而其中一个或多个数据来源未返回任何数据，则将为导致警报状态的每个数据来源创建特殊警报。

# 将经典控制面板警报迁移到 Grafana Alerting
<a name="alert-opt-in"></a>

****  
本文档主题专为支持 **Grafana 8.x 版本**的 Grafana 工作区而设计。  
对于支持 Grafana 10.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 10](using-grafana-v10.md)。  
对于支持 Grafana 9.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 9](using-grafana-v9.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="alert-opt-in-migrating"></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="alert-migration-limitations"></a>
+ Grafana Alerting 系统可从所有可用的 Prometheus、Loki 和 Alertmanager 数据来源检索规则。但可能无法从其他受支持的数据来源获取警报规则。
+ 在 Grafana 警报和经典控制面板警报之间来回迁移可能会导致一个系统支持的功能丢失数据，而另一个则不会。
**注意**  
如果您迁移回经典控制面板警报，则在启用 Grafana Alerting 时对警报配置进行的所有更改都将丢失，包括创建的任何新警报规则。

# 警报基础知识
<a name="alert-fundamentals"></a>

****  
本文档主题专为支持 **Grafana 8.x 版本**的 Grafana 工作区而设计。  
对于支持 Grafana 10.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 10](using-grafana-v10.md)。  
对于支持 Grafana 9.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 9](using-grafana-v9.md)。

此部分提供有关 Grafana Alerting 基础概念的信息。

## 警报概念
<a name="alert-fundamentals-terms"></a>

下表说明了 Grafana Alerting 的关键概念。


| 关键概念或功能 | 定义 | 
| --- | --- | 
|  警报的数据来源  |  选择数据来源，从中查询指标、日志和跟踪，并以可视化方式展示。  | 
|  调度器  |  评估您的警报规则；该组件定期运行对数据来源的查询。仅适用于 Grafana 托管的规则。  | 
|  Alertmanager  |  管理警报实例的路由和分组。  | 
|  警报规则  |  用于确定警报规则何时触发的一组评估标准。警报规则包含一个或多个查询和表达式、一个条件、评估频率，以及满足条件的持续时间。一条警报规则可以生成多个警报实例。  | 
|  警报实例  |  警报实例是警报规则的实例。单维警报规则有一个警报实例。多维警报规则有一个或多个警报实例。与多个结果匹配的单个警报规则（例如 CPU 对 10 VMs）被视为多个（在本例中为 10）警报实例。这个数字可能会随时间变化。例如，监控系统 VMs 中所有人 CPU 使用率的警报规则添加的警报实例更多。 VMs 有关警报实例配额的更多信息，请参阅 [达到配额错误](alert-rules.md#rule-quota-reached)。  | 
|  警报组  |  默认情况下，Alertmanager 使用根通知策略的标签对警报实例进行分组。这可以控制发送到联系点的警报实例的去重和分组。  | 
|  联系点  |  定义触发警报规则时如何通知您的联系人。  | 
|  消息模板  |  创建可重复使用的自定义模板，并在联系点中使用。  | 
|  通知策略  |  一组规则，规定在何处、何时以及如何将警报分组并路由到联系点。  | 
|  标签和标签匹配程序  |  标签可通过唯一方式标识警报规则。它们将警报规则与通知策略及静默关联起来，确定应由哪条策略处理这些警报规则，以及哪些警报规则应该被静默。  | 
|  静默  |  停止来自一个或多个警报实例的通知。静默和静音定时的区别在于，静默会持续一段指定的时间，而静音定时则按定期计划进行。使用标签匹配程序可使警报实例静默。  | 
|  静音定时  |  指定您不希望生成或发送新通知的时间间隔。您可以在周期性时间段（如维护时间段）冻结警报通知。必须关联到现有通知策略。  | 

## 警报数据来源
<a name="alert-sources"></a>

Grafana 托管的警报会查询以下启用了警报的后端数据来源。
+ Grafana 内置的数据来源，或由其开发和维护的数据来源：`Alertmanager`、`Graphite`、`Prometheus`（包括 Amazon Managed Service for Prometheus）、`Loki`、`InfluxDB`、`Amazon OpenSearch Service`、`Google Cloud Monitoring`、`Amazon CloudWatch`、`Azure Monitor`、`MySQL`、`PostgreSQL`、`MSSQL`、`OpenTSDB`、`Oracle` 和 `Azure Monitor`。

## 基于数值数据的警报
<a name="alert-numeric"></a>

您可以直接基于非时间序列格式的数值数据生成警报，也可以将其传递到服务器端表达式中。这样可以在数据来源中进行更多处理，从而提高效率，还可以简化警报规则。当基于数值数据（而不是时间序列数据）生成警报时，不需要将每个带标签的时间序列缩减为一个单一数字。相反，带标签的数字会返回给 Grafana。

### 表格数据
<a name="alert-tabular-data"></a>

此功能支持可查询表格数据的后端数据来源，包括 MySQL、Postgres、MSSQL 和 Oracle 等 SQL 数据来源。

在以下情况中，使用 Grafana 托管的警报或服务器端表达式进行的查询会被这些数据来源视为数值型查询：
+ 如果数据来源查询中的 `Format AS` 选项设置为 `Table`。
+ 如果从查询返回给 Grafana 的表响应只包括一个数值（例如，int、double 或 float）列和可选的附加字符串列。

如果存在字符串列，这些列将成为标签。列的名称将成为标签名称，每行的值将成为相应标签的值。如果返回多行，则每行都应通过其标签进行唯一标识。

### 示例
<a name="alert-tabular-example"></a>

如果您有一个名为 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  | 

## Alertmanager
<a name="alert-alertmanager"></a>

Grafana 内置了对 Prometheus Alertmanager 的支持。Alertmanager 可帮助分组和管理警报规则，在警报引擎之上添加一个编排功能层。默认情况下，Grafana 托管警报的通知由作为核心 Grafana 组件的嵌入式 Alertmanager 处理。您可以从 Alertmanager 下拉列表中选择 Grafana 选项，在 Grafana Alerting 用户界面上配置 Alertmanager 的联系点、通知策略和模板。

Grafana Alerting 支持外部 Alertmanager 配置（有关 Alertmanager 作为外部数据来源的更多信息，请参阅 [连接到 AlertManager 数据来源](data-source-alertmanager.md)）。添加外部 Alertmanager 时，Alertmanager 下拉列表会显示可用的外部 Alertmanager 数据来源列表。选择一个数据源，为独立的 Cortex 或 Loki 数据来源创建和管理警报。

## 警报规则的状态和运行状况
<a name="alerts-state"></a>

警报规则的状态和运行状况可帮助您了解有关警报的几个关键状态指标。有三个关键组件：警报状态、警报规则状态和警报规则运行状况。尽管相关，但每个组件传达的信息略有不同。

**警报规则状态**
+ **正常**：评估引擎返回的时间序列均未处于 `Pending` 或 `Firing` 状态。
+ **待处理**：评估引擎返回的时间序列中至少有一个处于 `Pending` 状态。
+ **触发**：评估引擎返回的时间序列中至少有一个处于 `Firing` 状态。

**警报状态**
+ **正常**：对于评估引擎返回的每个时间序列，警报规则的条件均为 **false**。
+ **警报中**：对于评估引擎返回的至少一个时间序列，警报规则的条件为 **true**。如果设置了条件必须在持续时间内保持为 true 才会启动警报，则该持续时间已满足或已超过。
+ **待处理**：对于评估引擎返回的至少一个时间序列，警报规则的条件为 **true**。如果设置了条件必须在持续时间内保持为 true 才会启动警报，则该持续时间尚未达到。
+ **NoData**— 警报规则未返回时间序列，该时间序列的所有值均为空，或者时间序列的所有值均为零。
+ **错误**：尝试评估警报规则时出错。

**警报规则运行状况**
+ **正常**：评估警报规则时无错误。
+ **错误**：评估警报规则时出错。
+ **NoData**— 规则评估期间返回的至少一个时间序列中缺少数据。

# 创建和管理 Grafana Alerting规则
<a name="alert-rules"></a>

****  
本文档主题专为支持 **Grafana 8.x 版本**的 Grafana 工作区而设计。  
对于支持 Grafana 10.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 10](using-grafana-v10.md)。  
对于支持 Grafana 9.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 9](using-grafana-v9.md)。

警报规则是一组评估标准，用于确定是否启动警报。该规则包含一个或多个查询和表达式、一个条件、评估频率，以及满足条件的持续时间（可选）。

查询和表达式选择要评估的数据集，而条件则设置要创建警报，警报必须达到或超过的阈值。时间间隔指定评估警报规则的频率。配置的持续时间表示必须满足条件的持续时间。规则还可以定义无数据时的警报行为。

以下各节将介绍不同类型 Grafana 警报规则的创建和管理。

**Topics**
+ [创建 Cortex 或 Loki 管理的警报规则](#create-alert-rule)
+ [创建 Cortex 或 Loki 管理的记录规则](#create-alert-recording-rule)
+ [创建 Grafana 管理的警报规则](#create-grafana-alert-rule)
+ [警报规则的注释和标签](#alert-rule-labels)
+ [管理警报规则](#manage-alert-rules)
+ [Cortex 或 Loki 规则组和命名空间](#alert-rule-groups)

## 创建 Cortex 或 Loki 管理的警报规则
<a name="create-alert-rule"></a>

使用 Grafana，您可以为外部 Cortex 或 Loki 实例创建警报规则。

**注意**  
Cortex 是 Amazon Managed Service for Prometheus 和 Prometheus 数据来源使用的时间序列数据库。

**先决条件**
+ 验证您是否拥有 Prometheus 数据来源的写入权限。如果没有，您将无法创建或更新 Cortex 管理的警报规则。
+ 对于 Cortex 和 Loki 数据来源，通过配置其各自的服务启用 ruler API。
  + **Loki**：`local` 规则存储类型是 Loki 数据来源的默认设置，仅支持查看规则。要编辑规则，请配置其他存储类型之一。
  + **Cortex**：使用传统的 `/api/prom` 前缀，而不是 `/prometheus`。Prometheus 数据来源同时支持 Cortex 和 Prometheus，并且 Grafana 预期 Query API 和 Ruler API 使用相同的 URL。您不能为 Ruler API 提供单独的 URL。

**注意**  
如果您不想管理特定 Loki 或 Prometheus 数据来源的警报规则，请转到其设置，并清除**通过警报用户界面管理警报**复选框。

**要添加 Cortex 或 Loki 管理的警报规则**

1. 在 Grafana 控制台的 Grafana 菜单中，选择**警报**（铃铛）图标，打开列出现有警报的**警报**页面。

1. 选择**新建警报规则**。

1. 在**步骤 1** 中，添加规则名称、类型和存储位置，如下所示：
   + 在**规则名称**中，添加描述性名称。此名称将显示在警报规则列表中。这也是根据此规则创建的每个警报实例的 `alertname` 标签。
   + 从**规则类型**下拉列表中，选择 **Cortex/Loki 管理的警报**。
   + 从**选择数据来源**下拉列表中，选择 Prometheus 或 Loki 数据来源。
   + 从**命名空间**下拉列表中，选择现有的规则命名空间。否则，选择**新增**，然后输入名称以新建。命名空间可以包含一个或多个规则组，并且只能用于组织目的。有关更多信息，请参阅 [Cortex 或 Loki 规则组和命名空间](#alert-rule-groups)。
   + 从**组**下拉列表中，选择所选命名空间内的现有群组。否则，选择**新增**，然后输入名称以新建。新创建的规则会附加到该组的末尾。组内的规则以固定时间间隔按顺序运行，评估时间相同。

1. 在**步骤 2** 中，添加要评估的查询。

   该值可以是 PromQL 或 LogQL 表达式。如果评估结果中至少有一个序列的值大于 0，则规则会启动警报。会为每个序列创建一个警报。

1. 在**步骤 3** 中，添加条件。

   在条件的“时长”文本框中，指定条件必须保持为 true 的持续时间，超过该时间后才会启动警报。如果您指定 `5m`，则条件必须持续五分钟为 true，才会启动警报。
**注意**  
满足条件后，警报将进入 `Pending` 状态。如果条件在指定的持续时间保持为激活状态，警报将转入 `Firing` 状态。如果不再保持此状态，则恢复到 `Normal` 状态。

1. 在**步骤 4** 中，添加与规则相关联的其他元数据。
   + 添加描述和摘要以自定义警报消息。使用 [警报规则的注释和标签](#alert-rule-labels) 中的指南。
   + 添加 Runbook 网址、面板、仪表板和警报 IDs。
   + 添加自定义标签。

1. 选择**预览警报**，以评估规则，并查看会产生哪些警报。这将显示警报列表，其中包含每个警报的状态和值。

1. 选择**保存**以保存规则，或者选择**保存并退出**，以保存规则并返回**警报**页面。

## 创建 Cortex 或 Loki 管理的记录规则
<a name="create-alert-recording-rule"></a>

您可以为外部 Cortex 或 Loki 实例创建和管理记录规则。记录规则会预先计算经常需要的表达式或计算成本高昂的表达式，并将结果保存为一组新的时间序列。查询这个新时间序列的速度更快，特别是对于控制面板而言，因为控制面板每次刷新时都会查询相同的表达式。

**先决条件**

对于 Cortex 和 Loki 数据来源，通过配置其各自的服务启用 Ruler API。
+ **Loki**：`local` 规则存储类型是 Loki 数据来源的默认设置，仅支持查看规则。要编辑规则，请配置其他存储类型之一。
+ **Cortex**：将 Grafana Prometheus 数据来源配置为指向 Cortex 时，请使用传统的 `/api/prom` 前缀，而不是 `/prometheus`。Prometheus 数据来源同时支持 Cortex 和 Prometheus，并且 Grafana 预期 Query API 和 Ruler API 使用相同的 URL。您不能为 Ruler API 提供单独的 URL。

**注意**  
如果您不想管理特定 Loki 或 Prometheus 数据来源的警报规则，请转到其设置，并清除**通过警报用户界面管理警报**复选框。

**要添加 Cortex 或 Loki 管理的记录规则**

1. 在 Grafana 控制台的 Grafana 菜单中，选择**警报**（铃铛）图标，打开列出现有警报的**警报**页面。

1. 选择**新建警报规则**。

1. 在**步骤 1** 中，添加规则名称、类型和存储位置，如下所示：
   + 在**规则名称**中，添加描述性名称。此名称将显示在警报规则列表中。这也是根据此规则创建的每个警报实例的 `alertname` 标签。
   + 从**规则类型**下拉列表中，选择 **Cortex/Loki 管理的警报**。
   + 从**选择数据来源**下拉列表中，选择 Prometheus 或 Loki 数据来源。
   + 从**命名空间**下拉列表中，选择现有的规则命名空间。否则，选择**新增**，然后输入名称以新建。命名空间可以包含一个或多个规则组，并且只能用于组织目的。有关更多信息，请参阅 [Cortex 或 Loki 规则组和命名空间](#alert-rule-groups)。
   + 从**组**下拉列表中，选择所选命名空间内的现有群组。否则，选择**新增**，然后输入名称以新建。新创建的规则会附加到该组的末尾。组内的规则以固定时间间隔按顺序运行，评估时间相同。

1. 在**步骤 2** 中，添加要评估的查询。

   该值可以是 PromQL 或 LogQL 表达式。如果评估结果中至少有一个序列的值大于 0，则规则会启动警报。会为每个序列创建一个警报。

1. 在**步骤 3** 中，添加与规则相关联的其他元数据。
   + 添加描述和摘要以自定义警报消息。使用 [警报规则的注释和标签](#alert-rule-labels) 中的指南。
   + 添加 Runbook 网址、面板、仪表板和警报 IDs。
   + 添加自定义标签。

1. 选择**保存**以保存规则，或者选择**保存并退出**，以保存规则并返回**警报**页面。

## 创建 Grafana 管理的警报规则
<a name="create-grafana-alert-rule"></a>

Grafana 允许您创建警报规则，以查询一个或多个数据来源，归约或转换结果，并将它们相互比较或与固定阈值进行比较。处理完毕后，Grafana 会向联系点发送通知。

**注意**  
在使用 Grafana Alerting 时创建 Grafana 管理的警报规则，会导致在匹配规则时发送多条通知。某些联系点提供商可能有可配置的选项，用于消除重复的通知。

**要添加 Grafana 管理的规则**

1. 在 Grafana 控制台的 Grafana 菜单中，选择**警报**（铃铛）图标，打开列出现有警报的**警报**页面。

1. 选择**新建警报规则**。

1. 在**步骤 1** 中，添加规则名称、类型和存储位置，如下所示：
   + 在**规则名称**中，添加描述性名称。此名称将显示在警报规则列表中。这也是根据此规则创建的每个警报实例的 `alertname` 标签。
   + 从**规则类型**下拉列表中，选择 **Grafana 管理的警报**。
   + 从**文件夹**下拉列表中，选择要存储规则的文件夹。如果未选择文件夹，规则将存储在 `General` 文件夹中。要创建文件夹，请选择下拉列表，并输入新文件夹名称。

1. 在**步骤 2** 中，添加要评估的查询和表达式。
   + 保留默认名称，或将鼠标悬停在其上方，选择编辑图标以更改名称。
   + 对于查询，请从下拉列表中选择一个数据来源。
   + 添加一个或多个[查询](panel-queries.md)或表达式（有关表达式的详细信息，请参阅 *Grafana 文档*中的 [Expressions](https://grafana.com/docs/grafana/next/panels/query-a-data-source/)）。
   + 对于每个表达式，可选择**经典条件**来创建单条警报规则，或从 **Math**、**Reduce** 和 **Resample** 选项中选择，为每个序列生成单独的警报。有关这些选项的详细信息，请参阅 [单维规则和多维规则](#single-multi-rule)。
   + 选择**运行查询**，以验证查询是否成功。

1. 在**步骤 3** 中，添加条件。
   + 从**条件**下拉列表中，选择启动警报规则的查询或表达式。
   + 在**评估间隔**中，指定评估频率。必须是 10 秒的倍数。例如 `1m`、`30s`。
   + 在**评估时长**中，指定条件必须为 true 的持续时间，超过该时间后才会启动警报。
**注意**  
如果条件被违反，警报将进入 `Pending` 状态。如果条件在指定的持续时间保持为违反状态，警报将转入 `Firing` 状态。如果不再保持此状态，则恢复到 `Normal` 状态。
   + 在**配置无数据和错误处理**中，配置无数据情况下的警报行为。使用[处理无数据或错误的情况](#rule-no-data-error)中的指南。
   + 选择**预览警报**，检查此时运行查询的结果。预览不包括无数据和错误处理条件。

1. 在**步骤 4** 中，添加与规则相关联的其他元数据。
   + 添加描述和摘要以自定义警报消息。使用 [警报规则的注释和标签](#alert-rule-labels) 中的指南。
   + 添加 Runbook 网址、面板、仪表板和警报 IDs。
   + 添加自定义标签。

1. 选择**保存**以保存规则，或者选择**保存并退出**，以保存规则并返回**警报**页面。

### 单维规则和多维规则
<a name="single-multi-rule"></a>

对于 Grafana 管理的警报规则，您可以创建具有经典条件的规则，也可以创建多维规则。

**单维规则（经典条件）**

使用经典条件表达式创建规则，可在满足条件时启动单个警报。对于返回多个序列的查询，Grafana 不会跟踪每个序列的警报状态。因此，即使满足多个序列的警报条件，Grafana 也只发送一个警报。

有关如何设置表达式格式的更多信息，请参阅 *Grafana 文档*中的 [Expressions](https://grafana.com/docs/grafana/next/panels/query-a-data-source/)。

**多维规则**

要为查询中返回的每个序列生成单独的警报实例，请创建多维规则。

**注意**  
由多维规则生成的每个警报实例都会计入警报总配额。达到警报配额后，不会对规则进行评估。有关多维规则配额的更多信息，请参阅 [达到配额错误](#rule-quota-reached)。

要根据单条规则创建多个实例，请使用 `Math`、`Reduce`、或 `Resample` 表达式来创建多维规则。例如，您可以：
+ 为每个查询添加 `Reduce` 表达式，将所选时间范围内的值聚合为一个值。（[使用数字数据的规则](alert-fundamentals.md#alert-numeric)不需要）。
+ 添加包含规则条件的 `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)。



**多维规则的性能注意事项**

每个警报实例都会计入警报配额。如果多维规则创建的实例超过警报配额所能容纳的数量，则不会对其进行评估，并且会返回配额错误。有关更多信息，请参阅 [达到配额错误](#rule-quota-reached)。

多维警报可能会大幅影响 Grafana 工作区的性能，以及数据来源的性能（因为 Grafana 会查询数据来源，以评估警报规则）。在您尝试优化监控系统的性能时，以下注意事项可能会有所帮助。
+ **规则评估频率**：警报规则的**评估间隔**属性可控制规则评估的频率。我们建议使用可接受的最低评估频率。
+ **结果集基数**：使用规则创建的警报实例数量会影响其性能。假设您要在实例集的每台虚拟机上监控每个 API 路径的 API 响应错误。该集合的基数是路径数乘以路径数。 VMs您可以减少结果集的基数，例如，通过监控每台虚拟机的总错误数（而不是每台虚拟机每条路径的错误数）做到这一点。
+ **查询的复杂性**：对于数据来源可以快速处理和响应的查询，其消耗的资源更少。虽然这一考虑因素不如上述其他考虑因素重要，但如果您已尽可能降低了那些因素的影响，那么着眼于单个查询的性能可能会有所帮助。您还应该了解评估这些规则对数据来源的性能影响。通常，在监控数据库处理的查询中，警报查询占据了绝大多数，因此影响 Grafana 实例的负载因素也会影响这些警报查询。

### 达到配额错误
<a name="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="rule-no-data-error"></a>

选择在无数据或有错误时如何处理警报行为的选项。

下表列出了处理无数据的选项。


| 无数据选项 | 行为 | 
| --- | --- | 
|  无数据  |  创建警报 `DatasourceNoData`，将警报规则的名称和 UID，以及返回无数据的数据来源的 UID 作为标签。  | 
|  警报  |  将警报规则状态设置为 `Alerting`。  | 
|  OK  |  将警报规则状态设置为 `Normal`。  | 

下表列出了处理错误情况的选项。


| 错误或超时选项 | 行为 | 
| --- | --- | 
|  警报  |  将警报规则状态设置为 `Alerting`  | 
|  OK  |  将警报规则状态设置为 `Normal`  | 
|  错误  |  创建警报 `DatasourceError`，将警报规则的名称和 UID，以及返回无数据的数据来源的 UID 作为标签。  | 

## 警报规则的注释和标签
<a name="alert-rule-labels"></a>

注释和标签是与警报相关联的键值对，这些警报来源于警报规则、数据来源响应，以及警报规则评估的结果。它们可以直接用于警报通知，也可以在[模板](alert-message-templates.md)和[模板函数](alert-message-templates.md#alert-template-functions)中用于动态创建通知联系人。

**Annotations**

注释是提供警报附加信息的键值对。您可以使用以下注释：`description`、`summary`、`runbook_url`、`alertId`、`dashboardUid` 和 `panelId`。这些注释会显示在用户界面的规则和警报详细信息中，并可用于联系点消息模板。

**标签**

标签是包含警报信息的键值对。警报的标签集在整个警报评估和通知过程中生成和添加。其用途如下。
+ 警报的完整标签集可在 Grafana 警报中唯一标识该警报。
+ Alertmanager 使用标签将警报与[通知策略](alert-notifications.md)中的[静默](alert-silences.md)和[警报组](alert-groups.md)进行匹配。
+ 警报用户界面会显示由该规则的评估生成的每个警报实例的标签。
+ 联系点可以访问标签，以动态生成通知，其中包含与生成通知的警报相关的特定信息。
+ 标签可添加到[警报规则](#alert-rules)中。这些手动配置的标签能够使用模板函数并引用其他标签。在发生标签冲突时，在此处向警报规则添加的标签具有优先权。

展开注释和标签时，可以使用以下模板变量。


| Name | 说明 | 
| --- | --- | 
|  `$labels`  |  来自查询或条件的标签。例如，`{{ $labels.instance }}` 和 `{{ $labels.job }}`。当规则使用经典条件时，此变量不可用。  | 
|  `$values`  |  为该警报规则评估的所有归约表达式和数学表达式的值。例如，`{{ $values.A }}`、`{{ $values.A.Labels }}` 和 `{{ $values.A.Value }}`，其中 `A` 是表达式的 `refID`。当规则使用经典条件时，此变量不可用  | 
|  `$value`  |  警报实例的值字符串。例如 `[ var='A' labels={instance=foo} value=10 ]`。  | 

## 管理警报规则
<a name="manage-alert-rules"></a>



**警报**页面列出了警报规则。默认情况下，规则按数据来源类型分组。**Grafana** 部分列出了 Grafana 管理的规则，**Cortex/Loki** 部分列出了兼容 Prometheus 的数据来源的规则。您可以查看兼容 Prometheus 的数据来源的警报规则，但无法编辑。

### 查看警报规则
<a name="manage-alerts-view"></a>

使用 Grafana 警报，您可以在一个页面中查看所有警报。

**查看警报详细信息**

1. 在 Grafana 控制台的 Grafana 菜单中，选择**警报**（铃铛）图标，打开**警报**页面。默认情况下，规则按数据来源类型分组显示。您还可以按每个警报的当前状态查看（下文将详细介绍）。

1. 在**查看方式**中，您可以选择自己喜欢的选项，在组视图和状态视图之间切换。

1. 选择行旁边的箭头，查看该行的详细信息。规则的详细信息包括规则标签、注释、数据来源和查询，以及由规则生成的警报实例列表。

**组视图**

组视图显示按文件夹分组的 Grafana 警报规则以及按 `namespace` \$1 `group` 分组的 Loki 或 Prometheus 警报规则。这是默认的规则列表视图，用于管理规则。您可以展开每个组，查看该组中的规则列表。进一步展开规则，查看详细信息。您还可以展开操作按钮和规则产生的警报，查看其详细信息。

**状态视图**

状态视图显示按状态分组的警报规则。使用此视图可以大致了解哪些规则处于何种状态。可以展开每条规则查看其详细信息。其中包括操作按钮和由此规则生成的任何警报，而每个警报都可以进一步展开以查看其详细信息。

**筛选警报规则**

您可以通过多种方式筛选**警报**页面上显示的警报规则。
+ 您可以选择**选择数据来源**，然后选择要筛选的数据来源，筛选显示查询特定数据来源的规则。
+ 您可以在**按标签搜索**中选择搜索条件，按标签筛选。一些示例条件包括 `environment=production`、`region=~US|EU`、`severity!=warning`。
+ 您可以选择**按状态筛选警报**，然后选择要查看的状态，筛选显示处于特定状态的规则。

### 编辑或删除警报规则
<a name="manage-alerts-edit"></a>

Grafana 管理的警报规则只能由对存储规则的文件夹具有编辑权限的用户编辑或删除。具有编辑者或管理员角色的用户可以编辑或删除外部 Cortex 或 Loki 实例的警报规则。

**编辑或删除规则**

1. 展开规则，直到可以看到**查看**、**编辑**和**删除**的规则控件。

1. 选择**编辑**以打开“创建规则”页面。按照创建规则的相同方式更新。有关详细信息，请参阅 [创建 Grafana 管理的警报规则](#create-grafana-alert-rule) 或 [创建 Cortex 或 Loki 管理的警报规则](#create-alert-rule) 中的说明。

1. （可选）选择**删除**以删除规则。

## Cortex 或 Loki 规则组和命名空间
<a name="alert-rule-groups"></a>

您可以组织规则。规则是在规则组中创建的，而规则组被组织到命名空间中。规则组中的规则以固定时间间隔按顺序运行。默认的时间间隔为一分钟。您可以重命名 Cortex 或 Loki 命名空间和规则组，并编辑规则组的评估时间间隔。

**要编辑规则组或命名空间**

1. 在 Grafana 控制台的 Grafana 菜单中，选择**警报**（铃铛）图标，打开**警报**页面。

1. 导航到要编辑的规则组或命名空间中的规则。

1. 选择**编辑**（笔）图标。

1. 对规则组或命名空间做出更改。
**注意**  
对于命名空间，您只能编辑名称。对于规则组，您可以更改名称，或组内规则的评估时间间隔。例如，您可以选择 `1m` 让规则每分钟评估一次，或选择 `30s` 让规则每 30 秒评估一次。

1. 选择**保存更改**。

# 警报组
<a name="alert-groups"></a>

****  
本文档主题专为支持 **Grafana 8.x 版本**的 Grafana 工作区而设计。  
对于支持 Grafana 10.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 10](using-grafana-v10.md)。  
对于支持 Grafana 9.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 9](using-grafana-v9.md)。

警报组显示来自 Alertmanager 实例的分组警报。默认情况下，警报按 [使用通知策略](alert-notifications.md) 中根策略的标签键分组。将常见警报分组到一个警报组中，可以防止启动重复警报。

**要查看警报分组**

1. 在 Grafana 控制台的 Grafana 菜单中，选择**警报**（铃铛）图标，然后选择**警报分组**项，打开列出现有组的页面。

1. 从 **Alertmanager** 下拉列表中，选择外部 Alertmanager 作为数据来源。默认情况下，选择的是 `Grafana` Alertmanager。

1. 从**自定义分组依据**下拉列表中，选择标签组合，以查看默认分组以外的分组。您可以使用此视图调试或验证您的通知策略分组。

未在根策略分组或自定义分组中指定标签的警报将添加到标题为 `No grouping` 的组中。

**筛选警报**

您可以使用以下筛选器查看符合特定条件的警报：
+ **按标签搜索**：在**搜索**中，输入现有标签，以查看与该标签匹配的警报。例如 `environment=production`、`region=~US|EU`、`severity!=warning`。
+ **按状态筛选警报**：在**状态**中，从 `Active`、`Suppressed`、或 `Unprocessed` 状态中进行选择，以查看该状态下的警报。

# 静默 Prometheus 数据来源的警报通知
<a name="alert-silences"></a>

****  
本文档主题专为支持 **Grafana 8.x 版本**的 Grafana 工作区而设计。  
对于支持 Grafana 10.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 10](using-grafana-v10.md)。  
对于支持 Grafana 9.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 9](using-grafana-v9.md)。

对于外部 Alertmanager 数据来源（包括 Amazon Managed Service for Prometheus），您可以通过*静默*来抑制警报通知。静默只会阻止创建通知：静默不会阻止评估警报规则，也不会阻止警报实例显示在用户界面中。当警报静默时，您可以指定抑制警报的时间范围。

您可以为外部 Alertmanager 数据来源配置静默。

**注意**  
要按固定的时间间隔（例如，在定期维护期间）抑制警报通知，请使用 [静音定时](alert-notifications.md#alert-notification-muting) 而不是静默。

**添加静默**

1. 在 Grafana 控制台的 Grafana 菜单中，选择**警报**（铃铛）图标，打开**警报**页面。

1. 选择**静默**以打开列出现有[联系点](alert-contact-points.md)的页面。

1. 从 **Alertmanager** 下拉列表中选择外部 Alertmanager。

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="alert-contact-points"></a>

****  
本文档主题专为支持 **Grafana 8.x 版本**的 Grafana 工作区而设计。  
对于支持 Grafana 10.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 10](using-grafana-v10.md)。  
对于支持 Grafana 9.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 9](using-grafana-v9.md)。

使用联系点可定义当警报启动时，如何通知联系人。一个联系点可以有一个或多个联系点类型，例如 Amazon Simple Notification Service 或 Slack。启动警报后，将向联系点列出的所有联系点类型发送通知。（可选）使用 [使用消息传递模板](alert-message-templates.md) 可为联系点类型自定义通知消息。

**注意**  
您可以为 Grafana 管理的警报创建和编辑联系点。Alertmanager 警报的联系点为只读。

## 使用联系点
<a name="alert-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="alert-supported-notifiers"></a>


|  Name  |  Type  | 
| --- | --- | 
| Amazon SNS  |  sns  | 
|  OpsGenie  |  opsgenie  | 
| Pager Duty  |  pagerduty  | 
| Slack  |  slack  | 
|  VictorOps  |  victorops  | 

# 使用消息传递模板
<a name="alert-message-templates"></a>

****  
本文档主题专为支持 **Grafana 8.x 版本**的 Grafana 工作区而设计。  
对于支持 Grafana 10.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 10](using-grafana-v10.md)。  
对于支持 Grafana 9.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 9](using-grafana-v9.md)。

通过 [使用联系点](alert-contact-points.md) 发送的通知使用*消息传递模板*构建。Grafana 的默认模板基于 [Go 模板系统](https://golang.org/pkg/text/template)，其中一些字段作为文本评估，而另一些字段则作为 HTML 评估（可能会影响转义）。

大部分联系点字段都可以模板化，因此您可以创建可重复使用的自定义模板，并在多个联系点中使用它们。[模板数据](#alert-template-data) 主题列出了可用于创建模板的变量。

**使用模板**

模板用于创建消息。例如，通过 Slack 警报消息，您可以在联系点中设置标题和正文。以下示例展示了如何使用默认模板创建包含警报触发和解决计数的标题，以及列出警报及其状态的正文。
+ **标题**：

  ```
  {{ len .Alerts.Firing }} firing, {{ len .Alerts.Resolved }} resolved
  ```
+ **文本正文**：

  ```
  {{ range .Alerts }}{{ .Status }}: {{ .Labels.alertname }}
  {{end }}
  ```

您可以创建自己的自定义模板，如以下示例所示。
+ **标题**：

  ```
  {{ template "slack.default.title" .}}
  ```
+ **文本正文**：

  ```
  {{ template "mymessage" .}}
  ```

以下是示例模板。

```
{{ define "myalert" }}
  [{{.Status}}] {{ .Labels.alertname }}

  Labels:
  {{ range .Labels.SortedPairs }}
    {{ .Name }}: {{ .Value }}
  {{ end }}

  {{ if gt (len .Annotations) 0 }}
  Annotations:
  {{ range .Annotations.SortedPairs }}
    {{ .Name }}: {{ .Value }}
  {{ end }}
  {{ end }}

  {{ if gt (len .SilenceURL ) 0 }}
    Silence alert: {{ .SilenceURL }}
  {{ end }}
  {{ if gt (len .DashboardURL ) 0 }}
    Go to dashboard: {{ .DashboardURL }}
  {{ end }}
{{ end }}
```

以下过程展示了如何创建、编辑和删除自定义消息模板。

**要创建消息模板**

1. 在 Grafana 控制台的 Grafana 菜单中，选择**警报**（铃铛）图标，打开**警报**页面。

1. 选择**联系点**。

1. 从 **Alertmanager** 下拉列表中，选择要为其创建消息模板的 Alertmanager 实例。默认为 Grafana Alertmanager。

1. 选择**添加模板**。

1. 添加描述性**名称**。

1. 为模板添加**内容**，例如：

   ```
   {{ define "mymessage" }}
     {{ range .Alerts }}
       [{{ .Status }}] {{ range .Labels }} {{ .Name }}={{.Value }}{{end}}
     {{ end }}
   {{ end }}
   ```

   “内容”部分中的 `define` 标签用于指定模板名称。此标签是可选的，如果省略，模板名称将从**名称**字段派生。如果指定了两者，最好的做法是保持一致。

1. 选择**保存模板**。

**注意**  
警报消息模板中的 HTML 将渲染为文本，并转义控制字符。Grafana 不支持在生成的通知中渲染 HTML。

**编辑消息模板**

1. 在**警报**页面，选择**联系点**，以打开联系点列表。

1. 在**模板表**中，找到要编辑的模板，然后选择**编辑**图标（笔）。

1. 进行更改，然后选择**保存模板**。

**删除消息模板**

1. 在**警报**页面，选择**联系点**，以打开联系点列表。

1. 在**模板表**中，找到要移除的模板，然后选择**删除**图标（垃圾桶）。

1. 选择**是，删除**，以删除模板。

**嵌套模板**

您可以将模板嵌入到其他模板中。

例如，你可以使用 `define` 关键字定义一个模板片段：

```
{{ define "mytemplate" }}
  {{ len .Alerts.Firing }} firing. {{ len .Alerts.Resolved }} resolved.
{{ end }}
```

然后，您可以使用 `template` 关键字将自定义模板嵌入到此片段中。例如：

```
Alert summary:
{{ template "mytemplate" . }}
```

您可以使用以下内置模板选项嵌入自定义模板。


| Name | 注意 | 
| --- | --- | 
|  `default.title`  |  显示概览状态信息。  | 
|  `default.message`  |  提供已触发和已解决警报的格式化摘要。  | 

**自定义模板示例**

以下是如何使用自定义模板的示例。

渲染单个警报的模板：

```
{{ define "myalert" }}
  [{{.Status}}] {{ .Labels.alertname }}

  Labels:
  {{ range .Labels.SortedPairs }}
    {{ .Name }}: {{ .Value }}
  {{ end }}

  {{ if gt (len .Annotations) 0 }}
  Annotations:
  {{ range .Annotations.SortedPairs }}
    {{ .Name }}: {{ .Value }}
  {{ end }}
  {{ end }}

  {{ if gt (len .SilenceURL ) 0 }}
    Silence alert: {{ .SilenceURL }}
  {{ end }}
  {{ if gt (len .DashboardURL ) 0 }}
    Go to dashboard: {{ .DashboardURL }}
  {{ end }}
{{ end }}
```

渲染整条通知消息的模板：

```
{{ define "mymessage" }}
  {{ if gt (len .Alerts.Firing) 0 }}
    {{ len .Alerts.Firing }} firing:
    {{ range .Alerts.Firing }} {{ template "myalert" .}} {{ end }}
  {{ end }}
  {{ if gt (len .Alerts.Resolved) 0 }}
    {{ len .Alerts.Resolved }} resolved:
    {{ range .Alerts.Resolved }} {{ template "myalert" .}} {{ end }}
  {{ end }}
{{ end }}
```

## 模板数据
<a name="alert-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  |  附加到警报的一组注释。  | 
|  StartsAt  |  time.Time  |  警报开始触发的时间。  | 
|  EndsAt  |  time.Time  |  仅在知道警报结束时间时设置。否则，设置为从收到最后一次警报的时间起算的可配置的超时周期。  | 
|  GeneratorURL  |  字符串  |  指向 Grafana 或外部 Alertmanager 的返回链接。  | 
|  SilenceURL  |  字符串  |  指向 Grafana 静默的链接，其中预填了此警报的标签。仅适用于 Grafana 管理的警报。  | 
|  DashboardURL  |  字符串  |  指向 Grafana 控制面板的链接（适用于警报规则属于 Grafana 控制面板的情况）。仅适用于 Grafana 管理的警报。  | 
|  PanelURL  |  字符串  |  指向 Grafana 控制面板中面板的链接（适用于警报规则属于 Grafana 控制面板中面板的情况）。仅适用于 Grafana 管理的警报。  | 
|  指纹  |  字符串  |  可用于识别警报的指纹。  | 
|  ValueString  |  字符串  |  该字符串包含警报中每个简化表达式的标签和值。  | 

**KeyValue type**

`KeyValue`类型是一组表示标签和注释的 key/value 字符串对。

除了直接访问存储为 `KeyValue` 的数据外，还有方法可以对这些数据进行排序、删除和转换。


| Name | 参数 | 返回值 | 注意 | 
| --- | --- | --- | --- | 
|  SortedPairs  |    |  键值字符串对的排序列表  |    | 
|  删除  |  []string  |  KeyValue  |  返回没有给定键 Key/Value 的地图副本。  | 
|  名称  |    |  []string  |  标签名称列表  | 
|  值  |    |  []string  |  标签值列表  | 



## 模板函数
<a name="alert-template-functions"></a>

使用模板函数，您可以处理标签和注释，以生成动态通知。可使用以下函数。


| Name | 参数类型 | 返回类型 | 说明 | 
| --- | --- | --- | --- | 
|  `humanize`  |  数字或字符串  |  字符串  |  使用公制前缀将数字转换为更易读的格式。  | 
|  `humanize1024`  |  数字或字符串  |  字符串  |  与 humanize 类似，但使用 1024 作为基数，而不是 1000。  | 
|  `humanizeDuration`  |  数字或字符串  |  字符串  |  将以秒为单位的持续时间转换为更易读的格式。  | 
|  `humanizePercentage`  |  数字或字符串  |  字符串  |  将比率值转换为百分比。  | 
|  `humanizeTimestamp`  |  数字或字符串  |  字符串  |  将以秒为单位的 Unix 时间戳转换为更易读的格式。  | 
|  `title`  |  字符串  |  字符串  |  strings.Title，将每个单词的第一个字符大写。  | 
|  `toUpper`  |  字符串  |  字符串  |  字符串。 ToUpper，将所有字符转换为大写。  | 
|  `toLower`  |  字符串  |  字符串  |  字符串。 ToLower，将所有字符转换为小写。  | 
|  `match`  |  模式、文本  |  布尔值  |  regexp。 MatchString 测试未锚定的正则表达式匹配。  | 
|  `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  | 

# 使用通知策略
<a name="alert-notifications"></a>

****  
本文档主题专为支持 **Grafana 8.x 版本**的 Grafana 工作区而设计。  
对于支持 Grafana 10.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 10](using-grafana-v10.md)。  
对于支持 Grafana 9.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 9](using-grafana-v9.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="alert-notifications-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. 选择**保存策略**。

**标签匹配的工作原理**

如果警报的标签与策略中指定的所有*匹配标签*相匹配，则策略与警报相匹配。
+ **标签**：要匹配的标签名称。必须与警报的标签名称完全匹配。
+ **运算符**：用于将标签值与匹配标签值进行比较的运算符。可用的运算符有：
  + `=` 选择其值与提供的字符串完全匹配的标签。
  + `!=` 选择其值与提供的字符串不匹配的标签。
  + `=~` 选择其值与所提供字符串的正则表达式解释值相匹配的标签（提供的字符串被解释为正则表达式）。
  + `!=` 选择与提供的正则表达式不匹配的标签。
+ **值**：要与标签值匹配的值。可作为字符串或正则表达式进行匹配，具体取决于所选的运算符。

## 静音定时
<a name="alert-notification-muting"></a>

静音定时是一个重复的时间间隔，在此期间，不会针对某个策略生成或发送新的通知。使用静音定时可防止警报在特定的重复时间段（如定期维护时间段）内触发。

与静默类似，静音定时不会阻止对警报规则进行评估，也不会阻止警报实例显示在用户界面中。只会阻止创建通知。

您可以配置 Grafana 管理的静音定时，以及外部 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` 代表月中最后一天。可以将月中日期指定为单日、日期范围，或用逗号分隔的多日列表。

# 更改首选项
<a name="change-your-grafana-preferences"></a>

您可以在**首选项**选项卡上执行多项任务。您可以编辑个人配置文件、更改 Amazon Managed Grafana 偏好设置，以及查看有关个人配置文件和 Amazon Managed Grafana 使用情况的信息。

**注意**  
要更改工作区的配置，请参阅配置 [配置 Amazon Managed Grafana 工作区](AMG-configure-workspace.md)。

## 编辑 Amazon Managed Grafana 配置文件
<a name="edit-your-grafana-profile"></a>

 您的配置文件包含您的姓名、用户名和电子邮件地址。

**要编辑配置文件**

1.  将鼠标悬停在屏幕左下角的用户图标上，然后选择**首选项**。

1.  在**编辑配置文件**部分，您可以编辑以下内容：
   +  **姓名**：编辑此字段可更改与个人资料关联的显示名称。
   +  **电子邮件**：编辑此字段可更改与个人资料关联的电子邮件地址。
   +  **用户名**：编辑此字段可更改用户名。

1.  选择**保存**。

## 编辑首选项
<a name="edit-your-grafana-preferences"></a>

 您的首选项包括是使用深色主题还是浅色主题、主页控制面板和时区。

**注意**  
 个人实例上的设置会覆盖管理员在实例或团队级别上做出的设置。

**要更改首选项**

1.  将鼠标悬停在屏幕左下角的用户图标上，然后选择**首选项**。

1.  在“首选项”部分，您可以编辑以下内容：
   +  **用户界面主题**：要设置主题，请选择**深色**或**浅色**。**默认**为深色主题，或您的 Grafana 管理员选择的主题。
   +  **主页控制面板** 
   +  **时区**：在**时区**列表中选择一个选项。**默认**为浏览器本地时区或 Grafana 管理员选择的时区。有关更多信息，请参阅[时间范围控件](dashboard-time-range-controls.md)。

1.  选择**保存**。

## 查看 Amazon Managed Grafana 会话
<a name="view-your-grafana-sessions"></a>

 Amazon Managed Grafana 会记录您在每个 Grafana 工作区中的会话。如果您怀疑有人滥用了您的 Amazon Managed Grafana 凭证，可以查看此部分。

**要查看会话信息**

1.  将鼠标悬停在屏幕左下角的用户图标上，然后选择**首选项**。

1.  向下滚动到**会话**部分。Grafana 会显示以下信息：
   +  **最后在线**：您在多久之前登录。
   +  **登录**：登录到当前 Grafana 实例的日期。
   +  **IP 地址**：您登录时使用的 IP 地址。
   +  **浏览器和操作系统**：登录 Grafana 时使用的网络浏览器和操作系统。
   +  如果您是该实例的 Grafana 管理员，则可以通过选择会话行中的红色注销图标来撤销会话。

# 收集信息以获得支持
<a name="support-bundles"></a>

支持捆绑包提供了一种通过用户界面收集有关 Grafana 工作区的信息的简单方法。当您的 Grafana 工作区遇到问题时，可以向产品支持部门发送包含工作区相关信息的支持捆绑包，其中包括：
+ Grafana 版本
+ 已安装插件
+ Grafana 配置
+ 数据库信息和迁移

**注意**  
支持捆绑包仅在与 Grafana 版本 10 或更高版本兼容的工作区中可用。

## 支持捆绑包组件
<a name="support-bundles-components"></a>

支持捆绑包可以包括以下任一组件：
+ **使用情况统计信息**：Grafana 工作区的使用情况统计信息。
+ **用户信息**：Grafana 工作区的用户列表。
+ **数据库和迁移信息**：数据库信息和迁移日志。
+ **插件信息**：有关工作区中已安装插件的信息。
+ **基本信息**：有关 Grafana 工作区的基本信息，包括版本和内存使用情况。
+ **设置**：Grafana 工作区的设置。
+ **SAML**：SAML 的运行状况检查连接和元数据（仅在启用 SAML 后才会显示）。
+ **LDAP**：LDAP 的运行状况检查连接和元数据（仅在启用 LDAP 后才会显示）。
+ **OAuth2**— 每个 OAuth2 提供商的运行状况检查连接和元数据（仅在启用 OAuth 提供程序时才显示）。

## 创建支持捆绑包
<a name="support-bundles-create"></a>

使用以下过程创建支持捆绑包。

**注意**  
此过程需要工作区中的`admin`权限。

**要创建支持捆绑包**

1. 登录 Grafana 工作区。

1. 选择“帮助”图标

1. 从帮助菜单中选择**支持捆绑包**。

1. 选择**新建支持捆绑包**。

1. 选择要在支持捆绑包中包含的组件。

1. 选择**创建**。

1. 支持捆绑包准备就绪后，选择**下载**。

   Grafana 将支持捆绑包下载到存档（`tar.gz`）文件中。

您可以打开文件，以查看支持捆绑包的内容。如果需要，您可以直接将文件发送给支持人员。如果捆绑包包含私人信息，并且您必须通过非私密渠道发送捆绑包，则可以考虑对其进行加密。在发送文件之前，您可以使用诸如 [age](https://age-encryption.org/) 之类的工具对文件进行加密。

# 经典控制面板警报
<a name="old-alerts-overview"></a>

****  
本文档主题讨论了 Grafana 中的传统警报。未来版本的 Amazon Managed Grafana 将不支持此功能。您可以迁移到 Grafana Alerting 以使用最新的警报功能。有关更多信息，请参阅下列主题之一。  
对于支持 Grafana 10.x 版本的 Grafana 工作区，请参阅[Grafana 10 版本中的警报](v10-alerts.md)。  
对于支持 Grafana 9.x 版本的 Grafana 工作区，请参阅[Grafana 9 版本中的警报](v9-alerts.md)。  
对于支持 Grafana 8.x 版本的 Grafana 工作区，请参阅[Grafana Alerting](alerts-overview.md)。

**注意**  
本节介绍了 Grafana 中的经典控制面板警报系统。要了解有关迁移到和使用新 Grafana Alerting 的信息（该提醒旨在查看 Prometheus Alertmanager 警报以及 Grafana 警报），请参阅 [Grafana 10 版本中的警报](v10-alerts.md)。  
GrafanaLabs 已宣布移除 Grafana 版本 11 中的经典仪表板警报。

 经典控制面板警报由两个部分组成：
+  警报规则：触发警报的时间。警报规则由 Grafana 定期评估的一个或多个条件定义。
+  通知渠道：警报的发送方式。当满足警报规则的条件时，Grafana 会通知为该警报配置的渠道。

 当前，只有图形面板可视化支持警报。

## 警报配置
<a name="old-alert-tasks"></a>

您可以在您的 Amazon Managed Grafana 工作区中配置警报。
+  添加或编辑警报通知渠道。有关更多信息，请参阅 [通知](#old-notifications)。
+  创建一个警报规则。有关更多信息，请参阅 [创建警报](old-create-alerts.md)。
+  查看现有警报规则及其当前状态。有关更多信息，请参阅 [查看现有警报规则](old-view-existing-alert-rules.md)。
+  测试警报规则并进行故障排除。有关更多信息，请参阅 [警报问题故障排除](old-troubleshoot-alerts.md)。

## Clustering
<a name="old-clustering"></a>

 目前，警报支持的高可用性形式有限。当您运行多个工作区时，会对警报通知进行重复数据删除。这意味着所有警报都在每台服务器上运行，但由于重复数据删除逻辑，不会发送重复的警报通知。

## 通知
<a name="old-notifications"></a>

 您可以创建包含详细消息的警报规则，包括如何解决问题、运行手册链接等信息。

 实际的通知是在多个警报之间配置和共享的。

## 警报执行
<a name="old-alert-execution"></a>

 警报规则在 Amazon Managed Grafana 的计划程序和查询执行引擎中进行评估。

# 警报通知
<a name="old-alert-notifications"></a>

****  
本文档主题讨论了 Grafana 中的传统警报。未来版本的 Amazon Managed Grafana 将不支持此功能。您可以迁移到 Grafana Alerting 以使用最新的警报功能。有关更多信息，请参阅下列主题之一。  
对于支持 Grafana 10.x 版本的 Grafana 工作区，请参阅[Grafana 10 版本中的警报](v10-alerts.md)。  
对于支持 Grafana 9.x 版本的 Grafana 工作区，请参阅[Grafana 9 版本中的警报](v9-alerts.md)。  
对于支持 Grafana 8.x 版本的 Grafana 工作区，请参阅[Grafana Alerting](alerts-overview.md)。

 当警报状态发生变化时，它会发出通知。每条警报规则可以有多个通知。要向警报规则添加通知，必须先添加和配置 `notification` 渠道。

 这是在“通知渠道”页面上完成的。

## 添加通知渠道
<a name="old-add-a-notification-channel"></a>

1.  在侧栏中，将鼠标悬停在**警报**（铃铛）图标上，然后选择**通知渠道**。

1.  选择**添加频道**。

1.  填写字段或选择以下各节中所述的选项。

## 新通知渠道字段
<a name="old-new-notification-channel-fields"></a>

### 默认（对所有警报发送）
<a name="old-default-send-on-all-alerts"></a>
+  **名称**：输入此渠道的名称。当用户向警报规则添加通知时，将显示该字段。
+  **类型**：选择渠道类型。有关更多信息，请参阅 [支持的通知程序列表](#old-list-of-supported-notifiers)。
+  **默认（对所有警报发送）**：选择此选项后，将在此渠道上发送所有警报规则的通知。
+  **禁用解决消息**：选择此选项后，将禁用警报状态恢复到 false 时发送的解决消息 [OK]。
+  **发送提醒**：选择此选项后，将为警报发送其他通知（提醒）。您可以使用秒数（s）、分钟数（m）或小时数（h）来指定发送提醒的频率；例如：`30s`、`3m`、`5m` 或 `1h`。

**重要**  
 在对规则进行评估后会发送警报提醒。因此，发送提醒的频率不能超过配置的警报规则评估间隔。

 以下示例显示了针对触发警报发送提醒的频率和时间。


|  警报规则评估间隔  |  发送提醒的间隔为  |  发送提醒的间隔为（在最后一次警报通知之后）  | 
| --- | --- | --- | 
|  30s  |  15s  |  \$130 秒  | 
|  1m  |  5m  |  \$15 分钟  | 
|  5m  |  15m  |  \$115 分钟  | 
|  6m  |  20m  |  \$124 分钟  | 
|  1h  |  15m  |  \$11 小时  | 
|  1h  |  2h  |  \$12 小时  | 

## 支持的通知程序列表
<a name="old-list-of-supported-notifiers"></a>


|  Name  |  Type  |  支持映像  |  支持警报规则标签  | 
| --- | --- | --- | --- | 
| [Amazon Simple Notification Service](#old-amazon-sns)  |  sns  |  否  |  是  | 
|  OpsGenie  |  opsgenie  |  否  |  是  | 
|  [PagerDuty](#old-pagerduty)  |  pagerduty  |  否  |  是  | 
|  [Slack](#old-slack)  |  slack  |  否  |  否  | 
|  VictorOps  |  victorops  |  否  |  否  | 

### Amazon Simple Notification Service
<a name="old-amazon-sns"></a>

如果您已启用服务托管的权限并将 Amazon SNS 作为工作区的通知渠道，则只需在创建通知渠道时提供 SNS 主题 ARN 即可。在**名称**字段中，提供您创建的 SNS 主题的名称。如果您使用服务托管的权限创建了工作区，则 SNS 主题名称必须以 `grafana` 为前缀，这样通知才能成功发布到该主题。如果您在创建工作区时选择了客户管理的权限，则 SNS 主题名称无需加前缀 `grafana`。

 在**主题**字段中，复制并粘贴 SNS 主题的 ARN。在**消息正文格式**中，您可以选择 JSON 或文本选项。

在 “**可选 AWS SNS 设置”** 字段中，选中 “在邮件**中包含所有标签” 复选框以查看邮件**正文中的所有 Grafana 标签。

如果您使用工作区的客户管理权限，则您提供的 IAM 角色应包括针对您的 SNS 主题的 SNS 发布权限。

### Slack
<a name="old-slack"></a>

 要设置 Slack，您必须配置传入的 Slack Webhook URL。有关详细信息，请参阅[使用传入 Webhook 发送消息](https://api.slack.com/incoming-webhooks)。

有关设置 Slack 自动程序集成的详细信息，请参阅[按照 Slack 的指南设置自动程序集成](https://api.slack.com/bot-users)。使用提供的以 "xoxb" 开头的令牌。


|  设置  |  说明  | 
| --- | --- | 
|  URL  |  Slack 的传入 Webhook URL，或者最终是 [chat.postMessage](https://api.slack.com/methods/chat.postMessage) Slack API 端点。 | 
|  用户名  |  设置自动程序消息的用户名。 | 
|  收件人  |  使用它来覆盖 Slack 收件人。您必须提供渠道 Slack ID、用户 Slack ID、用户名引用（@<user>，全部为小写，没有空格）或渠道引用（\$1<channel>，全部为小写，没有空格）。如果您使用 chat.postMessage Slack API 端点，则这是必需的。 | 
|  图标表情符号  |  提供一个表情符号作为自动程序消息的图标。例如，:smile： | 
|  图标 URL  |  提供图像的 URL 作为自动程序消息的图标。 | 
|  提及用户  |  （可选）在 Grafana 发送的 Slack 通知中提及一个或多个用户。要通过对应的 Slack 查看以逗号分隔的用户 IDs，请选择每个用户的 Slack 个人资料上的溢出按钮。 | 
|  提及群组  |  （可选）在 Grafana 发送的 Slack 通知中提及一个或多个组。你可以通过相应的 Slack 查看以逗号分隔的群组 IDs （你可以从每个群组的 Slack 个人资料网址中获取）。 | 
|  提及渠道  |  （可选）提及所有渠道成员或仅提及活跃的渠道成员。 | 
|  令牌  |  如果提供，Amazon Managed Grafana 将通过 Slack file.upload API 操作上传生成的图像，而不是外部图像目标。如果您使用 chat.postMessage Slack API 端点，则这是必需的。 | 

 如果您将令牌用于 Slack 自动程序，则必须邀请该自动程序加入您要发送通知的渠道。然后将渠道添加到收件人字段。

### PagerDuty
<a name="old-pagerduty"></a>

 要进行设置 PagerDuty，请提供集成密钥。


|  设置  |  说明  | 
| --- | --- | 
|  集成密钥  |  的集成密钥 PagerDuty。 | 
|  严重性  |  动态通知的级别；默认为 critical（1）。 | 
|  自动解决事件  |  警报恢复为 “正常” 后再解决事件。 PagerDuty  | 
|  详细消息  |  从 PD 摘要字段中移除警报消息，改为将其放到自定义详细信息中（2）。 | 

**注意**  
 标签`Severity`、、`Class``Group``dedup_key`、和在[PagerDuty通用事件格式（PD-](https://support.pagerduty.com/docs/pd-cef) CEF）中`Component`具有特殊含义。如果警报面板定义了这些标签键，则它们将被移植到发送到的事件的根目录。 PagerDuty这意味着它们将在 PagerDuty 用户界面和筛选工具中可用。在警报上设置的严重性标签的级别有效，它会覆盖通知渠道上设置的全局严重性。

**注意**  
 使用 Message In Details 将更改 PagerDuty 事件中`custom_details`字段的结构。如果您依赖中的字段，这可能会破坏 PagerDuty 规则中的自定义事件规则`payload.custom_details`。将使用 `custom_details.myMetric` 的所有现有规则移至 `custom_details.queries.myMetric`。

**注意**  
 使用 `dedup_key` 标签将覆盖 Grafana 使用自定义密钥生成的 `dedup_key`。

## 配置从警报通知返回 Grafana 的链接
<a name="old-configure-the-link-back-to-grafana-from-alert-notifications"></a>

 所有警报通知都包含指向 Grafana 工作区中触发的警报的链接。

# 创建警报
<a name="old-create-alerts"></a>

****  
本文档主题讨论了 Grafana 中的传统警报。未来版本的 Amazon Managed Grafana 将不支持此功能。您可以迁移到 Grafana Alerting 以使用最新的警报功能。有关更多信息，请参阅下列主题之一。  
对于支持 Grafana 10.x 版本的 Grafana 工作区，请参阅[Grafana 10 版本中的警报](v10-alerts.md)。  
对于支持 Grafana 9.x 版本的 Grafana 工作区，请参阅[Grafana 9 版本中的警报](v9-alerts.md)。  
对于支持 Grafana 8.x 版本的 Grafana 工作区，请参阅[Grafana Alerting](alerts-overview.md)。

 当您使用 Amazon Managed Grafana Alerting 时，您可以将规则附加到控制面板的面板中。当您保存控制面板时，Amazon Managed Grafana 会将警报规则提取到单独的警报规则存储中，并安排对它们进行评估。

 在图形面板的**警报**选项卡上，您可以配置评估警报规则的频率以及警报更改状态和启动其通知所必须满足的条件。

 当前，只有图形面板支持警报规则。

## 添加或编辑警报规则
<a name="old-add-or-edit-an-alert-rule"></a>

1.  导航到添加或编辑警报规则的面板，选择标题，然后选择**编辑**。

1.  在**警报**选项卡上，选择**创建警报**。如果此面板已存在警报，则可以编辑**警报**选项卡上的字段。

1.  填写以下字段。有关更多信息，请参阅 [警报规则字段](#old-alert-rule-fields)。

1.  编写完规则后，选择右上角的**保存**以保存警报规则和控制面板。

1.  （可选，但建议使用）要确保规则返回预期的结果，请选择**测试规则**。

## 删除警报规则
<a name="old-delete-an-alert"></a>

 要删除警报，请滚动到警报底部，然后选择**删除**。

## 警报规则字段
<a name="old-alert-rule-fields"></a>

 本节介绍创建警报需要填写的字段。

### 规则
<a name="old-rule"></a>
+  **名称**：请输入描述性名称。该名称将显示在**警报规则**列表中。
+  **评估每项**：指定调度程序应评估警报规则的频率。这称为*评估间隔*。
+  **时长**：指定查询在触发警报通知之前必须超过配置阈值的时长。

**警告**  
请勿在 `If no data or all values are null` 设置为 `No Data` 的情况下使用 `For`。`No Data` 的触发将立即发生，而不考虑 `For`。如果警报从 `No Data -> Pending -> OK` 中转换，这也可能导致不发送“确认”通知。

 如果警报规则中配置了 `For`，但查询违反了配置的阈值，则它将首先从 `OK` 变为 `Pending`。从 `OK` 到 `Pending` 的过程中，Amazon Managed Grafana 不发送任何通知。当警报规则的触发时间超过 `For` 持续时间时，它将更改为 `Alerting` 并发送警报通知。

 通常，我们建议使用此设置，因为获得误报通常比等待几分钟才启动警报通知的结果更糟。查看 `Alert list` 或 `Alert list panels` 使您能够看到处于待处理状态的警报。

### Conditions
<a name="old-conditions"></a>

 当前，唯一现有的条件类型是 `Query` 条件，允许您指定查询字母、时间范围和聚合函数。

#### 查询条件示例
<a name="old-query-condition-example"></a>

```
avg() OF query(A, 15m, now) IS BELOW 14
```
+  `avg()` 控制如何将**每个**序列的值减少到可以与阈值进行比较的值。选择该函数将其更改为另一个聚合函数。
+  `query(A, 15m, now)` 字母定义了要从**指标**选项卡运行的查询。后两个参数定义了时间范围：`15m, now` 表示 15 分钟前到现在。您也可以使用 `10m, now-2m` 来定义 10 分钟前到 2 分钟前的时间范围。如果您想忽略前两分钟的数据，则此操作会很有用。
+  `IS BELOW 14` 定义阈值的类型和阈值。您可以选择 `IS BELOW` 来更改阈值的类型。

 警报规则中使用的查询不能包含任何模板变量。目前，我们仅支持在条件之间使用 `AND` 和 `OR` 运算符，并且它们按串行的方式运行。例如，我们有三个按以下顺序排列的条件：*condition:A(evaluates to: TRUE) OR condition:B(evaluates to: FALSE) AND condition:C(evaluates to: TRUE)*，因此计算得到的结果为 ((TRUE OR FALSE) AND TRUE) = TRUE。

#### 多个序列
<a name="old-multiple-series"></a>

 如果查询返回多个序列，则将评估每个序列的聚合函数和阈值检查。目前，Amazon Managed Grafana 不会对**每个序列**的警报规则状态进行跟踪。以下场景详细说明了其影响。
+  带有返回以下两个序列的查询的警报条件：**server1** 和 **server2**。
+  **server1** 序列会导致触发警报规则并切换到状态 `Alerting`。
+  发送通知时会显示以下消息：*负载达到峰值（server1）* 
+  在同一警报规则的后续评估中，**server2** 序列还会导致警报规则触发。
+  由于警报规则已处于状态 `Alerting`，因此不会发送任何新通知。

从前面的场景中可以看出，如果规则已经处于状态 `Alerting`，那么当其他序列导致警报触发时，Grafana 不会发送通知。

**注意**  
 您可以将提醒配置为针对触发的警报发送。当警报继续触发时，此配置将发送额外通知。如果其他序列（例如上一个示例中的 server2）也导致警报规则触发，则它们将包含在提醒通知中。根据您使用的通知渠道，您可以利用此功能来识别导致警报触发的新序列或现有序列。

### 没有数据和错误处理
<a name="old-no-data-error-handling"></a>

 下表包含的条件用于控制规则评估引擎如何处理不返回任何数据或仅返回空值的查询。


|  无数据选项  |  说明  | 
| --- | --- | 
|  无数据  |  将警报规则状态设置为 NoData。 | 
|  警报  |  将警报规则状态设置为 Alerting。 | 
|  保留上一状态  |  不管当前警报规则状态如何，都保持当前的状态。 | 
|  确定  | 支持，但通常没有用。 | 

### 执行错误或超时
<a name="old-execution-errors-or-timeouts"></a>

 以下选项告诉 Amazon Managed Grafana 如何处理执行或超时错误。


|  错误或超时选项  |  说明  | 
| --- | --- | 
|  警报  |  将警报规则状态设置为 Alerting。 | 
|  保留上一状态  |  不管当前警报规则状态如何，都保持当前的状态。 | 

 如果您有一个不可靠的时间序列存储，其中查询有时会超时或随机失败，则可以将此选项设置为 `Keep Last State` 以基本上忽略它们。

## 通知
<a name="old-alert-notifications-1"></a>

 在**警报**选项卡上，您还可以指定警报规则通知和有关警报规则的详细消息。该消息可以包含有关如何解决问题以及运行手册的链接等任何信息。

 实际的通知是在多个警报之间配置和共享的。有关如何配置和设置通知的信息，请参阅 [警报通知](old-alert-notifications.md)。
+  **发送至**：如果您已设置警报通知渠道，请选择该渠道。
+  **消息**：输入要在通知渠道上发送的文本消息。某些警报通知器支持将文本转换为 HTML 或其他丰富格式。
+  **标签**：指定要包含在通知中的标签（键值）列表。只有一些通知程序支持标签。

## 警报状态历史记录和注释
<a name="old-alert-state-history-and-annotations"></a>

 警报状态更改记录在 Amazon Managed Grafana 数据库的内部注释表中。状态变化在警报规则的图形面板中以注释的形式可视化。您也可以进入**警报**选项卡上的 `State history` 子菜单来查看和清除状态历史记录。

# 暂停警报规则
<a name="old-pause-an-alert-rule"></a>

****  
本文档主题讨论了 Grafana 中的传统警报。未来版本的 Amazon Managed Grafana 将不支持此功能。您可以迁移到 Grafana Alerting 以使用最新的警报功能。有关更多信息，请参阅下列主题之一。  
对于支持 Grafana 10.x 版本的 Grafana 工作区，请参阅[Grafana 10 版本中的警报](v10-alerts.md)。  
对于支持 Grafana 9.x 版本的 Grafana 工作区，请参阅[Grafana 9 版本中的警报](v9-alerts.md)。  
对于支持 Grafana 8.x 版本的 Grafana 工作区，请参阅[Grafana Alerting](alerts-overview.md)。

 暂停对警报规则的评估有时会很有用。例如，在维护时段内，暂停警报规则可以避免发起大量警报。

1.  在 Grafana 侧栏中，将鼠标悬停在**警报**（铃铛）图标上，然后选择**警报规则**。将列出所有已配置的警报规则及其当前状态。

1.  在列表中找到您的警报，然后选择右侧的**暂停**图标。**暂停**图标将变成**播放**图标。

1.  选择**播放**图标以恢复对警报的评估。

# 查看现有警报规则
<a name="old-view-existing-alert-rules"></a>

****  
本文档主题讨论了 Grafana 中的传统警报。未来版本的 Amazon Managed Grafana 将不支持此功能。您可以迁移到 Grafana Alerting 以使用最新的警报功能。有关更多信息，请参阅下列主题之一。  
对于支持 Grafana 10.x 版本的 Grafana 工作区，请参阅[Grafana 10 版本中的警报](v10-alerts.md)。  
对于支持 Grafana 9.x 版本的 Grafana 工作区，请参阅[Grafana 9 版本中的警报](v9-alerts.md)。  
对于支持 Grafana 8.x 版本的 Grafana 工作区，请参阅[Grafana Alerting](alerts-overview.md)。

 Amazon Managed Grafana 将各个警报规则存储在定义警报规则的面板中，但您也可以查看所有现有警报规则及其当前状态的列表。

 在 Grafana 侧栏中，将鼠标悬停在**警报**（铃铛）图标上，然后选择**警报规则**。将列出所有已配置的警报规则及其当前状态。

 查看警报时，您可以执行以下操作：
+  **按名称筛选警报**：在**搜索警报**字段中键入警报名称。
+  **按状态筛选警报**：在**状态**中，选择要查看的警报状态。所有其他内容都将隐藏。
+  **暂停或恢复警报**：选择警报旁边的**暂停**或**播放**图标可暂停或恢复评估。
+  **访问警报规则设置**：选择警报名称或**编辑警报规则**（齿轮）图标。Amazon Managed Grafana 会打开定义警报规则的面板的**警报**选项卡。这在警报触发时很有用，但您不知道警报是在哪个面板中定义的。

# 通知模板化
<a name="old-alerts-notification-templating"></a>

****  
本文档主题讨论了 Grafana 中的传统警报。未来版本的 Amazon Managed Grafana 将不支持此功能。您可以迁移到 Grafana Alerting 以使用最新的警报功能。有关更多信息，请参阅下列主题之一。  
对于支持 Grafana 10.x 版本的 Grafana 工作区，请参阅[Grafana 10 版本中的警报](v10-alerts.md)。  
对于支持 Grafana 9.x 版本的 Grafana 工作区，请参阅[Grafana 9 版本中的警报](v9-alerts.md)。  
对于支持 Grafana 8.x 版本的 Grafana 工作区，请参阅[Grafana Alerting](alerts-overview.md)。

警报通知模板功能允许您从警报查询中获取标签值并将该值注入警报通知中。

警报查询评估中存在的标签可用于警报规则名称和警报通知消息字段。当警报处于警报状态时，警报标签数据将注入到通知字段中。当同一个标签有多个唯一值时，这些值以逗号分隔。

**要将警报标签数据添加到警报通知中**

1. 导航到要为其添加或编辑警报规则的面板。

1. 选择面板标题并选择**编辑**。

1. 在**警报**选项卡上，选择**创建警报**。如果已存在此面板的警报，您可以直接编辑警报。

1. 使用 `${Label}` 语法查看警报规则名称或警报通知消息字段中的警报查询标签。有关警报查询标签的更多信息，请参阅 Grafanaa 文档中的[消息模板](https://grafana.com/docs/grafana/v8.4/alerting/unified-alerting/message-templating/)。

1. 在右上角，选择**保存**。

# 警报问题故障排除
<a name="old-troubleshoot-alerts"></a>

****  
本文档主题讨论了 Grafana 中的传统警报。未来版本的 Amazon Managed Grafana 将不支持此功能。您可以迁移到 Grafana Alerting 以使用最新的警报功能。有关更多信息，请参阅下列主题之一。  
对于支持 Grafana 10.x 版本的 Grafana 工作区，请参阅[Grafana 10 版本中的警报](v10-alerts.md)。  
对于支持 Grafana 9.x 版本的 Grafana 工作区，请参阅[Grafana 9 版本中的警报](v9-alerts.md)。  
对于支持 Grafana 8.x 版本的 Grafana 工作区，请参阅[Grafana Alerting](alerts-overview.md)。

 如果警报的行为不符合您的预期，则以下步骤可以帮助您进行故障排除并找出问题所在。

 您可以做的第一级故障排除是选择**测试规则**。您可以将结果扩展到可以看到从查询返回的原始数据的程度。