跳至内容

如何对显示错误或未返回预期结果的 CloudWatch Logs Insights 查询进行故障排除?

2 分钟阅读
0

我想对显示错误或未返回预期结果的 Amazon CloudWatch Logs Insights 查询进行故障排除。

解决方法

由于以下原因,您的 CloudWatch Logs Insights 查询可能会返回错误或无法返回预期结果。要对问题进行故障排除,请使用适当的解决方案方法。

在查询的时间范围内,日志组中没有日志

CloudWatch 控制台中,检查您在查询结果中预期的日志是否在查询时间范围内的日志组中。

在查询的时间范围内,日志位于日志组中,但它们在查询结果中不可见

当 CloudWatch Logs 收到日志时,日志需要几分钟才能进行查询。检查 CloudWatch 日志的时间范围和时区是否与查询的时间范围和时区相同。

如果您在 CloudWatch Logs Insights 查询中使用 filter 命令,请确保日志符合筛选条件。此外,请确保日志在查询时间范围内的日志组中。要在不使用 filter 命令的情况下运行 CloudWatch Logs Insights 查询,请运行以下命令:

fields @timestamp, @message, @logStream, @log | sort @timestamp desc | limit 20

CloudWatch Logs 可以接收时间戳长达 14 天的日志事件。有关详细信息,请参阅 PutLogEvents。时间戳早于日志组创建时间戳的日志事件无法在 CloudWatch Logs Insights 中进行查询。

出现 WebSocket 连接错误

要运行查询,CloudWatch 控制台必须通过您的网络访问 WebSocket。如果您的网络安全团队不允许使用 WebSocket,则您无法在 CloudWatch 控制台中访问 CloudWatch Logs Insights。请改用 API 命令来访问 CloudWatch Logs Insights。有关详细信息,请参阅 StartQueryGetQueryResults

出现“已超过行限制”错误

要指定您希望查询返回的日志事件的数量,请使用 limit 命令。如果您指定的数字大于 10000,则会收到以下错误消息: “Row limit exceeded.Specified: 100000.Maximum: 10000 ([X,Y]) (Service: AWSLogs; Status Code: 400; Error Code: MalformedQueryException; Request ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx; Proxy: null)”(已超过行限制。指定值:100000。最大值:10000 ([X,Y])(服务:AWSLogs;状态代码:400;错误代码:MalformedQueryException;请求 ID:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx;代理:null)。

默认情况下,控制台上最多显示 1000 行查询结果。使用 limit 命令可将查询结果的行数增加到最多 10000。您无法更改此配额。

最佳做法是,在 CloudWatch Logs Insights 查询中使用 10000 条记录的限制。如果您的查询返回的记录超过 10000 条,则在较短的时间段内运行查询以返回较少的记录。

CloudWatch Logs Insights 可视化效果不显示折线图并显示错误

如果您的 CloudWatch Logs Insights 可视化效果不显示折线图,则可能会收到以下错误消息: “The data is not suitable for a line chart.Try a bar chart, or group your result by bin function.(这些数据不适合折线图。请尝试使用条形图,或通过 bin 函数对结果进行分组。)”

要对此问题进行故障排除,请检查您的 CloudWatch Logs Insights 查询是否使用 statsaggregationbin() 函数对数据进行分组。bin() 函数必须是您的 CloudWatch Logs Insights 查询中唯一的分组字段。

“error occurred during query execution”(执行查询时出错)

如果您尝试对大量数据运行查询,且查询需要更多时间才能完成,则会出现此错误。查看以下 CloudWatch Logs Insights 配额:

  • CloudWatch Logs Insights 在日志组中最多可发现 1000 个日志事件字段。
  • CloudWatch Logs Insights 从 JSON 日志中最多可提取 200 个日志事件字段。
  • 在单个 CloudWatch Logs Insights 查询中最多可查询 50 个日志组。
  • 对于标准类日志组,您最多可以运行 30 个并发 CloudWatch Logs Insights 查询。这包括添加到控制面板的查询。
  • 对于不频繁访问类日志组,您最多可以运行 5 个并发 CloudWatch Logs Insights 查询。这包括添加到控制面板的查询。
  • CloudWatch Logs Insights 中的查询会在 60 分钟后超时。

相关信息

使用 CloudWatch Logs Insights 分析日志数据

CloudWatch Logs Insights 查询语法

查询示例