Risolvi i problemi relativi all'upgrade di un bucket per utilizzare Observability Analytics

L'upgrade di un bucket di log per utilizzare Observability Analytics consente di eseguire query SQL per analizzare i dati di log archiviati nel bucket. Se l'upgrade di un bucket di log non riesce o si blocca, puoi utilizzare questo documento per diagnosticare e risolvere gli errori di convalida sincrona, gli errori di provisioning asincrono e le operazioni bloccate. Per informazioni su come eseguire l'upgrade di un bucket di log, consulta Esegui l'upgrade di un bucket per utilizzare Observability Analytics.

Informazioni sulla procedura di upgrade

Cloud Logging utilizza un processo in due passaggi quando esegui un comando per eseguire l'upgrade di un bucket di log per utilizzare Observability Analytics:

  1. Convalida sincrona: Logging convalida i parametri del comando. Se la convalida non va a buon fine, il comando restituisce immediatamente un errore.
  2. Provisioning asincrono: se la convalida ha esito positivo, Logging avvia un'operazione a lunga esecuzione che in genere viene completata entro 10 minuti.

Gli upgrade dei bucket di log sono operazioni controllate. Per controllare lo stato dell'operazione a lunga esecuzione o trovare i dettagli degli errori, puoi eseguire il polling dell'operazione utilizzando il metodo Operations.GetOperation oppure puoi eseguire query sugli audit log.

Stato del bucket di log durante un upgrade

Quando la convalida sincrona di una richiesta di upgrade ha esito positivo, Logging modifica lo stato del bucket di log da ACTIVE a UPDATING e avvia l'operazione a lunga esecuzione. Al termine dell'operazione, lo stato del bucket di log torna a ACTIVE.

Puoi determinare lo stato attuale di un bucket di log eseguendo il comando gcloud logging buckets describe:

gcloud logging buckets describe LOG_BUCKET_ID \
  --location=LOCATION_ID \
  --project=PROJECT_ID

Prima di eseguire il comando, effettua le seguenti sostituzioni:

  • PROJECT_ID: l'ID del progetto.
  • LOCATION_ID: la località del bucket.
  • LOG_BUCKET_ID: l'ID del bucket.

Il campo lifecycleState nella risposta mostra lo stato del bucket:

description: Default bucket
lifecycleState: ACTIVE
name: projects/PROJECT_ID/locations/LOCATION_ID/buckets/LOG_BUCKET_ID
retentionDays: 30

Nella console Google Cloud , mentre il bucket di log è nello stato UPDATING:

  • Nella pagina Archiviazione dei log, la colonna Analisi di osservabilità disponibile mostra Upgrade in corso… mentre l'operazione a lunga esecuzione è attiva (o Non idoneo per l'upgrade se la console non riesce a recuperare lo stato dell'operazione).
  • Nel riquadro Modifica bucket e nel riquadro Esegui l'upgrade del bucket di log, l'opzione per eseguire l'upgrade del bucket è disabilitata e il tooltip indica Non sono presenti aggiornamenti in attesa come requisito non soddisfatto.

Considerazioni sul perimetro dei Controlli di servizio VPC

Gli upgrade dei bucket di log all'interno di un perimetro dei Controlli di servizio VPC possono non riuscire a causa del blocco delle API da parte del perimetro o di configurazioni tra progetti.

API che il perimetro deve consentire

Per eseguire l'upgrade di un bucket di log che si trova all'interno di un perimetro dei Controlli di servizio VPC, il perimetro non deve limitare i seguenti servizi:

  • logging.googleapis.com
  • cloudkms.googleapis.com: obbligatorio per eseguire l'upgrade di un bucket di log che utilizza una chiave di crittografia gestita dal cliente (CMEK).

La limitazione di questi servizi causa il seguente comportamento:

  • logging.googleapis.com limitato: il comando di upgrade non riesce immediatamente con un errore PERMISSION_DENIED e il bucket di log rimane nello stato ACTIVE.

    Risoluzione: aggiorna il perimetro per consentire le API elencate all'inizio di questa sezione, quindi riprova a eseguire il comando.

  • cloudkms.googleapis.com limitato: per i bucket di log protetti da CMEK, l'operazione a lunga esecuzione non va a buon fine con un errore INTERNAL e il bucket di log torna allo stato ACTIVE.

    Risoluzione: aggiorna il perimetro per consentire le API elencate all'inizio di questa sezione, quindi riprova a eseguire il comando.

Configurazioni CMEK tra perimetri

Non puoi utilizzare regole in entrata o in uscita basate sull'identità per concedere l'accesso tra perimetri alla chiave Cloud Key Management Service quando il bucket di log e la chiave Cloud KMS si trovano in perimetri dei Controlli di servizio VPC diversi.

Per questa configurazione, se la regola in entrata specifica solo l'identità del account di servizio di Logging, si verifica quanto segue:

  • Il provisioning asincrono non va a buon fine con un errore INTERNAL e il bucket di log torna allo stato ACTIVE.
  • Un audit log delle policy per il progetto Cloud KMS registra l'errore. Questo audit log mostra che il metodo google.cloud.kms.v1.KeyManagementService.Encrypt non è riuscito con una violazione in entrata NO_MATCHING_ACCESS_LEVEL e indica che si tratta di un account di servizio di crittografia BigQuery.

Risoluzione: nella regola in entrata che consente l'accesso al perimetro Cloud KMS, imposta identityType su ANY_IDENTITY e specifica il progetto che contiene il bucket di log come risorsa di origine:

- ingressFrom:
    identityType: ANY_IDENTITY
    sources:
    - resource: projects/PROJECT_NUMBER
  ingressTo:
    operations:
    - serviceName: cloudkms.googleapis.com
      methodSelectors:
      - method: '*'
    resources:
    - projects/KMS_PROJECT_NUMBER

Nell'esempio precedente, sostituisci quanto segue:

  • PROJECT_NUMBER: il numero del progetto che contiene il bucket di log.
  • KMS_PROJECT_NUMBER: il numero del progetto che contiene la chiave Cloud KMS.

Se specifichi anche una regola in uscita, devi impostare anche identityType: ANY_IDENTITY.

Esegui query sugli audit log per informazioni sugli errori

Le query in questa sezione possono aiutarti a trovare le voci di log che segnalano errori durante l'aggiornamento o l'upgrade di un bucket di log. Queste query sono destinate all'utilizzo con Esplora log.

Nella console Google Cloud , vai alla pagina Esplora log:

Vai a Esplora log

Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Logging.

Esegui una query per tutti gli aggiornamenti o gli upgrade dei bucket non riusciti in un progetto

log_id("cloudaudit.googleapis.com/activity")
protoPayload.serviceName="logging.googleapis.com"
(protoPayload.methodName="google.logging.v2.ConfigServiceV2.UpdateBucket" OR
 protoPayload.methodName="google.logging.v2.ConfigServiceV2.UpdateBucketAsync")
severity=ERROR

Se utilizzi la console Google Cloud sia per eseguire l'upgrade del bucket di log in modo da utilizzare Observability Analytics sia per creare un set di dati BigQuery collegato, utilizza la seguente query:

log_id("cloudaudit.googleapis.com/activity")
(protoPayload.serviceName="logging.googleapis.com" OR
 protoPayload.serviceName="bigquery.googleapis.com")
(protoPayload.methodName="google.logging.v2.ConfigServiceV2.UpdateBucket" OR
 protoPayload.methodName="google.logging.v2.ConfigServiceV2.UpdateBucketAsync" OR
 protoPayload.methodName="google.cloud.bigquery.v2.DatasetService.InsertDataset")
severity=ERROR

I risultati della query precedente includono voci di log che indicano che la creazione del set di dati BigQuery collegato non è riuscita. Il messaggio di errore può aiutarti a risolvere la causa dell'errore.

Esegui query per aggiornamenti o upgrade dei bucket non riusciti per un bucket specifico

Prima di utilizzare la query seguente, apporta le seguenti sostituzioni:

  • PROJECT_ID: l'ID del progetto.
  • LOCATION_ID: la località del bucket.
  • LOG_BUCKET_ID: l'ID del bucket.
log_id("cloudaudit.googleapis.com/activity")
protoPayload.serviceName="logging.googleapis.com"
(protoPayload.methodName="google.logging.v2.ConfigServiceV2.UpdateBucket" OR
 protoPayload.methodName="google.logging.v2.ConfigServiceV2.UpdateBucketAsync")
protoPayload.resourceName="projects/PROJECT_ID/locations/LOCATION_ID/buckets/LOG_BUCKET_ID"
severity=ERROR

Query per errori di operazione a lunga esecuzione

log_id("cloudaudit.googleapis.com/activity")
protoPayload.serviceName="logging.googleapis.com"
protoPayload.methodName="google.logging.v2.ConfigServiceV2.UpdateBucketAsync"
operation.last=true
severity=ERROR

INVALID_ARGUMENT (3)

Il messaggio di errore fornito con un codice di errore INVALID_ARGUMENT (3) contiene informazioni sufficienti per risolvere l'errore. Per questo motivo, questa sezione non elenca tutti i possibili messaggi di errore.

Problemi relativi ai nomi delle risorse

Per risolvere i problemi relativi ai nomi delle risorse, passa un nome risorsa del bucket valido nel formato projects/PROJECT_ID/locations/LOCATION_ID/buckets/LOG_BUCKET_ID.

Assicurati che la lunghezza del nome della risorsa rientri nei limiti di lunghezza.

Problemi relativi alla maschera di aggiornamento

Un messaggio di errore contenente il testo update_mask o Update mask indica un valore mancante o con formato non valido.

Per risolvere il problema, nel comando API, specifica update_mask e imposta il valore su "analytics_enabled".

Problemi di idoneità del bucket di log

  • Non puoi eseguire l'upgrade di un bucket di log _Default bloccato o di bucket personalizzati bloccati. Puoi eseguire l'upgrade del bucket _Required mentre è bloccato.

    Quando un bucket di log è bloccato, il messaggio di errore è "Bucket is not eligible for an upgrade to enable analytics".

    Per risolvere questo errore, crea un nuovo bucket abilitato per l'analisi e indirizza i log al bucket.

  • Non puoi eseguire l'upgrade di un bucket di log mentre apporti altre modifiche al bucket. Ad esempio, non puoi eseguire l'upgrade di un bucket di log e aggiornare la descrizione del bucket.

    Per risolvere questo errore, invia una richiesta UpdateBucket o UpdateBucketAsync separata con solo analytics_enabled in update_mask e aggiorna gli altri campi del bucket di log in una richiesta separata.

  • Non puoi eseguire l'upgrade dei bucket di log in organizzazioni, cartelle o account di fatturazione. Puoi eseguire l'upgrade solo dei bucket di log il cui elemento padre è un progetto Google Cloud .

  • Non puoi eseguire l'upgrade di un bucket di log di cui è già stato eseguito l'upgrade o di cui è in corso l'upgrade.

    Utilizza GetBucket o ListOperations per determinare se un upgrade è già stato completato o è in corso.

Problemi con le chiavi Cloud KMS

Messaggi di errore:

  • "Not a valid key reference (wrong type): 'KMS_KEY_NAME'"
  • "Name "KMS_KEY_NAME" is missing the COMPONENT component. Expected the form projects/[PROJECT_ID]/locations/[ID]/keyRings/[ID]/cryptoKeys/[ID]"

Risoluzione: aggiorna il cmek_settings.kms_key_name del bucket di log con un nome risorsa CryptoKey Cloud KMS valido prima di eseguire l'upgrade del bucket. Devi aggiornare il nome della risorsa, non la versione della chiave, CryptoKeyVersion.

Messaggio di argomento non valido

Se visualizzi il messaggio "Request contains an invalid argument.", prova a seguire questi passaggi per i bucket di log abilitati per CMEK:

  • Assicurati che il account di servizio di Logging associato alla configurazione CMEK del bucket sia inizializzato.
  • Assicurati che il bucket abbia un periodo di conservazione positivo.

Per trovare il nome del account di servizio, esegui questo comando dopo aver aggiornato il bucket di log, la località e gli ID progetto:

gcloud logging buckets describe LOG_BUCKET_ID --location=LOCATION_ID --project=PROJECT_ID

Il account di servizio potrebbe trovarsi in un progetto, una cartella o un'organizzazione.

DEADLINE_EXCEEDED (4)

Utilizza UpdateBucketAsync ed esegui il polling dell'operazione a lunga esecuzione restituita utilizzando il metodo Operations.GetOperation o chiama GetBucket al termine dell'upgrade in background.

NOT_FOUND (5)

Per risolvere questi errori, prova quanto segue:

  • Verifica che l'ID progetto o il numero del progetto siano corretti e che il progetto sia attivo. Se il progetto è in attesa di eliminazione, ripristinalo prima.
  • Assicurati che la località specificata sia supportata da Logging.
  • Verifica che l'ID bucket e la località del bucket di log esistano nel progetto e che il bucket di destinazione non sia _CloudTrace.

PERMISSION_DENIED (7)

Un errore di autorizzazione negata indica che l'azione richiesta non è consentita.

Autorizzazioni utente mancanti

Per eseguire l'upgrade di un bucket di log, assicurati che il chiamante abbia un ruolo Identity and Access Management (IAM) che includa l'autorizzazione logging.buckets.update (ad esempio roles/logging.configWriter o roles/logging.admin) e verifica che nessuna policy dell'organizzazione personalizzata blocchi l'aggiornamento.

Limitazioni delle policy dell'organizzazione

Per risolvere il messaggio di errore "Request is prohibited by organization's policy. vpcServiceControlsUniqueIdentifier: [ID]", assicurati che il perimetro dei Controlli di servizio VPC non limiti il servizio logging.googleapis.com. Per saperne di più, consulta Considerazioni sul perimetro dei Controlli di servizio VPC.

Problemi relativi agli endpoint regionali

Per risolvere gli errori di autorizzazione negata quando vengono specificati endpoint regionali, invia la richiesta all'endpoint globale (logging.googleapis.com) o all'endpoint regionale corrispondente alla località del bucket di log.

RESOURCE_EXHAUSTED (8)

Per risolvere questo errore, attendi il completamento delle operazioni di provisioning in corso e riprova con il backoff esponenziale.

FAILED_PRECONDITION (9)

Per risolvere questi errori, prova quanto segue:

  • Verifica che il bucket di log sia nello stato ACTIVE. Non puoi eseguire l'upgrade di un bucket di log in fase di eliminazione o di un'operazione di aggiornamento o provisioning.

    Per informazioni su come determinare lo stato di un bucket di log, consulta Stato del bucket di log durante un upgrade.

  • Non puoi eseguire l'upgrade di un bucket di log bloccato.

  • Il messaggio generico "Precondition check failed." indica che lo stato del bucket non è ACTIVE. Attendi il completamento delle operazioni in corso, quindi riprova a eseguire l'upgrade.

INTERNAL (13)

Messaggi di errore:

  • Operazione a lunga esecuzione (Operations.GetOperation): "Failed to create analytics enabled bucket."
  • Cloud Audit Logs e UpdateBucket sincrono: "Internal error encountered."

Risoluzione: prova i seguenti passaggi:

  • Per un bucket di log abilitato per CMEK, verifica che la chiave Cloud KMS sia abilitata, che l'account di servizio Logging associato alla configurazione CMEK del bucket abbia il ruolo roles/cloudkms.cryptoKeyEncrypterDecrypter sulla chiave, che la chiave sia accessibile a BigQuery e che nessuna policy dell'organizzazione o perimetro dei Controlli di servizio VPC blocchi l'accesso a Cloud KMS.

    Per trovare il nome del account di servizio, esegui questo comando:

    gcloud logging buckets describe LOG_BUCKET_ID --location=LOCATION_ID --project=PROJECT_ID
    

    Il account di servizio potrebbe trovarsi in un progetto, una cartella o un'organizzazione.

  • Esamina le visualizzazioni log esistenti nel bucket (logging.views.list) per assicurarti che i relativi filtri siano validi e riprova a eseguire l'upgrade del bucket.

  • Assicurati che il bucket di log non sia stato eliminato (DELETE_REQUESTED) e che non si stia verificando alcuna azione amministrativa in conflitto sul bucket, quindi riprova l'upgrade.

  • Riprova l'upgrade del bucket di log dopo la risoluzione degli errori temporanei di creazione del set di dati di archiviazione BigQuery o dell'indice della Ricerca oppure una volta ripristinata la disponibilità del servizio di provisioning, Cloud KMS o BigQuery downstream. Se l'errore persiste, contatta l'assistenza clienti Google Cloud.

UNAVAILABLE (14)

Se visualizzi il messaggio "The service is currently unavailable.", riprova a inviare la richiesta UpdateBucketAsync con backoff esponenziale.