如何使用 CloudWatch 控制台创建、配置 Kinesis 订阅筛选条件并对其进行错误排除?

2 分钟阅读
0

我想要使用 Amazon CloudWatch 控制台创建订阅筛选条件,用于将我的 Amazon CloudWatch Logs 流式传输到 Amazon Kinesis。

简短描述

使用订阅筛选条件将 CloudWatch 日志近乎实时地发送到同一个账户,或者发送到跨账户 Kinesis 或 Amazon Kinesis Data Firehose 目标。CloudWatch Logs 控制台支持目标和设置配置。

有关如何使用筛选模式语法来配置订阅筛选条件的信息,请参阅 筛选条件和模式语法

解决方法

在同一账户或当前账户中为 Kinesis 数据流配置订阅

**注意:**CloudWatch 日志组的 AWS 区域与 Kinesis 目标必须相同。

在创建订阅之前,请完成以下操作:

要创建 自定义 IAM 角色 和角色策略,请完成以下步骤:

  1. 使用具有管理员权限的用户打开 IAM 控制台

  2. 在导航窗格中,选择策略

  3. 在内容窗格中,选择创建策略

  4. 在 JSON 选项卡中输入以下角色权限策略文档。用您自己的详细信息替换REGIONACCOUNT_IDSTREAM_NAME

{
  "Statement": \[{
    "Effect": "Allow",
    "Action": "kinesis:PutRecord",
    "Resource": "arn:aws:kinesis:REGION:ACCOUNT\_ID:stream/STREAM\_NAME"
  }\]
}

5.    打开 IAM 控制台

6.    在导航窗格中,选择角色,然后选择创建角色

  1. 选择自定义信任策略角色类型。

  2. 自定义信任策略部分中,输入或粘贴角色的自定义 信任策略。请参阅以下信任策略示例:

{
  "Statement": {
    "Effect": "Allow",
    "Principal": {
      "Service": "logs.region.amazonaws.com"
    },
    "Action": "sts:AssumeRole",
    "Condition": {
      "StringLike": {
        "aws:SourceArn": "arn:aws:logs:REGION:ACCOUNT\_ID:\*"
      }
    }
  }
}

9.    选择下一步

  1. 选择您在第 4 步中创建的自定义 IAM 策略。

  2. 选择下一步,然后选择创建角色

创建 Kinesis 流和 IAM 角色后,创建订阅筛选条件:

  1. 打开 CloudWatch 控制台

  2. 选择日志组

  3. 依次选择操作订阅筛选条件

  4. 要配置目标,请选择创建 Kinesis 订阅筛选条件

  5. 选择当前账户

  6. 从下拉列表中选择您的 Kinesis 数据流。

  7. 选择您创建的 IAM 角色。

  8. 选择**分配方法:
    按日志流:**这验证了下游使用者可以按日志流聚合日志事件,但效率可能较低。这种方法还可能产生更高的流媒体成本,因为它需要更多的分片。
    **随机:**这会将负载分布在 Kinesis 流分片上,但下游使用者无法通过日志流聚合日志事件。

  9. 配置日志格式和筛选条件
    选择日志格式。对于 Amazon VPC、CloudTrail 或 Lambda 发布的日志,其格式可以是 Amazon VPC Flow Logs、AWS CloudTrail 或 AWS Lambda。或者,您可以根据传入的日志事件选择 JSON空格分隔其他
    订阅筛选模式部分定义 筛选模式
    输入订阅筛选条件的名称。

  10. 使用现有的日志事件数据验证您的模式。

  11. 验证后,选择开始流式传输

  12. (可选)确认日志事件流以验证您的数据流正常。

跨账户 Kinesis 数据流目标的配置

**注意:**如果您在运行 AWS 命令行界面(AWS CLI)命令时收到错误,请 确保您使用的是最新版本的 AWS CLI

您可以将 CloudWatch Logs 事件传送到不同 AWS 账户和区域中的 Kinesis 数据流。为此,请设置与订阅共享的跨账户日志数据并指定区域。

在以下示例中,us-east-1 区域中的 CloudWatch 日志被传输到 us-west-2 中另一个 AWS 用户的 Kinesis 数据流。日志数据接收者的账户 ID 为 222222222222,日志数据发送者的账户 ID 为 111111111111。

在接收者账户 222222222222 中创建目标数据流

使用 IAM 角色和信任策略,在数据接收者账户中的 Kinesis 中 创建目标 数据流。

在源账户 111111111111 中创建订阅筛选条件

要创建订阅筛选条件,请完成以下步骤:

  1. 选择日志组。

  2. 依次选择操作订阅筛选条件

  3. 要选择目标,请选择创建,然后选择创建 Kinesis 订阅筛选条件

  4. 选择其他账户

  5. 对于跨账户 Kinesis 或 Kinesis 数据 Firehose 目标,请提供目标 ARN

  6. 选择分配方法:
    **按日志流:**这验证了下游使用者可以按日志流聚合日志事件,但效率可能较低。这种方法还可能产生更高的流媒体成本,因为它需要更多的分片。
    **随机:**这会将负载分布在 Kinesis 流分片上,但下游使用者无法通过日志流聚合日志事件。

  7. 配置日志格式和筛选条件
    选择日志格式。对于 Amazon VPC、CloudTrail 或 Lambda 发布的日志,其格式可以是 Amazon VPC Flow Logs、CloudTrail 或 AWS Lambda。或者,您可以根据传入的日志事件选择 JSON空格分隔其他
    订阅筛选模式部分定义 筛选模式
    输入订阅筛选条件的名称。

  8. 使用现有的日志事件数据验证您的模式。

  9. 验证后,选择开始流式传输

  10. (可选)确认流日志事件以验证您的数据流正常。

故障排除

  • 确保您的 Kinesis 流处于 活动 状态。您可以在 Kinesis 控制台上查看流,也可以使用 DescribeStream API 调用
  • 验证 CloudWatch 日志组与 Kinesis 数据流区域相同。
  • 确保有一个 IAM 角色拥有 logs.yourregion.amazonaws.com 的信任权限并允许该权限 kinesis:putrecords
  • 验证 IAM 策略中的区域和资源是正确的。
  • 在为 Kinesis 数据流配置订阅筛选条件时,请确保没有选择 Kinesis Firehose。
  • 开始流式传输后,请查看 订阅筛选指标,确认筛选模式有效且与传入的日志事件相匹配。查看以下指标: **ForwardedBytes:**转发到订阅目标的日志事件量(以压缩字节为单位)。**ForwardedLogEvents:**转发到订阅目标的日志事件的数量。
  • 核对将日志事件流式传输到目标时未出错。查看以下指标: **DeliveryErrors:**CloudWatch Logs 在将数据转发到订阅目标时收到错误的日志事件的数量。**DeliveryThrottling:**表明 CloudWatch Logs 在将数据转发到订阅目标时受到限制的日志事件的数量。
  • 如果您有专用 Kinesis 流,请 查看该流的指标 确认功能。
  • 有关跨账户日志记录的问题,请参阅 对 CloudWatch 跨账户设置问题进行故障排除
AWS 官方
AWS 官方已更新 1 年前