AWS CloudWatch日志的订阅过滤器用于筛选Lambda报告消息

3
我正在使用订阅过滤器从特定日志组获取日志,将其传输到Firehose,最终将其放入Elasticsearch。该日志组中的日志来自Java Lambda。所有“START RequestId…”,“END RequestId…”和“REPORT RequestId…”消息也最终进入Elasticsearch。
是否有可能使用订阅过滤器使这些消息不会到达Firehose,并且只有Lambda函数的实际日志消息到达Firehose?或者,处理它们需要使用“转换Lambda”才能实现?
1个回答

3

是的,这是可能的。虽然有点晦涩,但是下面是可以解决问题的筛选模式:

[a != "START" && a != "END" && a != "REPORT" && a != "RequestId:", ...]

测试时针对以下内容:

START RequestId: 9538d388-c156-4680-b9d0-ba98c73742c7 Version: $LATEST
2019-02-06T20:30:49.096Z    9538d388-c156-4680-b9d0-ba98c73742c7    Hello World
END RequestId: 9538d388-c156-4680-b9d0-ba98c73742c7
REPORT RequestId: 9538d388-c156-4680-b9d0-ba98c73742c7  Duration: 24.45 ms  Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 47 MB  
RequestId: 9538d388-c156-4680-b9d0-ba98c73742c7 Process exited before completing request

只有这个能匹配:

2019-02-06T20:30:49.096Z    9538d388-c156-4680-b9d0-ba98c73742c7    Hello World

太棒了,谢谢。我几乎找不到有关如何创建这些的任何信息。在末尾的是什么, ...?我们可以给列命名吗?当我在CloudWatch测试模式屏幕上使用此过滤器时,它确实有效,但我的列是$a、$2、$3和$4。感谢您的帮助。 - Jon H
好的,我想我明白了 [timestamp != "START" && timestamp != "END" &&timestamp != "REPORT" && timestamp != "RequestId:", aws_request_id, log] - Jon H

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