Amazon CloudWatch Logs 新增账户级订阅过滤功能
亚马逊云科技(AWS)最近更新了Amazon CloudWatch Logs,引入了账户级订阅过滤功能。这一增强功能允许开发者从所有日志组中访问实时日志流,并将其统一发送到单一目的地进行进一步处理。
主要功能与优势
- 统一日志处理:开发者可以通过单一账户级订阅过滤器,将实时日志事件发送到Kinesis Data Stream、Amazon Kinesis Data Firehose或AWS Lambda,以便进行自定义处理、分析或重定向到其他目的地。
- 灵活性:可以设置账户级订阅策略,仅包含账户中的部分日志组。
- 自动扩展:该过滤器适用于现有和未来匹配配置的日志组,简化了大规模复杂AWS部署的管理。
- 编码与压缩:通过账户级订阅策略发送的日志数据将进行Base64编码,并使用gzip压缩,以减少数据传输的开销。
技术细节
- API支持:使用
put-account-policyAPI可以设置CloudWatch Logs的账户级订阅。例如,通过AWS CLI,可以将所有日志数据发送到指定的Lambda函数,同时排除特定的日志组。 示例命令:
aws logs put-account-policy \ --policy-name "ExamplePolicyLambda" \ --policy-type "SUBSCRIPTION_FILTER_POLICY" \ --policy-document '{"DestinationArn": "arn:aws:lambda:region:123456789012:function:helloWorld", "FilterPattern": "Test", "Distribution": "Random"}' \ --selection-criteria 'LogGroupName NOT IN ["LogGroupToExclude1", "LogGroupToExclude2"]' \ --scope "ALL"
注意事项
- 数据量评估:AWS强调,开发者应提前评估日志数据的生成量,以避免目标服务(如Kinesis Data Firehose或Lambda函数)因数据量过大而出现限流问题。
- 递归循环风险:使用订阅过滤器时,存在触发无限递归循环的风险,导致日志摄入量激增,进而增加费用。AWS建议在账户级订阅过滤器中使用选择标准,排除可能参与日志交付工作流的日志组(如Amazon EC2、Lambda、AWS Step Functions等)。
行业反馈
- Jeremy Daly(Ampt CEO):对于需要管理大量日志组订阅过滤器的开发者来说,这一功能是“梦想成真”。
- Ran Isenberg(CyberArk首席软件架构师):CloudWatch最近的一系列更新(包括账户级订阅过滤器和支持Lambda函数的CloudWatch警报)正在缩小与第三方可观测性工具的差距。
可用性
CloudWatch Logs账户级订阅过滤器已在除以色列和加拿大西部以外的所有AWS商业区域上线。每个AWS账户只能创建一个账户级订阅过滤器。
总结
Amazon CloudWatch Logs的账户级订阅过滤功能为开发者提供了更高效、灵活的日志管理解决方案,简化了大规模部署中的日志处理流程。然而,开发者在使用时需注意数据量管理和递归循环风险,以确保系统的稳定性和成本控制。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。