Informazioni sui record dei log di flusso VPC
Questa pagina descrive il formato dei record dei log di flusso VPC, inclusi i campi di base e dei metadati disponibili. Inoltre, spiega come utilizzare il filtro dei log in modo da generare solo i log che soddisfano determinati criteri.
Formato dei record
I record di log contengono campi di base, che sono i campi principali di ogni record di log, e campi di metadati che aggiungono ulteriori informazioni. I campi dei metadati possono essere omessi per risparmiare sui costi di archiviazione.
Alcuni campi di log sono in un formato multicampo, con più di un dato
in un determinato campo. Ad esempio, il campo connection
è nel formato IpConnection
, che contiene l'indirizzo IP e la porta di origine e di destinazione, oltre al protocollo, in un unico campo. Questi campi multicampo sono descritti sotto la tabella del formato dei record.
I valori per i campi dei metadati non si basano sul percorso del piano dati; si tratta di approssimazioni e potrebbero essere mancanti o errati. A differenza dei campi metadati, i valori per i campi di base vengono presi direttamente dalle intestazioni dei pacchetti.
Campo | Formato del campo | Tipo di campo: metadati di base o facoltativi |
---|---|---|
connessione |
IpConnection
Tupla di 5 elementi che descrive il flusso. |
Livelli |
reporter |
stringa
Il lato che ha segnalato il flusso. Può essere SRC ,
DEST , SRC_GATEWAY o
DEST_GATEWAY .
|
Livelli |
rtt_msec |
int64
Latenza misurata durante l'intervallo di tempo. Questo campo è disponibile solo per il traffico TCP registrato dalle VM. La latenza misurata è il tempo che intercorre tra l'invio di un SEQ e la ricezione di un ACK corrispondente. Il risultato della latenza è la somma del RTT della rete e del tempo impiegato dall'applicazione. |
Livelli |
bytes_sent |
int64
Quantità di byte inviati dall'origine alla destinazione. |
Livelli |
packets_sent |
int64
Numero di pacchetti inviati dall'origine alla destinazione. |
Livelli |
start_time |
stringa
Timestamp (nel formato di stringa per la data RFC 3339) del primo pacchetto osservato durante l'intervallo di tempo aggregato. |
Livelli |
end_time |
stringa
Timestamp (nel formato di stringa per la data RFC 3339) dell'ultimo pacchetto osservato durante l'intervallo di tempo aggregato. |
Livelli |
Campi dei metadati di origine e destinazione | ||
src_gateway |
GatewayDetails
Se l'origine del flusso è un endpoint on-premise o di un altro cloud collegato a Google Cloud tramite un gateway, ad esempio un collegamento VLAN per Cloud Interconnect o un tunnel Cloud VPN, e viene soddisfatta una delle seguenti condizioni, questo campo viene compilato con i dettagli del gateway:
|
Metadati |
dest_gateway |
GatewayDetails
Se la destinazione del flusso è un endpoint on-premise o di un altro cloud collegato a Google Cloud tramite un gateway, ad esempio un collegamento VLAN per Cloud Interconnect o un tunnel Cloud VPN, e una delle seguenti condizioni è soddisfatta, questo campo viene compilato con i dettagli del gateway:
|
Metadati |
src_gke_details |
GkeDetails
Se l'origine del flusso è un endpoint Google Kubernetes Engine (GKE), questo campo viene compilato con i dettagli dell'endpoint GKE. |
Metadati |
dest_gke_details |
GkeDetails
Se la destinazione del flusso è un endpoint GKE, questo campo viene compilato con i dettagli dell'endpoint GKE. |
Metadati |
src_google_service |
GoogleServiceDetails
Se l'origine del flusso è un'API di Google, questo campo viene compilato con i metadati dell'API di Google disponibili. |
Metadati |
dest_google_service |
GoogleServiceDetails
Se la destinazione del flusso è un'API di Google, questo campo viene compilato con i metadati dell'API di Google disponibili. |
Metadati |
src_instance |
InstanceDetails
Se l'origine del flusso è una VM situata in una rete VPC e viene soddisfatta una delle seguenti condizioni, questo campo viene compilato con i dettagli dell'istanza VM:
|
Metadati |
dest_instance |
InstanceDetails
Se la destinazione del flusso è una VM situata in una rete VPC e viene soddisfatta una delle seguenti condizioni, questo campo viene compilato con i dettagli dell'istanza VM.
|
Metadati |
src_location |
GeographicDetails
Se l'origine del flusso è un indirizzo IP pubblico esterno alla rete VPC, questo campo viene compilato con i metadati della posizione disponibili. |
Metadati |
dest_location |
GeographicDetails
Se la destinazione del flusso è un indirizzo IP pubblico esterno alla rete VPC, questo campo viene compilato con i metadati della posizione disponibili. |
Metadati |
src_vpc |
VpcDetails
Se l'origine del flusso è una VM situata in una rete VPC e viene soddisfatta una delle seguenti condizioni, questo campo viene compilato con i dettagli della rete VPC:
|
Metadati |
dest_vpc |
VpcDetails
Se la destinazione del flusso è una VM situata in una rete VPC e viene soddisfatta una delle seguenti condizioni, questo campo viene compilato con i dettagli della rete VPC:
|
Metadati |
Altri campi di metadati | ||
internet_routing_details |
InternetRoutingDetails
Se il flusso è tra Google Cloud e internet, questo campo viene compilato con i dettagli di routing. Disponibile solo per i flussi in uscita. |
Metadati |
load_balancing |
LoadBalancingDetails
Se il flusso passa attraverso un bilanciatore del carico in una delle seguenti configurazioni, questo campo viene compilato con i dettagli di Cloud Load Balancing:
|
Metadati |
network_service |
NetworkServiceDetails
Se l'intestazione DSCP (Differentiated Services Code Point) è impostata, questo campo viene compilato con i dettagli del servizio di rete. |
Metadati |
psc |
PrivateServiceConnectDetails
Se il flusso passa tramite Private Service Connect in una delle seguenti configurazioni, questo campo viene compilato con i dettagli di Private Service Connect:
|
Metadati |
Formato del campo IpConnection
Campo | Tipo | Descrizione |
---|---|---|
protocollo | int32 | Il numero di protocollo IANA |
src_ip | string | Indirizzo IP di origine |
dest_ip | string | Indirizzo IP di destinazione |
src_port | int32 | Porta di origine |
dest_port | int32 | Porta di destinazione |
Formato del campo GatewayDetails
Campo | Tipo | Descrizione |
---|---|---|
project_id | string | ID progetto Google Cloud del gateway |
località | string | Regione del gateway |
nome | string | Nome del gateway |
tipo | string |
Tipo di gateway. Può essere INTERCONNECT_ATTACHMENT o
VPN_TUNNEL .
|
vpc | VpcDetails | Dettagli della rete VPC del gateway |
Formato del campo GkeDetails
Campo | Tipo | Descrizione |
---|---|---|
cluster | ClusterDetails | Metadati del cluster GKE |
pod | PodDetails | Metadati del pod GKE, compilati quando la sorgente o la destinazione del traffico è un pod |
servizio | ServiceDetails |
Metadati del servizio GKE, compilati solo negli endpoint del servizio. Il record contiene fino a due servizi. Se sono presenti più di due
Servizi pertinenti, questo campo contiene un singolo Servizio con un indicatore
MANY_SERVICES speciale.
|
Formato del campo ClusterDetails
Campo | Tipo | Descrizione |
---|---|---|
cluster_location | string | Località del cluster. Può essere una zona o una regione, a seconda che il cluster sia zonale o regionale. |
cluster_name | string | Nome del cluster GKE. |
Formato del campo PodDetails
Campo | Tipo | Descrizione |
---|---|---|
pod_name | string | Nome del pod |
pod_namespace | string | Spazio dei nomi del pod |
pod_workload | WorkloadDetails | Metadati sulla risorsa del carico di lavoro di primo livello che controlla il pod |
Formato del campo WorkloadDetails
Campo | Tipo | Descrizione |
---|---|---|
workload_name | string | Nome del controller dei workload di primo livello |
workload_type | string |
Tipo di controller del carico di lavoro di primo livello. Può essere
DEPLOYMENT , REPLICA_SET ,
STATEFUL_SET , DAEMON_SET , JOB ,
CRON_JOB o
REPLICATION_CONTROLLER .
|
Formato del campo ServiceDetails
Campo | Tipo | Descrizione |
---|---|---|
service_name | string |
Nome del servizio. Se sono presenti più di due Servizi pertinenti, il
campo viene impostato su un indicatore MANY_SERVICES speciale.
|
service_namespace | string | Spazio dei nomi del servizio |
Esempio:
Se sono presenti due servizi, il campo Servizio avrà il seguente aspetto:
service: [ 0: { service_name: "my-lb-service" service_namespace: "default" } 1: { service_name: "my-lb-service2" service_namespace: "default" } ]
Se sono presenti più di due servizi, il campo Servizio avrà il seguente aspetto:
service: [ 0: { service_name: "MANY_SERVICES" } ]
Formato del campo GoogleServiceDetails
Campo | Tipo | Descrizione |
---|---|---|
tipo | string | Questo campo è impostato su GOOGLE_API . |
Formato del campo InstanceDetails
Campo | Tipo | Descrizione |
---|---|---|
project_id | string | ID del progetto Google Cloud contenente la risorsa VM |
regione | string | Regione della VM |
vm_name | string | Nome istanza della VM |
zona | string | Zona della VM |
Formato del campo GeographicDetails
Campo | Tipo | Descrizione |
---|---|---|
asn | int32 | L'ASN della rete esterna a cui appartiene questo endpoint. |
city | string | Città per gli endpoint esterni |
continente | string | Continente per gli endpoint esterni |
country | string | Paese per gli endpoint esterni, rappresentato come codici paese ISO 3166-1 Alpha-3 |
regione | string | Regione per gli endpoint esterni |
Formato del campo VpcDetails
Campo | Tipo | Descrizione |
---|---|---|
project_id | string | ID del progetto Google Cloud contenente la VPC. In una
configurazione del VPC condiviso, project_id è l'ID
del progetto host. |
subnetwork_name | string | Nome della subnet, se applicabile |
subnetwork_region | string | Regione della subnet, se applicabile |
vpc_name | string | Nome della rete |
Formato del campo InternetRoutingDetails
Campo | Tipo | Descrizione |
---|---|---|
egress_as_path | AsPath | Elenco dei percorsi AS pertinenti. Se per il flusso sono disponibili più percorsi AS, il campo potrebbe contenere più di un percorso AS. |
Formato del campo AsPath
Campo | Tipo | Descrizione |
---|---|---|
as_details | AsDetails | Elenco dei dettagli dell'AS per tutti i sistemi nel percorso dell'AS. L'elenco inizia dal primo AS esterno alla rete di Google Cloud e termina con l'AS a cui appartiene l'indirizzo IP remoto. |
Formato del campo AsDetails
Campo | Tipo | Descrizione |
---|---|---|
asn | uint32 | Il numero di sistema autonomo (ASN) dell'AS |
Formato del campo LoadBalancingDetails
Campo | Tipo | Descrizione |
---|---|---|
forwarding_rule_project_id | string | ID progetto Google Cloud della regola di forwarding |
reporter | string | Report di Cloud Load Balancing. Può essere
CLIENT o BACKEND .
|
tipo | string | Tipo di bilanciatore del carico. Può essere APPLICATION_LOAD_BALANCER ,
PROXY_NETWORK_LOAD_BALANCER ,
PASSTHROUGH_NETWORK_LOAD_BALANCER o
PROTOCOL_FORWARDING . |
schema | string | Schema del bilanciatore del carico. Può essere EXTERNAL_MANAGED ,
INTERNAL_MANAGED , EXTERNAL ,
INTERNAL o INTERNAL_SELF_MANAGED . |
url_map_name | string | Nome della mappa URL. Viene compilato se il tipo di bilanciatore del carico è APPLICATION_LOAD_BALANCER . |
forwarding_rule_name | string | Nome della regola di forwarding |
backend_service_name | string | Nome del servizio di backend. Viene compilato se
il reporter è BACKEND e il tipo di bilanciatore del carico è
PASSTHROUGH_NETWORK_LOAD_BALANCER . Se il tipo di gruppo di backend è TARGET_POOL , questo campo non viene compilato. |
backend_group_name | string | Nome del gruppo di backend. Viene compilato se
il reporter è BACKEND e il tipo di bilanciatore del carico è
PASSTHROUGH_NETWORK_LOAD_BALANCER . |
backend_group_type | string | Tipo di gruppo di backend. Può essere INSTANCE_GROUP ,
NETWORK_ENDPOINT_GROUP o TARGET_POOL .
Viene compilato se il reporter è BACKEND e il tipo di bilanciatore del carico è PASSTHROUGH_NETWORK_LOAD_BALANCER . |
backend_group_location | string | Posizione del gruppo di backend. Può essere una zona o una regione
a seconda che l'ambito del gruppo di backend sia zonale o regionale.
Viene compilato se il reporter è BACKEND e il tipo di bilanciatore del carico è PASSTHROUGH_NETWORK_LOAD_BALANCER . Se il tipo di gruppo di backend è TARGET_POOL , questo campo non viene compilato. |
vpc | VpcDetails | Dettagli della rete VPC del bilanciatore del carico |
Formato del campo NetworkServiceDetails
Campo | Tipo | Descrizione |
---|---|---|
dscp | int32 | Se nelle intestazioni dei pacchetti è presente il campo Differentiated Services, questo campo viene compilato con il valore DSCP. |
Formato del campo PrivateServiceConnectDetails
Campo | Tipo | Descrizione |
---|---|---|
reporter | string | Report di Private Service Connect.
Può essere CONSUMER o
PRODUCER . |
psc_endpoint | PrivateServiceConnectEndpointDetails |
Dettagli endpoint. Deve essere compilato se l'autore della segnalazione è CONSUMER .
|
psc_attachment | PrivateServiceConnectAttachmentDetails | Dettagli del collegamento del servizio. Viene compilato se il flusso di traffico include un producer di Private Service Connect. |
Formato del campo PrivateServiceConnectEndpointDetails
Campo | Tipo | Descrizione |
---|---|---|
project_id | string | ID progetto Google Cloud dell'endpoint Private Service Connect |
regione | string | Regione dell'endpoint. Non viene compilato se il tipo di servizio
target è GLOBAL_GOOGLE_APIS . |
psc_connection_id | string | ID connessione Private Service Connect |
target_service_type | string | Tipo di servizio target. Può essere GLOBAL_GOOGLE_APIS o
PUBLISHED_SERVICE . |
vpc | VpcDetails | Dettagli della rete VPC dell'endpoint Private Service Connect |
Formato del campo PrivateServiceConnectAttachmentDetails
Campo | Tipo | Descrizione |
---|---|---|
project_id | string | ID progetto Google Cloud del collegamento del servizio |
regione | string | Regione del collegamento al servizio |
vpc | VpcDetails | Dettagli della rete VPC del collegamento del servizio |
Annotazioni dei metadati
I record dei log contengono campi di base e campi di metadati. La sezione Formato del record elenca i campi che sono metadati di tipo e quelli di base. Tutti i campi di base sono sempre inclusi. Puoi personalizzare i campi dei metadati da conservare.
Se selezioni tutti i metadati, tutti i campi dei metadati nel formato dei record dei log di flusso VPC sono inclusi nei log di flusso. Quando vengono aggiunti nuovi campi di metadati al formato del record, i log dei flussi includono automaticamente i nuovi campi.
Se non selezioni nessun metadato, vengono omessi tutti i campi dei metadati.
Se selezioni i metadati personalizzati, puoi specificare i campi dei metadati da includere in base al campo principale, ad esempio
src_vpc
, o in base ai nomi completi, ad esempiosrc_vpc.project_id
Quando vengono aggiunti nuovi campi di metadati al formato del record, questi vengono esclusi dai log di flusso, a meno che non si trovino all'interno di un campo principale che hai specificato di includere.
Se specifichi metadati personalizzati utilizzando i campi principali, quando vengono aggiunti nuovi campi di metadati al formato del record all'interno di quel campo principale, i log flusso includeranno automaticamente i nuovi campi.
Se specifichi i metadati personalizzati utilizzando il nome completo del campo, i nuovi campi di metadati aggiunti al campo principale vengono esclusi dai log del flusso.
Per informazioni sulla personalizzazione dei campi dei metadati, consulta le istruzioni dell'API o di Google Cloud CLI per abilitare i log di flusso VPC quando crei una subnet.
Annotazioni dei metadati GKE
I flussi con un endpoint in un cluster GKE possono essere annotati con annotazioni dei metadati GKE, che possono includere dettagli del cluster, del pod e del servizio dell'endpoint.
Annotazioni del servizio GKE
Il traffico inviato a un servizio ClusterIP, NodePort o LoadBalancer può ricevere annotazioni del servizio. Se inviato a un NodePort o a un LoadBalancer, il flusso riceve l'annotazione del servizio su entrambi gli hop della connessione.
Il traffico inviato direttamente alla porta di servizio di un pod è annotato con un'annotazione del servizio sull'endpoint di destinazione.
Il traffico inviato alla porta di servizio di un pod in cui il pod supporta più di un servizio sulla stessa porta di servizio viene annotato con più servizi nell'endpoint di destinazione. Questo è limitato a due servizi. Se sono presenti più di 100 elementi, l'endpoint verrà annotato con un indicatore MANY_SERVICES
speciale.
Annotazioni dei pod sul traffico internet
Il traffico tra un pod e internet non riceve annotazioni del pod per impostazione predefinita. I log di flusso VPC non possono aggiungere annotazioni dei pod perché, per i pacchetti inviati a internet, l'agente di mascheramento traduce l'indirizzo IP del pod nell'indirizzo IP del nodo prima che i log di flusso VPC vedano il pacchetto.
A causa del travestimento, le annotazioni dei pod sono visibili solo se le destinazioni rientrano nelle destinazioni predefinite senza travestimento o in un elenco nonMasqueradeCIDRs
personalizzato.
Se includi destinazioni internet in un elenco nonMasqueradeCIDRs
personalizzato, devi fornire un modo per tradurre gli indirizzi IP dei pod interni prima che vengano inviati a internet. Puoi utilizzare Cloud NAT sia per i cluster privati che per quelli non privati. Per ulteriori dettagli, consulta la sezione Interazione con GKE.
Filtro dei log
Quando attivi i log di flusso VPC, puoi impostare un filtro in base ai campi di base e ai campi dei metadati che conserva solo i log corrispondenti al filtro. Tutti gli altri log vengono eliminati prima di essere scritti in Logging, il che ti consente di risparmiare e di ridurre il tempo necessario per trovare le informazioni che cerchi.
Puoi filtrare in base a qualsiasi sottoinsieme di campi elencati in Formato record, ad eccezione dei seguenti campi:
rtt_msec
bytes_sent
packets_sent
start_time
end_time
Il filtro dei log di flusso VPC utilizza CEL, un linguaggio di espressioni incorporato per le espressioni logiche basate sugli attributi. Le espressioni di filtro per i log di flusso VPC hanno un limite di 2048 caratteri. Per ulteriori informazioni, consulta Operatori logici CEL supportati.
Per saperne di più sul CEL, consulta l'introduzione al CEL e la definizione del linguaggio. La funzionalità di filtro di generazione supporta un sottoinsieme limitato della sintassi CEL.
Per informazioni su come creare una sottorete che utilizza il filtro dei log, consulta le istruzioni dell'API o dell'interfaccia a riga di comando gcloud per attivare i log dei flussi VPC quando crei una sottorete.
Per informazioni sulla configurazione del filtro dei log, consulta le istruzioni dell'API o dell'interfaccia a riga di comando gcloud CLI'aggiornamento dei parametri dei log di flusso VPC.
Esempio 1: limita la raccolta dei log a una VM specifica denominata my-vm
. In questo caso, vengono registrati solo i log in cui il campo src_instance
indicato dall'origine del traffico è my-vm
o il campo dst_instance
indicato dalla destinazione del traffico è 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')"
Esempio 2: limita la raccolta dei log ai pacchetti i cui indirizzi IP di origine si trovano nella subnet 10.0.0.0/8
.
gcloud compute networks subnets update my-subnet \ --logging-filter-expr="inIpRange(connection.src_ip, '10.0.0.0/8')"
Esempio 3: limita la raccolta dei log al traffico esterno a un VPC.
gcloud compute networks subnets update my-subnet \ --logging-filter-expr '!(has(src_vpc.vpc_name) && has(dest_vpc.vpc_name))'
Operatori logici CEL supportati
Espressione | Tipi supportati | Descrizione |
---|---|---|
true, false | Booleano | Costanti booleane |
x == y x != y |
Boolean, Int, String | Operatori di confronto Esempio: connection.protocol == 6 |
x && y x || y |
Booleano | Operatori della logica booleana Esempio: connection.protocol == 6 && src_instance.vm_name == "vm_1" |
!x | Booleano | Negazione |
1, 2.0, 0, ... | Int | Valori letterali numerici costanti |
x + y | Stringa | Concatenazione di stringhe |
"foo", "foo", ... | Stringa | Valore letterale di stringa costante |
x.lower() | Stringa | Restituisce il valore in minuscolo della stringa |
x.upper() | Stringa | Restituisce il valore della stringa in maiuscolo |
x.contains(y) | Stringa | Restituisce true se la stringa contiene la sottostringa specificata |
x.startsWith(y) | Stringa | Restituisce true se la stringa inizia con la sottostringa specificata |
x.endsWith(y) | Stringa | Restituisce true se la stringa termina con la sottostringa specificata |
inIpRange(X, Y) | Stringa | Restituisce true se X è un IP e Y è un intervallo IP che contiene X Esempio: inIpRange("1.2.3.1", "1.2.3.0/24") |
x.containsFieldValue(y) |
x: elenco y: mappa(stringa, stringa) |
Restituisce true se l'elenco contiene un oggetto con campi corrispondenti alle coppie chiave-valore specificate Esempio: dest_gke_details.service.containsFieldValue({'service_name': 'service1', 'service_namespace': 'namespace1'}) |
has(x) | Stringa | Restituisce true se il campo è presente. |