跳至内容

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

4 分钟阅读
0

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

简短描述

要查找 Amazon VPC 中 NAT 网关的主要流量来源,请使用 Amazon CloudWatch 指标来确定出现流量峰值的时间。

然后,使用以下方法之一来识别导致流量峰值的 Amazon VPC 实例:

  • 如果 Amazon VPC 流日志将数据发布到 CloudWatch,则使用 CloudWatch Logs。
  • 如果 Amazon VPC 流日志将数据发布到 Amazon Simple Storage Service (Amazon S3),则使用 Amazon Athena。

解决方法

**先决条件:**检查您是否为 Amazon VPC 或 NAT 网关弹性网络接口启用了 Amazon VPC 流日志。如果您尚未启用 Amazon VPC 流日志,则创建发布到 Amazon CloudWatch LogsAmazon S3 的流日志。

使用 Amazon CloudWatch 查看 NAT 网关指标

使用以下 NAT 网关的 Amazon CloudWatch 指标来识别与流量峰值相对应的时间范围:

  • 使用 BytesInFromSource 来表示通过 NAT 网关上传到实例的流量。
  • 使用 BytesInFromDestination 来表示通过 NAT 网关下载到实例的流量。

然后,查询 Amazon VPC 流日志,识别在确定的时间范围内出现高流量的实例。您可以使用 Amazon CloudWatch Logs Insights 或 Amazon Athena 来查询 Amazon VPC 流日志。有关更多信息,请参阅查询 Amazon VPC 流日志

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

如果 Amazon VPC 流日志将数据发布到 CloudWatch,则使用 Cloud Watch Logs Insights 来查询 Amazon VPC 流日志。在 Select log group(s)(选择日志组)下拉列表中,选择您的 NAT 网关的日志组。然后,选择 Custom(自定义)以设置与您识别的流量峰值相对应的时间范围。

根据您的使用案例,使用以下查询之一来显示导致流量峰值的实例。您也可以使用 CloudFormation 模板创建包含以下查询的 CloudWatch 控制面板。如需查看 CloudFormation 模板示例,请参阅 Github 网站上的 aws-cloudformation-templates

**注意:**在以下查询中,请将 example-NAT-private-IP 替换为您的 NAT 网关私有 IP 地址或 IP 地址。对于单个 IP 查询,请使用 NAT 网关的主要私有 IP 地址。请将 example-VPC-CIDR 替换为 Amazon VPC 的 CIDR 范围。

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

filter (dstAddr in ["example-NAT-private-IP", "example-NAT-private-IP", "example-NAT-private-IP"] AND isIpv4InSubnet(srcAddr, "example-VPC-CIDR"))  
| stats sum(bytes) as bytesTransferred by srcAddr, dstAddr  
| sort bytesTransferred desc

要确定进出实例的流量,请运行以下查询:

filter (dstAddr in ["example-NAT-private-IP", "example-NAT-private-IP", "example-NAT-private-IP"] AND isIpv4InSubnet(srcAddr, "example-VPC-CIDR"))  
OR (srcAddr in ["example-NAT-private-IP", "example-NAT-private-IP", "example-NAT-private-IP"] AND isIpv4InSubnet(dstAddr, "example-VPC-CIDR"))  
| stats sum(bytes) as bytesTransferred by srcAddr, dstAddr  
| sort bytesTransferred desc

要确定您的实例最常访问的互联网目标,请运行以下查询:

  • 对于通过 NAT 网关进行的上传:

    filter (srcAddr in ["example-NAT-private-IP", "example-NAT-private-IP", "example-NAT-private-IP"] AND not isIpv4InSubnet(dstAddr, "example-VPC-CIDR"))  
    | stats sum(bytes) as bytesTransferred by srcAddr, dstAddr  
    | sort bytesTransferred desc  
    | limit 10
  • 对于通过 NAT 网关进行的下载:

    filter (dstAddr in ["example-NAT-private-IP", "example-NAT-private-IP", "example-NAT-private-IP"] AND not isIpv4InSubnet(srcAddr, "example-VPC-CIDR"))  
    | stats sum(bytes) as bytesTransferred by srcAddr, dstAddr  
    | sort bytesTransferred desc  
    | limit 10

要确定通过 NAT 网关向互联网目标发送流量最多的实例,请运行以下查询:

  • 对于通过 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
  • 对于通过 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 (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

要识别与互联网目标进行通信的实例,请使用自定义 VPC 流日志。确保 VPC 流日志包含 pkt-srcaddrpkt-dstaddr 字段。有关详细信息,请参阅通过 NAT 网关的流量

使用 Amazon Athena 识别导致流量峰值的实例

如果 Amazon VPC 流日志将数据发布到 Amazon S3,则使用 Amazon Athena 为您的流日志创建表。确保在表中添加以下筛选条件,以设置与您识别的流量峰值相对应的时间范围:

start>= (example-timestamp-start)  
end>= (example-timestamp-end)

**注意:**请将 example-timestamp-start 替换为与您的流量峰值相对应的时间范围的开始时间。将 example-timestamp-end 替换为与您的流量峰值相对应的时间范围的结束时间。

然后,在表中查询导致流量峰值的实例。

**注意:**在以下查询中,请将 example-NAT-private-IP 替换为您的 NAT 网关私有 IP 地址。请将 example-VPC-CIDR 替换为 Amazon VPC 的 CIDR 范围。将 example-database-name.example-table-name 替换为您的数据库和表名。将 example-octets 替换为 Amazon VPC 的 CIDR 范围的前两个八位字节。例如,如果您的 CIDR 范围为 10.24.34.0/23,则将 example-octets 替换为 10.24

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

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

要确定进出实例的流量,请运行以下查询:

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

要确定您的实例最常访问的互联网目标,请运行以下查询:

  • 对于通过 NAT 网关进行的上传:

    SELECT srcaddr,dstaddr,sum(bytes) FROM example-database-name.example-table-name WHERE (srcaddr like example-NAT-private-IP AND dstaddr not like example-octets) group by 1,2 order by 3 desclimit 10;0
  • 对于通过 NAT 网关进行的下载:

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

相关信息

查询示例

布尔值、比较、数值、日期时间和其他函数

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

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

AWS 官方已更新 4 个月前