Risolvere i problemi di configurazione di Analisi dei log

Questo documento spiega come risolvere gli errori che potrebbero verificarsi quando utilizzi la pagina Log Analytics della console Google Cloud.

Messaggi di errore

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

Messaggio di errore No completion signal within allotted timeframe

Inserisci una query SQL e seleziona 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 su cui vengono eseguite le query sui log e riprova a eseguire la query. Ad esempio, se l'intervallo di una query è di 14 giorni, riducilo a 7 giorni e poi esegui la query.

  • Crea un set di dati BigQuery collegato e poi esegui la query dall'interfaccia BigQuery. L'interfaccia BigQuery supporta query che richiedono un tempo di esecuzione più lungo rispetto all'interfaccia di Cloud Logging. Per ulteriori informazioni, consulta Eseguire query su un set di dati BigQuery collegato.

Messaggi di errore relativi alle query sui bucket con chiavi CMEK distinte

Inserisci una query SQL che esegue query su più bucket di log e seleziona 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 la situazione, esegui una delle seguenti operazioni:

  • Configura i bucket di log in modo che utilizzino la stessa chiave di Cloud Key Management Service (Cloud KMS).
  • Quando i bucket dei log si trovano nella stessa posizione, puoi configurare una cartella o un'organizzazione che sia una risorsa principale per i bucket dei log con una chiave Cloud KMS predefinita. La chiave predefinita del gruppo deve trovarsi nella stessa posizione dei bucket dei log. Con questa configurazione, la chiave predefinita del gruppo di elementi primario cripta tutti i dati temporanei generati dalla query Log Analytics. Per ulteriori informazioni, consulta Restrizioni di Log Analytics.

La clausola FROM deve contenere esattamente un messaggio di errore della visualizzazione

Inserisci una query SQL nel riquadro delle query della pagina Analisi dei log nella console Google Cloud, ma lo scanner SQL mostra 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 del 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 Log Analytics. BigQuery e Log Analytics hanno requisiti diversi per il nome della tabella. Puoi trovare la sintassi obbligatoria per il nome della tabella visualizzando la query predefinita.

  • Se l'ID progetto, la regione, l'ID bucket o l'ID vista di Google Cloud di un bucket di log contiene caratteri di tipo (.), assicurati che ciascuno di questi campi sia aggregato tra virgolette singole, (`).

    Ad esempio, se un ID progetto Google Cloud è example.com:bluebird, per eseguire query sulla visualizzazione _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

Se inserisci ed esegui una query SQL e l'opzione Salva è disattivata, le impostazioni delle risorse predefinite della tua organizzazione o cartella definiscono una posizione non consentita dai criteri dell'organizzazione. Per risolvere il problema, chiedi all'amministratore della tua organizzazione di definire una località nelle impostazioni predefinite delle risorse che corrisponda a una località consentita dai criteri dell'organizzazione. Per ulteriori informazioni, consulta la pagina Configura le impostazioni predefinite per organizzazioni e cartelle.

Se il pulsante Salva è attivo, ma non riesci a completare la finestra di dialogo e salvare la query, procedi nel seguente modo:

  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 ed esegui l'operazione di salvataggio.

Accesso negato alla pagina Log Analytics

Apri la pagina Log Analytics nella console Google Cloud e viene visualizzato un messaggio di errore relativo al rifiuto dell'autorizzazione.

Per ottenere le autorizzazioni necessarie per caricare la pagina Analisi dei log, 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 Log.

Le autorizzazioni necessarie per visualizzare le voci di log ed eseguire query nella pagina Log 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 dei log _Default, consulta Ruoli di Cloud Logging.

L'upgrade del bucket di log per l'utilizzo di Analisi dei log non va a buon fine

Puoi creare un bucket di log e selezionare l'opzione per utilizzare Analisi dei log oppure eseguire l'upgrade di un bucket di log esistente per utilizzare Analisi dei log. L'upgrade non riesce con una condizione di errore simile alla seguente:

Failed precondition (HTTP 400): Constraint "my-constraint" violated for PROJECT_ID  with location global.

Il messaggio di errore precedente indica che la tua organizzazione ha configurato un criterio dell'organizzazione che limita le regioni che possono essere utilizzate. I bucket di log idonei per l'upgrade per l'utilizzo di Analisi dei log devono utilizzare la regione global. Se puoi rimuovere il criterio dell'organizzazione che limita l'utilizzo della regione global, puoi eseguire l'upgrade del bucket dei log. In caso contrario, non puoi eseguire l'upgrade dei bucket di log.

La creazione di un set di dati BigQuery collegato non va a buon fine

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 collegato. Tuttavia, il set di dati 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 configurazione log (roles/logging.configWriter).

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

L'eliminazione di un set di dati BigQuery collegato non va a buon fine

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

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 configurazione log (roles/logging.configWriter).

Questa autorizzazione ti consente di eliminare il set di dati collegato dalla pagina Logs Storage (Archiviazione log) della console Google Cloud. Per ulteriori informazioni su ruoli e autorizzazioni, consulta Controllo dell'accesso con IAM.

Il pulsante delle impostazioni del motore di query non è presente

Se il pulsante Impostazioni non viene visualizzato accanto al pulsante Esegui query, significa che nel tuo progetto Google Cloud non sono abilitati gli slot BigQuery riservati. Per attivare il pulsante Impostazioni, configura gli slot BigQuery riservati per il tuo progetto.

Il pulsante Esegui in BigQuery non è attivo

Se il pulsante Esegui su BigQuery è visualizzato, ma disattivato, significa che una vista log a cui fa riferimento la query non ha un set di dati collegato. Per eseguire la query sulle prenotazioni di slot BigQuery, crea un set di dati BigQuery collegato nella visualizzazione dei log.

Nessun account di servizio di monitoraggio

Vuoi creare un criterio di avviso per monitorare i risultati di una query SQL. I passaggi di configurazione richiedono di concedere i ruoli IAM all'account di servizio di monitoraggio, ma questo account non esiste.

L'account di servizio di monitoraggio è chiamato agente di servizio perché viene creato e gestito da Google 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 dell'account di servizio di monitoraggio. A seconda del flusso di creazione, all'account di servizio Monitoring potrebbe essere concesso il ruolo di agente di servizio Monitoring (monitoring.NotificationServiceAgent) nel progetto. Puoi modificare i ruoli concessi all'account.

Se l'account di servizio di monitoraggio non esiste, per creare un criterio di avviso che monitori il risultato di una query SQL devi eseguire i seguenti passaggi:

  1. Crea un agente di servizio manualmente. Per informazioni su questo passaggio, consulta Creare e concedere i ruoli agli agenti di servizio.

  2. Concedi all'agente di servizio i ruoli richiesti. Per informazioni su questi ruoli, consulta Monitorare i risultati delle query SQL: prima di iniziare.

I risultati di Log Analytics contengono 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 Analisi dei log deduplichi le voci di log prima dell'esecuzione di una query.

Analisi dei log non esegue lo stesso tipo di deduplica eseguito da Esplora log.

Per risolvere le 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 Log più volte.

    Per risolvere le scritture duplicate, controlla l'integrazione del logging per individuare messaggi di errore o configurazioni errate.

  2. Se il bucket è configurato per utilizzare le chiavi di Cloud Key Management Service, assicurati di rispettare la quota e che la chiave sia accessibile in modo coerente. Il superamento della quota o la perdita dell'accesso alle chiavi può 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, la prima è una stringa e la seconda è numerica. Supponiamo inoltre che il payload JSON contenga un campo denominato server, che contiene una stringa. Poi, 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
      `TABLE_NAME_OF_LOG_VIEW`
    WHERE
      JSON_VALUE(json_payload.server) = "test"
    GROUP BY
      fieldA;
    

    Puoi modificare la query per rimuovere le voci di log duplicate, in cui vengono esaminati il nome, il timestamp e l'ID inserimento del log 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
        `TABLE_NAME_OF_LOG_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;