访问流日志

本页面介绍了如何使用 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 查询查看这些日志,如使用查询访问流日志中所述。

访问所有子网的流日志

控制台

  1. 在 Google Cloud 控制台中,转到日志浏览器页面。

    转到日志浏览器

  2. 点击所有资源

  3. 选择资源列表中,点击子网,然后点击应用

  4. 点击所有日志名称

  5. 选择日志名称列表中,找到 Compute Engine,点击 vpc_flows,然后点击应用

访问特定子网的流日志

控制台

  1. 在 Google Cloud 控制台中,转到日志浏览器页面。

    转到日志浏览器

  2. 点击所有资源

  3. 选择资源列表中,点击子网

  4. 子网 ID 列表中,选择子网,然后点击应用

  5. 点击所有日志名称

  6. 选择日志名称列表中,找到 Compute Engine,点击 vpc_flows,然后点击应用

访问所有 VLAN 连接和 Cloud VPN 隧道的流日志

控制台

  1. 在 Google Cloud 控制台中,转到日志浏览器页面。

    转到日志浏览器

  2. 点击所有资源

  3. 选择资源列表中,点击 VPC 流日志配置,然后点击应用

访问特定 VLAN 连接或 Cloud VPN 隧道的流日志

控制台

  1. 在 Google Cloud 控制台中,转到日志浏览器页面。

    转到日志浏览器

  2. 点击所有资源

  3. 选择资源列表中,点击 VPC 流日志配置,然后选择用于收集您要查看的 VLAN 连接或 Cloud VPN 隧道的流日志的 VPC 流日志配置。

  4. 点击应用

使用查询访问流日志

控制台

  1. 在 Google Cloud 控制台中,转到日志浏览器页面。

    转到日志浏览器

  2. 如果您在查询窗格中没有看到查询编辑器字段,请点击显示查询切换开关。

  3. 在查询编辑器字段中,输入查询:

    • 如需查看子网的流日志,查询必须以 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 项目 ID
      • REGION:Cloud VPN 隧道的区域
      • NAME:Cloud VPN 隧道的名称

    如需更多可运行以查看流日志的查询示例,请参阅针对 VPC 流日志的 Logs Explorer 查询示例

  4. 点击运行查询

针对 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 网络的名称。
  • PORT1PORT2:目标端口。
  • 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 流日志的排除规则:
    1. 前往日志路由器
    2. 在日志记录存储桶对应的 更多操作菜单中,点击查看接收器详情
    3. 确保没有可能会舍弃 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 之间的流。

后续步骤