如何在CloudWatch Insights查询中获取其他上下文行?

时间:2020-03-03 20:53:04

标签: amazon-web-services amazon-cloudwatch aws-cloudwatch-log-insights

我通常会运行类似的查询

fields @timestamp, @message
| filter @message like /ERROR/
| sort @timestamp desc
| limit 20

有没有办法在包含“ ERROR”的消息周围获取更多上下文行?类似于带有grep的A,B和C标志?

示例

例如,如果我有一个包含以下几行的日志

DEBUG Line 1
DEBUG Line 2
ERROR message
DEBUG Line 3
DEBUG Line 4

目前我得到以下结果

ERROR message

但是我想获得更多类似的上下文行

DEBUG Line 2
ERROR message
DEBUG Line 3

如果需要,可以选择获得更多的上下文行。

2 个答案:

答案 0 :(得分:9)

我发现最有用的解决方案是进行查询和搜索错误,并从“ requestId”字段中获取请求ID,并打开第二个浏览器选项卡。在第二个标签中,对该请求ID进行搜索。

示例:

fields @timestamp, @message
| filter @requestId like /fcd09029-0e22-4f57-826e-a64ccb385330/ 
| sort @timestamp asc
| limit 500

通过上述查询,您可以按照发生错误的请求的正确顺序获取所有日志消息。这是一个带有lambda的开箱即用的示例。但是,如果您以不同的方式将日志推送到CloudWatch,并且没有requestId,我建议您为每个请求创建一个requestId或另一个对您的用例更有用的标识符,并将其随日志事件一起推送。

答案 1 :(得分:7)

您实际上还可以查询@logStream,其结果将是指向相应比赛日志流中确切位置的链接:

fields @timestamp, @message, @logStream
| filter @message like /ERROR/
| sort @timestamp desc
| limit 20

这将为您提供一列类似于此屏幕快照中最右边的列:

enter image description here

单击右侧的链接将转到并突出显示匹配的日志行。我想在新标签页中打开它,然后在高亮显示的行中查找上下文。

希望有帮助!