如何在我的 VPC 中找到通过 NAT 网关的流量的主要生成者或贡献者?

上次更新日期:2022 年 4 月 1 日

我注意到在我的 AWS 账单中,我的 Amazon Virtual Private Cloud(Amazon VPC)中的 NAT 网关的成本高于平常成本。如何在我的 VPC 中找到通过 NAT 网关的流量的主要贡献者?

解决方法

注意:在以下每个命令中,将 x.x.x.x 替换为 NAT 网关的私有 IP。将 y.y. 替换为 VPC CIDR 范围的前两个八位字节。

确认您的 VPC 或 NAT 网关弹性网络接口上已打开 VPC 流日志。创建流日志以打开 VPC 流日志(如有必要)。您可以将流日志数据发布到 Amazon CloudWatch Logs 或 Amazon Simple Storage Solution(Amazon S3)。

在 CloudWatch 日志中查询

1.    打开 CloudWatch 控制台

2.    在导航窗格中,选择详情

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

4.    要查找通过 NAT 网关发送最多流量的实例,请运行以下查询。

filter (dstAddr like 'x.x.x.x' and srcAddr like 'y.y.') 
| stats sum(bytes) as bytesTransferred by srcAddr, dstAddr
| sort bytesTransferred desc
| limit 10

5.    要查找进出实例的流量,请运行以下查询:

filter (dstAddr like 'x.x.x.x' and srcAddr like 'y.y.') or (srcAddr like 'x.x.x.x' and dstAddr like 'y.y.')
| stats sum(bytes) as bytesTransferred by srcAddr, dstAddr
| sort bytesTransferred desc
| limit 10

6.    要查找 VPC 中的实例最常与之通信的 Internet 目标,请运行以下查询。

对于上传:

filter (srcAddr like 'x.x.x.x' and dstAddr not like 'y.y.') 
| stats sum(bytes) as bytesTransferred by srcAddr, dstAddr
| sort bytesTransferred desc
| limit 10

对于下载:

filter (dstAddr like 'x.x.x.x' and srcAddr not like 'y.y.') 
| stats sum(bytes) as bytesTransferred by srcAddr, dstAddr
| sort bytesTransferred desc
| limit 10

使用 Athena 查询 S3 存储桶中的日志

使用 Amazon VPC 控制台或 Amazon Athena 控制台创建表。在此示例中,default(默认值)为数据库,vpc_flow_logs 为表。

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

SELECT srcaddr,dstaddr,sum(bytes) FROM "default"."vpc_flow_logs"
WHERE srcaddr like 'y.y.%' AND dstaddr like 'x.x.x.x' group by 1,2 order by 3 desc
limit 10;

2.    要查找进出实例的流量,请运行以下查询:

SELECT srcaddr,dstaddr,sum(bytes) FROM "default"."vpc_flow_logs"
WHERE (srcaddr like 'y.y.%' AND dstaddr like 'x.x.x.x') or (srcaddr like 'x.x.x.x' AND dstaddr like 'y.y.%') group by 1,2 order by 3 desc
limit 10;

3.    要查找 VPC 中的实例最常与之通信的 Internet 目标,请运行以下查询。

对于上传:

SELECT srcaddr,dstaddr,sum(bytes) FROM "default"."vpc_flow_logs"
WHERE (srcaddr like 'x.x.x.x' AND dstaddr not like 'y.y.%') group by 1,2 order by 3 desc
limit 10;

对于下载:

SELECT srcaddr,dstaddr,sum(bytes) FROM "default"."vpc_flow_logs"
WHERE (srcaddr not like 'y.y.%' AND dstaddr like 'x.x.x.x') group by 1,2 order by 3 desc
limit 10;

这篇文章对您有帮助吗?


您是否需要账单或技术支持?