Risolvere i problemi di configurazione di Observability Analytics

Observability Analytics consente di eseguire query SQL per analizzare i log, creare viste di analisi, collegare bucket di log ai set di dati BigQuery e monitorare i risultati delle query con policy di avviso. Se riscontri errori durante la configurazione o l'esecuzione di query su Observability Analytics, puoi utilizzare le indicazioni contenute in questo documento per identificarli e risolverli. Per problemi relativi all'upgrade di un bucket di log, consulta Risolvi i problemi relativi all'upgrade di un bucket per utilizzare Observability Analytics.

Messaggi di errore

Questa sezione descrive i messaggi di errore che potresti visualizzare e come risolvere le condizioni di errore corrispondenti.

Messaggio di errore di No completion signal within allotted timeframe

Inserisci una query SQL e selezioni Esegui query. La query non viene completata e viene visualizzato il seguente messaggio di errore:

The query failed to execute and return results due to error: No completion signal within allotted timeframe.

Per risolvere questo errore, esegui una delle seguenti operazioni:

  • Riduci l'intervallo di query dei log e riprova a eseguire la query. Ad esempio, se un intervallo di query è di 14 giorni, riducilo a 7 giorni, quindi esegui la query.

  • Crea un set di dati BigQuery collegato, quindi esegui la query dall'interfaccia di BigQuery. L'interfaccia di BigQuery supporta query che richiedono un tempo di esecuzione più lungo rispetto all'interfaccia di Cloud Logging. Per saperne di più, consulta Crea un set di dati BigQuery collegato.

Messaggio di errore per le query su bucket con chiavi CMEK distinte

Inserisci una query SQL che esegue query su più bucket di log e selezioni Esegui query. La query non viene completata e viene visualizzato il seguente messaggio di errore:

Queries against buckets with distinct CMEK keys must have a key configured in the LogSettings.

Per risolvere il problema, effettua una delle operazioni riportate di seguito.

  • Configura i bucket di log in modo che utilizzino la stessa chiave di Cloud Key Management Service (Cloud KMS).
  • Quando i bucket di log si trovano nella stessa località, puoi configurare una cartella o un'organizzazione che sia una risorsa padre per i bucket di log con una chiave Cloud KMS predefinita. La chiave predefinita della risorsa padre deve trovarsi nella stessa località dei bucket di log. Con questa configurazione, la chiave predefinita dell'elemento principale cripta tutti i dati temporanei generati dalla query di Observability Analytics. Per saperne di più, consulta Limitazioni di Observability Analytics.

Messaggio di errore FROM clause must contain exactly one log view

Inserisci una query SQL nel riquadro delle query della pagina Observability Analytics nella console Google Cloud , ma l'analizzatore SQL visualizza il seguente errore:

FROM clause must contain exactly one log view

L'errore precedente viene segnalato quando la tabella specificata nell'istruzione FROM non può essere risolta in una visualizzazione log specifica.

Per risolvere questo errore, assicurati che il nome della tabella abbia la sintassi corretta:

  • Assicurati che il nome della tabella segua la sintassi richiesta dallo schema di denominazione di Observability Analytics. BigQuery e Observability Analytics hanno requisiti diversi per il nome della tabella. Puoi trovare la sintassi richiesta per il nome della tabella visualizzando la query predefinita.

  • Se l'ID progetto, la regione, l'ID bucket o l'ID visualizzazione Google Cloud di un bucket di log contiene caratteri punto, (.), assicurati che ciascuno di questi campi sia racchiuso tra singoli apici inversi, (`).

    Ad esempio, se l'ID progetto Google Cloud è example.com:bluebird, per eseguire una query sulla vista _AllLogs del bucket di log _Default, utilizza la seguente sintassi per specificare la tabella:

    
    SELECT *
    FROM `example.com:bluebird`.`global`.`_Default`.`_AllLogs`
    

    La query precedente presuppone che il bucket _Default si trovi nella regione global.

Impossibile salvare una query

Vuoi salvare la query corrente, quindi la esegui e poi fai clic su Salva, ma l'opzione Salva query è disabilitata o non riesci a completare i passaggi della finestra di dialogo.

La causa di questo errore è un conflitto tra una policy dell'organizzazione e le impostazioni predefinite delle risorse per Cloud Logging. Per un'organizzazione o una cartella, puoi configurare le impostazioni predefinite delle risorse per Cloud Logging che specificano una località. In questa località vengono archiviate le query salvate. Tuttavia, se la località è in conflitto con una policy dell'organizzazione, le query non possono essere salvate.

Per risolvere questo errore, chiedi all'amministratore della tua organizzazione di aggiornare le impostazioni predefinite delle risorse per Cloud Logging in modo che le impostazioni di localizzazione siano consentite dalla policy dell'organizzazione. Per saperne di più, consulta Configura le impostazioni predefinite delle risorse per Cloud Logging.

Se l'opzione Salva query è abilitata, ma non riesci a completare la finestra di dialogo e salvare la query, segui questi passaggi:

  1. Assicurati che la query non contenga errori di sintassi. Puoi salvare solo query valide.
  2. (Facoltativo) Copia la query negli appunti.
  3. Ricarica la pagina.
  4. Se hai copiato la query negli appunti, incollala nel riquadro Query, eseguila e poi esegui l'operazione di salvataggio.

Impossibile creare una vista di analisi

Vuoi creare una vista di analisi, quindi inserisci ed esegui una query SQL, poi fai clic su Salva, ma l'opzione Salva come vista di analisi è disabilitata.

Per risolvere questo problema, assicurati che i tuoi ruoli IAM includano le seguenti autorizzazioni:

  • observability.analyticsViews.{get, list, create, update, delete}

Queste autorizzazioni non sono incluse in nessun ruolo Cloud Logging predefinito. Per informazioni sui ruoli richiesti, consulta Crea ed esegui query sulle viste di analisi: prima di iniziare.

Impossibile eseguire query su una vista di analisi

Vuoi eseguire una query su una vista di analisi, ma il riquadro Viste nella pagina Observability Analytics non mostra alcuna vista di analisi.

Per risolvere questo errore, prova quanto segue:

  • Assicurati che i tuoi ruoli IAM includano le seguenti autorizzazioni:

    • observability.analyticsViews.{get, list}

    Queste autorizzazioni non sono incluse in nessun ruolo Cloud Logging predefinito. Per informazioni sui ruoli richiesti, consulta Crea ed esegui query sulle viste di analisi: prima di iniziare.

  • Assicurati che nel tuo progetto Google Cloud esistano viste di analisi.

Accesso negato alla pagina Observability Analytics

Apri la pagina Observability Analytics nella console Google Cloud e viene visualizzato un messaggio di errore di autorizzazione negata.

Per ottenere le autorizzazioni necessarie per caricare la pagina Observability Analytics, eseguire query e visualizzare i log, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o i ruoli predefiniti di Logging.

Le autorizzazioni necessarie per visualizzare le voci di log ed eseguire query nella pagina Observability Analytics sono le stesse necessarie per visualizzare i log nella pagina Esplora log. Per informazioni sui ruoli aggiuntivi necessari per eseguire query sulle visualizzazioni dei bucket definiti dall'utente o per eseguire query sulla visualizzazione _AllLogs del bucket di log _Default, consulta Ruoli di Cloud Logging.

La creazione di un bucket di log non riesce a causa di un vincolo di località

Provi a creare un bucket di log, ma l'azione non riesce e viene visualizzato un messaggio simile al seguente:

Constraint `constraints/gcp.resourceLocations` violated for `<CONTAINER>` attempting to change `<BUCKET_NAME>` with location `<LOCATION>`. The location must be in the allowed location list configured by the organization policy administrator.

Il messaggio di errore precedente indica che la località selezionata per il nuovo bucket di log non è supportata dalla tua organizzazione.

Per risolvere questo errore, seleziona una località supportata dalla tua organizzazione.

Creazione di un set di dati BigQuery collegato non riuscita

Modifichi un bucket di log per creare un set di dati BigQuery collegato o crei un nuovo bucket di log e selezioni l'opzione per creare un set di dati BigQuery collegato; tuttavia, il set di dati BigQuery collegato non viene creato.

Per risolvere questo errore, chiedi all'amministratore di sistema del progetto Google Cloud di concederti un ruolo IAM che includa la seguente autorizzazione:

  • logging.links.create

L'autorizzazione precedente è inclusa nei ruoli Amministratore Logging (roles/logging.admin) e Writer di configurazione dei log (roles/logging.configWriter).

Per informazioni su ruoli e autorizzazioni, consulta Controllo dell'accesso con IAM.

Eliminazione di un set di dati BigQuery collegato non riuscita

Non vuoi più il set di dati BigQuery collegato, ma l'opzione per eliminarlo è disattivata.

Per risolvere questo errore, chiedi all'amministratore di sistema del progetto Google Cloud di concederti un ruolo IAM che includa la seguente autorizzazione:

  • logging.links.delete

L'autorizzazione precedente è inclusa nei ruoli Amministratore Logging (roles/logging.admin) e Writer di configurazione dei log (roles/logging.configWriter).

Questa autorizzazione ti consente di eliminare il set di dati BigQuery collegato dalla pagina Archiviazione log della console Google Cloud . Per saperne di più su ruoli e autorizzazioni, consulta Controllo degli accessi con IAM.

Observability Analytics mostra un avviso relativo ai metadati sensibili

Nella pagina Analisi di osservabilità viene visualizzato un messaggio simile al seguente:

This SQL query is configured to run on the BigQuery engine using [PROJECT_ID],
and references resources from [RESOURCE, ...]. Sensitive metadata,
including table contents, may be written to [PROJECT_ID].

Il messaggio di avviso indica che la query supera i confini di proprietà e ti offre l'opportunità di verificarla prima che venga eseguita. I confini della proprietà sono determinati da diversi fattori, uno dei quali è la gerarchia delle risorse utilizzate dalla query.

Non puoi impedire questo tipo di avvisi.

Se nella pagina Observability Analytics viene visualizzata una finestra di dialogo di avviso, puoi eseguire una delle seguenti operazioni:

  • Se sai che la query è sicura da eseguire e vuoi visualizzare i risultati della query, fai clic su Conferma ed esegui.

  • Analizza la query e, se necessario, ignorala. Ad esempio, potresti:

    1. Esamina la query. Durante l'ispezione, considera i dati oggetto di query, le potenziali dimensioni del set di dati oggetto di query e il motore di query. Le query eseguite sul servizio BigQuery potrebbero comportare addebiti.
    2. Se hai ricevuto un link alla pagina Observability Analytics, verifica che il mittente sia una fonte attendibile.

Google Cloud fornisce alcune funzionalità che possono aiutare a prevenire l'esfiltrazione di dati tramite phishing, attacchi interni o entità esterne. Per saperne di più, consulta Sicurezza dei dati con Observability Analytics.

La query di un set di dati BigQuery collegato non va a buon fine e viene visualizzato il messaggio "Set di dati non trovato"

Invii una query a un set di dati BigQuery collegato e il comando non va a buon fine con un messaggio di errore simile a "Set di dati non trovato".

Per risolvere il problema, prova quanto segue:

  • Assicurati che il percorso del nome del set di dati sia corretto.
  • Esegui il seguente comando gcloud logging links list e verifica che la risposta elenchi il set di dati BigQuery collegato.

    Se il set di dati BigQuery collegato non è presente nell'elenco, significa che è orfano. Per risolvere questo scenario, elimina il set di dati BigQuery collegato.

    Un progetto può avere un set di dati BigQuery collegato orfano se revochi le concessioni dei ruoli IAM da un account di servizio utilizzato da Google Cloud Observability per gestire i dati e poi elimini il link nel bucket di log. In questo scenario, Google Cloud Observability non può eliminare il set di dati BigQuery collegato.

Impossibile impostare il motore di query su BigQuery

Nel menu Impostazioni di , l'opzione BigQuery è disabilitata.

Per attivare questa opzione, assicurati di avere un set di dati BigQuery collegato nel bucket di log su cui viene eseguita la query.

Il pulsante Esegui in BigQuery è disabilitato

Se il pulsante Esegui su BigQuery viene visualizzato, ma è disabilitato, significa che una visualizzazione log a cui fa riferimento la query non ha un set di dati BigQuery collegato. Per eseguire la query sul motore BigQuery, crea un set di dati BigQuery collegato nel bucket di log.

Nessun service account di monitoraggio

Vuoi creare una criterio di avviso per monitorare i risultati di una query SQL. I passaggi di configurazione richiedono la concessione di ruoli IAM al service account di Monitoring, ma questo account non esiste.

Il service account di Monitoring è chiamato agente di servizio perché viene creato e gestito daGoogle Cloud. L'account viene creato automaticamente quando configuri una risorsa o un servizio che lo richiede. Ad esempio, se crei un canale di notifica Pub/Sub, questa azione potrebbe causare la creazione del service account Monitoring.

Per creare il service account di Monitoring e concedergli le autorizzazioni necessarie per le policy di avviso basate su SQL, segui questi passaggi:

  1. Crea il service account di Monitoring. Per saperne di più, consulta Crea e concedi ruoli agli agenti di servizio.

  2. Concedi i seguenti ruoli al service account di Monitoring:

Errore di autorizzazione negata per il service account di Monitoring

Vuoi creare una criterio di avviso per monitorare i risultati di una query SQL. Tuttavia, viene visualizzato un errore PermissionDenied con un messaggio che inizia con Error authenticating service account.

Per risolvere questo errore, concedi i seguenti ruoli al service account di Monitoring:

Nei risultati di Observability Analytics sono presenti voci di log duplicate

Esegui una query che conteggia o segnala voci duplicate. Poiché Esplora log rimuove le voci duplicate in base al nome del log, al timestamp e all'ID inserimento, ti aspetti che Observability Analytics deduplichi le voci di log prima dell'esecuzione di una query.

Observability Analytics non esegue lo stesso tipo di deduplicazione eseguita da Esplora log.

Per risolvere il problema delle voci di log duplicate, prova quanto segue:

  1. Determina se le voci di log duplicate hanno valori di timestamp di ricezione diversi. Se i timestamp sono diversi, significa che gli stessi dati sono stati scritti in Logging più volte.

    Per risolvere il problema delle scritture duplicate, esamina l'integrazione del logging per individuare messaggi di errore o configurazioni errate.

  2. Se il bucket è configurato per l'utilizzo delle chiavi di Cloud Key Management Service, assicurati di rientrare nella quota e che la chiave sia sempre accessibile. Il superamento della quota o la perdita dell'accesso alla chiave possono comportare voci di log duplicate.

    Per risolvere questi errori, assicurati di non superare la quota e che la chiave sia accessibile.

  3. Modifica la query per rimuovere le voci di log duplicate.

    Ad esempio, supponiamo che il payload JSON contenga fieldA e fieldB, dove il primo è una stringa e il secondo è un numero. Supponiamo inoltre che il payload JSON contenga un campo denominato server, che contiene una stringa. Ora, considera la seguente query:

    SELECT
      JSON_VALUE(json_payload.fieldA) AS fieldA,
      SUM(IFNULL(SAFE_CAST(JSON_VALUE(json_payload.fieldB) AS INT64), 0)) AS sum_fieldB
    FROM
      `VIEW`
    WHERE
      JSON_VALUE(json_payload.server) = "test"
    GROUP BY
      fieldA;
    

    Puoi modificare la query per rimuovere le voci di log duplicate, in cui il nome del log, il timestamp e l'ID inserimento vengono esaminati per determinare se una voce di log è un duplicato:

    WITH
      deduplicated AS (
      SELECT
        JSON_VALUE(json_payload.fieldA) AS fieldA,
        IFNULL(SAFE_CAST(JSON_VALUE(json_payload.fieldB) AS INT64), 0) AS fieldB
      FROM
        `VIEW` a
      WHERE
        JSON_VALUE(json_payload.server) = "test"
      QUALIFY
        ROW_NUMBER() OVER (PARTITION BY a.log_name, a.timestamp, a.insert_id ) = 1 )
    
    SELECT
      fieldA,
      SUM(fieldB) AS sum_fieldB
    FROM
      deduplicated
    GROUP BY
      fieldA;