

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

# 连接到内置数据来源
<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)。