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 dei sink, consulta Visualizzare i log nelle destinazioni dei 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 con routing a una destinazione e ritieni che la destinazione contenga log indesiderati.

Per risolvere questa condizione, aggiorna i filtri di esclusione per i sink che instradano i log alla destinazione. I filtri di esclusione ti consentono di escludere i log selezionati dall'instradamento a una destinazione.

Ad esempio, supponiamo che venga creato un sink aggregato per eseguire il routing dei log di un'organizzazione a 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 ai sink è che mancano i log 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 sink non stia eseguendo correttamente il routing dei log, controlla le metriche basate su log di sistema del sink:

  • exports/byte_count: numero di byte nelle voci di log instradate.
  • exports/log_entry_count: numero di voci di log instradate.
  • 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 del sink e al nome della destinazione e indicano se il sink esegue correttamente o meno il routing dei 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 come previsto, ecco alcuni possibili motivi e istruzioni su come procedere:

Latenza

  • Non sono state ricevute voci di log corrispondenti dalla creazione o dall'aggiornamento del sink; vengono instradate solo le nuove voci di log.

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

  • Le voci di log corrispondenti arriveranno in ritardo.

    Potrebbe verificarsi un ritardo prima che tu possa visualizzare i log nella destinazione. I log 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.

L'ambito/il filtro di visualizzazione non è corretto

Errore nel filtro sink

  • Il filtro del sink non è corretto e non acquisisce i 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 log nel riquadro Modifica sink. Esplora log si apre in una nuova scheda con il filtro precompilato. Per istruzioni su come visualizzare e gestire i sink, consulta Gestire i sink.

Visualizza errori

Per ciascuna delle destinazioni dei 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 seguenti sezioni:

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

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 delle query in Esplora log per esaminare i log degli errori del sink. La stessa query funziona nell'API Logging e gcloud CLI.

Prima di copiare la query, sostituisci la variabile SINK_NAME con il nome del sink di cui stai cercando 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 relative informazioni sulle coppie chiave-valore nidificate consentono di scegliere come target l'origine dell'errore del sink, in quanto 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 permette di sapere quale componente del sink deve essere riconfigurato.

Per aggiornare il sink, utilizza il router dei log.

Nel pannello di navigazione della console Google Cloud, seleziona Logging, quindi Router dei log:

Vai a Router dei log

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 agli errori di configurazione del sink. Se per una risorsa non sono configurati contatti necessari per l'assistenza tecnica, gli utenti elencati come Proprietario del progetto IAM roles/owner della 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 breve della categoria di errore, ad esempio: dataset_not_found
  • Dettagli errore: informazioni dettagliate sull'errore, inclusi i suggerimenti per la risoluzione dell'errore sottostante.

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

Nel pannello di navigazione della console Google Cloud, seleziona Logging, quindi 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 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 seguenti sezioni descrivono ampie categorie di errori relativi ai sink e come puoi risolverli.

Destinazione errata

Se configuri un sink, ma noti un errore di configurazione a causa del quale non è stato possibile trovare la destinazione durante il tentativo di Logging dei log, ecco alcuni possibili motivi:

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

    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 utilizzare una destinazione esistente diversa o ricreare la destinazione con lo stesso nome.

In entrambi i casi, per risolvere eventuali problemi, vai alla pagina Router dei log.

Nel pannello di navigazione della console Google Cloud, seleziona Logging, quindi Router dei log:

Vai a Router dei log

Il sink inizia a eseguire il routing dei log quando viene trovata la destinazione e Logging riceve i nuovi log corrispondenti al filtro.

Gestione dei problemi dei sink

Se hai disabilitato un sink per interrompere l'archiviazione dei log in un bucket di log, ma continui a visualizzare i log in fase di routing, attendi alcuni minuti affinché le modifiche al sink vengano applicate.

Problemi relativi alle autorizzazioni

Se un sink tenta di indirizzare una voce di log, ma non dispone delle autorizzazioni IAM appropriate per la destinazione del sink, il sink segnala un errore visualizzabile e ignora 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, la console Google Cloud assegna automaticamente queste autorizzazioni. Se crei il sink in un altro progetto Google Cloud o utilizzando gcloud CLI o l'API Logging, devi configurare le autorizzazioni manualmente.

Se visualizzi errori relativi alle autorizzazioni per il tuo 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 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 eseguire 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 eseguire il routing di una voce di log, ma riscontri un criterio dell'organizzazione che impedisce a Logging di scrivere nella destinazione del sink, quest'ultimo non potrà eseguire il routing 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 eseguire il routing delle voci di log. Questo presuppone che tu disponga delle autorizzazioni appropriate per aggiornare il criterio dell'organizzazione. Per le istruzioni, vedi Creazione e modifica dei criteri.

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

    Nel pannello di navigazione della console Google Cloud, seleziona Logging, quindi Router dei log:

    Vai a Router dei log

Il sink inizia a eseguire il routing dei log quando il criterio dell'organizzazione non impedisce più al sink di scrivere 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 errori correlati. Di seguito sono riportati alcuni possibili problemi e le relative soluzioni:

  • 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 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.

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

  • La località 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 va a buon fine e il sink non può instradare i dati a quella destinazione.

    • Utilizza una chiave Cloud KMS contenuta da 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, viene visualizzato questo messaggio di errore se la destinazione del sink utilizza una chiave di crittografia che non fornisce all'account di servizio autorizzazioni sufficienti per criptare o decriptare i dati.

    • Concedi il ruolo Autore crittografia/decrittografia di CryptoKey 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 di quota

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

Ad esempio, durante 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 eseguire il routing troppe voci di log troppo rapidamente. Lo stesso vale per le altre destinazioni sink 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 eseguire il routing dei log alla destinazione dopo che hai aggiornato il sink 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, esamina le informazioni sulla quota della destinazione appropriata:

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

Routing degli errori a Cloud Storage

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

  • Voci di log in ritardo:

    • 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 visualizzate le prime voci.

    • Gli shard di file di log instradati con il suffisso An ("Aggiungi") contengono voci di log arrivate in ritardo. In caso di interruzione della destinazione di Cloud Storage, Cloud Logging esegue il buffer 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 mostra se il modello di controllo dell'accesso per il bucket Cloud Storage è stato impostato su Accesso uniforme quando è stato creato il 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 tabella non valido:

    • I log trasmessi alla tabella nel set di dati BigQuery non corrispondono allo schema della tabella corrente. I problemi comuni includono il tentativo di indirizzare voci di log con tipi di dati diversi, il che causa una mancata corrispondenza dello schema. Ad esempio, uno dei campi nella 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 crearla 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 tabella determina il nome della tabella. Per le tabelle con shard con 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 future errate corrispondenze del tipo di campo, consulta la sezione Mancata corrispondenza nello schema.

  • Le voci di 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 in 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.

  • L'account di servizio associato al sink di log non può 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 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 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:

    • In caso di errori nei flussi di dati dei log in BigQuery, anche a causa di nuovi tentativi o configurazioni errate, possono verificarsi voci di log duplicate. 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
    

Routing degli errori 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 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 vedere questi log in Esplora log, puoi affinare l'ambito della ricerca al tuo progetto o 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:

  • 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 inviando un elenco degli attributi del bucket. Se il bucket è bloccato, controlla il periodo di conservazione del bucket. Non puoi eliminare un bucket bloccato finché tutti i log del bucket non hanno completato il periodo di conservazione.

  • 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 stanno eseguendo il routing dei log al mio bucket?

Per determinare se eventuali account di servizio dispongono delle autorizzazioni IAM per instradare i log al tuo bucket:

  1. Nel pannello di navigazione della console Google Cloud, seleziona IAM:

    Vai a IAM

  2. Nella scheda Autorizzazioni, visualizza la voce in base a 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 Writer bucket di log.

    Vengono visualizzate tutte le entità con il ruolo Writer bucket di 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 indirizzare i log al tuo 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 di un progetto Google Cloud centralizzato, che aggrega i log di tutta la tua organizzazione.

Se utilizzi Esplora log per accedere a questi log e visualizzare i log che hai escluso dal sink _Default, la visualizzazione potrebbe essere limitata al livello di 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. I log esclusi non dovrebbero più essere visualizzati.