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

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 durante l'indirizzamento dei log.

La destinazione contiene log indesiderati

Stai visualizzando i log inviati a una destinazione e stabilisci che la destinazione contiene log indesiderati.

Per risolvere questa condizione, aggiorna i filtri di esclusione per i sink che indirizzano i log alla destinazione. I filtri di esclusione ti consentono di escludere la destinazione di routing di alcuni log.

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 di più progetti utilizzando l'operatore OR logico 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 non sono disponibili quando provi ad accedervi nella 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 di cui non è stato possibile eseguire il routing.

Le metriche hanno etichette che registrano i conteggi in base al nome dell'eseguitore e al nome della destinazione e ti consentono di sapere se l'eseguitore inoltra correttamente i dati dei log o se si verificano errori. Per informazioni dettagliate su come visualizzare le metriche, consulta la panoramica delle metriche basate su log.

Se le metriche del tuo sink indicano che il rendimento non è quello previsto, 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 essere necessario attendere un po' di tempo prima di poter visualizzare i log nella destinazione. I log in ritardo sono particolarmente comuni per i sink che hanno configurato i bucket Cloud Storage come destinazioni. Prova ad attendere alcune ore e controlla di nuovo la destinazione.

L'ambito/il filtro di visualizzazione non è corretto

  • L'ambito che utilizzi per visualizzare i log nelle destinazioni del bucket di logging non è corretto.

    Limita la ricerca a una o più visualizzazioni di archiviazione come segue:

  • L'intervallo di tempo utilizzato per [selezionare e visualizzare i dati nella destinazione di destinazione][export-log-bucket è troppo limitato.

    Prova ad ampliare l'intervallo di tempo che utilizzi per selezionare i dati nella destinazione di destinazione.

Errore nel filtro di destinazione

  • Il filtro della destinazione non è corretto e non acquisisce i log che ti aspettavi di vedere nella 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 aprirà Esplora log in una nuova scheda con il filtro precompilato. Per istruzioni su come visualizzare e gestire i canali, consulta Gestire i canali.

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 log, consulta Visualizza 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 tuo sink. La stessa query funziona nell'API Logging e nella gcloud CLI.

Prima di copiare la query, sostituisci la variabile SINK_NAME con il nome del canale di destinazione di cui stai tentando di risolvere il problema. Puoi trovare il nome del tuo sink nella pagina Log Router 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 labels LogEntry 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 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 necessari invia notifiche via email relative agli errori di configurazione del sink ai contatti assegnati alla categoria di notifica tecnica per un progetto Google Cloud o la relativa risorsa principale. Se la risorsa non ha un contatto configurato per le notifiche tecniche, gli utenti elencati come Proprietario IAM progetto roles/owner per la risorsa ricevono la notifica via email.

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 del 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 sull'errore: informazioni dettagliate sull'errore, inclusi consigli per la risoluzione dell'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. Per esaminare in dettaglio gli errori di fondo, consulta la sezione Log di errore.

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 non è stato possibile trovare la destinazione quando Logging ha tentato di instradare i 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 dell'emissario in modo da utilizzare una destinazione diversa esistente o ricreare la destinazione con lo stesso nome.

Per risolvere questi tipi di errori, [modifica il tuo sink]export-manage-sink. Ad esempio, puoi modificare il sink utilizzando la 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.

Problemi di gestione dei sink

Se hai disattivato un sink per interrompere lo stoccaggio dei log in un bucket dei log, ma continui a vedere i log instradati, 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 registra un errore che puoi visualizzare e salta la voce di log.

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

Se vedi errori relativi alle autorizzazioni per il tuo sink, aggiungi le autorizzazioni necessarie o aggiorna il sink in modo da utilizzare una destinazione diversa. 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 vengono visualizzati errori relativi ai criteri dell'organizzazione, puoi procedere nel seguente modo:

  • Aggiorna il criterio dell'organizzazione per la destinazione per rimuovere le limitazioni che impediscono all'elaboratore di instradare le voci di log. Ciò presuppone che tu disponga delle 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 unsink di log. Ad esempio, quando viene selezionata una destinazione Pub/Sub, potrebbero essere applicate diverse limitazioni. Per un elenco dei possibili vincoli, consulta Vincoli dei criteri dell'organizzazione.

    Per le istruzioni, vedi Creare e modificare i criteri.

  • 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 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 con le chiavi di crittografia

Se utilizzi chiavi di crittografia, gestite con Cloud Key Management Service o da te, per criptare i dati nella destinazione dell'emissario, potresti visualizzare 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 al progetto Google Cloud, attiva la fatturazione per il progetto Google Cloud o utilizza una chiave Cloud KMS contenuta in un progetto Google Cloud a cui è collegato un account di fatturazione valido.

  • 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 progetto Google Cloud esistente.

  • 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'obiettivo 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 dell'emissario.

  • 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. Verifica inoltre che l'API Cloud KMS sia attivata.

Problemi relativi alle quote

Quando i sink scrivono i log, le quote specifiche per la destinazione si applicano ai 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 indirizzi i dati a BigQuery, potresti visualizzare un messaggio di errore che ti informa che la quota di inserimento di flussi di dati per flusso di dati per tabella è stata superata per una determinata tabella del tuo set di dati. In questo caso, il sink potrebbe instradare troppe voci di log troppo rapidamente. Lo stesso vale per le altre destinazioni di destinazione supportate, ad esempio per gli 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. Puoi utilizzare la funzione sample nel 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 dei log con routing vengono salvate nei bucket Cloud Storage in batch orari. Potrebbero essere necessarie da 2 a 3 ore prima che inizino a comparire le prime voci.

    • I frammenti di file di log indirizzati con il suffisso An ("Append") contengono 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:

    • Verifica che l'account di servizio per l'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 dei log a BigQuery:

  • Schema di tabella non valido:

    • I log trasmessi alla tabella nel set di dati BigQuery non corrispondono allo schema della tabella attuale. 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 una colonna corrispondente 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 di dati nidificati nelle sue tabelle. Tuttavia, quando carichi i 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 ne determina il nome. Per le tabelle con suddivisione in base alla data, il formato dei nomi è 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 futuri mancati corrispondenze dei tipi di campo, consulta Mancati 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. Per ulteriori istruzioni, consulta la documentazione di BigQuery.

  • 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 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 il 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:

    • Le voci di log duplicate possono verificarsi in caso di errori nei log in streaming 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 vedere i log in Esplora log che hai escluso con il tuo sink. Puoi comunque visualizzare questi log se è vera una delle seguenti condizioni:

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

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

  • Hai accesso alle visualizzazioni nel bucket dei log in cui sono stati inviati i log. In questo caso, puoi visualizzare questi 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 al suo interno non hanno raggiunto 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 casella di testo Filtro della tabella, inserisci Logs Bucket Writer.

    Visualizzi tutte le entità con il ruolo Logs Bucket Writer. Se un'entità è un account di servizio, il relativo ID contiene la stringa gserviceaccount.com.

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

Perché vedo i log di 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 Google Cloud centralizzato, che 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ù vedere i log esclusi.