

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

# 连接到企业数据来源
<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) 