如何找出我的 Amazon VPC 中通过 NAT 网关的最大流量源?

3 分钟阅读
0

我想找出我的 Amazon Virtual Private Cloud (Amazon VPC) 中通过 NAT 网关的最大流量源。

简短描述

要找出 Amazon VPC 中通过 NAT 网关的最大流量源,请完成以下任务:

  • 使用 Amazon CloudWatch 指标确定出现流量峰值的时间。
  • 使用 CloudWatch 日志找出导致流量峰值的实例。
  • 使用 Amazon Simple Storage Service (Amazon S3) 或 Amazon Athena 找出导致流量峰值的实例。

解决方法

**注意:**在以下步骤中,将以下值替换为您的信息:

  • example-NAT-private-IP 替换为您的 NAT 网关私有 IP 地址
  • example-VPC-CIDR 替换为您的 Amazon VPC CIDR
  • example-database-name.example-table-name 替换为您的数据库和表名
  • example-y.y 替换为您的 Amazon VPC CIDR 的前两个八进制数

使用 CloudWatch 指标确定出现流量峰值的时间

要确定和监控 NAT 网关和具体的峰值时间,请使用以下 CloudWatch 指标:

  • BytesInFromSource - 上传
  • BytesInFromDestination - 下载

检查您是否为 Amazon VPC 或 NAT 网关弹性网络接口启用 Amazon VPC 流日志。如果您没有启用 Amazon VPC 流日志,请创建流日志,以便启用此选项。启用 Amazon VPC 流日志后,流日志数据将发布到 CloudWatch Logs 或 Amazon S3。

使用 CloudWatch Logs Insights 来识别导致流量峰值的实例

**注意:**或者,使用 CloudFormation 模板创建包含以下查询的 CloudWatch 控制面板。

完成以下步骤:

  1. 打开 CloudWatch 控制台

  2. 在导航窗格中,选择 Logs Insights

  3. 从下拉列表中,选择您的 NAT 网关的日志组。

  4. 选择预定义的时间范围,或者选择 Custom(自定义)来设置自己的时间范围。

  5. 要确定通过 NAT 网关发送流量最多的实例,请运行以下命令:

    filter (dstAddr like example-NAT-private-IP and isIpv4InSubnet(srcAddr, example-VPC-CIDR)) | stats sum(bytes) as bytesTransferred by srcAddr, dstAddr| sort bytesTransferred desc
    | limit 10
  6. 要确定进出实例的流量,请运行以下命令:

    filter (dstAddr like example-NAT-private-IP and isIpv4InSubnet(srcAddr, example-VPC-CIDR)) or (srcAddr like example-NAT-private-IP and isIpv4InSubnet(dstAddr, example-VPC-CIDR))| stats sum(bytes) as bytesTransferred by srcAddr, dstAddr| sort bytesTransferred desc
    | limit 10
  7. 要确定您的 Amazon VPC 中的实例与之通信最多的互联网目标,请运行以下命令。
    对于上传:

    filter (srcAddr like example-NAT-private-IP and not isIpv4InSubnet(dstAddr, example-VPC-CIDR)) | stats sum(bytes) as bytesTransferred by srcAddr, dstAddr| sort bytesTransferred desc
    | limit 10

    对于下载:

    filter (dstAddr like example-NAT-private-IP and not isIpv4InSubnet(srcAddr, example-VPC-CIDR)) | stats sum(bytes) as bytesTransferred by srcAddr, dstAddr| sort bytesTransferred desc
    | limit 10

使用 Amazon S3 或 Athena 确定导致流量峰值的实例

完成以下步骤:

  1. 打开 Amazon S3 控制台Athena 控制台

  2. 创建表。为数据库和表名添加注释,然后添加以下筛选器以检查特定时间范围内的主要流量源:
    start>= (example-timestamp-start)
    end>= (example-timestamp-end)

  3. 要确定通过 NAT 网关发送流量最多的实例,请运行以下命令:

    SELECT srcaddr,dstaddr,sum(bytes) FROM example-database-name.example-table-name WHERE srcaddr like example-y.y AND dstaddr like example-NAT-private-IP group by 1,2 order by 3 desclimit 10;
  4. 要确定进出实例的流量,请运行以下命令:

    SELECT srcaddr,dstaddr,sum(bytes) FROM example-database-name.example-table-name WHERE (srcaddr like example-y.y AND dstaddr like example-NAT-private-IP) or (srcaddr like example-NAT-private-IP AND dstaddr like example-y.y) group by 1,2 order by 3 desclimit 10;
  5. 要确定您的 Amazon VPC 中的实例与之通信最多的互联网目标,请运行以下命令。
    对于上传:

    SELECT srcaddr,dstaddr,sum(bytes) FROM example-database-name.example-table-name WHERE (srcaddr like example-NAT-private-IP AND dstaddr not like example-y.y) group by 1,2 order by 3 desclimit 10;

    对于下载:

    SELECT srcaddr,dstaddr,sum(bytes) FROM example-database-name.example-table-name WHERE (srcaddr not like example-y.y AND dstaddr like example-NAT-private-IP) group by 1,2 order by 3 desclimit 10;

使用 CloudWatch Logs Insights 确定与互联网目标通信的实例

要查找实例正在通信的互联网目标,必须使用自定义 VPC 流日志。这些 VPC 流日志必须包含其他字段 pkt-srcaddrpkt-dstaddr。有关详细信息,请参阅通过 NAT 网关的流量

VPC 流日志示例:

${version} ${account-id} ${interface-id} ${srcaddr} ${dstaddr} ${srcport} ${dstport} ${protocol} ${packets} ${bytes} ${start} ${end} ${action} ${log-status} ${pkt-srcaddr} ${pkt-dstaddr}

完成以下步骤:

  1. 打开 CloudWatch 控制台
  2. 在导航窗格中,选择 Logs Insights
  3. 从下拉列表中,选择您的 VPC 流日志的日志组。
  4. 选择预定义的时间范围,或者选择 Custom(自定义)来设置自己的时间范围。
  5. 要确定通过 NAT 网关向互联网目标发送流量最多的实例,请运行以下命令。
    对于上传流量:
    parse @message "* * * * * * * * * * * * * * * " as version, account_id, interface_id, srcaddr, dstaddr, srcport, dstport, protocol, packets, bytes, start, end, action, log_status, pkt_srcaddr, pkt_dstaddr
    | filter (dstaddr like 'example-NAT-private-IP' and isIpv4InSubnet(pkt_srcaddr, 'example-VPC-CIDR'))
    | stats sum(bytes) as bytesTransferred by pkt_srcaddr, pkt_dstaddr
    | sort bytesTransferred desc
    | limit 10
    对于下载流量:
    parse @message " * * * * * * * * * * * * * * *" as version, account_id, interface_id, srcaddr, dstaddr, srcport, dstport, protocol, packets, bytes, start, end, action, log_status, pkt_srcaddr, pkt_dstaddr
    | filter (srcaddr like 'example-NAT-private-IP' and !isIpv4InSubnet(pkt_srcaddr, 'example-VPC-CIDR'))
    | stats sum(bytes) as bytesTransferred by pkt_srcaddr, pkt_dstaddr
    | sort bytesTransferred desc
    | limit 10

相关信息

示例查询

查询 Amazon VPC 流日志

如何使用 Amazon Athena 分析 VPC 流日志?

使用 AWS Cost Explorer 成本管理服务分析数据传输成本

AWS 官方
AWS 官方已更新 4 个月前