通过多个值过滤AWS CloudWatch原始日志事件 / AWS CLI

6

如果要将此查询扩展为包含多个ID的消息,应该如何操作?相应的CLI命令是什么?此查询在CloudWatch上提取包含“entry 1456” (其中1456是ID)的日志消息。

fields  @message
| filter @message like "entry 1456"
| limit 10

为了澄清,我想使用多个ID进行筛选,例如"like 1456|1257|879"。但不确定在这种情况下正则表达式的格式。
我猜相应的CLI命令应该是这样的:
aws logs filter-log-events 
--log-group-name group_name
--app
--filter-pattern ........

我只想确认一下最佳的表达方式。


2
你可能想要查看 https://github.com/jorgebastida/awslogs - hephalump
2个回答

11

语法应该是:

fields  @message
| filter @message like /entry [1456|1257]/
| limit 10

你也可以先解析日志行并提取值,像这样:

fields  @message
| parse @message /.*entry (?<id>\d+).*/
| filter id in [1257, 1456]
| limit 10

对于CLI而言,您不会使用filter-log-events,而是使用start-queryget-query-results


7
谢谢。第一个带括号的工作是 fields @message | filter @message like /entry (1456|1257)/ - OmaymaS
是的,我在这里只是回应OmaymaS的评论。[]是一个正则表达式字符组,你想要()来进行捕获组。 - undefined

2

为了方便查看和复制,当前的正确语法如下:

fields @message
| filter @message like /entry (1457|1458)/
| limit 20

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接