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 di metadati disponibili. Viene inoltre spiegato come utilizzare i filtri 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 potrebbero essere omessi per risparmiare sui costi di archiviazione.
Alcuni campi dei log sono in un formato multicampo, con più di un dato in un determinato campo. Ad esempio, il campo connection
è in formato IpConnection
, che contiene l'indirizzo IP di origine e di destinazione e la porta, oltre al protocollo, in un unico campo. Questi campi multicampo sono descritti
sotto la tabella del formato del record.
I campi dei metadati presentano le seguenti limitazioni:
- I valori per i campi di metadati non si basano sul percorso del piano dati; sono approssimazioni e potrebbero essere mancanti o errati. A differenza dei campi di metadati, i valori dei campi di base vengono presi direttamente dalle intestazioni dei pacchetti.
- Per il campo
internet_routing_details
, in alcuni casi potrebbe mancare il percorso del sistema autonomo (AS). Ad esempio, se i pacchetti vengono instradati all'interno di un VPC (Virtual Private Cloud), le informazioni sui percorsi AS non sono incluse.
Campo | Formato del campo | Tipo di campo: metadati di base o facoltativi |
---|---|---|
connessione |
IpConnection
5 tuple che descrive questa connessione |
Livelli |
autore segnalazione |
stringa
Il lato che ha segnalato il flusso. Può essere SRC o
DEST .
|
Livelli |
rtt_msec |
int64
Latenza misurata durante l'intervallo di tempo, solo per flussi TCP. La latenza misurata è il tempo trascorso tra l'invio di una SEQ e la ricezione di un ACK corrispondente. Il risultato della latenza è la somma del RTT di rete e dell'eventuale tempo 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 i flussi in uscita. |
Metadati |
src_gke_details |
GkeDetails
Metadati GKE per gli endpoint di origine. Disponibile solo se l'endpoint è 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 VPC, questo campo viene compilato con i dettagli dell'istanza VM. In una configurazione del 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 VPC, questo campo viene compilato con i dettagli dell'istanza VM. In una configurazione del 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 i metadati sulla località disponibili. |
Metadati |
src_vpc |
VpcDetails
Se l'origine della connessione era una VM situata nello stesso VPC, questo campo viene compilato con i dettagli della rete VPC. 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 VPC, questo campo viene compilato con i dettagli della rete VPC. 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 per il flusso sono disponibili più percorsi AS, il campo potrebbe contenere più percorsi 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 e 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 o la destinazione del traffico è un pod |
esterno | ServiceDetails |
Metadati dei servizi GKE, compilati solo negli 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 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 sono presenti più di due servizi pertinenti, il campo è 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 appartiene questo endpoint. |
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. La sezione Formato record elenca i campi che sono metadati di tipo e quali di base. Tutti i campi base sono sempre inclusi. Puoi personalizzare i campi dei metadati da conservare.
Se selezioni tutti i metadati, tutti i campi di metadati nel formato del record Log di flusso VPC vengono inclusi nei log di flusso. Quando vengono aggiunti nuovi campi di metadati al formato record, i nuovi campi vengono inclusi automaticamente nei log di flusso.
Se non selezioni alcun metadato, tutti i campi dei metadati vengono omessi.
Se selezioni metadati personalizzati, puoi specificare i campi di metadati che vuoi includere nel campo principale, ad esempio
src_vpc
, o con il nome completo, ad esempiosrc_vpc.project_id
Quando nuovi campi di metadati vengono aggiunti al formato del record, questi vengono esclusi dai log di flusso, a meno che non si trovino all'interno di un campo padre che hai specificato di includere.
Se specifichi metadati personalizzati utilizzando campi padre, quando nuovi campi di metadati vengono aggiunti al formato record all'interno di quel campo principale, i log di flusso includeranno automaticamente i nuovi campi.
Se specifichi metadati personalizzati utilizzando il nome completo del campo, i nuovi campi di metadati aggiunti al campo principale vengono esclusi dai log di flusso.
Per informazioni sulla personalizzazione dei campi dei metadati, consulta le istruzioni dell'API o dell'interfaccia a riga di comando di Google Cloud CLI per abilitare il logging del 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 i dettagli di cluster, pod e servizio dell'endpoint.
Annotazioni del servizio GKE
Il traffico inviato a ClusterIP, NodePort o LoadBalancer può ricevere annotazioni di 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'annotazione di servizio nell'endpoint di destinazione.
Il traffico inviato alla porta di servizio di un pod dove il pod esegue il backup di più
servizi sulla stessa porta di servizio viene annotato con più servizi
sull'endpoint di destinazione. Ciò è limitato a due Servizi. Se ce ne sono di più, l'endpoint verrà annotato con uno speciale indicatore MANY_SERVICES
.
Annotazioni sui pod per il traffico internet
Il traffico tra un pod e internet non riceve le annotazioni dei pod per impostazione predefinita. I log di flusso VPC non possono aggiungere annotazioni dei pod perché, per i pacchetti su 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 dell'accesso mascherato, le annotazioni dei pod sono visibili solo se le destinazioni si trovano all'interno delle destinazioni non mascherate predefinite 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 di essere consegnati a internet. Per i cluster privati e non privati, puoi utilizzare Cloud NAT. Per ulteriori dettagli, consulta Interazione con GKE.
Filtro dei log
Quando abiliti Log di flusso VPC, puoi impostare un filtro basato su campi di base e metadati per conservare solo i log corrispondenti al filtro. Tutti gli altri log vengono eliminati prima di essere scritti in Logging, il che consente di risparmiare denaro e ridurre il tempo necessario per trovare le informazioni che cerchi.
Puoi applicare un filtro 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 espressione incorporato per espressioni logiche basate su 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 ulteriori informazioni su CEL, consulta l'introduzione CEL e la definizione del linguaggio. 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 dell'interfaccia a riga di comando di gcloud o dell'API per abilitare i log di flusso VPC quando crei una subnet.
Per informazioni su come configurare il filtro dei log, consulta le istruzioni dell'interfaccia a riga di comando o dell'API della gcloud CLI'aggiornamento dei parametri dei log di flusso VPC.
Esempio 1: limitare 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
, come riportato dall'origine del traffico, è my-vm
, o il campo dst_instance
, come riportato 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: limitare la raccolta dei log a 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: limitare 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 |
---|---|---|
vero, falso | Booleano | Costanti booleane |
x == y x != y |
Booleano, Int, Stringa | Operatori di confronto Esempio: connection.protocol == 6 |
x && y x || y |
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 | String | Concatenazione di stringhe |
"foo", 'foo', ... | String | Valore letterale stringa costante |
x.lower() | String | Restituisce il valore minuscolo della stringa |
x.upper() | String | Restituisce il valore in maiuscolo della stringa |
x.contains(y) | String | Restituisce true se la stringa contiene la sottostringa specificata |
x.startsWith(y) | String | Restituisce true se la stringa inizia con la sottostringa specificata |
x.endsWith(y) | String | Restituisce true se la stringa termina con la sottostringa specificata |
inIpRange(X, Y) | String | 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 alle coppie chiave-valore specificate Esempio: dest_gke_details.service.containsFieldValue({'service_name': 'service1', 'service_namespace': 'namespace1'}) |
has(x) | String | Restituisce true se il campo è presente. |