Informazioni sui record dei log di flusso VPC

Questa pagina descrive il formato dei record dei log di flusso VPC, tra cui quali campi di base e di metadati sono 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 di seguito nella tabella del formato di registrazione.

I campi dei metadati presentano le seguenti limitazioni:

  • I valori per i campi dei metadati non si basano sul percorso del piano dati. sono approssimazioni e potrebbero mancare o essere errate. Non mi piace più per i metadati i valori dei campi base vengono presi direttamente dalle intestazioni dei pacchetti.
  • Per il campo internet_routing_details, il percorso del sistema autonomo (AS) potrebbero mancare in alcuni casi. Ad esempio, quando i pacchetti vengono instradati all'interno di Le informazioni sui percorsi AS non sono incluse nel Virtual Private Cloud (VPC).
Campo Formato del campo Tipo di campo: metadati di base o facoltativi
connessione IpConnection
Tupla che descrive questa connessione
Livelli
autore segnalazione stringa
Il lato che ha segnalato il flusso. Può essere SRC o DEST.
Livelli
rtt_msec int64
La latenza misurata durante l'intervallo di tempo, solo per i flussi TCP. 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 di rete e in qualsiasi momento utilizzato 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
internet_routing_details InternetRoutingDetails
Se la connessione è tra Google Cloud e internet, questo campo viene compilato con i dettagli del routing. Disponibile solo per di traffico in uscita.
Metadati
src_gke_details GkeDetails
Metadati GKE per gli endpoint di origine. Disponibile solo se è GKE.
Metadati
dest_gke_details GkeDetails
Metadati GKE per gli endpoint di destinazione. Disponibile solo se l'endpoint è GKE.
Metadati
src_instance InstanceDetails
Se l'origine della connessione era una VM situata nello stesso luogo VPC, questo campo viene compilato con i dettagli delle istanze VM. Nel configurazione di una VPC condiviso, project_id corrisponde al progetto proprietario dell'istanza, di solito il progetto di servizio.
Metadati
dest_instance InstanceDetails
Se la destinazione della connessione era una VM situata nello stesso paese VPC, questo campo viene compilato con i dettagli delle istanze VM. Nel configurazione di una VPC condiviso, project_id corrisponde al progetto proprietario dell'istanza, di solito il progetto di servizio.
Metadati
src_location GeographicDetails
Se l'origine della connessione era esterna al VPC, questo campo viene compilato con i metadati sulla posizione disponibili.
Metadati
dest_location GeographicDetails
Se la destinazione della connessione era esterna al VPC, questo campo viene compilato con la località disponibile metadati.
Metadati
src_vpc VpcDetails
Se l'origine della connessione era una VM situata nello stesso luogo VPC, questo campo viene compilato con VPC dettagli della rete. In una configurazione del VPC condiviso, project_id corrisponde a quello del progetto host.
Metadati
dest_vpc VpcDetails
Se la destinazione della connessione era una VM situata nello stesso paese VPC, questo campo viene compilato con VPC dettagli della rete. In una configurazione del VPC condiviso, project_id corrisponde a quello del progetto host.
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 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 di AS per tutti i sistemi nel percorso AS. L'elenco inizia dal primo AS esterno alla rete Google Cloud termina con l'AS a cui appartiene l'indirizzo IP remoto.

Formato del campo AsDetails

Campo Tipo Descrizione
asn uint32 Il numero del sistema autonomo (ASN) dell'AS.

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 pertinenti, questo campo contiene un singolo servizio con un'etichetta speciale Indicatore MANY_SERVICES.

Formato del campo ClusterDetails

Campo Tipo Descrizione
cluster_location string Località del cluster. Può essere una zona o una regione, a seconda che a livello di zona o di regione.
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

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 esistono 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 campo InstanceDetails

Campo Tipo Descrizione
project_id string ID del progetto contenente la 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 endpoint appartiene.
city string Città per endpoint esterni
continente string Continente per endpoint esterni
country string Paese degli endpoint esterni, rappresentato come Codici paese ISO 3166-1 Alpha-3
regione string Regione per endpoint esterni

Formato campo VpcDetails

Campo Tipo Descrizione
project_id string ID del progetto contenente il VPC
subnetwork_name string Subnet su cui è operativa la VM
vpc_name string VPC su cui è operativa la VM

Annotazioni per i metadati

I record di log contengono campi di base e campi di metadati. Il record formato elenca i campi che sono metadati di tipo e quali 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 formato record, vengono escluse dai log di flusso a meno che all'interno di un campo principale che hai specificato di includere.

    • Se specifichi metadati personalizzati utilizzando i campi principali, quando i nuovi metadati vengono aggiunti al formato record all'interno del campo padre, i log di flusso automaticamente i nuovi campi.

    • Se specifichi i metadati personalizzati utilizzando il nome completo del campo, i campi di metadati aggiunti al campo principale sono esclusi dal flusso logaritmi.

Per informazioni sulla personalizzazione dei campi dei metadati, consulta le istruzioni di Google Cloud CLI o API per abilitare il logging del flusso VPC quando crei 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. Ciò è 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 le annotazioni dei pod tramite predefinito. 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 dell'accesso mascherato, le annotazioni dei pod sono visibili solo se le destinazioni Rientrano nell'impostazione predefinita destinazioni o in un nonMasqueradeCIDRs personalizzato elenco predefinito. 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. Per i cluster privati e non privati, puoi utilizzare Cloud NAT. Vedi GKE un'interazione per ulteriori dettagli.

Filtro dei log

Quando abiliti Log di flusso VPC, puoi impostare un filtro basato sia su base che campi di metadati che conservano 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 espressione incorporato per espressioni logiche basate su attributi. Espressioni di filtro per log di flusso VPC hanno un limite di 2048 caratteri. Per ulteriori informazioni, vedi Operatori logici CEL supportati.

Per ulteriori informazioni su CEL, vedi la documentazione CEL. introduzione e il linguaggio definizione. La funzionalità del filtro di generazione supporta un sottoinsieme limitato di 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 su come configurare il filtro dei log, consulta le istruzioni di gcloud CLI o API per Aggiornare i parametri dei log di flusso VPC.

Esempio 1: limitare 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: limitare la raccolta dei log a pacchetti i cui indirizzi IP di origine si trovano nel 10.0.0.0/8 subnet.

gcloud compute networks subnets update my-subnet \
    --logging-filter-expr="inIpRange(connection.src_ip, '10.0.0.0/8')"

Esempio 3: limitare la raccolta di log al traffico esterno a un in 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
vero, falso Booleano Costanti booleane

x == y

x != y

Booleano, Int, Stringa

Operatori di confronto

Esempio: connection.protocol == 6

x && a

x || a

Booleano

Operatori logici booleani

Esempio: connection.protocol == 6 && src_instance.vm_name == "vm_1"

!x Booleano La negazione
1, 2,0, 0, ... Int Valori letterali numerici costanti
X + Y Stringa Concatenazione di stringhe
"foo", 'foo', ... Stringa Valore letterale stringa costante
x.lower() Stringa Restituisce il valore minuscolo della stringa
x.upper() Stringa Restituisce il valore in maiuscolo della stringa
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 che corrispondono alla 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