Risolvere i problemi di routing e archiviazione dei log

Questo documento spiega i problemi comuni di routing e archiviazione e come utilizzare la consoleGoogle Cloud per visualizzare e risolvere i problemi relativi a errori di configurazione o risultati imprevisti.

Per informazioni generali sulla visualizzazione dei dati di log, vedi Visualizzare i log nelle destinazioni sink.

Risolvere i problemi di routing dei log

Questa sezione descrive come risolvere i problemi comuni durante il routing delle voci di log.

La destinazione contiene voci di log indesiderate

Visualizzi le voci di log indirizzate a una destinazione e determini che la destinazione contiene voci di log indesiderate.

Per risolvere questo problema, aggiorna i filtri di esclusione per i sink che indirizzano le voci di log alla destinazione. I filtri di esclusione ti consentono di escludere le voci di log selezionate dal routing verso una destinazione.

Ad esempio, supponi di creare un sink aggregato per indirizzare le voci di log in un'organizzazione a una destinazione. Per escludere le voci di log di un progetto specifico dal routing alla destinazione, aggiungi il seguente filtro di esclusione al sink:

logName:projects/PROJECT_ID

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

Nella destinazione mancano voci di log

Forse il problema più comune relativo ai sink è che le voci di log sembrano mancare dalla destinazione di un sink.

In alcuni casi, non viene generato un errore, ma potresti notare che le voci di log non sono disponibili quando tenti di accedervi nella destinazione. Se sospetti che il sink non indirizzi correttamente le voci di log, controlla le metriche basate sui log di sistema del sink:

  • exports/byte_count: numero di byte nelle voci di log di cui è stato eseguito il routing.
  • 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 in base al nome del sink e della destinazione e ti consentono di sapere se il sink sta instradando le voci di log correttamente o meno. Per informazioni dettagliate su come visualizzare le metriche, consulta la panoramica delle metriche basate su log.

Se le metriche del sink indicano che non sta funzionando come previsto, ecco alcuni possibili motivi e cosa fare al riguardo:

Latenza

  • Non sono state ricevute voci di log corrispondenti da quando hai creato o aggiornato il sink; vengono indirizzate solo le 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 le voci di log nella destinazione. Le voci di log in arrivo in ritardo sono particolarmente comuni per i sink che hanno configurato i bucket Cloud Storage come destinazioni. Prova ad attendere qualche ora e controlla di nuovo la destinazione.

L'ambito/il filtro di visualizzazione non è corretto

Errore nel filtro sink

  • Il filtro del sink non è corretto e non acquisisce le voci di log che ti aspettavi di vedere 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 Anteprima dei log nel riquadro Modifica sink. Si apre Esplora log in una nuova scheda con il filtro precompilato. Per istruzioni su come visualizzare e gestire i sink, vedi Gestire i sink.

Visualizza errori

Per ciascuna delle destinazioni sink supportate, Logging fornisce messaggi di errore per i sink configurati in modo errato.

Esistono diversi modi per visualizzare questi errori relativi al sink. Questi metodi sono descritti nelle sezioni seguenti:

  • Visualizza i log degli errori generati per il sink.
  • Ricevi notifiche di errore del lavello via email. Il mittente di questa email è logging-noreply@google.com.

Log degli errori

Il metodo consigliato per esaminare in dettaglio gli errori relativi al sink è visualizzare le voci del log degli errori generate dal sink. Per informazioni dettagliate sulla visualizzazione delle voci di log, vedi Visualizzare i log utilizzando Esplora log.

Puoi utilizzare la seguente query nel riquadro dell'editor di query in 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 per cui stai cercando di risolvere il problema. 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="SINK_NAME"

Ad esempio, se il nome del sink è my-sink-123, la voce di log potrebbe avere un aspetto simile al seguente:

{
   errorGroups: [
   0: {
   id: "COXu96aNws6BiQE"
   }]
   insertId: "170up6jan"
   labels: {
      activity_type_name: "LoggingSinkConfigErrorV2"
      destination: "pubsub.googleapis.com/projects/my-project/topics/my-topic"
      error_code: "topic_not_found"
      error_detail: ""
      sink_id: "my-sink-123"
   }
   logName: "projects/my-project/logs/logging.googleapis.com%2Fsink_error"
   receiveTimestamp: "2024-07-11T14:41:42.578823830Z"
   resource: {
   labels: {
      destination: "pubsub.googleapis.com/projects/my-project/topics/my-topic"
      name: "my-sink-123"
      project_id: "my-project"
   }
   type: "logging_sink"
   }
   severity: "ERROR"
   textPayload: "Cloud Logging sink configuration error in my-project, sink my-sink-123: topic_not_found ()"
   timestamp: "2024-07-11T14:41:41.296157014Z"
}

Il campo LogEntry labels e le relative informazioni chiave-valore nidificate ti aiutano a individuare 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 descrizione abbreviata dell'errore, che indica quale componente del sink deve essere riconfigurato.

Per risolvere questo errore, modifica il sink. Ad esempio, puoi modificare il sink utilizzando la pagina Router dei log:

Vai a Router dei log

Notifiche via email

Contatti essenziali invia notifiche via email di errore di configurazione del sink ai contatti assegnati alla categoria di notifica tecnica per un progetto Google Cloud o la relativa risorsa padre. Se la risorsa non ha un contatto configurato per le notifiche tecniche, gli utenti elencati come proprietario del progetto IAM roles/owner per la risorsa ricevono la notifica via email.

Il messaggio email contiene le seguenti informazioni:

  • ID risorsa: il nome del Google Cloud progetto o di un'altra Google Cloud risorsa 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, pubsub.googleapis.com/projects/PROJECT_ID/topics/TOPIC_ID
  • Codice di errore: descrizione abbreviata della categoria di errore, ad esempio topic_not_found.
  • Dettagli dell'errore: informazioni dettagliate sull'errore, inclusi consigli per la risoluzione del problema sottostante.

Il mittente di questa email è logging-noreply@google.com.

Per visualizzare e gestire i sink, utilizza la pagina Router dei log:

Vai a Router dei log

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

Tipi di errori del sink

Le sezioni seguenti descrivono le categorie generali di errori relativi al sink e come risolverli.

Destinazione errata

Se configuri un sink, ma poi visualizzi un errore di configurazione che indica che la destinazione non è stata trovata quando Logging ha tentato di instradare le voci di log, ecco alcuni possibili motivi:

  • La configurazione del sink contiene un errore ortografico 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 per utilizzare una destinazione diversa esistente o ricreare la destinazione con lo stesso nome.

Per risolvere questi tipi di errori, modifica il sink. Ad esempio, puoi modificare il sink utilizzando la pagina Router dei log:

Vai a Router dei log

Il sink inizia a instradare le voci di log quando viene trovata la destinazione e Logging riceve nuove voci di log che corrispondono al filtro.

Gestione dei problemi relativi ai sink

Se hai disattivato un sink per interrompere l'archiviazione delle voci di log in un bucket di log, ma continui a vedere il routing delle voci di log, attendi qualche minuto affinché le modifiche al sink vengano applicate.

Problemi di autorizzazione

Quando 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, al account di servizio del sink devono essere concesse le autorizzazioni di destinazione appropriate. Se crei il sink nella console Google Cloud nello stesso progettoGoogle Cloud , la console Google Cloud in genere assegna automaticamente queste autorizzazioni. Tuttavia, se crei il sink in un progettoGoogle Cloud diverso o utilizzando gcloud CLI o l'API Logging, devi configurare le autorizzazioni manualmente.

Se visualizzi errori relativi alle autorizzazioni per il sink, aggiungi le autorizzazioni necessarie o aggiorna il sink per utilizzare una destinazione diversa. Per istruzioni su come aggiornare queste autorizzazioni, vedi Autorizzazioni di 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 a instradare le voci di log quando vengono corretti i permessi e Logging riceve nuove voci di log che corrispondono al filtro.

Problemi relativi alle policy dell'organizzazione

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

Se vengono visualizzati errori relativi alle norme dell'organizzazione, puoi procedere nel seguente modo:

  • Aggiorna il criterio dell'organizzazione per la destinazione per rimuovere i vincoli che impediscono al sink di eseguire il routing delle voci di log. Ciò presuppone che tu disponga delle autorizzazioni appropriate per aggiornare il criterio dell'organizzazione.

    Potresti verificare se esiste una limitazione relativa alla località delle risorse (constraints/gcp.resourceLocations). Questo vincolo determina le località in cui è possibile archiviare i dati. Inoltre, alcuni servizi supportano vincoli che potrebbero influire su un sink di log. Ad esempio, esistono diverse limitazioni che potrebbero essere applicate quando viene selezionata una destinazione Pub/Sub. Per un elenco dei possibili vincoli, consulta la pagina Vincoli delle policy dell'organizzazione.

    Per le istruzioni, vedi Creare e modificare le norme.

  • Se non riesci ad aggiornare i criteri dell'organizzazione, aggiorna il sink nella pagina Log Router per utilizzare una destinazione conforme.

    Vai a Router dei log

Il sink inizia a instradare le voci di log quando i criteri dell'organizzazione non impediscono più al sink di scrivere nella destinazione e Logging riceve nuove voci di log che corrispondono al filtro.

Problemi con la chiave 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 errori correlati. Ecco alcuni possibili problemi e modi per risolverli:

  • La fatturazione non viene 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 è presente un account di fatturazione valido associato al progetto Google Cloud che contiene la chiave.

    • Assicurati che esista un account di fatturazione valido collegato al Google Cloud progetto che contiene la chiave. Se un account di fatturazione non è collegato al progettoGoogle Cloud , abilita la fatturazione per questo 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.

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

    • Utilizza una chiave Cloud KMS valida di un progettoGoogle Cloud esistente.

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

    • Se il Google Cloud progetto che contiene la chiave Cloud KMS si trova in una regione diversa da quella della destinazione, la criptografia 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 al 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. Verifica inoltre che l'API Cloud KMS sia abilitata.

Problemi relativi alle quote

Quando i sink scrivono voci di log, le quote specifiche per la destinazione vengono applicate ai progettiGoogle Cloud in cui sono stati creati i sink. Se le quote sono esaurite, il sink smette di instradare le voci di log alla destinazione.

Ad esempio, quando instradi i dati a BigQuery, potresti visualizzare un errore che ti comunica che la quota diinserimento di flussi di datig per tabella è stata superata per una determinata tabella nel tuo 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 instradati aggiornando il filtro del sink in modo che trovi meno corrispondenze per le voci di log. Puoi utilizzare la funzione sample nel filtro per selezionare una frazione del numero totale di voci di log.

Quando la quota è disponibile, il sink esegue il routing delle voci di log alla destinazione del sink.

Per informazioni dettagliate sui limiti che potrebbero essere applicati quando indirizzi le voci di log, consulta le informazioni sulle quote della destinazione appropriata:

Oltre ai tipi di errori di destinazione generali, ecco i tipi di errori specifici della destinazione più comuni e come risolverli.

Errori di routing a Cloud Storage

Di seguito sono riportati gli errori più comuni durante il routing delle voci di log a Cloud Storage:

  • Voci di log arrivate in ritardo:

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

    • Gli shard dei file di log instradati con il suffisso An ("Append") contengono le voci di log arrivate in ritardo. Se la destinazione Cloud Storage subisce un'interruzione, Cloud Logging memorizza i dati nel buffer fino al termine dell'interruzione.

  • Impossibile concedere le autorizzazioni corrette alla destinazione:

    • Verifica che il account di servizio del sink di log disponga delle autorizzazioni corrette. Per ulteriori informazioni, consulta la sezione Problemi di autorizzazione di questo documento.

Errori di routing a BigQuery

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

  • Schema della tabella non valido:

    • Le voci di log trasmesse alla tabella nel set di dati BigQuery non corrispondono allo schema attuale della tabella. I problemi comuni includono il tentativo di instradare le voci di log con tipi di dati diversi, il che causa 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 stringa.

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

    • BigQuery supporta il caricamento di dati nidificati nelle sue tabelle. Tuttavia, quando carichi dati da Logging, il limite massimo di profondità di nidificazione 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 tabella determina il nome della tabella. Per le tabelle partizionate per data, 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 futuri mancati corrispondenze dei tipi di campi, vedi Mancate corrispondenze nello schema.

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

    • Le voci di log trasmesse in streaming alla tabella BigQuery partizionata non rientrano nei limiti di tempo consentiti. BigQuery non accetta voci di log troppo lontane nel passato o nel futuro.

    • Puoi aggiornare il sink per indirizzare queste voci di log a Cloud Storage e utilizzare un job di caricamento BigQuery. Per ulteriori istruzioni, consulta la documentazione di BigQuery.

  • Il set di dati non consente all'account di servizio associato al sink di log di scrivere al suo interno:

    • Anche se il sink è stato creato correttamente con le autorizzazioniaccount di serviziot corrette, questo messaggio di errore viene visualizzato se non è presente un account di fatturazione valido associato al progetto Google Cloud che contiene 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 progettoGoogle Cloud di destinazione del sink, abilita la fatturazione per questo Google Cloud progetto o aggiorna la destinazione del sink in modo che si trovi in unGoogle Cloud progetto a cui è collegato un account di fatturazione valido.

  • Il set di dati contiene voci di log duplicate:

    • Le voci di log duplicate possono verificarsi quando si verificano errori durante lo streaming delle voci di log in BigQuery, anche a causa di nuovi tentativi o configurazioni errate. Cloud Logging deduplica le voci di log con lo stesso timestamp e insertId al momento della query. BigQuery non elimina le 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
    
  • Le voci di log vengono compilate nuovamente dopo un incidente di Cloud Logging:

    Logging genera automaticamente tabelle con un prefisso backfill_ nell'ambito di un'operazione di backfill che si verifica quando un incidente di Cloud Logging impedisce il routing dei dati di log a BigQuery.

    Le tabelle con il prefisso backfill_ contengono tutte le voci di log che dovevano essere indirizzate a BigQuery durante l'intervallo di tempo dell'incidente. Queste tabelle potrebbero contenere alcune voci di log che sono state indirizzate correttamente alla tabella specificata dal sink.

    Per evitare dati duplicati, ti consigliamo di unire i dati delle tabelle di backfill nelle tabelle originali e poi eliminare le tabelle di backfill.

Errori di routing ai bucket Cloud Logging

Potresti riscontrare una situazione in cui puoi visualizzare le voci di log in Esplora log che hai escluso con il sink. Puoi comunque visualizzare queste voci di log se si verifica una delle seguenti condizioni:

  • Stai eseguendo la query nel progetto Google Cloud che ha generato le voci di log.

    Per risolvere il problema, verifica di eseguire la query nelGoogle Cloud progetto corretto.

  • Le voci di log escluse sono state inviate 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 verificare di non includere le voci di log nei filtri di altri sink.

  • Hai accesso alle visualizzazioni nel bucket di log in cui sono state inviate le voci di log. In questo caso, puoi visualizzare queste voci di log per impostazione predefinita.

    Per evitare di visualizzare queste voci di log in Esplora log, puoi perfezionare l'ambito della ricerca in base al progetto o al bucket di origine Google Cloud .

Risolvere i problemi di archiviazione dei log

Perché non riesco a eliminare questo bucket?

Se stai tentando di eliminare un bucket:

  • Verifica che il bucket di log non abbia un set di dati BigQuery collegato. Non puoi eliminare un bucket dei 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 log, esegui il comando gcloud logging links list o il metodo API projects.locations.buckets.links.list.

Quali service account eseguono il routing dei log al mio bucket?

Per determinare se alcuni service account dispongono delle autorizzazioni IAM per instradare i log al tuo bucket, procedi nel seguente modo:

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

    Vai a IAM

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

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

  3. Nella casella di testo Filtro della tabella, inserisci Logs Bucket Writer.

    Vengono visualizzate tutte le entità con il ruolo Writer bucket log. 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 tuo progetto Google Cloud , seleziona la casella di controllo per il account di servizio e fai clic su Rimuovi.

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

Potresti visualizzare i log in un bucket di log in un progetto centralizzato, che aggrega i log di tutta l'organizzazione. Google Cloud

Se utilizzi Esplora log per accedere a questi log e visualizzare i log che hai escluso dal sink _Default, la visualizzazione potrebbe essere impostata a livello di progettoGoogle Cloud .

Per risolvere il problema, seleziona Visualizzazione log nel menu Definisci ambito e poi seleziona la visualizzazione log associata al bucket _Default nel tuo progettoGoogle Cloud . Non dovresti più visualizzare i log esclusi.