Amazon CloudWatch 查询编辑器
本主题介绍针对 CloudWatch 数据源的查询。有关在 Grafana 中查询数据源的一般文档,请参阅查询和转换数据。
选择查询编辑模式
CloudWatch 数据源可以查询 CloudWatch 指标和 CloudWatch 日志 API 的数据,每个都有自己的专用查询编辑器。

使用编辑器顶部的查询模式切换器选择要查询的 API。
查询 CloudWatch 指标
您可以使用 CloudWatch 查询编辑器构建两种类型的查询
创建指标搜索查询
要创建有效的指标搜索查询,请指定命名空间、指标名称和至少一个统计数据。维度是可选的,但要使维度被视为查询的一部分,它必须同时具有键和值。
如果启用Match Exact
,您还必须指定要查询指标的所有维度,以便指标模式精确匹配。启用Match Exact
后,查询仅返回具有指定维度且没有其他维度的指标,因此指标上存在但未过滤的维度必须添加为通配符(*
)过滤器。如果Match Exact
被禁用,您可以指定任意数量的维度进行过滤。禁用Match Exact
后,无论指标是否有额外的维度,只要匹配命名空间、指标名称和所有定义的维度,查询就会返回这些指标。数据源返回最多 100 个匹配您过滤条件的指标。
您还可以使用模板变量增强查询功能。
使用维度通配符创建动态查询
使用星号(*
)通配符来指定一个或多个维度值,以监控动态的指标列表。

在此示例中,查询返回命名空间AWS/EC2
中的所有指标,指标名称为CPUUtilization
,并查询InstanceId
维度的 ANY 值。这有助于监控 AWS 资源(如 EC2 实例或容器)的指标。
当自动扩缩事件创建新实例时,它们会自动显示在图表中,无需您跟踪新的实例 ID。此功能目前仅限于检索最多 100 个指标。
您可以展开查询检查器按钮并点击Meta Data
以查看自动构建的支持通配符的搜索表达式。
要了解更多关于搜索表达式的信息,请参阅CloudWatch 文档。搜索表达式默认以查询指标必须精确匹配定义的维度名称的方式定义。这意味着在此示例中,查询仅返回包含名称为‘InstanceId’的正好一个维度的指标。

您可以禁用Match Exact
以包含定义了其他维度的指标。禁用Match Exact
即使您不使用通配符,也会创建一个搜索表达式。我们只需搜索至少匹配命名空间、指标名称和所有已定义维度的任何指标。
使用多值模板变量
当基于多值模板变量定义维度值时,数据源使用搜索表达式来查询匹配的指标。这使得在一个查询中使用多个模板变量成为可能,并且还允许您将模板变量用于启用了Match Exact
选项的查询。
搜索表达式限制为 1,024 个字符,因此如果您的值列表很长,查询可能会失败。建议使用星号(*
)通配符代替All
选项来查询特定维度名称具有任何值的全部指标。
仅支持将多值模板变量用于维度值。不支持将多值模板变量用于Region
、Namespace
或Metric Name
。
使用指标数学表达式
您可以通过使用数学函数对 CloudWatch 指标进行运算来创建新的时序指标。这包括支持算术运算符、一元减法和其他函数,并且可以应用于 CloudWatch 指标。有关可用函数的详细信息,请参阅AWS Metric Math。
例如,要对指标应用算术运算,请为原始指标应用一个唯一的字符串 ID,然后使用此 ID 并在新指标的表达式字段中对其应用算术运算。
注意
如果在表达式字段中引用另一个查询,例如
queryA * 2
,则无法基于该查询创建警报规则。
周期宏
如果使用 CloudWatch SEARCH
表达式,您可能希望使用$__period_auto
宏,而不是明确指定周期。此$__period_auto
宏将解析为适合所选时间范围的CloudWatch 周期。
将 Grafana 面板深度链接到 CloudWatch 控制台

左键单击面板中的时序,会显示一个上下文菜单,其中包含指向View in CloudWatch console
的链接。点击该链接会打开一个新选项卡,带您前往 CloudWatch 控制台并显示该查询的所有指标。如果您未登录 CloudWatch 控制台,该链接会将您重定向到登录页面。提供的链接对任何帐户均有效,但仅当您登录到与 Grafana 中所选数据源对应的帐户时,才会显示预期的指标。
此功能不适用于基于指标数学表达式的指标。
创建 Metric Insights 查询
CloudWatch 数据源中的 Metrics Query 选项在 AWS 控制台中称为Metric Insights。它是一个快速、灵活、基于 SQL 的查询引擎,可用于实时识别数百万个运维指标中的趋势和模式。
指标查询编辑器的 Metrics Query 选项有两种编辑模式
使用 Metric Insights 语法
Metric Insights 使用 SQL 的一种方言和此查询语法
SELECT FUNCTION(MetricName)
FROM Namespace | SCHEMA(...)
[ WHERE labelKey OPERATOR labelValue [AND|...]]
[ GROUP BY labelKey [, ...]]
[ ORDER BY FUNCTION() [DESC | ASC] ]
[ LIMIT number]
有关 Metric Insights 语法的详细信息,请参阅AWS 参考文档。
有关 Metric Insights 限制的信息,请参阅AWS 功能文档。
您还可以使用模板变量增强查询功能。
使用 Metrics Insights 关键字
此表总结了常见的 Metric Insights 查询关键字
关键字 | 描述 |
---|---|
FUNCTION | 必填。指定要使用的聚合函数,并指定要查询的指标名称。有效值包括 AVG、COUNT、MAX、MIN 和 SUM。 |
MetricName | 必填。例如,CPUUtilization 。 |
FROM | 必填。指定指标来源。您可以指定包含要查询指标的指标命名空间,或指定 SCHEMA 表函数。命名空间示例包括AWS/EC2 、AWS/Lambda 。 |
SCHEMA | 可选。将查询结果仅缩小到精确匹配的指标,或不匹配的指标。 |
WHERE | 可选。过滤查询结果,仅显示与您指定表达式匹配的指标。例如,WHERE InstanceType != 'c3.4xlarge' 。 |
GROUP BY | 可选。将查询结果分组为多个时序。例如,GROUP BY ServiceName 。 |
ORDER BY | 可选。指定时序的返回顺序。选项为ASC 、DESC 。 |
LIMIT | 可选。限制返回的时序数量。 |
在构建器模式下创建查询
要在构建器模式下创建查询
- 使用Metric Insights 关键字表中的信息浏览并选择指标命名空间、指标名称、过滤器、分组和排序选项。
- 对于每个关键字,从可能的选项列表中进行选择。
Grafana 会根据您的选择构建 SQL 查询。
在代码模式下创建查询
您也可以使用代码模式直接在代码编辑器中编写 SQL 查询。
代码编辑器内置了自动完成功能,可建议关键字、聚合、命名空间、指标、标签和标签值。在输入空格、逗号或美元符号($
)字符,或键盘组合

注意
代码编辑器中的模板变量可能会干扰自动完成功能。
要运行查询,请点击代码编辑器上方的运行查询按钮。
通用查询编辑器字段
指标查询编辑器底部的三个字段是指标搜索和指标查询编辑器共有的。
Id
GetMetricData API 要求所有查询都具有唯一的 ID。使用此字段指定选择的 ID。ID 可以包含数字、字母和下划线,并且必须以小写字母开头。如果未指定 ID,Grafana 将使用以下模式生成一个 ID:query[当前查询行的 refId]
,例如面板编辑器中的第一行查询的 ID 为queryA
。
此 ID 可用于在指标数学表达式中引用查询。
周期
周期是与特定 Amazon CloudWatch 统计数据相关的时间长度。周期以秒为单位定义,周期的有效值为 1、5、10、30 或 60 的任意倍数。
如果周期字段留空或设置为auto
,则会根据时间范围和CloudWatch 的保留策略自动计算。使用的公式是时间范围(秒)/ 2000
,然后它会向上取整到预定义周期数组[60, 300, 900, 3600, 21600, 86400]
中的下一个更高值,并移除基于保留期的周期。通过点击查询编辑器中的Show Query Preview
,您可以查看 Grafana 使用的周期。
标签
标签字段允许您使用 CloudWatch 动态标签覆盖指标图例的默认名称。如果您正在使用基于时间的动态标签,例如${MIN_MAX_TIME_RANGE}
,则图例值来源于时间范围选择器中指定的当前时区。要查看完整的标签模式列表和动态标签限制,请参阅CloudWatch 动态标签文档。
别名模式弃用:自 Grafana v10.0 起,别名字段已被弃用并由动态标签取代。任何现有的别名模式将在升级时迁移到相应的动态标签模式。有关此更改的详细信息,请参阅问题 #48434。
查询 CloudWatch 日志
日志查询编辑器帮助您编写跨指定区域和日志组的 CloudWatch Logs Query Language 查询。它支持使用 Logs Insights Query Language、OpenSearch PPL 和 OpenSearch SQL 查询 CloudWatch 日志。
创建 CloudWatch 日志查询
在“查询语言”下拉菜单中选择要使用的查询语言。
选择区域和最多 20 个日志组进行查询。
注意
使用 Logs Insights QL 和 OpenSearch PPL 进行查询时,区域和日志组是必填字段。使用 OpenSearch SQL 查询时,日志组选择不是必需的。然而,选择日志组可以通过使用发现的日志组字段填充语法建议来简化日志查询的编写。
使用主输入区域编写您的日志查询。AWS CloudWatch 仅支持 OpenSearch SQL 和 PPL 命令的子集。要了解更多支持的语法,请查阅Amazon CloudWatch 日志文档
使用 OpenSearch SQL 查询日志组
使用 OpenSearch SQL 查询日志组时,日志组标识符或 ARN 必须在
FROM
子句中明确声明SELECT window.start, COUNT(*) AS exceptionCount FROM `log_group` WHERE `@message` LIKE '%Exception%'
或者,在查询多个日志组时
SELECT window.start, COUNT(*) AS exceptionCount FROM `logGroups( logGroupIdentifier: ['LogGroup1', 'LogGroup2'])` WHERE `@message` LIKE '%Exception%'
您也可以使用stats
命令创建返回时序数据的查询。在Explore中进行stats
查询时,请确保您处于 Metrics Explore 模式。
跨账户可观测性
CloudWatch 插件允许监控和排查跨区域内多个账户的应用。使用跨账户可观测性,您可以无缝地搜索、可视化和分析指标和日志,无需担心账户边界。
入门
要启用跨账户可观测性,请完成以下步骤
前往Amazon CloudWatch 文档,并按照说明启用跨账户可观测性。
将两个 API 操作添加到运行插件的角色/用户附加的 IAM 策略中。
通过日志、指标搜索和Metric Insights模式,插件中提供了跨账户查询功能。配置完成后,您会在查询编辑器头部看到监控账户徽章。

指标编辑器
在指标搜索编辑器中选择Builder
模式时,会显示一个新的“帐户”字段。使用“帐户”字段指定要针对给定查询的目标关联帐户。默认情况下,All
选项被指定,它将针对所有关联帐户。
在Code
模式下,您可以指定任何数学表达式。如果在查询编辑器头部显示了监控账户徽章,则在此字段中输入的所有SEARCH
表达式将默认执行跨账户查询。您可以将搜索限制在一个或一组帐户,具体方法请参阅AWS 文档。
日志编辑器
日志组选择器允许您指定要在日志查询中定位的日志组。如果在查询编辑器头部显示了监控账户徽章,则可以在多个帐户中搜索和选择日志组。您可以使用日志组选择器中的“帐户”字段按帐户过滤日志组。如果您有许多日志组并且在选择器中未看到要选择的日志组,请使用前缀搜索来缩小可能的日志组范围。
将 Grafana 面板深度链接到 CloudWatch 控制台

要在 CloudWatch Logs Insights 控制台中查看您的查询,请点击查询编辑器旁的CloudWatch Logs Insights按钮。如果您未登录 CloudWatch 控制台,该链接会将您重定向到登录页面。
提供的链接对任何帐户均有效,但仅当您登录到与 Grafana 中所选数据源对应的帐户时,才会显示预期的指标。