Questo documento spiega come Cloud Logging instrada le voci di log ricevute da Google Cloud. Esistono diversi tipi di destinazioni di routing. Ad esempio, puoi indirizzare le voci di log a una destinazione come un bucket di log, che le memorizza. Se vuoi esportare i dati di log in una destinazione di terze parti, puoi eseguire il routing delle voci di log a Pub/Sub. Inoltre, una voce di log può essere indirizzata a più destinazioni.
A livello generale, ecco come Cloud Logging instrada e archivia le voci di log:
Informazioni sui router dei log
Ogni Google Cloud progetto, account di fatturazione, cartella e organizzazione ha un router dei log, che gestisce il flusso delle voci di log tramite i sink a livello di risorsa. Un router dei log gestisce anche il flusso di una voce di log attraverso i sink che si trovano nella gerarchia delle risorse della voce. I sink controllano il modo in cui le voci di log vengono indirizzate alle destinazioni.
Un router dei log archivia temporaneamente una voce di log. Questo comportamento protegge da interruzioni temporanee e interruzioni che potrebbero verificarsi quando una voce di log passa attraverso i sink. Lo spazio di archiviazione temporaneo non protegge dagli errori di configurazione.
Lo spazio di archiviazione temporaneo di un router dei log è diverso dallo spazio di archiviazione a lungo termine fornito dai bucket Logging.
Le voci di log in entrata con timestamp precedenti al periodo di conservazione dei log o successivi alla data odierna di più di 24 ore vengono eliminate.
Informazioni sui sink di log
Quando un sink di log riceve una voce di log, determina se deve ignorarla o indirizzarla. Questa decisione viene presa confrontando la voce di log con i filtri nel sink di log. Quando la voce di log viene indirizzata, il sink di log la invia alla destinazione specificata dal sink di log. La destinazione può essere un progetto, una posizione di archiviazione o un servizio.
I sink di log appartengono a una determinata Google Cloud risorsa Google Cloud :progetti, account di fatturazione, cartelle e organizzazioni. Queste risorse contengono anche più sink di log. Quando una risorsa riceve una voce di log, ogni sink di log nella risorsa valuta la voce di log in modo indipendente. Di conseguenza, più sink di log possono instradare la stessa voce di log.
Per impostazione predefinita, i dati di log vengono archiviati nel progetto di origine. Tuttavia, esistono diversi motivi per cui potresti voler modificare questa configurazione:
- Per centralizzare l'archiviazione dei dati di log.
- Per unire i dati dei log ad altri dati aziendali.
- Per organizzare i dati di log in modo utile.
- Per trasmettere i log ad altre applicazioni, altri repository o terze parti. Ad esempio, potresti voler esportare i log da Google Cloud per visualizzarli su una piattaforma di terze parti. Per esportare le voci di log, crea un sink di log che le indirizzi a Pub/Sub.
Un sink di log configurato in modo errato non esegue il routing delle voci di log. Quando una destinazione è configurata in modo errato, vengono scritte voci di log che segnalano i dettagli dell'errore. Inoltre, viene inviata un'email ai contatti essenziali per la risorsa. Per saperne di più, vedi Risoluzione dei problemi: visualizzare gli errori.
I sink di log non possono eseguire il routing retroattivo delle voci di log. ovvero, un sink di log non può instradare una voce di log ricevuta prima della creazione del sink. Allo stesso modo, se un sink è configurato in modo errato, instrada solo le voci di log che arrivano dopo la risoluzione dell'errore di configurazione. Tuttavia, puoi copiare retroattivamente i dati di log da un bucket di log a Cloud Storage. Per ulteriori informazioni, consulta la sezione Copia dei log.
Supporto di organizzazioni e cartelle
Per aiutarti a gestire i dati di log in un'organizzazione o in una cartella, puoi svolgere le seguenti operazioni:
Puoi creare sink aggregati, che indirizzano le voci di log per un'organizzazione o una cartella e i relativi elementi secondari alla destinazione specificata dal sink. Esistono due tipi di sink aggregati:
- Sink aggregati non di intercettazione
- Intercettazione dei sink aggregati
La differenza tra questi due tipi di sink è che l'intercettazione dei sink a un livello della gerarchia delle risorse può influire sul routing delle risorse ai livelli inferiori della gerarchia. I sink non intercettanti non influiscono sul routing per altre risorse. Quando un sink di intercettazione in una risorsa corrisponde a una voce di log, la voce di log non viene inviata ai sink nelle risorse figlio, con l'eccezione che la voce di log viene sempre inviata al sink di log
_Required
nella risorsa in cui ha origine la voce di log.Puoi configurare le impostazioni predefinite delle risorse per specificare la configurazione del sink
_Default
creato dal sistema per le nuove risorse in un'organizzazione o una cartella. Ad esempio, puoi utilizzare queste impostazioni per disattivare il sink_Default
o specificare i filtri in quel sink.
Esempi di routing
Questa sezione illustra come una voce di log che ha origine in un progetto potrebbe fluire attraverso i sink nella sua gerarchia delle risorse.
Esempio: non esistono sink aggregati
Se non esistono sink aggregati nella gerarchia delle risorse della voce di log, la voce di log viene inviata ai sink di log nel progetto di origine. Un sink a livello di progetto indirizza la voce di log alla destinazione del sink quando la voce di log corrisponde al filtro di inclusione del sink, ma non corrisponde a nessuno dei filtri di esclusione del sink.
Esempio: esiste un sink aggregato non intercettante
Supponi che esista un sink aggregato non intercettante nella gerarchia delle risorse per una voce di log. Dopo che Log Router invia la voce di log al sink aggregato non intercettante, si verifica quanto segue:
La route del sink aggregato non intercettante indirizza la voce di log alla destinazione del sink quando la voce di log corrisponde al filtro di inclusione, ma non corrisponde ad alcun filtro di esclusione.
Il router di log invia la voce di log ai sink di log nel progetto in cui ha avuto origine la voce di log.
Un sink a livello di progetto indirizza la voce di log alla destinazione del sink quando la voce di log corrisponde al filtro di inclusione del sink, ma non corrisponde a nessuno dei filtri di esclusione del sink.
Esempio: esiste un sink aggregato di intercettazione
Supponi che esista un sink aggregato di intercettazione nella gerarchia delle risorse per una voce di log. Dopo che Log Router invia la voce di log al sink aggregato di intercettazione, si verifica una delle seguenti situazioni:
La voce di log corrisponde al filtro di inclusione, ma non a nessun filtro di esclusione:
- La voce di log viene indirizzata alla destinazione del sink aggregato di intercettazione.
- La voce di log viene inviata al sink
_Required
nel progetto in cui è stata creata.
La voce di log non corrisponde al filtro di inclusione o corrisponde ad almeno un filtro di esclusione:
- La voce di log non viene instradata dal sink aggregato di intercettazione.
Il router di log invia la voce di log ai sink di log nel progetto in cui ha avuto origine la voce di log.
Un sink a livello di progetto indirizza la voce di log alla destinazione del sink quando la voce di log corrisponde al filtro di inclusione del sink, ma non corrisponde a nessuno dei filtri di esclusione del sink.
Filtri del sink di log
Ogni sink di log contiene un filtro di inclusione e può contenere più filtri di esclusione. Questi filtri determinano se il sink di log indirizza una voce di log alla destinazione del sink. Se non specifichi alcun filtro, ogni voce di log viene indirizzata alla destinazione del sink.
Una voce di log viene indirizzata da un sink di log in base a queste regole:
Se la voce di log non corrisponde al filtro di inclusione, non viene instradata. Quando un sink non specifica un filtro di inclusione, ogni voce di log corrisponde a quel filtro.
Se la voce di log corrisponde al filtro di inclusione e ad almeno un filtro di esclusione, non viene instradata.
Se la voce di log corrisponde al filtro di inclusione e non corrisponde ad alcun filtro di esclusione, viene indirizzata alla destinazione del sink.
I filtri in un sink di log vengono specificati utilizzando il linguaggio di query di Logging.
Non puoi utilizzare i filtri di esclusione per ridurre il consumo della tua
quota API entries.write
o il
numero di chiamate API entries.write
. I filtri di esclusione
vengono applicati dopo che le voci di log vengono ricevute dall'API Logging.
Sink di log creati dal sistema
Per ogni progetto, account di fatturazione, cartella e organizzazione Google Cloud ,
Cloud Logging crea due sink di log, uno denominato _Required
e l'altro
denominato _Default
. I filtri di inclusione ed esclusione per questi sink verificano
che ogni voce di log che raggiunge la risorsa venga indirizzata da uno di questi sink.
Entrambi i sink indirizzano i dati di log a un bucket di log che si trova nella stessa risorsa del
sink di log.
Il resto di questa sezione fornisce informazioni sui filtri e sulle destinazioni dei sink di log creati dal sistema.
Sink di log _Required
Il sink di log _Required
in una risorsa esegue il routing di un sottoinsieme di audit log al
bucket di log _Required
della risorsa.
Questo sink non specifica filtri di esclusione e il filtro di inclusione
è il seguente:
LOG_ID("cloudaudit.googleapis.com/activity") OR
LOG_ID("externalaudit.googleapis.com/activity") OR
LOG_ID("cloudaudit.googleapis.com/system_event") OR
LOG_ID("externalaudit.googleapis.com/system_event") OR
LOG_ID("cloudaudit.googleapis.com/access_transparency") OR
LOG_ID("externalaudit.googleapis.com/access_transparency")
Il sink di log _Required
corrisponde solo alle voci di log che hanno origine nella risorsa in cui è definito il sink di log _Required
. Ad esempio, supponiamo
che un sink di log indirizzi unavoce di logg delle attività dal progetto A
al progetto B
.
Poiché la voce di log non ha origine nel progetto B
, il sink di log _Required
nel progetto B
non instrada questa voce di log al bucket di log _Required
.
Non puoi modificare o eliminare il sink di log _Required
.
Sink di log _Default
Il sink di log _Default
in una risorsa indirizza tutte le voci di log
tranne quelle che corrispondono al filtro del sink di log _Required
al bucket di log _Default
della risorsa.
Poiché il filtro di inclusione per questo sink è vuoto, corrisponde a tutte le voci di log. Tuttavia, il filtro di esclusione è configurato nel seguente modo:
NOT LOG_ID("cloudaudit.googleapis.com/activity") AND
NOT LOG_ID("externalaudit.googleapis.com/activity") AND
NOT LOG_ID("cloudaudit.googleapis.com/system_event") AND
NOT LOG_ID("externalaudit.googleapis.com/system_event") AND
NOT LOG_ID("cloudaudit.googleapis.com/access_transparency") AND
NOT LOG_ID("externalaudit.googleapis.com/access_transparency")
Puoi modificare e disabilitare il sink di log _Default
. Ad esempio, puoi
modificare il sink di log _Default
e cambiare la destinazione. Puoi anche
modificare qualsiasi filtro esistente e aggiungere filtri di esclusione.
Destinazioni sink
La destinazione di un sink può trovarsi in una risorsa diversa dal sink. Ad esempio, puoi utilizzare un sink di log per indirizzare le voci di log da un progetto a un bucket di log archiviato in un progetto diverso.
Sono supportate le seguenti destinazioni:
- Google Cloud project
Seleziona questa destinazione quando vuoi che i sink di log nel progetto di destinazione reindirizzino le voci di log oppure quando hai creato un sink aggregato di intercettazione. I sink di log nel progetto che è la destinazione del sink possono reindirizzare le voci di log a qualsiasi destinazione supportata, tranne un progetto.
- Bucket di log
Seleziona questa destinazione quando vuoi archiviare i dati dei log in risorse gestite da Cloud Logging. I dati dei log archiviati nei bucket dei log possono essere visualizzati e analizzati utilizzando servizi come Esplora log e Analisi dei log.
Se vuoi unire i dati di log ad altri dati aziendali, puoi archiviarli in un bucket di log e creare un set di dati BigQuery collegato. Un set di dati collegato è un set di dati di sola lettura su cui è possibile eseguire query come su qualsiasi altro set di dati BigQuery.
- Set di dati BigQuery
- Seleziona questa destinazione quando vuoi unire i dati di log con altri dati aziendali. Il set di dati specificato deve essere abilitato alla scrittura. Non impostare la destinazione di un sink su un set di dati BigQuery collegato. I set di dati collegati sono di sola lettura.
- Bucket Cloud Storage
- Seleziona questa destinazione quando vuoi archiviare i dati di log a lungo termine. Il bucket Cloud Storage può trovarsi nello stesso progetto in cui hanno origine le voci di log o in un progetto diverso. Le voci di log vengono archiviate come file JSON.
- Argomento Pub/Sub
- Seleziona questa destinazione quando vuoi esportare i dati di log da Google Cloud e poi utilizzare integrazioni di terze parti come Splunk o Datadog. Le voci di log vengono formattate in JSON e poi indirizzate a un argomento Pub/Sub.
Limitazioni delle destinazioni
Questa sezione descrive le limitazioni specifiche per la destinazione:
- Se indirizzi le voci di log a un bucket di log in un progetto diverso, Error Reporting non le analizza. Google Cloud Per saperne di più, consulta la panoramica di Error Reporting.
- Se indirizzi le voci di log a un set di dati BigQuery, questo deve essere abilitato alla scrittura. Non puoi indirizzare le voci di log a set di dati collegati, che sono di sola lettura.
- Potrebbero essere necessarie diverse ore per l'avvio del routing delle voci di log per i nuovi sink che indirizzano i dati di log ai bucket Cloud Storage. Questi sink vengono elaborati ogni ora.
Si applicano le seguenti limitazioni quando la destinazione di un sink di log è un progetto Google Cloud :
- Esiste un limite di un hop.
- Le voci di log che corrispondono al filtro del
sink di log
_Required
vengono instradate al bucket di log_Required
del progetto di destinazione solo se hanno origine nel progetto di destinazione. - Solo i sink aggregati che si trovano nella gerarchia delle risorse di una voce di log elaborano la voce di log.
Ad esempio, supponiamo che la destinazione di un sink di log nel progetto
A
sia il progettoB
. Quindi, sono vere le seguenti affermazioni:- A causa del limite di un hop, i sink di log nel progetto
B
non possono reindirizzare le voci di log a un progetto Google Cloud . - Il bucket di log
_Required
del progettoB
archivia solo le voci di log che hanno origine nel progettoB
. Questo bucket di log non archivia voci di log provenienti da altre risorse, incluse quelle provenienti dal progettoA
. - Se la gerarchia delle risorse del progetto
A
e del progettoB
è diversa, una voce di log che un sink di log nel progettoA
indirizza al progettoB
non viene inviata ai sink aggregati nella gerarchia delle risorse del progettoB
. - Se il progetto
A
e il progettoB
hanno la stessa gerarchia delle risorse, le voci di log vengono inviate ai sink aggregati in quella gerarchia. Se una voce di log non viene intercettata da un sink aggregato, il router dei log la invia ai sink nel progettoA
.
In che modo il routing delle voci di log influisce sulle metriche basate su log
Le metriche basate su log sono metriche di Cloud Monitoring derivate dal contenuto delle voci di log. Ad esempio, puoi utilizzare una metrica basata sui log per conteggiare il numero di voci di log che contengono un messaggio specifico o per estrarre le informazioni sulla latenza registrate nelle voci di log. Puoi visualizzare le metriche basate sui log nei grafici di Cloud Monitoring e le norme di avviso possono monitorare queste metriche.
Le metriche basate su log definite dal sistema si applicano a livello di progetto. Le metriche basate su log definite dall'utente possono essere applicate a livello di progetto o di bucket di log. Le metriche basate su log con ambito di bucket sono utili quando utilizzi sink aggregati per instradare le voci di log a un bucket di log e quando instradi le voci di log da un progetto a un bucket di log in un altro progetto.
- Metriche basate su log definite dal sistema
-
Il router dei log conteggia una voce di log quando sono vere tutte le seguenti condizioni:
- La voce di log passa attraverso i sink di log del progetto in cui è definita la metrica basata su log.
La voce di log è archiviata in un bucket di log. Il bucket di log può trovarsi in qualsiasi progetto.
Ad esempio, supponiamo che il progetto
A
abbia un sink di log la cui destinazione è il progettoB
. Supponi inoltre che i sink di log nel progettoB
indirizzino le voci di log a un bucket di log. In questo scenario, le voci di log instradate dal progettoA
al progettoB
contribuiscono alle metriche basate su log definite dal sistema del progettoA
. Queste voci di log contribuiscono anche alle metriche basate su log definite dal sistema del progettoB
.
- Metriche basate su log definite dall'utente
-
Il router dei log conteggia una voce di log quando sono vere tutte le seguenti condizioni:
- La fatturazione è abilitata nel progetto in cui è definita la metrica basata su log.
- Per le metriche con ambito di bucket, la voce di log viene archiviata nel bucket di log in cui è definita la metrica basata su log.
- Per le metriche con ambito di progetto, la voce di log passa attraverso i sink di log del progetto in cui è definita la metrica basata su log.
Per ulteriori informazioni, consulta la panoramica delle metriche basate su log.
Best practice
Per le best practice sull'utilizzo del routing per la governance dei dati o per i casi d'uso comuni, consulta i seguenti documenti:
Dati dei log: una guida passo passo per superare le sfide comuni in materia di conformità
Governance dei dati: principi per la protezione e la gestione dei log
Esempi: centralizzare l'archiviazione dei log
Questa sezione descrive come potresti configurare l'archiviazione centralizzata. L'archiviazione centralizzata fornisce un unico punto in cui eseguire query sui dati dei log, il che semplifica le query quando cerchi tendenze o indaghi su problemi. Dal punto di vista della sicurezza, hai anche una posizione di archiviazione, che può semplificare le attività dei tuoi analisti della sicurezza.
Se centralizzi l'archiviazione dei log, valuta se inserire un vincolo nel progetto che archivia i dati di log. Un blocco può impedire l'eliminazione accidentale di un progetto. Per scoprire di più, consulta l'articolo Protezione dei progetti con blocchi.
Centralizzare l'archiviazione dei log per i progetti in una cartella
Supponiamo che tu gestisca una cartella e voglia centralizzare l'archiviazione delle voci di log. Per questo caso d'uso, puoi procedere nel seguente modo:
- Nella cartella, crea un progetto denominato
CentralStorage
. - Crea un sink aggregato di intercettazione per la tua cartella e configuralo
per indirizzare tutte le voci di log. Hai impostato la destinazione del sink in modo che sia il progetto denominato
CentralStorage
.
Quando arriva una voce di log che ha origine nella cartella o in una delle sue risorse secondarie, questa voce di log viene inviata al sink aggregato di intercettazione che hai creato. Questo sink instrada le voci di log
al progetto denominato CentralStorage
. I sink di log in questo progetto
elaborano le voci di log:
Il sink di log
_Default
indirizza al bucket di log_Default
tutte le voci di log che corrispondono al filtro del sink. Questo bucket di log è la tua posizione di archiviazione centralizzata.Il sink di log
_Required
indirizza al bucket di log_Required
le voci di log che corrispondono ai filtri del sink e che hanno origine nel progettoCentralStorage
. Questo bucket di log non è una posizione di archiviazione centralizzata. Tuttavia, puoi archiviare centralmente tutti i tuoi dati di log. Per un esempio, vedi Memorizzare i log di controllo in una posizione centrale.
Al termine dell'elaborazione del sink aggregato, la voce di log viene inviata al
sink di log _Required
nella
risorsa in cui è stata creata la voce di log. Quando la voce di log corrisponde
al filtro nel sink di log _Required
, viene indirizzata al
bucket di log _Required
della risorsa. Di conseguenza, ogni progetto Google Cloud nella tua cartella archivia le voci di log nel proprio bucket di log _Required
.
Centralizzare l'archiviazione dei log per un insieme di progetti
Puoi anche archiviare le voci di log in un'unica posizione quando non hai un'organizzazione o una cartella. Ad esempio, potresti:
- Crea un progetto denominato
CentralStorage
. - Per ogni progetto, tranne
CentralStorage
, modifica il sink di log_Default
e imposta la destinazione sul progetto denominatoCentralStorage
.
Potresti chiederti perché l'esempio precedente imposta la destinazione dei sink di log _Default
su un progetto anziché sul bucket di log _Default
in quel progetto. I motivi principali sono la semplicità e la coerenza.
Quando instradi le voci di log a un progetto, i sink di log nel progetto di destinazione controllano quali voci di log vengono archiviate e dove vengono archiviate.
ovvero centralizzi la funzionalità di filtro e destinazione. Se vuoi
modificare le voci di log archiviate o la loro posizione, devi
modificare solo i sink di log in un progetto.
Centralizza l'archiviazione dei log per gli audit log
Puoi archiviare centralmente le voci di log che corrispondono al
sink di log _Required
. Se vuoi archiviare queste voci di log
in un'unica posizione, esegui una delle seguenti operazioni:
Crea sink di log che indirizzano le voci di log corrispondenti al sink di log
_Required
a un bucket di log centralizzato.Configura i sink di log come nei due esempi precedenti, quindi aggiungi un sink di log nel progetto di destinazione che indirizza le voci di log che corrispondono al sink di log
_Required
a un bucket di log. Puoi anche modificare i filtri nel sink di log_Default
.
Prima di implementare una strategia di questo tipo, consulta le linee guida sui prezzi.
Prezzi
Per informazioni sui prezzi di Cloud Logging, consulta la pagina Prezzi di Google Cloud Observability.
Passaggi successivi
Per informazioni su come instradare e archiviare i dati di Cloud Logging, consulta i seguenti documenti:
Per creare sink per instradare le voci di log verso destinazioni supportate, vedi Instradare i log verso destinazioni supportate.
Per scoprire come creare sink aggregati in grado di indirizzare le voci di log dalle risorse nelle cartelle o nelle organizzazioni, consulta la panoramica dei sink aggregati.
Per informazioni sul formato delle voci di log instradate e su come vengono organizzati i log nelle destinazioni, consulta i seguenti documenti: