Risolvere i problemi di routing e archiviazione dei log

Questo documento illustra i problemi comuni di routing e archiviazione e come utilizzare la console Google Cloud per visualizzare e risolvere errori di configurazione o risultati inaspettati.

Per informazioni generali sull'utilizzo dei log nelle destinazioni sink, consulta Visualizzare i log nelle destinazioni sink.

Risolvere i problemi relativi ai log di routing

Questa sezione descrive come risolvere i problemi comuni relativi al routing dei log.

La destinazione contiene log indesiderati

Stai visualizzando i log indirizzati a una destinazione e determini che la destinazione contiene log indesiderati.

Per risolvere questa condizione, aggiorna i filtri di esclusione per i sink che instradano i log verso la destinazione. I filtri di esclusione consentono di escludere il routing a una destinazione dei log selezionati.

Ad esempio, supponiamo di creare un sink aggregato per eseguire il routing dei log di un'organizzazione verso una destinazione. Per escludere i log di un progetto specifico dal routing alla destinazione, aggiungi il seguente filtro di esclusione al sink:

logName:projects/PROJECT_ID

Puoi anche escludere i log da più progetti utilizzando l'operatore logico OR per unire le clausole logName.

Nella destinazione mancano i log

Forse il problema più comune relativo al sink è dovuto al fatto che i log sembrano non essere presenti in una destinazione del sink.

In alcuni casi, non viene generato un errore, ma potresti notare che i log non sono disponibili quando provi ad accedervi nella tua destinazione. Se sospetti che il routing dei log del sink sia errato, controlla le metriche basate su log di sistema del sink:

  • exports/byte_count: numero di byte nelle voci di log il cui routing è stato eseguito.
  • exports/log_entry_count: numero di voci di log instradate.
  • exports/error_count: numero di voci di log il cui routing non è riuscito.

Le metriche hanno etichette che registrano i conteggi per nome del sink e nome destinazione e indicano se il sink ha eseguito correttamente o meno o meno i dati dei log. Per maggiori dettagli su come visualizzare le metriche, consulta Visualizzare le metriche basate su log.

Se le metriche del sink indicano che le prestazioni del sink non sono quelle previste, ecco alcuni possibili motivi e le relative azioni:

Latenza

  • Non sono state ricevute voci di log corrispondenti da quando hai creato o aggiornato il sink; vengono instradate solo nuove voci di log.

    Prova ad attendere un'ora e controlla di nuovo la destinazione.

  • Le voci di log corrispondenti arrivano in ritardo.

    Potrebbe verificarsi un ritardo prima che tu possa visualizzare i log nella destinazione. I log che arrivano in ritardo sono particolarmente comuni per i sink che hanno configurato bucket Cloud Storage come destinazioni. Prova ad attendere qualche ora e a controllare di nuovo la destinazione.

La visualizzazione dell'ambito/del filtro non è corretta

Errore nel filtro del sink

  • Il filtro del sink non è corretto e non acquisisce i log che ti aspettavi di visualizzare nella destinazione.

    • Modifica il filtro del sink utilizzando il router dei log nella console Google Cloud. Per verificare di aver inserito il filtro corretto, seleziona Visualizza l'anteprima dei log nel riquadro Modifica sink. Esplora log in una nuova scheda con il filtro precompilato viene aperto. Per istruzioni sulla visualizzazione e sulla gestione dei sink, consulta Gestire i sink.

Visualizza errori

Per ciascuna delle destinazioni dei sink supportate, Logging fornisce messaggi di errore per i sink non configurati correttamente.

Esistono diversi modi per visualizzare questi errori relativi al sink, descritti nelle seguenti sezioni:

  • Visualizza i log degli errori generati per il sink.
  • Ricevi notifiche via email relative agli errori del sink.

Log degli errori

Il metodo consigliato per esaminare in dettaglio gli errori relativi al sink è visualizzare le voci di log degli errori generate dal sink. Per maggiori dettagli sulla visualizzazione dei log, consulta Visualizzare i log utilizzando Esplora log.

Puoi utilizzare la seguente query nel riquadro dell'editor query di Esplora log per esaminare i log degli errori del sink. La stessa query funziona nell'API Logging e in gcloud CLI.

Prima di copiare la query, sostituisci la variabile SINK_NAME con il nome del sink di cui stai tentando di risolvere i problemi. Puoi trovare il nome del sink nella pagina Router dei log della console Google Cloud.

logName:"logging.googleapis.com%2Fsink_error"
resource.type="logging_sink"
resource.labels.name="<var>SINK_NAME</var>"

Ad esempio, se il nome del sink è my-sink-123, la voce di log potrebbe essere simile alla seguente:

{
  "textPayload": "Cloud Logging export config error in my-logs-project, export sink my-sink-123: dataset_not_found ()",
  "insertId": "12akhzyb14452",
  "resource": {
    "type": "logging_sink",
    "labels": {
      "project_id": "my-logs-test-project",
      "destination": "",
      "name": "my-sink-123"
    }
  },
  "timestamp": "2021-08-02T17:01:28.620961700Z",
  "severity": "ERROR",
  "labels": {
    "error_code": "dataset_not_found",
    ...
    "destination": "bigquery.googleapis.com/projects/my-logs-project/datasets/my-dataset",
    "sink_id": "my-sink-123",
    "activity_type_name": "LoggingSinkConfigErrorV2"
  },
  "logName": "projects/cloud-logs-test-project/logs/logging.googleapis.com%2Fsink_error",
  "receiveTimestamp": "2021-08-02T17:01:30.148869575Z"
}

Il campo LogEntry labels e le informazioni nidificate sulle coppie chiave-valore ti aiutano a scegliere come target l'origine dell'errore del sink; contiene la risorsa interessata, il sink interessato e il codice di errore. Il campo labels.error_code contiene una breve descrizione dell'errore, che ti consente di sapere quale componente del sink deve essere riconfigurato.

Per aggiornare il sink, utilizza il router dei log.

Nella console Google Cloud, vai alla pagina Router dei log:

Vai a Router dei log

Se usi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Logging.

Notifiche via email

Se hai sottoscritto un abbonamento a un progetto Google Cloud o alla relativa risorsa padre come contatto tecnico essenziale, riceverai notifiche via email relative a un errore di configurazione del sink. Se non sono stati configurati contatti tecnici necessari per una risorsa, gli utenti elencati come proprietario del progetto roles/owner per la risorsa riceveranno la notifica via email.

Il messaggio e-mail contiene le seguenti informazioni:

  • ID risorsa: il nome del progetto Google Cloud o di un'altra risorsa Google Cloud in cui è stato configurato il sink.
  • Nome sink: il nome del sink che contiene l'errore di configurazione.
  • Destinazione sink: il percorso completo della destinazione di routing del sink; ad esempio, bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID
  • Codice di errore: descrizione abbreviata della categoria di errore, ad esempio dataset_not_found.
  • Dettagli errore: informazioni dettagliate sull'errore, inclusi consigli per risolverlo.

Per visualizzare e gestire i sink, utilizza il router dei log.

Nella console Google Cloud, vai alla pagina Router dei log:

Vai a Router dei log

Se usi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Logging.

Eventuali errori di configurazione del sink che si applicano alla risorsa vengono visualizzati nell'elenco come Cloud Logging sink configuration error. Ogni errore contiene un link a una delle voci di log generate dal sink difettoso. Per esaminare gli errori sottostanti in dettaglio, consulta la sezione Log degli errori.

Tipi di errori del sink

Le seguenti sezioni descrivono ampie categorie di errori relativi ai sink e come risolverli.

Destinazione errata

Se configuri un sink, ma visualizzi un errore di configurazione che indica che non è stato possibile trovare la destinazione quando Logging ha tentato di eseguire il routing dei log, ecco alcune possibili cause:

  • La configurazione del sink contiene un errore di ortografia o un altro errore di formattazione nella destinazione del sink specificata.

    Devi aggiornare la configurazione del sink per specificare correttamente la destinazione esistente.

  • La destinazione specificata potrebbe essere stata eliminata.

    Puoi modificare la configurazione del sink in modo che utilizzi una destinazione esistente diversa o ricrearla con lo stesso nome.

In ogni caso, per risolvere eventuali problemi, vai alla pagina Router dei log.

Nella console Google Cloud, vai alla pagina Router dei log:

Vai a Router dei log

Se usi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Logging.

Il sink avvia il routing dei log quando viene trovata la destinazione e i nuovi log corrispondenti al filtro vengono ricevuti da Logging.

Gestione dei problemi dei sink

Se hai disabilitato un sink per interrompere l'archiviazione dei log in un bucket di log, ma continuare a visualizzare i log con routing, attendi qualche minuto per l'applicazione delle modifiche al sink.

Problemi relativi alle autorizzazioni

Se un sink tenta di instradare una voce di log, ma non dispone delle autorizzazioni IAM appropriate per la destinazione del sink, il sink segnala un errore che puoi visualizzare e ignora la voce di log.

Quando crei un sink, è necessario concedere all'account di servizio del sink le autorizzazioni di destinazione appropriate. Se crei il sink nella console Google Cloud nello stesso progetto Google Cloud, la console Google Cloud assegna queste autorizzazioni automaticamente. Se crei il sink in un altro progetto Google Cloud oppure utilizzando gcloud CLI o l'API Logging, devi configurare le autorizzazioni manualmente.

Se vengono visualizzati errori relativi alle autorizzazioni per il sink, aggiungi le autorizzazioni necessarie alla destinazione o aggiorna il sink in modo che utilizzi una destinazione diversa. Per istruzioni su come aggiornare queste autorizzazioni, consulta Autorizzazioni per la destinazione.

Si verifica un leggero ritardo tra la creazione del sink e l'utilizzo del nuovo account di servizio del sink per autorizzare la scrittura nella destinazione. Il sink inizia il routing dei log quando le autorizzazioni vengono corrette e i nuovi log corrispondenti al filtro vengono ricevuti da Logging.

Problemi relativi ai criteri dell'organizzazione

Se stai tentando di instradare una voce di log, ma noti un criterio dell'organizzazione che impedisce a Logging di scrivere nella destinazione del sink, il sink non potrà instradare la destinazione alla destinazione selezionata e segnala un errore.

Se visualizzi errori relativi ai criteri dell'organizzazione, puoi procedere come segue:

  • Aggiorna il criterio dell'organizzazione per la destinazione per rimuovere i vincoli che impediscono al sink di accedere alle voci di log di routing. Ciò presuppone che tu disponga delle autorizzazioni appropriate per aggiornare il criterio dell'organizzazione. Per istruzioni, consulta la pagina Creare e modificare i criteri.

  • Se non riesci ad aggiornare il criterio dell'organizzazione, aggiorna il sink nella pagina Router dei log in modo da utilizzare una destinazione conforme.

    Nella console Google Cloud, vai alla pagina Router dei log:

    Vai a Router dei log

    Se usi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Logging.

Il sink avvia il routing dei log quando il criterio dell'organizzazione non blocca più la scrittura nella destinazione e i nuovi log corrispondenti al filtro vengono ricevuti da Logging.

Problemi relativi alle chiavi di crittografia

Se utilizzi chiavi di crittografia, gestite con Cloud Key Management Service o da te, per criptare i dati nella destinazione del sink, potresti visualizzare gli errori correlati. Di seguito sono riportati alcuni possibili problemi e alcuni modi per risolverli:

  • La fatturazione non è abilitata per il progetto Google Cloud che contiene la chiave Cloud KMS.

    • Anche se il sink è stato creato correttamente con la destinazione corretta, questo messaggio di errore viene visualizzato se non esiste un account di fatturazione valido associato al progetto Google Cloud contenente la chiave.

    • Assicurati che esista un account di fatturazione collegato al progetto Google Cloud valido contenente la chiave. Se un account di fatturazione non è collegato al progetto Google Cloud, abilita la fatturazione per quel progetto Google Cloud o utilizza una chiave Cloud KMS contenuta in un progetto Google Cloud a cui è collegato un account di fatturazione valido.

  • Impossibile trovare la chiave Cloud KMS.

    • Non è stato trovato il progetto Google Cloud che contiene la chiave Cloud KMS configurata per criptare i dati.

    • Usa una chiave Cloud KMS valida di un progetto Google Cloud esistente.

  • La posizione della chiave Cloud KMS non corrisponde a quella della destinazione.

    • Se il progetto Google Cloud che contiene la chiave Cloud KMS si trova in una regione diversa da quella della destinazione, la crittografia non riesce e il sink non può instradare i dati a quella destinazione.

    • Utilizza una chiave Cloud KMS contenuta in un progetto Google Cloud la cui regione corrisponde alla destinazione del sink.

  • L'accesso alla chiave di crittografia è negato all'account di servizio del sink.

    • Anche se il sink è stato creato correttamente con le autorizzazioni dell'account di servizio corrette, questo messaggio di errore viene visualizzato se la destinazione del sink utilizza una chiave di crittografia che non concede all'account di servizio autorizzazioni sufficienti per criptare o decriptare i dati.

    • Concedi il ruolo Autore crittografia/decrittografia CryptoKey di Cloud KMS per l'account di servizio specificato nel campo writerIdentity del sink per la chiave utilizzata nella destinazione. Assicurati inoltre che l'API Cloud KMS sia abilitata.

Problemi relativi alle quote

Quando i sink scrivono i log, ai progetti Google Cloud in cui sono stati creati i sink vengono applicate quote specifiche della destinazione. Se le quote sono esaurite, il sink interrompe il routing dei log alla destinazione.

Ad esempio, quando esegui il routing dei dati a BigQuery, potresti visualizzare un errore che indica che la quota di inserimento di flussi di dati per tabella è stata superata per una determinata tabella nel set di dati. In questo caso, il sink potrebbe instradare troppe voci di log troppo rapidamente. Lo stesso concetto si applica alle altre destinazioni sink supportate, ad esempio agli argomenti Pub/Sub.

Per risolvere i problemi di esaurimento della quota, riduci la quantità di dati di log indirizzati tramite l'aggiornamento del filtro del sink in modo che corrisponda a un numero inferiore di voci di log. Puoi utilizzare la funzione sample nel filtro per selezionare una frazione del numero totale di voci di log.

Il sink inizia il routing dei log alla destinazione quando lo hai aggiornato in modo che corrisponda a un numero inferiore di voci di log o quando le quote vengono aggiornate.

Per maggiori dettagli sui limiti che potrebbero essere applicati quando esegui il routing dei log, rivedi le informazioni sulla quota della destinazione appropriata:

Oltre ai tipi di errori del sink generali, di seguito sono riportati i tipi di errori più comuni specifici per la destinazione e come puoi correggerli.

Routing degli errori a Cloud Storage

Di seguito sono riportati gli errori più comuni durante il routing dei log in Cloud Storage:

  • Voci di log in arrivo:

    • Le voci di log instradate vengono salvate nei bucket Cloud Storage in batch orari. Potrebbero essere necessarie da 2 a 3 ore prima che inizino a essere visualizzati le prime voci.

    • Gli shard del file di log instradati con il suffisso An ("Aggiungi") contengono le voci di log arrivate in ritardo. Se si verifica un'interruzione nella destinazione Cloud Storage, Cloud Logging esegue il buffering dei dati fino al termine dell'interruzione.

  • Impossibile concedere le autorizzazioni corrette alla destinazione:

    • Anche se il sink è stato creato correttamente con le autorizzazioni dell'account di servizio corrette, questo messaggio di errore viene visualizzato se il modello di controllo dell'accesso per il bucket Cloud Storage era impostato su accesso uniforme al momento della creazione del bucket.

    • Per i bucket Cloud Storage esistenti, puoi modificare il modello di controllo dell'accesso per i primi 90 giorni dopo la creazione del bucket utilizzando la scheda Autorizzazioni. Per i nuovi bucket, seleziona il modello di controllo dell'accesso granulare durante la creazione dei bucket. Per maggiori dettagli, consulta Creazione di bucket Cloud Storage.

Errori di routing a BigQuery

Di seguito sono riportati gli errori più comuni durante il routing dei log a BigQuery:

  • Schema della tabella non valido:

    • I flussi di log trasmessi alla tabella nel set di dati BigQuery non corrispondono allo schema della tabella attuale. I problemi comuni includono il tentativo di instradare le voci di log con tipi di dati diversi, causando una mancata corrispondenza dello schema. Ad esempio, uno dei campi della voce di log è un numero intero, mentre una colonna corrispondente nello schema ha un tipo di stringa.

    • Assicurati che le voci di log corrispondano allo schema della tabella. Dopo aver corretto l'origine dell'errore, puoi rinominare la tabella attuale e consentire a Logging di crearne di nuovo.

    • BigQuery supporta il caricamento di dati nidificati nelle sue tabelle. Tuttavia, quando carichi dati da Logging, il limite massimo di profondità nidificata per una colonna è di 13 livelli.

    Quando BigQuery identifica una mancata corrispondenza dello schema, crea una tabella all'interno del set di dati corrispondente per archiviare le informazioni sull'errore. Il tipo di una tabella determina il nome della tabella. Per le tabelle con frazioni di date, il formato di denominazione è export_errors_YYYYMMDD. Per le tabelle partizionate, il formato di denominazione è export_errors. Per informazioni sullo schema delle tabelle degli errori e su come evitare future mancate corrispondenze dei tipi di campo, consulta Discrepanze nello schema.

  • Le voci di log non rientrano nei limiti di tempo consentiti:

    • I flussi di log trasmessi nella tabella BigQuery partizionata non rientrano nei limiti di tempo consentiti. BigQuery non accetta log troppo lontani nel passato o nel futuro.

    • Puoi aggiornare il sink per instradare i log a Cloud Storage e utilizzare un job di caricamento BigQuery. Consulta la documentazione di BigQuery per ulteriori istruzioni.

  • Il set di dati non consente all'account di servizio associato al sink di log di eseguire la scrittura nel set di dati:

    • Anche se il sink è stato creato correttamente con le autorizzazioni dell'account di servizio corrette, questo messaggio di errore viene visualizzato se al progetto Google Cloud non è associato un account di fatturazione valido contenente la destinazione del sink.

    • Assicurati che esista un account di fatturazione collegato al tuo progetto Google Cloud. Se un account di fatturazione non è collegato al progetto Google Cloud di destinazione del sink, abilita la fatturazione per quel progetto Google Cloud o aggiorna la destinazione del sink in modo che si trovi in un progetto Google Cloud a cui è collegato un account di fatturazione valido.

  • Il set di dati contiene voci di log duplicate:

    • Possono verificarsi voci di log duplicate in caso di errori nei flussi di log in BigQuery, inclusi nuovi tentativi o configurazioni errate. Cloud Logging deduplica le voci di log con gli stessi timestamp e insertId al momento della query. BigQuery non elimina voci di log duplicate.

    • Per ignorare le voci di log duplicate in BigQuery, includi la clausola SELECT DISTINCT nella query. Ad esempio:

    SELECT DISTINCT insertId, timestamp FROM TABLE_NAME
    

Errori di routing ai bucket Cloud Logging

Potresti riscontrare una situazione in cui puoi visualizzare in Esplora log i log che hai escluso con il sink. Puoi comunque visualizzare questi log se una delle seguenti condizioni è vera:

  • Stai eseguendo la query nel progetto Google Cloud che ha generato i log.

    Per risolvere il problema, assicurati di eseguire la query nel progetto Google Cloud corretto.

  • I log esclusi sono stati inviati a più bucket di log. Stai visualizzando una copia dello stesso log che intendevi escludere.

    Per risolvere il problema, controlla i sink nella pagina Router dei log per assicurarti di non includere i log nei filtri di altri sink.

  • Hai accesso alle viste nel bucket di log in cui sono stati inviati i log. In questo caso, puoi visualizzare i log per impostazione predefinita.

    Per evitare di visualizzare questi log in Esplora log, puoi perfezionare l'ambito della ricerca con il progetto o il bucket Google Cloud di origine.

Risolvere i problemi di archiviazione dei log

Perché non posso eliminare questo bucket?

Se stai cercando di eliminare un bucket, segui questi passaggi:

  • Assicurati di disporre delle autorizzazioni corrette per eliminare il bucket. Per l'elenco delle autorizzazioni necessarie, consulta Controllo dell'accesso con IAM.

  • Determina se il bucket è bloccato elencando gli attributi del bucket. Se il bucket è bloccato, controlla il periodo di conservazione del bucket. Non puoi eliminare un bucket bloccato finché tutti i log nel bucket non hanno completato il periodo di conservazione del bucket.

  • Verifica che il bucket di log non abbia un set di dati BigQuery collegato. Non puoi eliminare un bucket di log con un set di dati collegato.

    Il seguente errore viene visualizzato in risposta a un comando delete su un bucket di log con un set di dati collegato:

    FAILED_PRECONDITION: This bucket is used for advanced analytics and has an active link. The link must be deleted first before deleting the bucket
    

    Per elencare i link associati a un bucket di log, esegui il comando [gcloud logging links list][link-list] o il metodo API projects.locations.buckets.links.list.

Quali account di servizio eseguono il routing dei log al mio bucket?

Per determinare se alcuni account di servizio dispongono di autorizzazioni IAM per instradare i log al bucket, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina IAM:

    Vai a IAM

    Se usi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo IAM e amministrazione.

  2. Nella scheda Autorizzazioni, visualizza la scheda per Ruoli. Viene visualizzata una tabella con tutti i ruoli e le entità IAM associati al progetto Google Cloud.

  3. Nella casella di testo Filtro della tabella, inserisci Writer bucket di log.

    Tutte le entità con il ruolo Writer bucket di log sono visualizzate. Se un'entità è un account di servizio, il suo ID contiene la stringa gserviceaccount.com.

  4. (Facoltativo) Se vuoi impedire a un account di servizio di instradare i log al progetto Google Cloud, seleziona la casella di controllo relativa all'account di servizio e fai clic su Rimuovi.

Perché vedo i log di un progetto Google Cloud anche se li ho esclusi dal sink _Default?

È possibile che tu stia visualizzando i log in un bucket di log in un progetto Google Cloud centralizzato, che aggrega i log di tutta l'organizzazione.

Se utilizzi Esplora log per accedere a questi log e vedi i log che hai escluso dal sink _Default, la vista potrebbe essere limitata al livello del progetto Google Cloud.

Per risolvere il problema, seleziona Ambito in base all'archiviazione nel riquadro Perfeziona ambito, quindi seleziona il bucket _Default nel progetto Google Cloud. Non dovresti più visualizzare i log esclusi.