如何查询仅配置Internal IP的特定GCP VM的ingress和egress流量
GCP仅配置内网IP的VM实例查询Ingress/Egress流量的可行方法
以下方法均无需VM配置公网IP即可正常使用:
方法1:使用Cloud Monitoring(云监控)原生指标
- 进入GCP控制台「Monitoring」->「Metrics Explorer」,筛选
VM Instance->Network分类下的Network traffic指标 - 按
instance_name标签过滤到目标VM,可分别选择流量方向为ingress/egress查看对应数据,支持自定义时间范围、按字节/包维度聚合统计 - 也可通过gcloud命令行查询,示例命令如下:
入站流量查询:
出站流量查询只需将gcloud monitoring time-series list \ --project=<你的GCP项目ID> \ --filter='metric.type="compute.googleapis.com/instance/network/received_bytes_count" AND resource.labels.instance_id="<目标VM实例ID>"' \ --interval-start=<开始时间,格式示例:2024-05-01T00:00:00Z> \ --interval-end=<结束时间>received_bytes_count替换为sent_bytes_count即可。
方法2:开启VPC流日志(VPC Flow Logs)
- 找到目标VM所属的VPC子网,开启该子网的VPC流日志功能,日志会自动同步到Cloud Logging
- 在Cloud Logging中使用以下过滤规则即可查询该VM的所有流量明细:
resource.type="gce_subnetwork" logName="projects/<你的GCP项目ID>/logs/compute.googleapis.com%2Fvpc_flows" jsonPayload.src_instance="<VM的完整资源路径>" OR jsonPayload.dest_instance="<VM的完整资源路径>" - 流日志可记录每条连接的源/目的IP、端口、协议、流量大小、进出方向等信息,适合细粒度流量审计,也支持统计VM的东西向内网流量。
方法3:VM内部本地采集流量数据
- 直接登录到目标VM,使用系统自带或开源工具统计流量:
- 执行
iftop可实时查看当前所有进出连接的流量明细 - 执行
nload可直观展示进出流量的实时带宽占用趋势 - 执行
vnstat可统计日/周/月维度的累计进出流量数据
- 执行
- 若工具未预装,可通过包管理器安装:Debian/Ubuntu系执行
apt install iftop nload vnstat,RHEL/CentOS系执行yum install iftop nload vnstat即可。
方法4:防火墙规则日志
- 如果你已经配置了针对该VM内网IP的入站/出站防火墙规则,可以开启对应规则的日志功能
- 日志会同步到Cloud Logging,你可以根据VM内网IP过滤所有命中防火墙规则的流量,适合排查特定安全规则的流量命中情况。
内容的提问来源于stack exchange,提问作者Dhruva Teja Padmam
相关产品推荐
相关产品推荐

