提升可观测性:Amazon CloudWatch Logs 推出账户级订阅过滤器

Amazon CloudWatch Logs 新增账户级订阅过滤功能

亚马逊云科技(AWS)最近更新了Amazon CloudWatch Logs,引入了账户级订阅过滤功能。这一增强功能允许开发者从所有日志组中访问实时日志流,并将其统一发送到单一目的地进行进一步处理。

主要功能与优势

  1. 统一日志处理:开发者可以通过单一账户级订阅过滤器,将实时日志事件发送到Kinesis Data Stream、Amazon Kinesis Data Firehose或AWS Lambda,以便进行自定义处理、分析或重定向到其他目的地。
  2. 灵活性:可以设置账户级订阅策略,仅包含账户中的部分日志组。
  3. 自动扩展:该过滤器适用于现有和未来匹配配置的日志组,简化了大规模复杂AWS部署的管理。
  4. 编码与压缩:通过账户级订阅策略发送的日志数据将进行Base64编码,并使用gzip压缩,以减少数据传输的开销。

技术细节

  • API支持:使用put-account-policy API可以设置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"

注意事项

  1. 数据量评估:AWS强调,开发者应提前评估日志数据的生成量,以避免目标服务(如Kinesis Data Firehose或Lambda函数)因数据量过大而出现限流问题。
  2. 递归循环风险:使用订阅过滤器时,存在触发无限递归循环的风险,导致日志摄入量激增,进而增加费用。AWS建议在账户级订阅过滤器中使用选择标准,排除可能参与日志交付工作流的日志组(如Amazon EC2、Lambda、AWS Step Functions等)。

行业反馈

  • Jeremy Daly(Ampt CEO):对于需要管理大量日志组订阅过滤器的开发者来说,这一功能是“梦想成真”。
  • Ran Isenberg(CyberArk首席软件架构师):CloudWatch最近的一系列更新(包括账户级订阅过滤器和支持Lambda函数的CloudWatch警报)正在缩小与第三方可观测性工具的差距。

可用性

CloudWatch Logs账户级订阅过滤器已在除以色列和加拿大西部以外的所有AWS商业区域上线。每个AWS账户只能创建一个账户级订阅过滤器。

总结

Amazon CloudWatch Logs的账户级订阅过滤功能为开发者提供了更高效、灵活的日志管理解决方案,简化了大规模部署中的日志处理流程。然而,开发者在使用时需注意数据量管理和递归循环风险,以确保系统的稳定性和成本控制。

阅读 32
0 条评论