我正在探索到Firehose的CloudWatch Logs流。到目前为止,据我了解,Cloudwatch订阅过滤器是一个事件,该事件触发lambda来消化CloudWatch日志并将其发送到其他目的地(ElasticSearch或Firehose或其他自定义lambda)。如果我错了,请纠正我。
我对Cloudwatch Logs Stream to Firehose的关注是:
1 /在效果+定价方面,
有什么区别2 / Firehose从Cloudwatch接收哪种数据格式?
任何建议都值得赞赏。
答案 0 :(得分:1)
- 在性能+定价方面,[拥有lambda与直接使用firehose之间有什么区别?]:
是的。在性能方面,由于数据必须先通过lambda才能传递给firehose,因此您会看到稍稍更大的延迟,但是增加的可能性根本不重要。您将获得一个灵活的选择,即在您的消防水龙头前放一个可定制的处理步骤,这是执行附加转换或更智能过滤的机会。
注意,当直接发送到firehose时,您会丢失 CloudWatch的自动压缩-如果您想要压缩,则必须自己设置(可能在firehose上)。同样,您将为处理中间步骤的lambda调用付费。 Check the pricing page来查看这是否真正重要。
- Firehose从Cloudwatch接收哪种数据格式?
直接使用firehose时,您会得到firehose's output configuration(一堆记录附加到一个文件中),其中每个记录都是CloudWatch日志输出:
{
"owner": "123456789012",
"logGroup": "CloudTrail",
"logStream": "123456789012_CloudTrail_us-east-1",
"subscriptionFilters": [
"Destination"
],
"messageType": "DATA_MESSAGE",
"logEvents": [
{
"id": "31953106606966983378809025079804211143289615424298221568",
"timestamp": 1432826855000,
"message": "{\"eventVersion\":\"1.03\",\"userIdentity\":{\"type\":\"Root\"}"
},
...
]
}
(取自the SubscriptionFilter docs)
去lambda时:
Lambda接收的实际有效载荷采用以下格式{“ awslogs”:{“ data”:“ BASE64ENCODED_GZIP_COMPRESSED_DATA”}}
(也来自上面链接的文档)
data
是上面的(编码,压缩的)CloudWatch输出对象。
鉴于您编写了lambda,因此您可以输出任何您想要的来进行水喉。请记住,firehose将执行与上述相同的操作,将多个记录追加到每个输出文件中。
请注意:make sure to scale your firehose appropriately-如果您不小心,并且规模不足,防火墙put
将开始失败,并且您将开始删除日志数据。确保您正在监视故障!