本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
保存并重新运行 Logs Insig CloudWatch hts 查询
创建查询后,可以将其保存,以便稍后再次运行查询。查询将以文件夹结构保存,因此您可以组织它们。每个账户每个区域可以保存多达 1000 个查询。
查询保存在特定区域级别,而不是特定用户级别。如果您创建并保存查询,则有权访问同一区域 CloudWatch 日志的其他用户可以在该区域中看到所有已保存的查询及其文件夹结构。
要保存查询,您必须登录到具有 logs:PutQueryDefinition 权限的角色。要查看已保存查询的列表,您必须登录到具有 logs:DescribeQueryDefinitions 权限的角色。
注意
您可以使用参数创建和保存查询,这些参数是带有命名占位符的可重复使用的模板。与其保存具有不同值的同一个查询的多个变体,不如创建一个模板并在运行时提供不同的参数值。目前,仅使用 Logs Insights 查询语言的查询支持此功能。有关更多信息,请参阅使用带参数的已保存查询。
提示
您可以使用 PutQueryDefinition 为保存的查询创建文件夹。要为保存的查询创建文件夹,请使用正斜杠(/)在所需的查询名称前加上所需的文件夹名称:<。有关此操作的更多信息,请参阅PutQueryDefinition。folder-name>/<query-name>
保存已保存查询的新版本
打开 CloudWatch 控制台,网址为https://console.aws.amazon.com/cloudwatch/
。 -
在导航窗格中,选择 Logs(日志),然后选择 Logs Insights(日志洞察)。
-
在右侧,选择 Queries(查询)。
-
从 Saved queries(已保存的查询)列表中选择您的查询。它显示在查询编辑器中。
-
修改查询。如果您需要运行它来检查您的工作,请选择 Run query(运行查询)。
-
准备好保存新版本后,选择 Actions(操作)、Save as(另存为)。
-
输入查询的名称。
-
(可选)选择要保存查询的文件夹。选择 Create new(新建)以创建文件夹。如果创建新文件夹,则可以在文件夹名称中使用斜杠(/)字符来定义文件夹结构。例如,命名新文件夹
folder-level-1/folder-level-2会创建一个名为folder-level-1的顶级文件夹,并在该文件夹中创建另一个名为folder-level-2的文件夹。查询保存在folder-level-2中。 -
(可选)更改查询的日志组或查询文本。
-
选择保存。
要删除查询,您必须登录到具有 logs:DeleteQueryDefinition 权限的角色。
编辑或删除已保存的查询
打开 CloudWatch 控制台,网址为https://console.aws.amazon.com/cloudwatch/
。 -
在导航窗格中,选择 Logs(日志),然后选择 Logs Insights(日志洞察)。
-
在右侧,选择 Queries(查询)。
-
从 Saved queries(已保存的查询)列表中选择您的查询。它显示在查询编辑器中。
-
选择 Actions(操作)、Edit(编辑)或 Actions(操作)、Delete(删除)。
使用带参数的已保存查询
带有参数的已保存查询是带有命名占位符的可重复使用的查询模板。您可以保存模板并在运行查询时提供不同的参数值,而不必维护几乎相同的查询的多个副本。只有 L CloudWatch ogs Insights 查询语言支持参数。
工作原理
保存查询时,占位符会标识您在执行查询时可以提供的值。占位符使用{{parameterName}}语法。以下是一个名为的已保存查询的示例,该查询名ErrorsByLevel为两个参数logLevel和applicationName。
fields @timestamp, @message | filter level = {{logLevel}} | filter applicationName = {{applicationName}}
要运行已保存的查询,您可以使用前缀为前缀的查询名称来调用该查询,$并传递参数值。 CloudWatch Logs Insights 查询引擎会替换每个占位符。如果参数包含默认值,则如果未提供其他值,则使用这些值。
# Run query by using query name and passing parameter values explicitly $ErrorsByLevel(logLevel = "WARN", applicationName = "OrderService") # Run query without specifying parameter values - default values are used in this case. $ErrorsByLevel()
包含空格或特殊字符的已保存查询名称需要用反引号括起来:
$`Errors By Level`(logLevel = "WARN")
带参数的已保存查询示例
添加结果限制作为参数
查询名称:ErrorsByLevel带参数logLevel(默认:"ERROR")、applicationName(默认:"OrderService")和maxResults(默认:50)
fields @timestamp, @message, @logStream | filter level = {{logLevel}} | filter applicationName = {{applicationName}} | sort @timestamp desc | limit {{maxResults}}
# Run the query using the query name and passing parameter values $ErrorsByLevel(logLevel = "WARN", applicationName = "OrderService", maxResults = 100)
使用多个已保存的带参数的查询
下面的示例使用ErrorsByLevel了第二个保存的查询RecentN,该查询定义为sort @timestamp desc | limit {{count}}(带参数count,默认20)。 CloudWatch Logs Insights 查询引擎会在运行每个查询之前对其进行扩展。
# Using multiple queries with parameters in sequence $ErrorsByLevel(logLevel = "WARN", applicationName = "OrderService") | $RecentN(count = 10) # Each of the queries is expanded, resulting in the following query when it is run. fields @timestamp, @message | filter level = "WARN" | filter applicationName = "OrderService" | sort @timestamp desc | limit 10
配额和错误处理
注意
每个保存的查询最多可以有 20 个参数。
扩展后的查询字符串不能超过 10,000 个字符。参数名称必须以字母或下划线开头。已保存的查询不能引用其他已保存的查询(不支持嵌套调用)。
| 错误 | 原因 |
|---|---|
只有 CWLI 查询语言支持参数 |
只有 L CloudWatch ogs Insights 查询语言支持参数。 |
在 QueryString 中找不到必需的参数 |
中的参数名称在查询字符串 |
参数计数超过最大值 20 |
保存的查询目前仅支持 20 个参数。 |
重复的参数名 |
查询定义中有重复的参数 |
注意
要使用参数创建或更新已保存的查询,您需要该logs:PutQueryDefinition权限。要运行一个,你需要logs:StartQuery和logs:DescribeQueryDefinitions。