

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

# 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 数据。