存取流量記錄

本頁面說明如何使用 Cloud Logging 存取流程記錄。

在記錄檔探索工具中存取流程記錄檔

虛擬私有雲流量記錄會將記錄寫入記錄回報者的 Google Cloud 專案。您可以在記錄檔探索工具中查看流程記錄檔。 虛擬私有雲流量記錄會使用下列記錄檔收集記錄項目:

  • networkmanagement.googleapis.com/vpc_flows 記錄會收集虛擬私有雲 (VPC) 網路、子網路、Cloud Interconnect 的 VLAN 連結,以及 Cloud VPN 通道的記錄項目。
  • compute.googleapis.com/vpc_flows 記錄會收集子網路的記錄項目。只有在使用 Compute Engine API 為子網路啟用虛擬私有雲流量記錄時,系統才會產生這項記錄。

設定身分與存取權管理

如要設定 Logging 的存取權控管,請參閱 Logging 存取權控管指南

使用資源篩選器查看流程記錄

如要使用資源篩選器,在 Google Cloud 專案中查看流程記錄,請參閱下列章節。您也可以使用記錄檔探索工具查詢來查看這些記錄,如「使用查詢篩選流程記錄」一文所述。

查看所有設定的流量記錄 (networkmanagement.googleapis.com/vpc_flows)

  1. 前往 Google Cloud 控制台的「Logs Explorer」頁面。

    前往記錄檔探索工具

  2. 按一下「所有資源」

  3. 在「選取資源」清單中,按一下「虛擬私有雲流量記錄設定」,然後點選「套用」

查看特定設定 (networkmanagement.googleapis.com/vpc_flows) 的流量記錄

  1. 前往 Google Cloud 控制台的「Logs Explorer」頁面。

    前往記錄檔探索工具

  2. 按一下「所有資源」

  3. 在「選取資源」清單中,按一下「虛擬私有雲流量記錄設定」,然後選取要查看的虛擬私有雲流量記錄設定。

  4. 按一下「套用」

查看所有設定的流量記錄 (compute.googleapis.com/vpc_flows)

如果您透過 Compute Engine API 啟用虛擬私有雲流量記錄,請按照下列步驟操作。

  1. 前往 Google Cloud 控制台的「Logs Explorer」頁面。

    前往記錄檔探索工具

  2. 按一下「所有資源」

  3. 在「選取資源」清單中,按一下「子網路」,然後按一下「套用」

  4. 按一下「所有記錄名稱」

  5. 在「Select log names」(選取記錄名稱) 清單中,找出「Compute Engine」,按一下「vpc_flows」,然後按一下「Apply」(套用)

查看特定子網路的流程記錄 (compute.googleapis.com/vpc_flows)

如果您透過 Compute Engine API 啟用虛擬私有雲流量記錄,請按照下列步驟操作。

  1. 前往 Google Cloud 控制台的「Logs Explorer」頁面。

    前往記錄檔探索工具

  2. 按一下「所有資源」

  3. 在「選取資源」清單中,按一下「子網路」

  4. 在「子網路 ID」清單中選取子網路,然後按一下「套用」

  5. 按一下「所有記錄名稱」

  6. 在「Select log names」(選取記錄名稱) 清單中,找出「Compute Engine」,按一下「vpc_flows」,然後按一下「Apply」(套用)

使用查詢篩選流量記錄

如要使用記錄檔探索工具查詢,在 Google Cloud 專案中查看流量記錄,請按照下列步驟操作。

  1. 前往 Google Cloud 控制台的「Logs Explorer」頁面。

    前往記錄檔探索工具

  2. 如果「查詢」窗格中未顯示查詢編輯器欄位,請按一下「顯示查詢」切換按鈕。

  3. 在查詢編輯器欄位中輸入查詢:

    • 舉例來說,如要查看特定來源 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_NUMBER/regions/REGION/vpnTunnels/NAME"
      

      更改下列內容:

      • PROJECT_ID:Cloud VPN 通道的 Google Cloud 專案 ID
      • PROJECT_NUMBER:Cloud VPN 通道的專案編號
      • REGION:Cloud VPN 通道的區域
      • NAME:Cloud VPN 通道的名稱
    • 如果您使用 Compute Engine API 為子網路啟用虛擬私有雲流量記錄,查詢必須以 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"
      

      如需更多可執行來查看流量記錄的查詢範例,請參閱「虛擬私有雲流量記錄的記錄檔探索工具查詢範例」。

  4. 點選「執行查詢」

虛擬私有雲流量記錄的記錄檔探索工具查詢範例

本節提供記錄檔探索工具查詢範例,您可以執行這些查詢來查看流程記錄。請在所有查詢中提供下列資訊:

  • 指定要查詢的記錄檔資源類型和記錄名稱,如下表所述。您可以在單一查詢中查詢這兩項記錄。

    記錄 資源類型和記錄檔名稱
    networkmanagement.googleapis.com/vpc_flows

    收集由 Network Management API 管理的設定記錄。

    resource.type="vpc_flow_logs_config"
    logName="projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows"
    
    compute.googleapis.com/vpc_flows

    收集由 Compute Engine API 管理的設定記錄。

    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows"

    PROJECT_ID 替換為報表資源的專案 ID。 Google Cloud

  • 如果每個資源使用多個虛擬私有雲流量記錄設定,請在查詢中加入 resource.labels.namelabels.target_resource_name 欄位,指定要查詢的設定名稱和目標資源。這樣可確保查詢結果中不會出現重複記錄。 詳情請參閱「重複記錄」。

    • resource.labels.name 是設定的名稱。每個查詢可指定多項設定。
    • labels.target_resource_name 是回報的虛擬私有雲網路、子網路、VLAN 連結或 Cloud VPN 通道的名稱。機構的設定不會設定目標資源。
    • 這些欄位僅適用於 networkmanagement.googleapis.com/vpc_flows 記錄。

請參閱下表,瞭解可查看流量記錄的記錄檔探索工具查詢範例。

要查看的記錄 查詢
所有流程記錄
resource.type=("vpc_flow_logs_config" OR "gce_subnetwork")
logName=("projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows" OR
"projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows")
特定設定的記錄
resource.type="vpc_flow_logs_config"
logName="projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows"
resource.labels.name="CONFIG_NAME"
特定虛擬私有雲網路中 VM 執行個體的記錄
resource.type=("vpc_flow_logs_config" OR "gce_subnetwork")
logName=("projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows" OR
"projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows")
(jsonPayload.src_vpc.vpc_name="NETWORK_NAME" OR
jsonPayload.dest_vpc.vpc_name="NETWORK_NAME")
特定子網路中 VM 執行個體的記錄
resource.type=("vpc_flow_logs_config" OR "gce_subnetwork")
logName=("projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows" OR
"projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows")
(jsonPayload.src_vpc.subnetwork_name="SUBNET_NAME" OR
jsonPayload.dest_vpc.subnetwork_name="SUBNET_NAME")
特定 VM 執行個體的記錄
resource.type=("vpc_flow_logs_config" OR "gce_subnetwork")
logName=("projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows" OR
"projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows")
(jsonPayload.src_instance.vm_name="VM_NAME" OR
jsonPayload.dest_instance.vm_name="VM_NAME")
特定 Google Kubernetes Engine 叢集的記錄
resource.type=("vpc_flow_logs_config" OR "gce_subnetwork")
logName=("projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows" OR
"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")
僅記錄子網路的輸出 VM 流量
resource.type=("vpc_flow_logs_config" OR "gce_subnetwork")
logName=("projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows" OR
"projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows")
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:*)
僅記錄虛擬私有雲網路輸出的 VM 流量
resource.type=("vpc_flow_logs_config" OR "gce_subnetwork")
logName=("projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows" OR
"projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows")
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=("vpc_flow_logs_config" OR "gce_subnetwork")
logName=("projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows" OR
"projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows")
ip_in_net(jsonPayload.connection.dest_ip, "SUBNET_RANGE")
個別目的地連接埠的記錄
resource.type=("vpc_flow_logs_config" OR "gce_subnetwork")
logName=("projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows" OR
"projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows")
jsonPayload.connection.dest_port=PORT
jsonPayload.connection.protocol=PROTOCOL
多個目的地通訊埠的記錄
resource.type=("vpc_flow_logs_config" OR "gce_subnetwork")
logName=("projects/PROJECT_ID/logs/networkmanagement.googleapis.com%2Fvpc_flows" OR
"projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows")
jsonPayload.connection.dest_port=(PORT_1 OR PORT_2)
jsonPayload.connection.protocol=PROTOCOL
特定來源 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_NUMBER/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:專案 ID
  • CONFIG_NAME:虛擬私有雲流量記錄設定的名稱
  • SUBNET_NAME:子網路名稱
  • VM_NAME:VM 名稱
  • SUBNET_RANGE:CIDR 範圍,例如 192.168.1.0/24
  • CLUSTER_NAME:GKE 叢集的名稱
  • VPC_NAME:虛擬私有雲網路的名稱
  • PORT_1PORT_2:目的地通訊埠
  • PROTOCOL:通訊協定
  • PROJECT_NUMBER:Cloud VPN 通道的專案編號
  • REGION:VLAN 連結或 Cloud VPN 通道的區域
  • NAME:Cloud VPN 通道的名稱

將記錄檔轉送至 BigQuery、Pub/Sub 和自訂目標

您可以按照記錄服務說明文件中的「轉送和儲存空間總覽」一文所述,將記錄服務中的流量記錄轉送至所選目的地。如需篩選器範例,請參閱上一節。

疑難排解

Logging 中未顯示 gce_subnetwork 資源的 vpc_flows

  • 確認已為指定子網路啟用記錄功能。
  • 虛擬私有雲端流程僅支援虛擬私有雲端網路。 如果您使用舊版網路,就看不見任何記錄。
  • 共用虛擬私有雲網路中,記錄檔只會顯示於主專案,不會顯示於服務專案。請確認您是在代管專案中尋找記錄檔。
  • 記錄排除篩選器會封鎖特定記錄。請確認沒有任何排除規則會捨棄虛擬私有雲流量記錄:
    1. 前往「記錄檔路由器」
    2. 在記錄檔儲存空間的「更多動作」選單中,按一下「查看接收器詳細資料」
    3. 請確認沒有任何排除規則會捨棄虛擬私有雲流量記錄。
  • 使用 Google Cloud CLI 或 API,判斷記錄篩選設定是否篩選特定子網路中的所有流量。舉例來說,如果 filterExpr 設為 false,您就不會看到任何記錄。

部分記錄檔中沒有 RTT 或位元組的值

  • 取樣封包數若不足以擷取 RTT,記錄檔可能就不會顯示 RTT 測量結果。低流量連線較常發生這種情況。
  • RTT 值僅適用於從 VM 回報的 TCP 流程。
  • 部分封包會在沒有酬載的情況下傳送。如果系統取樣到內容只有標頭的封包,位元組的值通常會顯示 0。詳情請參閱「記錄格式」。

未顯示部分流程

  • 輸入封包會在輸入虛擬私有雲防火牆規則後取樣。請確認沒有任何輸入防火牆規則會拒絕您預期要記錄的封包。如果不確定虛擬私有雲防火牆規則是否封鎖輸入封包,可以啟用防火牆規則記錄並檢查記錄。
  • 僅支援 TCP、UDP、ICMP、ESP 和 GRE 通訊協定。虛擬私有雲流量記錄檔不支援其他任何通訊協定。
  • 系統會對記錄進行取樣。封包所在的流程如果流量太低,可能不會顯示部分封包。

部分記錄檔缺少 GKE 註解

確認 GKE 叢集為支援的版本

部分 GKE 流程缺少記錄

確認叢集已啟用節點內瀏覽權限。否則,系統不會記錄同一節點上 Pod 之間的流程。

重複記錄

每項虛擬私有雲流量記錄設定都會產生一組獨立的記錄。如果記錄資訊包含重複記錄,請檢查報表資源是否與多項設定建立關聯。

如果為每項資源建立多個設定,或是建立多個設定且範圍重疊 (如下列清單所述),資源就會與多個設定建立關聯:

  • 已為機構設定虛擬私有雲流量記錄,且您在機構的任何專案中,為機構、虛擬私有雲網路、子網路、VLAN 連結或 Cloud VPN 通道進行額外設定。

    根據預設,組織的虛擬私有雲流量記錄設定會為組織中所有子網路的所有 VM 執行個體、所有 VLAN 連結和所有 Cloud VPN 通道產生記錄。如果您建立其他設定,每項設定都會產生自己的記錄。

  • 您已為虛擬私有雲網路設定虛擬私有雲流量記錄,且在同一個網路中,為子網路、VLAN 連結或 Cloud VPN 通道設定了其他設定。

    根據預設,虛擬私有雲網路的虛擬私有雲流量記錄設定會為網路中所有子網路的所有 VM 執行個體、所有 VLAN 連結和所有 Cloud VPN 通道產生記錄。如果您建立額外設定,每項設定都會產生自己的記錄。

  • 透過 Network Management API 和 Compute Engine API,為子網路設定虛擬私有雲流量記錄。子網路的 Compute Engine API 管理虛擬私有雲流量記錄設定,以及您使用 Network Management API 建立的每個適用設定,都會產生記錄。

如要進一步瞭解各個虛擬私有雲流量記錄檔設定範圍記錄的資源,請參閱「支援的設定」。如要查看虛擬私有雲流量記錄設定,請參閱「查看虛擬私有雲流量記錄設定 (全部)」。

如要在查看記錄時篩除重複記錄,可以使用下列欄位:

  • 如要依記錄檔名稱篩選記錄,請指定 resource_typelog_name 欄位。
  • 如要依設定和目標資源名稱篩選記錄,請指定 resource.labels.namelabels.target_resource_name 欄位。

如要進一步瞭解這些欄位及使用方式,請參閱「虛擬私有雲流量記錄檔的記錄檔探索工具查詢範例」。

後續步驟