访问流日志
本页面介绍了如何使用 Cloud Logging 访问流日志。
在 Logs Explorer 中访问流日志
您可以使用 Logs Explorer 查看流日志。在 Logs Explorer 中,您可以使用资源过滤条件和查询来查看流日志。VPC 流日志生成的日志分为以下几类:
- 子网的流日志可在
compute.googleapis.com/vpc_flows
日志中找到。 - VLAN 连接和 Cloud VPN 隧道的流日志可在
networkmanagement.googleapis.com/vpc_flows
日志中找到(预览版)。
配置 IAM
如需为日志记录配置访问权限控制,请参阅 Logging 的访问权限控制指南。
使用资源过滤条件访问流日志
如需使用资源过滤条件查看 Google Cloud 项目中的流日志,请参阅以下部分。您还可以使用 Logs Explorer 查询查看这些日志,如使用查询访问流日志中所述。
访问所有子网的流日志
控制台
在 Google Cloud 控制台中,转到日志浏览器页面。
点击所有资源。
在选择资源列表中,点击子网,然后点击应用。
点击所有日志名称。
在选择日志名称列表中,找到 Compute Engine,点击 vpc_flows,然后点击应用。
访问特定子网的流日志
控制台
在 Google Cloud 控制台中,转到日志浏览器页面。
点击所有资源。
在选择资源列表中,点击子网。
在子网 ID 列表中,选择子网,然后点击应用。
点击所有日志名称。
在选择日志名称列表中,找到 Compute Engine,点击 vpc_flows,然后点击应用。
访问所有 VLAN 连接和 Cloud VPN 隧道的流日志
控制台
在 Google Cloud 控制台中,转到日志浏览器页面。
点击所有资源。
在选择资源列表中,点击 VPC 流日志配置,然后点击应用。
访问特定 VLAN 连接或 Cloud VPN 隧道的流日志
控制台
在 Google Cloud 控制台中,转到日志浏览器页面。
点击所有资源。
在选择资源列表中,点击 VPC 流日志配置,然后选择用于收集您要查看的 VLAN 连接或 Cloud VPN 隧道的流日志的 VPC 流日志配置。
点击应用。
使用查询访问流日志
控制台
在 Google Cloud 控制台中,转到日志浏览器页面。
如果您在查询窗格中没有看到查询编辑器字段,请点击显示查询切换开关。
在查询编辑器字段中,输入查询:
如需查看子网的流日志,查询必须以
compute.googleapis.com
为目标。例如,如需查看特定子网的流日志,请输入以下查询,将PROJECT_ID
替换为您的 Google Cloud 项目 ID,并将SUBNET_NAME
替换为您的子网:resource.type="gce_subnetwork" logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows" resource.labels.subnetwork_name="SUBNET_NAME"
如需查看 VLAN 连接或 Cloud VPN 隧道的流日志,查询必须以
networkmanagement.googleapis.com
为目标。例如,如需查看特定来源 Cloud VPN 隧道的流日志,请输入以下查询:resource.type="vpc_flow_logs_config" logName="projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows" jsonPayload.reporter="src_gateway" labels.target_resource_name="projects/PROJECT_ID/regions/REGION/vpnTunnels/NAME"
替换以下内容:
PROJECT_ID
:Google Cloud 项目 IDREGION
:Cloud VPN 隧道的区域NAME
:Cloud VPN 隧道的名称
如需更多可运行以查看流日志的查询示例,请参阅针对 VPC 流日志的 Logs Explorer 查询示例。
点击运行查询。
针对 VPC 流日志的 Logs Explorer 查询示例
下表提供了一些 Logs Explorer 查询示例,您可以运行这些查询来查看 Google Cloud 项目中的流日志。
您要查看的日志 | 查询 |
---|---|
所有流日志 | resource.type=("gce_subnetwork" OR "vpc_flow_logs_config") logName=("projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows" OR "projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows") |
针对子网的查询 | |
所有子网的日志 | resource.type="gce_subnetwork" logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows" |
特定子网的日志 | resource.type="gce_subnetwork" logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows" resource.labels.subnetwork_name="SUBNET_NAME" |
特定虚拟机 (VM) 实例的日志 | resource.type="gce_subnetwork" logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows" (jsonPayload.src_instance.vm_name="VM_NAME" OR jsonPayload.dest_instance.vm_name="VM_NAME") |
流向特定子网范围的流量的日志 | resource.type="gce_subnetwork" logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows" ip_in_net(jsonPayload.connection.dest_ip, SUBNET_RANGE) |
特定 Google Kubernetes Engine (GKE) 集群的日志 | resource.type="gce_subnetwork" logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows" (jsonPayload.src_gke_details.cluster.cluster_name="CLUSTER_NAME" OR jsonPayload.dest_gke_details.cluster.cluster_name="CLUSTER_NAME") |
仅来自子网的出站流量的日志 | logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows" AND jsonPayload.reporter="SRC" AND jsonPayload.src_vpc.subnetwork_name="SUBNET_NAME" AND (jsonPayload.dest_vpc.subnetwork_name!="SUBNET_NAME" OR NOT jsonPayload.dest_vpc.subnetwork_name:*) |
来自 Virtual Private Cloud (VPC) 网络的所有出站流量的日志 | logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows" AND jsonPayload.reporter="SRC" AND jsonPayload.src_vpc.vpc_name="VPC_NAME" AND (jsonPayload.dest_vpc.vpc_name!="VPC_NAME" OR NOT jsonPayload.dest_vpc:*) |
单个目标端口的日志 | resource.type="gce_subnetwork" logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows" jsonPayload.connection.dest_port=PORT jsonPayload.connection.protocol=PROTOCOL |
多个目标端口的日志 | resource.type="gce_subnetwork" logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows" jsonPayload.connection.dest_port=(PORT1 OR PORT2) jsonPayload.connection.protocol=PROTOCOL |
针对 Cloud Interconnect 的 VLAN 连接和 Cloud VPN 隧道的查询(预览版) | |
所有 VLAN 连接和 Cloud VPN 隧道的日志 | resource.type="vpc_flow_logs_config" logName="projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows" |
特定 VPC 流日志配置的日志 | resource.type="vpc_flow_logs_config" logName="projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows" resource.labels.name="CONFIG_NAME" |
特定来源 Cloud VPN 隧道的日志 | resource.type="vpc_flow_logs_config" logName="projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows" jsonPayload.reporter="src_gateway" labels.target_resource_name="projects/PROJECT_ID/regions/REGION/vpnTunnels/NAME" |
所有目标 VLAN 连接的日志 | resource.type="vpc_flow_logs_config" logName="projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows" jsonPayload.reporter="dest_gateway" jsonPayload.dest_gateway.type="INTERCONNECT_ATTACHMENT" |
特定区域中所有目标 VLAN 连接的日志 | resource.type="vpc_flow_logs_config" logName="projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows" jsonPayload.reporter="dest_gateway" jsonPayload.dest_gateway.type="INTERCONNECT_ATTACHMENT" jsonPayload.dest_gateway.location="REGION" |
替换以下内容:
PROJECT_ID
:Google Cloud 项目 ID。SUBNET_NAME
:子网的名称。VM_NAME
:虚拟机的名称。SUBNET_RANGE
:CIDR 范围,例如192.168.1.0/24
。CLUSTER_NAME
:GKE 集群的名称。VPC_NAME
:VPC 网络的名称。PORT1
和PORT2
:目标端口。PROTOCOL
:通信协议。CONFIG_NAME
:您要查看的 VLAN 连接或 Cloud VPN 隧道的 VPC 流日志配置的名称。REGION
:VLAN 连接或 Cloud VPN 隧道的区域。NAME
:Cloud VPN 隧道的名称。
将日志路由到 BigQuery、Pub/Sub 和自定义目标
您可以参照 Logging 文档中的路由和存储概览部分,将 Logging 中的流日志路由到您选择的目的地。请参阅上一节中的示例过滤条件。
问题排查
Logging 中的 gce_subnetwork
资源不显示任何 vpc_flows
- 确认给定子网已启用日志记录。
- 只有 VPC 网络支持 VPC 流。 如果您使用的是旧版网络,则不会看到任何日志。
- 在共享 VPC 网络中,日志只会出现在宿主项目中,不会出现在服务项目中。请务必在宿主项目中查找日志。
- Logging 排除过滤条件会屏蔽指定的日志。确保没有会舍弃 VPC 流日志的排除规则:
- 前往日志路由器。
- 在日志记录存储桶对应的 更多操作菜单中,点击查看接收器详情。
- 确保没有可能会舍弃 VPC 流日志的排除规则。
- 使用 Google Cloud CLI 或 API 确定日志过滤配置是否过滤了给定子网中的所有流量。例如,如果
filterExpr
设置为false
,则不会看到任何日志。
某些日志中没有 RTT 或字节值
- 如果没有获取足够的数据包作为样本来捕获 RTT,RTT 测量结果可能会缺失。在低容量连接中发生这种情况的几率更高。
- RTT 值仅适用于从虚拟机报告的 TCP 流。
- 发送的某些数据包没有负载。如果抽样的是仅有标头的数据包,则字节值为 0。
某些流缺失
- 入站数据包依照入站 VPC 防火墙规则进行采样。请确保没有任何入站流量防火墙规则会拒绝您希望记录的数据包。如果您不确定 VPC 防火墙规则是否会阻止入站数据包,可以启用防火墙规则日志记录并检查日志。
- 仅支持 TCP、UDP、ICMP、ESP 和 GRE 协议。VPC 流日志不支持任何其他协议。
- 对日志进行采样。某些数据包流的容量极小,可能会丢失。
某些日志中缺少 GKE 注释
确保您的 GKE 集群是受支持的版本。
某些 GKE 流缺少日志
确保已在集群中启用了节点内可见性。否则,系统不会记录同一节点上两个 pod 之间的流。
后续步骤
- 查看 Logging 文档
- 查看 Logging 接收器文档