使用订阅实时处理日志数据
您可以使用订阅从 CloudWatch Logs 中访问日志事件的实时源,并将其传输到其他服务(如 Amazon Kinesis 流、Amazon Kinesis Data Firehose 流或 Amazon Lambda)以进行自定义处理、分析或加载到其他系统中。当将录入事件发送到接收它们的服务时,它们会经过 base64 编码并使用 gzip 格式进行压缩。
要开始订阅日志事件,请创建用于接收事件的接收资源,例如 Kinesis 流。订阅筛选条件定义了筛选条件模式(用于筛选传输到您的Amazon资源的日志事件),以及有关匹配日志事件发送目的地的信息。
每个日志组最多只能有两个与其关联的订阅筛选条件。
如果目标服务返回一个可重试错误,如限制异常或可重试服务异常(如 HTTP 5xx),则 CloudWatch Logs 将继续重试传输长达 24 小时。如果错误是不可重试错误(例如 AccessDeniedException 或 ResourceNotFoundException),则 CloudWatch Logs 不会尝试重试传输。
CloudWatch Logs 还会生成有关将日志事件转发到订阅的 CloudWatch 指标。有关更多信息,请参阅 Amazon CloudWatch Logs 指标与维度。
您还可使用 CloudWatch Logs 订阅将日志数据近乎实时地流式传输到 Amazon OpenSearch Service 集群。有关更多信息,请参阅将 CloudWatch Logs 数据流式传输到 Amazon OpenSearch Service。
概念
每个订阅筛选条件都由以下关键元素组成:
- 日志组名称
-
要将订阅筛选条件关联到的日志组。上传到此日志组的所有日志事件都受订阅筛选条件的约束,与该筛选条件匹配的日志事件将被传输到接收匹配日志事件的目标服务。
- 筛选条件模式
-
一种符号描述,说明 CloudWatch Logs 应如何解释每个日志事件中的数据以及可限制传输到目标Amazon资源的内容的筛选表达式。有关筛选条件模式语法的更多信息,请参阅 筛选条件和模式语法。
- 目标 ARN
-
要用作订阅源的目标的 Kinesis 流、Kinesis Data Firehose 流或 Lambda 函数的 Amazon Resource Name (ARN)。
- 角色 ARN
-
一个 IAM 角色,用于向 CloudWatch Logs 授予将数据放入所选目标所需的必要权限。此角色不适用于 Lambda 目标,因为 CloudWatch Logs 可以通过 Lambda 函数本身的访问控制设置获得必要的权限。
- 分配
-
当目标是 Amazon Kinesis 流时,用于将日志数据分配到目标的方法。默认情况下,日志数据按日志流进行分组。为了实现更均匀的分配,您可以对日志数据进行随机分组。