關於虛擬私有雲流量記錄檔記錄
本頁說明虛擬私有雲流程記錄格式,包括可用的基礎和中繼資料欄位。此外,本文也會說明如何使用記錄篩選功能,只產生符合特定條件的記錄。
記錄格式
記錄包含做為每個記錄核心欄位的幾個基礎欄位,以及用來新增其他資訊的中繼資料欄位。您可能會省略中繼資料欄位,以節省儲存費用。
某些記錄欄位採用多欄位格式,也就是指定欄位會包含多項資料。舉例來說,connection
欄位採用的格式是 IpConnection
,也就是一個欄位同時包含來源和目的地 IP 位址及通訊埠,外加通訊協定等資料。記錄格式表下方說明這些多欄位格式的欄位。
中繼資料欄位的值並非根據資料平面路徑計算,而是近似值,可能遺漏或不正確。與中繼資料欄位不同,基本欄位的值直接取自封包標頭。
欄位 | 欄位格式 | 欄位類型:基本或選用中繼資料 |
---|---|---|
連結 |
IpConnection
描述流程的 5 元組。 |
基本 |
reporter |
字串
回報流量的一端,可以是 SRC 、DEST 、SRC_GATEWAY 或 DEST_GATEWAY 。 |
基本 |
rtt_msec |
int64
時間間隔內測得的延遲時間。這個欄位會填入下列資訊:
測得的延遲時間是指從傳送 SEQ 到收到相應 ACK 之間經過的時間。延遲結果是網路 RTT 和應用程式耗用的任何時間總和。 |
基本 |
bytes_sent |
int64
從來源傳送至目的地的位元組數。 |
基本 |
packets_sent |
int64
從來源傳送至目的地的封包數。 |
基本 |
start_time |
字串
採用 RFC 3339 日期字串格式的時間戳記,標記了在匯總時間間隔內發現第一個封包的時間點。 |
基本 |
end_time |
字串
採用 RFC 3339 日期字串格式的時間戳記,標記了在匯總時間間隔內發現最後一個封包的時間點。 |
基本 |
來源和目的地中繼資料欄位 | ||
src_gateway |
GatewayDetails
如果流量來源是地端部署或其他雲端端點,且透過閘道 (例如 Cloud Interconnect 的 VLAN 連結或 Cloud VPN 通道) 連線,並符合下列任一條件,這個欄位就會填入閘道詳細資料:
|
中繼資料 |
dest_gateway |
GatewayDetails
如果流量目的地是地端部署或其他雲端端點,且透過閘道 (例如 Cloud Interconnect 的 VLAN 連結或 Cloud VPN 通道) 連線,並符合下列任一條件,這個欄位就會填入閘道詳細資料:
|
中繼資料 |
src_gke_details |
GkeDetails
如果流程來源是 Google Kubernetes Engine (GKE) 端點,這個欄位會填入 GKE 端點詳細資料。 |
中繼資料 |
dest_gke_details |
GkeDetails
如果流量目的地是 GKE 端點,這個欄位會填入 GKE 端點詳細資料。 |
中繼資料 |
src_google_service |
GoogleServiceDetails
如果流量來源為 Google 服務,這個欄位會填入服務詳細資料。 |
中繼資料 |
dest_google_service |
GoogleServiceDetails
如果流量目的地為 Google 服務,這個欄位會填入服務詳細資料。 |
中繼資料 |
src_instance |
InstanceDetails
如果流量來源是位於虛擬私有雲網路中的 VM,且符合下列任一條件,這個欄位會填入 VM 執行個體詳細資料:
|
中繼資料 |
dest_instance |
InstanceDetails
如果流量目的地是位於虛擬私有雲網路中的 VM,且符合下列任一條件,這個欄位就會填入 VM 執行個體詳細資料。
|
中繼資料 |
src_location |
GeographicDetails
如果流程來源是虛擬私有雲網路外部的公開 IP 位址,這個欄位會填入可用的位置中繼資料。 |
中繼資料 |
dest_location |
GeographicDetails
如果流程目的地是虛擬私有雲網路外的公開 IP 位址,這個欄位會填入可用的位置中繼資料。 |
中繼資料 |
src_vpc |
VpcDetails
如果流量來源是位於虛擬私有雲網路中的 VM,且符合下列任一條件,這個欄位會填入虛擬私有雲網路的詳細資料:
|
中繼資料 |
dest_vpc |
VpcDetails
如果流程目的地是位於虛擬私有雲網路的 VM,且符合下列任一條件,這個欄位會填入虛擬私有雲網路的詳細資料:
|
中繼資料 |
其他中繼資料欄位 | ||
internet_routing_details |
InternetRoutingDetails
如果流量介於 Trusted Cloud 和網際網路之間, 這個欄位會填入路由詳細資料。僅適用於輸出流程。 |
中繼資料 |
load_balancing |
LoadBalancingDetails
如果流量通過下列其中一種設定的負載平衡器,這個欄位就會填入 Cloud Load Balancing 詳細資料:
|
中繼資料 |
network_service |
NetworkServiceDetails
如果已設定區分服務代碼點 (DSCP) 標頭, 這個欄位會填入網路服務詳細資料。 |
中繼資料 |
psc |
PrivateServiceConnectDetails
如果流量在下列任一設定中通過 Private Service Connect,這個欄位就會填入 Private Service Connect 詳細資料:
|
中繼資料 |
rdma_traffic_type |
string
這個欄位會填入從 A3 Mega VM 回報的 RDMA 流量。類型設為 GPUDirect-TCPXO 。
|
中繼資料 |
IpConnection 欄位格式
欄位 | 類型 | 說明 |
---|---|---|
通訊協定 | int32 | IANA 通訊協定號碼 (不會填入 RDMA 流量) |
src_ip | 字串 | 來源 IP 位址 |
dest_ip | 字串 | 目的地 IP 位址 |
src_port | int32 | 來源通訊埠 (針對 TCP 和 UDP 流量填入) |
dest_port | int32 | 目的地通訊埠 (針對 TCP 和 UDP 流量填入) |
GatewayDetails 欄位格式
欄位 | 類型 | 說明 |
---|---|---|
project_id | 字串 | Trusted Cloud 閘道的專案 ID |
位置 | 字串 | 閘道區域 |
名稱 | 字串 | 閘道名稱 |
類型 | 字串 |
閘道類型。可以是 INTERCONNECT_ATTACHMENT 或 VPN_TUNNEL 。 |
虛擬私人雲端 | VpcDetails | 閘道的虛擬私有雲網路詳細資料 |
interconnect_name | 字串 |
如果閘道類型為 INTERCONNECT_ATTACHMENT ,這個欄位會填入設定 VLAN 連結的 Cloud Interconnect 連線名稱。 |
interconnect_project_number | int64 |
如果閘道類型為 INTERCONNECT_ATTACHMENT ,這個欄位會填入設定 VLAN 連結的 Cloud Interconnect 連線 Trusted Cloud 專案編號。 |
GkeDetails 欄位格式
欄位 | 類型 | 說明 |
---|---|---|
叢集 | ClusterDetails | GKE 叢集中繼資料 |
Pod | PodDetails | GKE Pod 中繼資料,會在流量來源或目的地為 Pod 時填入 |
服務 | ServiceDetails |
GKE 服務中繼資料,僅在服務端點中填入。記錄最多可包含兩項服務。如果相關服務超過兩項,這個欄位會顯示單一服務,並附上特別的 MANY_SERVICES 標記。
|
ClusterDetails 欄位格式
欄位 | 類型 | 說明 |
---|---|---|
cluster_location | 字串 | 叢集位置。視叢集是區域叢集還是可用區叢集,這可能是可用區或區域。 |
cluster_name | 字串 | GKE 叢集名稱。 |
PodDetails 欄位格式
欄位 | 類型 | 說明 |
---|---|---|
pod_name | 字串 | Pod 名稱 |
pod_namespace | 字串 | Pod 的命名空間 |
pod_workload | WorkloadDetails | 控制 Pod 的頂層工作負載資源相關中繼資料 |
WorkloadDetails 欄位格式
欄位 | 類型 | 說明 |
---|---|---|
workload_name | 字串 | 頂層工作負載控制器的名稱 |
workload_type | 字串 |
頂層工作負載控制器的類型。可以是
DEPLOYMENT 、REPLICA_SET 、
STATEFUL_SET 、DAEMON_SET 、JOB 、
CRON_JOB 或
REPLICATION_CONTROLLER 。
|
ServiceDetails 欄位格式
欄位 | 類型 | 說明 |
---|---|---|
service_name | 字串 |
服務名稱。如果相關服務超過兩項,系統會將該欄位設為特殊的 MANY_SERVICES 標記。
|
service_namespace | 字串 | 服務的命名空間 |
範例:
如果服務有兩項,則「服務」欄位會如下所示:
service: [ 0: { service_name: "my-lb-service" service_namespace: "default" } 1: { service_name: "my-lb-service2" service_namespace: "default" } ]
如果服務超過兩項,「服務」欄位會如下所示:
service: [ 0: { service_name: "MANY_SERVICES" } ]
GoogleServiceDetails 欄位格式
欄位 | 類型 | 說明 |
---|---|---|
類型 | 字串 | 服務類型,
|
service_name | 字串 | 服務名稱。例如: 限制:
|
連線能力 | 字串 | 存取方法。如果是
如果是
|
private_domain | 字串 | 私有網域或 Private Service Connect API 套件。private_domain 欄位可以是下列任一值:
|
InstanceDetails 欄位格式
欄位 | 類型 | 說明 |
---|---|---|
project_id | 字串 | 包含 VM 資源的 Trusted Cloud 專案 ID |
區域 | 字串 | VM 地區 |
vm_name | 字串 | VM 的執行個體名稱 |
可用區 | 字串 | VM 區域 |
managed_instance_group | InstanceGroupDetails | 如果 VM 屬於代管執行個體群組,這個欄位會填入執行個體群組詳細資料。 |
InstanceGroupDetails 欄位格式
欄位 | 類型 | 說明 |
---|---|---|
名稱 | 字串 | 執行個體群組名稱 |
區域 | 字串 | 如果執行個體群組是地區執行個體群組,這個欄位會填入執行個體群組的地區。 |
可用區 | 字串 | 如果執行個體群組是區域執行個體群組,這個欄位會填入執行個體群組的區域。 |
GeographicDetails 欄位格式
欄位 | 類型 | 說明 |
---|---|---|
asn | int32 | 這個端點所屬外部網路的 ASN。 |
city | 字串 | 外部端點所在的城市 |
continent | 字串 | 外部端點所在的洲別 |
country | 字串 | 外部端點的國家/地區,以 ISO 3166-1 Alpha-3 國家/地區代碼表示。 |
區域 | 字串 | 外部端點所在的地區 |
VpcDetails 欄位格式
欄位 | 類型 | 說明 |
---|---|---|
project_id | 字串 | 包含 VPC 的 Trusted Cloud 專案 ID。在共用虛擬私有雲設定中,project_id 是主專案的 ID。 |
subnetwork_name | 字串 | 子網路名稱 (如適用) |
subnetwork_region | 字串 | 子網路的區域 (如適用) |
vpc_name | 字串 | 網路名稱 |
InternetRoutingDetails 欄位格式
欄位 | 類型 | 說明 |
---|---|---|
egress_as_path | AsPath | 相關 AS 路徑清單。如果流程有多個可用的 AS 路徑,這個欄位可能包含多個 AS 路徑。 |
AsPath 欄位格式
欄位 | 類型 | 說明 |
---|---|---|
as_details | AsDetails | AS 路徑中所有系統的 AS 詳細資料清單。清單開頭是 Trusted Cloud網路外部的第一個 AS,結尾則是遠端 IP 位址所屬的 AS。 |
AsDetails 欄位格式
欄位 | 類型 | 說明 |
---|---|---|
asn | uint32 | AS 的自治系統編號 (ASN) |
LoadBalancingDetails 欄位格式
欄位 | 類型 | 說明 |
---|---|---|
forwarding_rule_project_id | 字串 | Trusted Cloud 轉送規則的專案 ID |
reporter | 字串 | Cloud Load Balancing 記者。可以是 CLIENT 或 BACKEND 。
|
類型 | 字串 | 負載平衡器類型。可以是 APPLICATION_LOAD_BALANCER 、PROXY_NETWORK_LOAD_BALANCER 、PASSTHROUGH_NETWORK_LOAD_BALANCER 或 PROTOCOL_FORWARDING 。 |
配置 | 字串 | 負載平衡器架構。可以是 EXTERNAL_MANAGED 、INTERNAL_MANAGED 、EXTERNAL 、INTERNAL 或 INTERNAL_SELF_MANAGED 。 |
url_map_name | 字串 | 網址對應名稱。如果負載平衡器類型為 APPLICATION_LOAD_BALANCER ,系統就會填入這個欄位。 |
forwarding_rule_name | 字串 | 轉送規則名稱 |
backend_service_name | 字串 | 後端服務的名稱。如果回報端為 BACKEND ,且負載平衡器類型為 PASSTHROUGH_NETWORK_LOAD_BALANCER ,系統就會填入這個欄位。如果後端群組類型為 TARGET_POOL ,系統就不會填入這個欄位。 |
backend_group_name | 字串 | 後端群組的名稱。如果回報端為 BACKEND ,且負載平衡器類型為 PASSTHROUGH_NETWORK_LOAD_BALANCER ,系統就會填入這個欄位。 |
backend_group_type | 字串 | 後端群組的類型。可以是 INSTANCE_GROUP 、NETWORK_ENDPOINT_GROUP 或 TARGET_POOL 。如果回報端是 BACKEND ,且負載平衡器類型為 PASSTHROUGH_NETWORK_LOAD_BALANCER ,系統就會填入這個欄位。 |
backend_group_location | 字串 | 後端群組的位置。視後端群組的範圍是區域或地區而定,可以是區域或地區。如果回報端是 BACKEND ,且負載平衡器類型為 PASSTHROUGH_NETWORK_LOAD_BALANCER ,系統就會填入這個欄位。如果後端群組類型為 TARGET_POOL ,系統就不會填入這個欄位。 |
虛擬私人雲端 | VpcDetails | 負載平衡器的 VPC 網路詳細資料 |
NetworkServiceDetails 欄位格式
欄位 | 類型 | 說明 |
---|---|---|
dscp | int32 | 如果封包標頭有 Differentiated Services 欄位,這個欄位會填入 DSCP 值。 |
PrivateServiceConnectDetails 欄位格式
欄位 | 類型 | 說明 |
---|---|---|
reporter | 字串 | Private Service Connect 記者。
可以是 CONSUMER 或 PRODUCER 。 |
psc_endpoint | PrivateServiceConnectEndpointDetails |
端點詳細資料。如果檢舉者是 CONSUMER ,系統就會填入這項資訊。
|
psc_attachment | PrivateServiceConnectAttachmentDetails | 服務連結詳細資料。如果流量包含 Private Service Connect 服務供應商,系統就會填入這個欄位。 |
PrivateServiceConnectEndpointDetails 欄位格式
欄位 | 類型 | 說明 |
---|---|---|
project_id | 字串 | Trusted Cloud Private Service Connect 端點的專案 ID |
區域 | 字串 | 端點的區域。如果目標服務類型為 GLOBAL_GOOGLE_APIS ,則不會填入這個值。 |
psc_connection_id | 字串 | Private Service Connect 連線 ID |
target_service_type | 字串 | 目標服務類型。可以是 GLOBAL_GOOGLE_APIS 或 PUBLISHED_SERVICE 。 |
虛擬私人雲端 | VpcDetails | Private Service Connect 端點的虛擬私有雲網路詳細資料 |
PrivateServiceConnectAttachmentDetails 欄位格式
欄位 | 類型 | 說明 |
---|---|---|
project_id | 字串 | Trusted Cloud 服務連結的專案 ID |
區域 | 字串 | 服務連結的區域 |
虛擬私人雲端 | VpcDetails | 服務附件的虛擬私有雲網路詳細資料 |
中繼資料註解
記錄包含基礎欄位和中繼資料欄位。「記錄格式」部分會列出哪些欄位屬於中繼資料類型,哪些屬於基礎類型。系統一律會納入所有基本欄位。您可以自訂要保留哪些中繼資料欄位。
如果您選取所有中繼資料,虛擬私有雲流量記錄檔記錄格式中的所有中繼資料欄位都會納入流量記錄。在記錄格式中新增中繼資料欄位時,流程記錄會自動納入這些新欄位。
如果選取「無中繼資料」,系統會省略所有中繼資料欄位。
如果選取自訂中繼資料,可以依父項欄位 (例如
src_vpc
) 或完整名稱 (例如src_vpc.project_id
) 指定要納入的中繼資料欄位。如果記錄格式新增中繼資料欄位,除非這些欄位位於您指定要納入的父項欄位中,否則系統不會將其納入流程記錄。
如果您使用父項欄位指定自訂中繼資料,當新中繼資料欄位新增至該父項欄位中的記錄格式時,系統會自動將新欄位納入流程記錄。
如果您使用欄位的完整名稱指定自訂中繼資料,新增至父項欄位的中繼資料欄位會從流程記錄中排除。
如要瞭解如何自訂中繼資料欄位,請參閱「啟用虛擬私有雲流量記錄」或「更新虛擬私有雲流量記錄設定」。
GKE 中繼資料註解
如果流程的端點位於 GKE 叢集中,則可使用 GKE 中繼資料註解進行註解,其中可能包含端點的叢集、Pod 和 Service 詳細資料。
GKE 服務註解
傳送至 ClusterIP、NodePort 或 LoadBalancer 的流量可以接收服務註解。如果傳送至 NodePort 或 LoadBalancer,流程會在連線的兩個躍點上收到 Service 註解。
直接傳送至 Pod 服務通訊埠的流量,會在目的地端點上加上服務註解。
如果傳送至 Pod 服務通訊埠的流量,是由 Pod 在同一服務通訊埠上支援多項服務,則目的地端點會註解多項服務。最多只能有兩項服務。如果超過這個數量,端點會以特殊 MANY_SERVICES
標記註解。
網際網路流量的 Pod 註解
Pod 與網際網路之間的流量預設不會收到 Pod 註解。虛擬私有雲流量記錄無法新增 Pod 註解,因為對於網際網路封包,偽裝代理程式會在虛擬私有雲流量記錄看到封包前,將 Pod IP 位址轉換為節點 IP 位址。
由於偽裝,只有在目的地位於預設非偽裝目的地或自訂 nonMasqueradeCIDRs
清單中時,Pod 註解才會顯示。
如果您在自訂 nonMasqueradeCIDRs
清單中加入網際網路目的地,則必須提供方法,讓內部 Pod IP 位址在遞送到網際網路前完成轉換。無論是私人或非私人叢集,您都可以使用 Cloud NAT。詳情請參閱「GKE 互動」。
跨專案註解
如果在組織層級啟用虛擬私有雲流量記錄,系統會為流經共用虛擬私有雲、虛擬私有雲網路對等互連和網路連線中心的流量加上跨專案註解。跨專案註解預設為啟用。您可以選擇停用這些註解。
- 如果啟用跨專案註解,不同專案中資源之間的流程記錄記錄會包含流程兩端的資訊。
- 如果停用跨專案註解,記錄檔只會包含流程回報者的相關資訊。
如果在專案層級啟用虛擬私有雲流量記錄,系統不會為不同專案中資源之間的流量加上跨專案註解。
記錄篩選
啟用虛擬私有雲端流程記錄後,您可以根據基本和中繼資料欄位設定篩選條件,只保留符合篩選條件的記錄。所有其他記錄都會在寫入 Logging 前遭到捨棄。
您可以根據「記錄格式」中列出的任何欄位子集進行篩選,但下列欄位除外:
rtt_msec
bytes_sent
packets_sent
start_time
end_time
虛擬私有雲流量記錄檔篩選功能使用 CEL,這是一種內嵌的運算式語言,適用於以屬性為基礎的邏輯運算式。虛擬私有雲流量記錄的篩選運算式長度上限為 2,048 個半形字元。詳情請參閱「支援的 CEL 邏輯運算子」。
如要進一步瞭解 CEL,請參閱 CEL 簡介和語言定義。生成篩選器功能僅支援部分 CEL 語法。
如要建立使用記錄篩選功能的虛擬私有雲流量記錄設定,請參閱「啟用虛擬私有雲流量記錄」。如要為現有的虛擬私有雲流量記錄設定篩選記錄,請參閱「更新虛擬私有雲流量記錄設定」。
支援的 CEL 邏輯運算子
運算式 | 支援的類型 | 說明 |
---|---|---|
true/false | 布林值 | 布林常數 |
x == y x != y |
布林值、整數、字串 | 比較運算子 範例:connection.protocol == 6 |
x && y x || y |
布林值 | 布林邏輯運算子 範例:connection.protocol == 6 && src_instance.vm_name == "vm_1" |
!x | 布林值 | 否定 |
1、2.0、0、... | 整數值 | 常數數字常值 |
x + y | 字串 | 字串串連 |
"foo"、'foo' 等。 | 字串 | 常數字串常值 |
x.lower() | 字串 | 傳回字串的小寫值 |
x.upper() | 字串 | 傳回字串的大寫值 |
x.contains(y) | 字串 | 如果字串包含指定的子字串,則傳回 true |
x.startsWith(y) | 字串 | 如果字串開頭為指定子字串,則傳回 true |
x.endsWith(y) | 字串 | 如果字串結尾為指定子字串,則傳回 true |
inIpRange(X, Y) | 字串 | 如果 X 是 IP,且 Y 是包含 X 的 IP 範圍,則傳回 true 例如:inIpRange("1.2.3.1", "1.2.3.0/24") |
x.containsFieldValue(y) |
x:清單 y:map(string, string) |
如果清單包含的物件具有與指定鍵/值組合相符的欄位,則傳回 true 範例:dest_gke_details.service.containsFieldValue({'service_name': 'service1', 'service_namespace': 'namespace1'}) |
has(x) | 字串 | 如果欄位存在,則傳回 true。 |
記錄檔篩選器範例
如果您已使用 Compute Engine API 為子網路啟用虛擬私有雲流量記錄,請使用 gcloud compute networks subnets update
指令設定篩選條件 (範例 1 至 3)。
如要設定其他虛擬私有雲流量記錄,請使用 gcloud network-management vpc-flow-logs-configs update
指令 (範例 4 至 6)。範例 1 至 3 中的篩選運算式可用於 gcloud network-management vpc-flow-logs-configs update
指令。
範例 1:將記錄收集範圍限制在名為 my-vm
的特定 VM。在此情況下,系統只會記錄流量來源回報的 src_instance
欄位為 my-vm
,或是流量目的地回報的 dst_instance
欄位為 my-vm
的記錄。
gcloud compute networks subnets update my-subnet \ --logging-filter-expr="(src_instance.vm_name == 'my-vm' && reporter=='SRC') || (dest_instance.vm_name == 'my-vm' && reporter=='DEST')"
範例 2:將記錄收集作業限制為來源 IP 位址位於 10.0.0.0/8
子網路的封包。
gcloud compute networks subnets update my-subnet \ --logging-filter-expr="inIpRange(connection.src_ip, '10.0.0.0/8')"
範例 3:將記錄檔收集範圍限制在虛擬私有雲網路外部的流量。
gcloud compute networks subnets update my-subnet \ --logging-filter-expr '!(has(src_vpc.vpc_name) && has(dest_vpc.vpc_name))'
範例 4:將記錄收集範圍限制在特定目的地 VLAN 連結或 Cloud VPN 通道,my-gateway
。
gcloud network-management vpc-flow-logs-configs update my-config \ --location=global \ --filter-expr="dest_gateway.name == 'my-gateway'"
範例 5:將記錄收集範圍限制在 VLAN 連結。
gcloud network-management vpc-flow-logs-configs update my-config \ --location=global \ --filter-expr="dest_gateway.type == 'INTERCONNECT_ATTACHMENT'"
範例 6:將記錄檔收集範圍限制在特定來源虛擬私有雲網路 (my-network
)。
gcloud beta network-management vpc-flow-logs-configs update my-config \ --location=global \ --filter-expr="src_vpc.vpc_name == 'my-network'"