创建发布到日志的流 CloudWatch 日志 - Amazon VPC
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建发布到日志的流 CloudWatch 日志

流日志可以将流日志数据直接发布到 Amazon CloudWatch。

发布到 Lo CloudWatch gs 后,流日志数据将发布到日志组,并且每个传输网关在日志组中都有唯一的日志流。日志流包含流日志记录。您可以创建将数据发布到相同日志组的多个流日志。如果同一中转网关存在于同一日志组中的一个或多个流日志中,则它具有一个组合日志流。如果您指定了一个流日志应该捕获已拒绝流量,而另一个流日志应该捕获已接受流量,则组合日志流会捕获所有流量。

当您将流日志发布到 Logs 时,会收取已售日志的数据摄取和存档费用。 CloudWatch 有关更多信息,请参阅 Amazon CloudWatch 定价

在 CloudWatch 日志中,时间戳字段对应于流日志记录中捕获的开始时间。Ingesti onTime 字段提供日志收到流日志记录的日期和时间。 CloudWatch 此时间戳晚于在流日志记录中捕获的结束时间。

有关 CloudWatch 日志的更多信息,请参阅 Amazon Logs 用户指南中的发送到 CloudWatch CloudWatch 日志的日志。

用于将流日志发布到 CloudWatch 日志的 IAM 角色

与您的流日志关联的 IAM 角色必须具有足够的权限才能将流日志发布到日志中的指定 CloudWatch 日志组。IAM 角色必须属于您的 Amazon Web Services 账户。

附加到您的 IAM 角色的 IAM policy 必须至少包括以下权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Resource": "*" } ] }

另请确保您的角色具有信任关系,以允许流日志服务代入该角色。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "vpc-flow-logs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

建议您使用 aws:SourceAccountaws:SourceArn 条件键来防止出现混淆代理人问题。例如,您可以将以下条件块添加到以前的信任策略。源帐户是流日志的所有者,并且源 ARN 是流日志 ARN。如果您不知道流日志 ID,则可以用通配符(*) 替换 ARN 的该部分,然后在创建流日志后更新策略。

"Condition": { "StringEquals": { "aws:SourceAccount": "account_id" }, "ArnLike": { "aws:SourceArn": "arn:aws:ec2:region:account_id:vpc-flow-log/flow-log-id" } }

为流日志创建或更新 IAM 角色

您可以更新现有角色,或使用以下过程创建用于流日志的新角色。

为流日志创建 IAM 角色
  1. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择 Roles(角色)和 Create role(创建角色)。

  3. 对于Select type of trusted entity(选择受信任实体的类型),选择 Amazon service(服务)。对于 Use case(使用案例),选择 EC2。选择下一步

  4. Add permissions(添加权限)页面,选择 Next: Tags(下一步: 标签),还可以选择性地添加标签。选择下一步

  5. 在命名、查看和创建页面上,输入您的角色名称并可选择性地提供描述。选择 创建角色

  6. 选择角色的名称。对于 Add permissions(添加权限),选择 Create inline policy(创建内联策略),然后选择 JSON 选项卡。

  7. 用于将流日志发布到 CloudWatch 日志的 IAM 角色 中复制第一个策略,并将其粘贴到窗口中。选择Review policy(查看策略)

  8. 为您的策略输入名称,然后选择 Create policy(创建策略)

  9. 选择角色的名称。对于 Trust relationships(信任关系),选择 Edit trust relationship(编辑信任关系)。在现有策略文档中,将服务从 ec2.amazonaws.com 更改为 vpc-flow-logs.amazonaws.com。选择 Update Trust Policy(更新信任策略)。

  10. Summary(总结)页面上,记录您的角色的 ARN。创建流日志时需要此 ARN。

IAM 用户传递角色的权限

用户还必须有权对与流日志关联的 IAM 角色使用 iam:PassRole 操作。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["iam:PassRole"], "Resource": "arn:aws:iam::account-id:role/flow-log-role-name" } ] }

创建发布到日志的流 CloudWatch 日志

您可以为中转网关创建流日志。如果以 IAM 用户身份执行这些步骤,请确保您具有使用 iam:PassRole 操作的权限。有关更多信息,请参阅 IAM 用户传递角色的权限

使用控制台创建中转网关流日志
  1. 登录 Amazon Web Services Management Console 并打开亚马逊 VPC 控制台,网址为 https://console.aws.amazon.com/vpc/

  2. 在导航窗格中,选择 Transit gateways(中转网关)

  3. 选择一个或多个中转网关的复选框,然后选择 Actions(操作)、Creat flow log(创建流日志)。

  4. 对于 “目标”,选择 “发送到 CloudWatch日志”。

  5. 对于 Destination log group(目的地日志组),选择当前的目的地日志组的名称。

    注意

    如果目的地日志组尚不存在,则在此字段中输入新名称将创建新的目标日志组。

  6. 对于 IAM 角色,请指定有权向 CloudWatch 日志发布日志的角色的名称。

  7. 对于Log record format(日志记录格式),选定流日志记录的格式。

    • 要使用默认格式,请选择Amazon default format(亚马逊云科技默认格式)

    • 要使用自定义格式,请选择Custom format(自定义格式)然后从Log format(日志格式)选择字段。

  8. (可选)选择Add new tag(添加新标签)以将标签应用于流日志。

  9. 选择 Create flow log(创建流日志)

使用命令行创建流日志

使用以下命令之一。

以下 Amazon CLI 示例创建了一个用于捕获传输网关信息的流日志。流日志将使用 IAM 角色传送到账户 123456789101 中名为 “ CloudWatch my-flow-logs日志” 的日志组。publishFlowLogs

aws ec2 create-flow-logs --resource-type TransitGateway --resource-ids tgw-1a2b3c4d --log-group-name my-flow-logs --deliver-logs-permission-arn arn:aws:iam::123456789101:role/publishFlowLogs

日志中的流程流 CloudWatch 日志记录

您可以像处理日志收集的任何其他日志事件一样处理流 CloudWatch 日志记录。有关监控日志数据和指标筛选条件的更多信息,请参阅 Amazon CloudWatch 用户指南中的搜索和筛选日志数据

示例:为流日志创建 CloudWatch 指标筛选器和警报

在此示例中,您有一个适用于 eni-1a2b3c4d 的流日志。您要创建一个警报,如果 1 小时内有 10 次或超过 10 次通过 TCP 端口 22(SSH) 连接到您的实例的尝试遭到拒绝,该警报将向您发出提醒。首先,您必须创建一个指标筛选条件,该指标筛选条件与为其创建警报的流量的模式相匹配。然后,您可以为该指标筛选条件创建警报。

为已拒绝的 SSH 流量创建指标筛选条件并为该筛选条件创建警报
  1. 打开 CloudWatch 控制台,网址为 https://console.aws.amazon.com/cloudwatch/

  2. 在导航窗格中,依次选择 Logs(日志)和 Log groups(日志组)。

  3. 选中日志组对应的复选框,然后选择 Actions(操作)、Create metric filter(创建指标筛选条件)。

  4. 对于Filter Pattern(筛选模式),输入以下内容:

    [version, resource_type, account_id,tgw_id="tgw-123abc456bca”, tgw_attachment_id, tgw_src_vpc_account_id, tgw_dst_vpc_account_id, tgw_src_vpc_id, tgw_dst_vpc_id, tgw_src_subnet_id, tgw_dst_subnet_id, tgw_src_eni, tgw_dst_eni, tgw_src_az_id, tgw_dst_az_id, tgw_pair_attachment_id, srcaddr= "10.0.0.1", dstaddr, srcport=“80”, dstport, protocol=“6”, packets, bytes,start,end, log_status, type,packets_lost_no_route, packets_lost_blackhole, packets_lost_mtu_exceeded, packets_lost_ttl_expired, tcp_flags,region, flow_direction, pkt_src_aws_service, pkt_dst_aws_service]
  5. 对于 Select log data to test(选择要测试的日志数据),选择您的中转网关对应的日志流。(可选)要查看与筛选条件模式匹配的日志数据行,请选择 Test pattern(测试模式)。准备就绪后,选择 Next(下一步)。

  6. 输入筛选条件名称、指标命名空间和指标名称。将指标值设置为 1。完成后,选择 Next(下一步),然后选择 Create metric filter(创建指标筛选条件)。

  7. 在导航窗格中,依次选择 Alarms(警报)和 All alarms(所有警报)。

  8. 选择Create alarm(创建警报)

  9. 为您创建的指标筛选条件选择命名空间。

    新指标可能需要几分钟才会在控制台中显示。

  10. 选择您创建的指标名称,然后选择 Select metric(选择指标)。

  11. 按如下所示配置警报,然后选择 Next(下一步):

    • 对于 Statistic(统计数据),选择 Sum(总计)。这可以确保您捕获指定时间段内的数据点的总数。

    • 对于 Period(周期),选择 1 hour(1 小时)。

    • 对于 Whenever(每当),选择 Greater/Equal(大于/等于,>=),然后输入 10 作为阈值。

    • 对于 Additional configuration(其他配置),Datapoints to alarm(警报的数据点数),将默认值设为 1

  12. 对于 Notification(通知),选择现有的 SNS 主题,或选择 Create new topic(新建主题)创建一个新主题。选择 Next(下一步)

  13. 输入警报的名称和描述,然后选择 Next(下一步)。

  14. 配置完警报后,选择 Create alarm(创建警报)。