我想对显示错误或未返回预期结果的 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。有关详细信息,请参阅 StartQuery 和 GetQueryResults。
出现“已超过行限制”错误
要指定您希望查询返回的日志事件的数量,请使用 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 查询是否使用 stats、aggregation 或 bin() 函数对数据进行分组。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 查询语法
查询示例