Indirizzare le voci di log

Questo documento spiega come Cloud Logging instrada le voci di log ricevute da Google Cloud. Esistono diversi tipi di destinazioni per il routing. Ad esempio, puoi indirizzare le voci di log a una destinazione come un bucket di log, che memorizza le voci di log. Se vuoi esportare i dati di log in una destinazione di terze parti, puoi instradare le voci di log a Pub/Sub. Inoltre, una voce di log può essere inoltrata a più destinazioni.

A grandi linee, Cloud Logging instrada e archivia le voci di log nel seguente modo:

Figura che illustra come Cloud Logging instrada 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 tramite i sink presenti nella gerarchia delle risorse della voce. I sink controllano il modo in cui le voci di log vengono instradate alle destinazioni.

Un router dei log archivia temporaneamente una voce di log. Questo comportamento consente di evitare interruzioni e interruzioni temporanee che potrebbero verificarsi quando una voce di log passa attraverso i sink. Lo spazio di archiviazione temporaneo non protegge da errori di configurazione.

Lo spazio di archiviazione temporaneo di un router dei log è diverso dallo spazio di archiviazione a lungo termine fornito dai bucket di log.

Le voci del log in arrivo con timestamp precedenti al periodo di conservazione dei log o che sono successive 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 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 inoltrata, il sink di log la invia alla destinazione specificata dal sink di log. Questa destinazione può essere un progetto, una posizione di archiviazione o un servizio.

I canali di log appartengono a una determinata Google Cloud risorsa: Google Cloud progetti, account di fatturazione, cartelle e organizzazioni. Queste risorse contengono anche più destinazioni per i log. Quando una risorsa riceve una voce di log, ogni sink di log nella risorsa valuta la voce in modo indipendente. Di conseguenza, più destinazioni di log possono instradare la stessa voce di log.

Per impostazione predefinita, i dati dei log vengono archiviati nel progetto da cui provengono. Tuttavia, esistono diversi motivi per cui potresti voler modificare questa configurazione:

  • Per centralizzare l'archiviazione dei dati dei log.
  • Per unire i dati dei log ad altri dati aziendali.
  • Organizzare i dati dei log in modo utile per te.
  • Per trasmettere i log ad altre applicazioni, altri repository o terne parti. Ad esempio, potresti voler esportare i log da Google Cloud in modo da poterli visualizzare su una piattaforma di terze parti. Per esportare le voci di log, crea un sink di log che indirizzi le voci di log a Pub/Sub.

Un sink di log configurato in modo errato non inoltra le voci di log. Quando un sink è configurato in modo errato, vengono scritte voci di log che segnalano i dettagli dell'errore. Inoltre, viene inviata un'email ai contatti essenziali della risorsa. Per saperne di più, vedi Risoluzione dei problemi: visualizzare gli errori.

I sink dei log non possono indirizzare in modo retroattivo le voci dei log. In altre parole, un'sink di log non può indirizzare una voce di log ricevuta prima della creazione dell'area di destinazione. Analogamente, se un sink è configurato in modo errato, indirizzerà solo le voci di log che arrivano dopo la risoluzione dell'errore di configurazione. Tuttavia, puoi copiare in modo retroattivo i dati dei log da un bucket dei log a Cloud Storage. Per ulteriori informazioni, consulta la sezione Copiare i log.

Supporto per organizzazioni e cartelle

Per aiutarti a gestire i dati dei log in un'organizzazione o una cartella, puoi svolgere quanto segue:

  • Puoi creare sink aggregati, che indirizzano le voci di log per un'organizzazione o una cartella e le relative sottocartelle 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 nella gerarchia delle risorse può influire sul routing delle risorse più in basso nella gerarchia. I canali di destinazione 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, ad eccezione del fatto che la voce di log viene sempre inviata al _Required sink dei log nella risorsa da cui ha origine la voce di log.

  • Puoi configurare le Impostazioni predefinite delle risorse per specificare la configurazione dell'emissario _Default creato dal sistema per le nuove risorse in un'organizzazione o in una cartella. Ad esempio, puoi utilizzare queste impostazioni per disattivare la destinazione _Default o specificare i filtri al suo interno.

Esempi di routing

Questa sezione illustra come una voce di log che ha origine in un progetto possa passare attraverso gli sink nella gerarchia delle risorse.

Esempio: non esistono sink aggregati

Se nella gerarchia delle risorse della voce di log non esistono sink aggregati, la voce di log viene inviata ai sink di log del progetto da cui ha origine. Un sink a livello di progetto inoltra la voce di log alla destinazione del sink quando 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

Supponiamo che nella gerarchia delle risorse per una voce di log esista un sink aggregato non intercettante. Dopo che Log Router invia la voce di log al consumer aggregato non intercettante, si verifica quanto segue:

  1. Il sink aggregato non intercettante inoltra la voce di log alla destinazione del sink quando corrisponde al filtro di inclusione, ma non corrisponde a nessun filtro di esclusione.

  2. Il router di log invia la voce di log ai sink di log nel progetto da cui ha avuto origine la voce di log.

    Un sink a livello di progetto inoltra la voce di log alla destinazione del sink quando 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

Supponiamo che nella gerarchia delle risorse per una voce di log esista un sink aggregato di intercettazione. Dopo che Log Router invia la voce di log al consumer aggregato che intercetta, si verifica una delle seguenti condizioni:

  • La voce di log corrisponde al filtro di inclusione, ma non corrisponde a nessun filtro di esclusione:

    1. La voce di log viene indirizzata alla destinazione del sink aggregato che intercetta.
    2. La voce di log viene inviata all'emissario _Required nel progetto in cui è stata generata.
  • La voce di log non corrisponde al filtro di inclusione o corrisponde almeno a un filtro di esclusione:

    1. La voce di log non viene inoltrata dall'emissario aggregato di intercettazione.
    2. Il router di log invia la voce di log ai sink di log nel progetto da cui ha avuto origine la voce di log.

      Un sink a livello di progetto inoltra la voce di log alla destinazione del sink quando 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 inoltra una voce di log alla destinazione del sink. Se non specifichi filtri, 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 inoltrata. 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 inoltrata.

  • Se la voce di log corrisponde al filtro di inclusione e non corrisponde a nessun filtro di esclusione, viene indirizzata alla destinazione del sink.

I filtri in unsink di log vengono specificati utilizzando il linguaggio di query di Logging.

Non puoi utilizzare i filtri di esclusione per ridurre il consumo della quota API entries.write o il numero di chiamate API entries.write. I filtri di esclusione vengono applicati dopo che le voci di log sono state ricevute dall'API Logging.

Sink di log creati dal sistema

Per ogni Google Cloud progetto, account di fatturazione, cartella e organizzazione, Cloud Logging crea due destinazioni dei log, una denominata _Required e l'altra denominata _Default. I filtri di inclusione ed esclusione per questi sink assicurano che ogni voce di log che raggiunge la risorsa venga indirizzata da uno di questi sink. Entrambi gli sgravi inviano i dati di log a un bucket di log che si trova nella stessa risorsa dello sink di log.

Il resto di questa sezione fornisce informazioni sui filtri e sulle destinazioni dei sink di log creati dal sistema.

_Required sink di log

Il sink di log _Required in una risorsa inoltra un sottoinsieme di audit log al _Required bucket di log della risorsa. Questo sink non specifica filtri di esclusione e il filtro di inclusione è come mostrato di seguito:

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'area di sink di log indirizzi una voce di log delle attività dal progetto A al progetto B. Poiché la voce di log non ha avuto origine nel progetto B, il sink di log _Required nel progetto B non instrada questa voce al bucket di log _Required.

Non puoi modificare o eliminare il sink di log _Required.

_Default sink di log

Il sink di log _Default in una risorsa inoltra 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 del log. Tuttavia, il filtro di esclusione è configurato come segue:

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 disattivare 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 unsink di log per instradare le voci di log da un progetto a un bucket di log archiviato in un altro progetto.

Sono supportate le seguenti destinazioni:

ProgettoGoogle Cloud

Seleziona questa destinazione quando vuoi che gli accumuli di log nel progetto di destinazione reindirizzino le voci di log o quando hai creato un accumulo aggregato di intercettazione. Gli elementi di destinazione dei log nel progetto che funge da destinazione del sink possono reindirizzare le voci di log a qualsiasi destinazione supportata, tranne a un progetto.

Bucket di log

Seleziona questa destinazione quando vuoi archiviare i dati dei log nelle 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 dei log ad altri dati aziendali. Il set di dati specificato deve essere abilitato alla scrittura. Non impostare la destinazione di un sink come un set di dati BigQuery collegato. I set di dati collegati sono di sola lettura.
Bucket Cloud Storage
Seleziona questa destinazione se vuoi archiviare i dati dei 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 dei 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 inoltrate a un argomento Pub/Sub.

Limitazioni delle destinazioni

Questa sezione descrive le limitazioni specifiche per le destinazioni:

  • Se indirizzi le voci di log a un bucket di log in un Google Cloud progetto diverso, Error Reporting non le analizza. Per ulteriori informazioni, consulta la Panoramica di Error Reporting.
  • Se inoltri le voci di log a un set di dati BigQuery, il set di dati BigQuery deve essere abilitato alla scrittura. Non puoi instradare le voci di log ai set di dati collegati, che sono di sola lettura.
  • Potrebbero essere necessarie diverse ore per iniziare a inoltrare le voci di log ai nuovi sink che indirizzano i dati di log ai bucket Cloud Storage. Questi sink vengono elaborati ogni ora.
  • Quando la destinazione di un'area di destinazione dei log è un Google Cloud project:

    • Esiste un limite di un hop.
    • Le voci di log che corrispondono al filtro del _Required sink di log vengono instradate al bucket di log _Required del progetto di destinazione solo se provengono dal progetto di destinazione.
    • Solo gli sink aggregati presenti 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 progetto B. Di conseguenza, le seguenti affermazioni sono vere:

    • A causa del limite di un hop, i canali di log nel progetto B non possono reindirizzare le voci di log a un progetto Google Cloud .
    • Il bucket di log _Required del progetto B archivia solo le voci di log che hanno avuto origine nel progetto B. Questo bucket di log non memorizza voci di log generate in altre risorse, incluse quelle generate nel progetto A.
    • Se la gerarchia delle risorse del progetto A e del progetto B è diversa, una voce di log che un sink di log nel progetto A inoltra al progetto B non viene inviata ai canali aggregati nella gerarchia delle risorse del progetto B.
    • Se il progetto A e il progetto B hanno la stessa gerarchia delle risorse, le voci di log vengono inviate agli 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 del progetto A.

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 ricavate dal contenuto delle voci di log. Ad esempio, puoi utilizzare una metrica basata su log per conteggiare il numero di voci di log che contengono un determinato messaggio o per estrarre le informazioni sulla latenza registrate nelle voci di log. Puoi visualizzare le metriche basate su log nei grafici di Cloud Monitoring e i criteri di avviso possono monitorarle.

Le metriche basate su log definite dal sistema si applicano a livello di progetto. Le metriche basate su log predefinite 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 i sink aggregati per instradare le voci di log a un bucket di log e quando instrada 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 tutte le seguenti condizioni sono vere:
  • La voce di log passa attraverso i sink dei log del progetto in cui è definita la metrica basata su log.
  • La voce di log viene 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 sia il progetto B. Supponiamo inoltre che i sink di log nel progetto B indirizzino le voci di log a un bucket di log. In questo scenario, le voci di log instradate dal progetto A al progetto B contribuiscono alle metriche basate su log definite dal sistema del progetto A. Queste voci di log contribuiscono anche alle metriche basate su log definite dal sistema del progetto B.

Metriche basate su log definite dall'utente
Il router dei log conteggia una voce di log quando tutte le seguenti condizioni sono vere:
  • La fatturazione è abilitata nel progetto in cui è definita la metrica basata su log.
  • Per le metriche basate su bucket, la voce di log viene archiviata nel bucket di log in cui è definita la metrica basata su log.
  • Per le metriche basate su 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:

Esempi: centralizza lo spazio di archiviazione dei log

Questa sezione illustra come configurare lo spazio di archiviazione centralizzato. Lo spazio di archiviazione centralizzato offre un unico punto in cui eseguire query sui dati dei log, il che semplifica le query quando cerchi tendenze o esamini i problemi. Dal punto di vista della sicurezza, hai anche un'unica posizione di archiviazione, che può semplificare le attività degli analisti della sicurezza.

Centralizzare lo spazio di archiviazione dei log per i progetti in una cartella

Supponiamo che tu gestisca una cartella e voglia centralizzare lo spazio di archiviazione delle voci di log. Per questo caso d'uso, puoi procedere nel seguente modo:

  1. Nella cartella, crea un progetto denominato CentralStorage.
  2. Crea un sink aggregato di intercettazione per la cartella e configuralo per instradare tutte le voci di log. Imposti la destinazione del sink come il progetto denominato CentralStorage.

Quando arriva una voce di log che ha origine nella cartella o in una delle sue risorse secondarie, viene inviata all'accumulo intercettante 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 _Default sink di log invia al _Default bucket di log tutte le voci di log che corrispondono al filtro del sink. Questo bucket di log è la posizione di archiviazione centralizzata.

  • L'incanalamento dei log _Required instrada al _Required bucket di log le voci di log corrispondenti ai filtri dell'incanalamento e che hanno origine nel progetto CentralStorage. Questo bucket di log non è un luogo di archiviazione centralizzato. Tuttavia, puoi archiviare centralmente tutti i tuoi dati di log. Per un esempio, consulta Memorizzare i log di controllo in una posizione centrale.

Al termine dell'elaborazione del sink aggregato, la voce di log viene inviata al _Requiredsink di log nella risorsa in cui ha avuto origine. 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 Google Cloud progetto nella cartella archivia le voci di log nel proprio bucket di log _Required.

Centralizzare lo spazio di archiviazione dei log per un insieme di progetti

Puoi anche archiviare le voci di log in un'unica posizione se non hai un'organizzazione o una cartella. Ad esempio, potresti:

  1. Crea un progetto denominato CentralStorage.
  2. Per ogni progetto, ad eccezione di CentralStorage, modifica il sink di log _Default e imposta la destinazione come il progetto denominato CentralStorage.

Potresti chiederti perché nell'esempio precedente la destinazione dei sink dei log _Default sia impostata su un progetto anziché sul bucket di log _Default al suo interno. I motivi principali sono semplicità e coerenza. Quando indirizzi le voci di log a un progetto, gli elementi di destinazione dei log nel progetto di destinazione controllano quali voci di log vengono archiviate e dove. In altre parole, centralizzi la funzionalità di filtro e destinazione. Se vuoi cambiare le voci di log da archiviare o la posizione in cui vengono archiviate, devi solo modificare gli elementi di destinazione dei log in un progetto.

Centralizza lo spazio di archiviazione dei log per gli audit log

Puoi archiviare centralmente le voci di log corrispondenti al sink di log _Required. Se vuoi archiviare queste voci di log centralmente, svolgi una delle seguenti operazioni:

  • Crea sink dei log che indirizzino le voci di log corrispondenti al _Required sink di log a un bucket di log centralizzato.

  • Configura i sink dei log come nei due esempi precedenti, quindi aggiungi un sink di log nel progetto di destinazione che indirizzi le voci di log corrispondenti al sink di log _Required a un bucket dei log. Puoi anche modificare i filtri nel _Default sink di log.

Prima di implementare una strategia di questo tipo, consulta le linee guida sui prezzi.

Prezzi

Per informazioni sui prezzi di Cloud Logging, consulta Prezzi di Google Cloud Observability.

Passaggi successivi

Per aiutarti a indirizzare e archiviare i dati di Cloud Logging, consulta i seguenti documenti: