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 gli errori di configurazione o i risultati imprevisti.

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

Risolvere i problemi relativi ai log di routing

Questa sezione descrive come risolvere i problemi comuni durante l'indirizzamento dei log.

La destinazione contiene log indesiderati

Vengono visualizzati i log indirizzati a una destinazione e viene determinato che contiene log indesiderati.

Per risolvere questa condizione, aggiorna il valore filtri di esclusione per che instrada i log alla destinazione. I filtri di esclusione ti consentono di escludere l'invio di log selezionati a una destinazione.

Ad esempio, supponiamo che tu crei un sink aggregato per instradare i log di un'organizzazione a una destinazione. Per escludere il routing dei log di un progetto specifico 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

Il problema più comune relativo ai sink è che i log sembrano mancare in una destinazione del sink.

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

  • exports/byte_count: numero di byte nelle voci di log che sono stati instradati.
  • exports/log_entry_count: numero di voci di log inoltrate.
  • exports/error_count: numero di voci di log il cui routing non è riuscito.

Le metriche hanno etichette che registrano i conteggi per nome e destinazione del sink e ti verrà comunicato se il sink ha eseguito correttamente il routing dei dati dei log o in stato di errore. Per maggiori dettagli su come visualizzare le metriche, consulta Visualizza le metriche basate su log.

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

Latenza

  • Non sono state ricevute voci di log corrispondenti da quando hai creato o aggiornato il tuo sink. Vengono instradate 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 i log nella destinazione. I log arrivati in ritardo sono particolarmente comune per i sink che hanno configurato 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 di destinazione

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

    • Modifica il filtro del sink utilizzando Log Router nella console Google Cloud. Per verificare di aver inserito il filtro corretto, seleziona Anteprima dei log nel riquadro Modifica destinazione. Si apre Esplora log in una nuova scheda con il filtro precompilato. Per istruzioni sulla visualizzazione e la gestione dei sink, consulta Gestisci i sink.

Visualizza errori

Per ciascuna delle destinazioni di destinazione supportate, il logging fornisce messaggi di errore per i canali configurati in modo errato.

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

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

Log degli errori

Il metodo consigliato per esaminare in dettaglio gli errori relativi all'area di destinazione è visualizzare le voci del log degli errori generate dall'area di destinazione. Per informazioni dettagliate sulla visualizzazione Consulta Visualizzare i log utilizzando Esplora log.

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

Prima di copiare la query, sostituisci la variabile SINK_NAME con il nome del sink di cui stai tentando di risolvere il problema. Puoi trovare il nome del sink nella pagina Router di 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 tuo 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 scegliere come target l'origine dell'errore del sink; contiene la risorsa, il sink e il codice di errore interessati. Il campo labels.error_code contiene una descrizione abbreviata dell'errore che ti consente di sapere quale componente della destinazione deve essere riconfigurato.

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

Vai a Router dei log

Notifiche via email

Se hai effettuato la registrazione a un progetto Google Cloud o alla relativa risorsa principale come Contatto tecnico fondamentale, riceverai notifiche via email relative agli errori di configurazione del canale. Se non sono presenti Contatti tecnici necessari configurati per una risorsa, poi gli utenti elencati come Il proprietario del progetto IAM roles/owner per la risorsa riceve il .

Il messaggio email contiene le seguenti informazioni:

  • ID risorsa: il nome del progetto Google Cloud o di un'altra risorsa Google Cloud in cui è stato configurato l'emissario.
  • 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 breve della categoria di errore; ad esempio topic_not_found.
  • Dettagli errore: informazioni dettagliate sull'errore, tra cui e i suggerimenti per risolvere l'errore 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

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 del log generate dall'elemento di destinazione difettoso. Esaminare gli errori sottostanti consulta la sezione Log degli errori.

Tipi di errori di sink

Le sezioni seguenti descrivono categorie generali di errori relativi ai canali e come risolverli.

Destinazione errata

Se configuri un sink, ma visualizzi un errore di configurazione che indica che la destinazione impossibile trovare quando Logging ha tentato di eseguire il routing dei log. Ecco alcuni possibili motivi:

  • La configurazione del sink contiene un errore ortografico o 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 da usare un'altra o ricrearla con lo stesso nome.

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

Vai a Router dei log

Il sink inizia a instradare i log quando viene trovata la destinazione e Logging riceve nuovi log corrispondenti al filtro.

Gestione dei problemi dei sink

Se ha disattivato un sink interrompere l'archiviazione dei log in un bucket di log, ma continuare a visualizzare i log con routing. e poi attendere qualche minuto per l'applicazione delle modifiche al sink.

Problemi di autorizzazione

Quando un sink tenta di indirizzare una voce di log, ma non dispone dell'appropriata Autorizzazioni IAM per la destinazione del sink, riporta un errore, che puoi visualizzare, e viene saltata la voce di log.

Quando crei un sink, all'account di servizio del sink devono essere concesse le autorizzazioni di destinazione appropriate. Se crei il sink nella console Google Cloud nello stesso progetto Google Cloud, in genere la console assegna automaticamente queste autorizzazioni. Tuttavia, se crei l'eseguiamo in un altro progetto Google Cloud o utilizzando gcloud CLI o l'API Logging, devi configurare le autorizzazioni manualmente.

Se vengono visualizzati errori relativi alle autorizzazioni per il sink, aggiungi i necessari autorizzazioni o aggiornare il sink destinazione. Per istruzioni su come aggiornare queste autorizzazioni, consulta Autorizzazioni di destinazione.

Esiste 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 i log quando le autorizzazioni vengono corrette e Logging riceve nuovi log corrispondenti al filtro.

Problemi relativi ai criteri 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 flusso, il flusso non può instradare alla destinazione selezionata e genera un errore.

Se visualizzi errori relativi ai criteri dell'organizzazione, puoi: seguenti:

  • Aggiorna il criterio dell'organizzazione per la destinazione per rimuovere i vincoli impedire al sink di eseguire il routing delle voci di log; questo presuppone che tu abbia le autorizzazioni appropriate per aggiornare il criterio dell'organizzazione.

    Potresti verificare se esiste una constraints/gcp.resourceLocationslimitazione della località della risorsa. Questo vincolo determina le posizioni in cui è possibile archiviare i dati. Inoltre, alcuni servizi supportano vincoli che potrebbero influire su un'area di destinazione dei log. Ad esempio, quando viene selezionata una destinazione Pub/Sub, potrebbero essere applicate diverse limitazioni. Per un elenco dei possibili vincoli, vedi Vincoli dei criteri dell'organizzazione.

    Per le istruzioni, consulta l'articolo Creare e modificare i criteri.

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

    Vai a Router dei log

Il sink inizia a instradare i log quando il criterio dell'organizzazione non impedisce più al sink di scrivere nella destinazione e i nuovi log che corrispondono al tuo filtro vengono ricevuti da Logging.

Problemi relativi alle chiavi di crittografia

Se usi le chiavi di crittografia, gestite con Cloud Key Management Service o da te, per criptare i dati nella destinazione del sink, potresti riscontrare errori correlati. Di seguito sono riportati alcuni possibili problemi e le relative soluzioni:

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

    • Anche se l'emissario è 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 sia presente un account di fatturazione collegato al progetto Google Cloud valido che contenga la chiave. Se un account di fatturazione non è collegato alla progetto Google Cloud, abilita la fatturazione per quel progetto Google Cloud oppure usano una chiave Cloud KMS contenuta in un progetto Google Cloud che abbia un account di fatturazione valido collegato.

  • La chiave Cloud KMS non può essere trovata.

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

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

  • La posizione della chiave Cloud KMS non corrisponde alla posizione 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 va a buon fine e l'emissario non riesce a instradare i dati alla destinazione.

    • Utilizza una chiave Cloud KMS contenuta in un progetto Google Cloud la cui regione corrisponde alla destinazione dell'emissario.

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

    • Anche se il sink è stato creato correttamente con autorizzazioni dell'account di servizio corrette, questo errore viene visualizzato se la destinazione del sink utilizza una chiave di crittografia 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, vengono applicate quote specifiche della destinazione Progetti Google Cloud in cui sono stati creati i sink. Se le quote sono esaurite, l'emissario interrompe il routing dei log alla destinazione.

Ad esempio, quando esegui il routing dei dati a BigQuery, potresti vedere che indica che la quota di inserimento di flussi di dati per tabella è stata superata per a una determinata tabella nel tuo set di dati. In questo caso, anche il sink potrebbe instradare gli errori troppe voci di log troppo rapidamente. Lo stesso concetto si applica agli altri modelli destinazioni sink, ad esempio 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 corrisponda a un numero inferiore di voci di log. Potresti usare lo Funzione sample in il filtro per selezionare una frazione del numero totale di voci di log.

Il sink inizia a inoltrare i log alla destinazione quando lo hai aggiornato per trovare meno corrispondenze per le voci di log o quando le quote vengono aggiornate.

Per informazioni dettagliate sui limiti che potrebbero essere applicati durante l'instradamento dei log, consulta le informazioni sulla quota della destinazione appropriata:

Oltre ai tipi di errori relativi alla destinazione generali, di seguito sono riportati i tipi di errori specifici per la destinazione più comuni e come risolverli.

Errori di routing verso Cloud Storage

Di seguito sono riportati gli errori più comuni durante l'instradamento dei log in Cloud Storage:

  • Voci di log in ritardo:

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

    • shard del file di log instradati con il suffisso An ("Aggiungi") contiene le voci di log arrivate in ritardo. Se la destinazione Cloud Storage presenta un'interruzione del servizio, Cloud Logging mette in buffer i dati fino al termine dell'interruzione.

  • Impossibile concedere le autorizzazioni corrette alla destinazione:

    • Anche se il sink è stato creato correttamente con autorizzazioni dell'account di servizio corrette, questo errore viene visualizzato se il modello di controllo dell'accesso Il bucket Cloud Storage è stato impostato su accesso uniforme quando è stato creato un bucket.

    • Per i bucket Cloud Storage esistenti, puoi modificare l'accesso di controllo per i primi 90 giorni dopo la creazione del bucket utilizzando Scheda Autorizzazioni. Per i nuovi bucket, seleziona l'accesso Granulare durante la creazione del bucket. Per maggiori dettagli, consulta Creare 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:

    • Log trasmessi in flussi alla tabella nel tuo set di dati BigQuery non corrispondono allo schema della tabella corrente. I problemi comuni includono il tentativo di indirizzare le voci di log con tipi di dati diversi, che causa una mancata corrispondenza dello schema. Ad esempio: uno dei campi della voce di log è un numero intero, mentre nello schema ha un tipo di stringa.

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

    • BigQuery supporta il caricamento dati nidificati nelle relative tabelle. Tuttavia, quando carichi i dati da Logging, il numero massimo il limite di profondità nidificato per una colonna è 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 ne determina il nome. Per le tabelle con frazioni di date, il formato di denominazione è export_errors_YYYYMMDD. Per le tabelle partizionate, il formato dei nomi è export_errors. Per informazioni sullo schema delle tabelle di errore e su come evitare future mancate corrispondenze del tipo di campo, consulta Mancate corrispondenze nello schema.

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

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

    • Puoi aggiornare l'obiettivo in modo da instradare i log in Cloud Storage e utilizzare un job di caricamento BigQuery. Consulta le 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 al suo interno:

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

    • Assicurati che sia presente account di fatturazione collegato al tuo progetto Google Cloud. Se un account di fatturazione non è collegato alla destinazione del sink progetto Google Cloud, abilita la fatturazione per quel progetto Google Cloud oppure aggiornare la destinazione del sink in modo che si trovi in Progetto Google Cloud a cui è collegato un account di fatturazione valido.

  • Il set di dati contiene voci di log duplicate:

    • Le voci di log duplicate possono verificarsi in caso di errori durante lo streaming dei log in BigQuery, ad esempio a causa di tentativi di nuovo invio o configurazioni errate. Cloud Logging deduplica le voci di log con gli stessi timestamp e insertId al momento della query. BigQuery non elimina le voci duplicate dei log.

    • 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 i log in Esplora log esclusi con il sink. Puoi comunque visualizzare questi log se è vera una delle seguenti condizioni:

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

    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; visualizzi una copia dello stesso log che intendevi escludere.

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

  • Hai accesso alle visualizzazioni nel bucket dei 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 affinare l'ambito della ricerca al progetto o al bucket Google Cloud di origine.

Risolvere i problemi di archiviazione dei log

Perché non riesco a eliminare questo bucket?

Se stai tentando di eliminare un bucket:

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

  • Determina se il bucket è bloccato elencandone gli attributi. Se il bucket è bloccato, controlla il periodo di conservazione. Non puoi eliminare un bucket bloccato finché tutti i log nel bucket hanno soddisfatto 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 projects.locations.buckets.links.list dell'API.

Quali account di servizio indirizzano i log al mio bucket?

Per determinare se gli account di servizio dispongono delle autorizzazioni IAM per indirizzare i log al tuo bucket, svolgi i seguenti passaggi:

  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 per Ruoli. Viene visualizzata una tabella con tutti i ruoli e le entità IAM associati al tuo progetto Google Cloud.

  3. Nella sezione Filtro della tabella casella di testo, 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 relativo ID contiene la stringa gserviceaccount.com.

  4. (Facoltativo) Se vuoi rimuovere un account di servizio dalla possibilità di eseguire il routing log al tuo progetto Google Cloud, seleziona casella di controllo per l'account di servizio, quindi fai clic su Rimuovi.

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

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

Se utilizzi Esplora log per accedere a questi log e visualizzare quelli esclusi dall'emissario _Default, la visualizzazione potrebbe essere impostata a livello di progetto Google Cloud.

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