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. Spiega inoltre come utilizzare il filtro dei log in modo da generare solo i log che corrispondono a determinati criteri.

Formato di registrazione

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 omesso per risparmiare sui costi di archiviazione.

Alcuni campi del log sono in formato multicampo, con più di un dato in un determinato campo. Ad esempio, il campo connection è del tipo IpConnection che contiene l'indirizzo IP e la porta di origine e di destinazione, più il 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 a 5 tupla che descrive il flusso.
Livelli
autore segnalazione stringa
Il lato che ha segnalato il flusso. Può essere SRC, DEST, SRC_GATEWAY o DEST_GATEWAY.
Livelli
rtt_msec int64
La latenza misurata durante l'intervallo di tempo. Questo campo è disponibile solo per il traffico TCP registrato dalle VM. La la latenza misurata è il tempo che intercorre tra l'invio di una SEQ e la ricezione corrispondente a un ACK. 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:
  • Il gateway di origine è il reporter del flusso.
  • La destinazione del flusso è il report e la rete VPC a cui è connesso il gateway di origine si trova nello stesso progetto Google Cloud del progetto in cui i report VPC Flow Logs generano i log per la destinazione del flusso.
Metadati
dest_gateway GatewayDetails
Se la destinazione del flusso è un endpoint on-premise o un altro endpoint cloud connesso a Google Cloud tramite un gateway come Collegamento VLAN per Cloud Interconnect o Cloud VPN tunnel e una delle seguenti condizioni è soddisfatta, questo campo è compilato con i dettagli del gateway:
  • Il gateway di destinazione è il reporter del flusso.
  • L'origine del flusso è l'autore della segnalazione, e la rete VPC a cui è connesso il gateway di destinazione si trova nella stessa progetto Google Cloud come progetto in cui Report Log di flusso VPC log per l'origine del flusso.
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 cluster GKE questo campo viene compilato con l'endpoint GKE i dettagli.
Metadati
src_google_service GoogleServiceDetails
Se l'origine del flusso è un'API di Google, questo campo è viene compilata 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 compilata con i metadati dell'API di Google disponibili.
Metadati
src_instance InstanceDetails
Se l'origine del flusso è una VM situata in un VPC rete e una delle seguenti condizioni è soddisfatta, questo campo è compilato con i dettagli dell'istanza VM:
  • La VM di origine è il reporter del flusso.
  • La destinazione del flusso è il report e la VM di origine o la rete VPC a cui è collegata la VM di origine si trova nello stesso progetto Google Cloud del progetto in cui i report VPC Flow Logs generano i log per la destinazione del flusso.
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.
  • La VM di destinazione è il reporter del flusso.
  • L'origine del flusso è l'autore della segnalazione, e la VM di destinazione, o la rete VPC alla quale è collegata la VM di destinazione, si trova nello stesso progetto Google Cloud come progetto in cui Report Log di flusso VPC log per l'origine del flusso.
Metadati
src_location GeographicDetails
Se l'origine del flusso è un indirizzo IP pubblico esterno a la rete VPC, questo campo viene compilato metadati sulla posizione disponibili.
Metadati
dest_location GeographicDetails
Se la destinazione del flusso è un indirizzo IP pubblico esterno a la rete VPC, questo campo viene compilato metadati sulla 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:
  • La VM di origine è il reporter del flusso.
  • La destinazione del flusso è l'autore della segnalazione e la VM di origine o la rete VPC a cui è collegata la VM di origine, si trova nello stesso progetto Google Cloud come progetto in cui i log di flusso VPC registrano i log per destinazione del flusso.
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:
  • La VM di destinazione è il report del flusso.
  • L'origine del flusso è il reporter e la VM di destinazione o la rete VPC a cui è collegata la VM di destinazione si trova nello stesso progetto Google Cloud del progetto in cui i log di flusso VPC generano log per l'origine del flusso.
Metadati
Altri campi di metadati
internet_routing_details InternetRoutingDetails
Se il flusso si verifica tra Google Cloud e internet, questo campo viene compilato con i dettagli del routing. Disponibile solo per di traffico 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:
  • Il reporter del flusso è il client del bilanciatore del carico e il tipo di bilanciatore del carico è APPLICATION_LOAD_BALANCER, PROXY_NETWORK_LOAD_BALANCER, PASSTHROUGH_NETWORK_LOAD_BALANCER o PROTOCOL_FORWARDING.
  • L'autore della segnalazione del flusso è il backend del bilanciatore del carico, mentre il tipo di bilanciatore del carico PASSTHROUGH_NETWORK_LOAD_BALANCER o PROTOCOL_FORWARDING.
Metadati
network_service NetworkServiceDetails
Se è impostata l'intestazione DSCP (Differentiated Services Code Point), 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:
  • L'autore della segnalazione del traffico Private Service Connect è un consumatore e utilizza Private Service Connect endpoint che ha come target un servizio pubblicato o le API di Google globali.
  • L'autore della segnalazione del traffico Private Service Connect è un producer e utilizza un bilanciatore del carico di rete passthrough interno o un bilanciatore l'inoltro del protocollo.
Metadati

Formato 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 campo GkeDetails

Campo Tipo Descrizione
cluster ClusterDetails Metadati del cluster GKE
pod PodDetails Metadati dei pod GKE, compilati quando l'origine del traffico è un pod
servizio ServiceDetails Metadati del servizio GKE, compilati in endpoint di 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 il 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 carichi di lavoro di primo livello
workload_type string Tipo di controller dei carichi di lavoro di primo livello. Può essere DEPLOYMENT, REPLICA_SET, STATEFUL_SET, DAEMON_SET, JOB CRON_JOB oppure REPLICATION_CONTROLLER.

Formato del campo ServiceDetails

Campo Tipo Descrizione
service_name string Nome del servizio. Se esistono più di due Servizi pertinenti, il è impostato su un indicatore speciale MANY_SERVICES.
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 sarà simile al seguente:

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 che contiene 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 endpoint esterni
continente string Continente per 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 il 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 campo InternetRoutingDetails

Campo Tipo Descrizione
egress_as_path AsPath Elenco dei percorsi AS pertinenti. Se ci sono sono disponibili più percorsi AS disponibili per il flusso, il campo può 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 inoltro
autore segnalazione string Report di Cloud Load Balancing. Può essere CLIENT o BACKEND.
  • Se il reporter del flusso è il client del bilanciatore del carico, questo campo viene impostato su CLIENT.
  • Se l'autore della segnalazione del flusso è il backend bilanciatore del carico, questo campo è impostato su 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. Compilato se il tipo il bilanciatore del carico è APPLICATION_LOAD_BALANCER.
forwarding_rule_name string Nome della regola di inoltro
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 è compilato.
backend_group_name string Nome del gruppo di backend. Compilato se l'autore della segnalazione è 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 a livello di zona o di regione. Viene compilato se il reporter è BACKEND e il tipo di bilanciatore del carico è PASSTHROUGH_NETWORK_LOAD_BALANCER. Se il backend il tipo di gruppo è TARGET_POOL, questo campo non è 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 Servizi differenziati, 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 al servizio. Viene compilato se il flusso di traffico include un producer 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 compilato se il target il tipo di servizio è 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 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 di 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. Tutte le basi sono sempre inclusi. Puoi personalizzare i campi dei metadati da conservare.

  • Se selezioni tutti i metadati, verranno visualizzati anche tutti i campi dei metadati nei log di flusso VPC sono inclusi nei log di flusso. Quando vengono aggiunti nuovi campi di metadati nel formato record, i log di flusso includono automaticamente i nuovi campi.

  • Se non selezioni alcun metadato, tutti i campi dei metadati vengono omessi.

  • Se selezioni metadati personalizzati, puoi specificare i campi dei metadati che vuoi includere nel campo principale, ad esempio src_vpc, o con il nome completo, come src_vpc.project_id

    Quando vengono aggiunti nuovi campi di metadati al formato del record, 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 sui metadati GKE

I flussi che hanno un endpoint in un cluster GKE possono essere annotati con annotazioni sui metadati GKE, che possono includere dettagli di cluster, pod e servizio dell'endpoint.

Annotazioni del servizio GKE

Il traffico inviato a ClusterIP, NodePort o LoadBalancer può ricevere Annotazioni del servizio. Se inviato a NodePort o LoadBalancer, il flusso riceve l'annotazione Service su entrambi gli hop della connessione.

Il traffico inviato direttamente alla porta di servizio di un pod è annotato con un servizio sull'endpoint di destinazione.

Traffico inviato alla porta di servizio di un pod su cui il pod esegue il backup di più elementi di un servizio sulla stessa porta di servizio è annotato con più servizi sull'endpoint di destinazione. Questo è limitato a due servizi. Se ci sono altri l'endpoint verrà annotato con uno speciale MANY_SERVICES indicatore.

Annotazioni sui pod per il 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é dei pacchetti a internet, l'agente di mascheramento traduce Indirizzo IP del pod all'indirizzo IP del nodo prima del rilevamento dei log di flusso VPC del 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, è necessario fornire un modo per tradurre gli indirizzi IP dei pod interni mentre vengono consegnati 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 e riduce il tempo necessario per trovare le informazioni che cerchi.

Puoi filtrare 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. Espressioni di filtro per log di flusso VPC hanno un limite di 2048 caratteri. Per ulteriori informazioni, vedi 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 sulla creazione di una subnet che utilizza filtri dei log, consulta le istruzioni di gcloud CLI o API per Abilitazione dei log di flusso VPC quando crei una subnet.

Per informazioni sulla configurazione del filtro dei log, consulta le istruzioni dell'API o dell'interfaccia a riga di comando gcloud per l'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, registra solo i log in cui il campo src_instance come riportato dall'origine del il traffico è my-vm o il campo dst_instance come segnalato dalla destinazione del traffico è registrato 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

Booleano, Int, Stringa

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.

Passaggi successivi