Fehlerbehebung beim Upgrade eines Buckets für die Verwendung von Observability Analytics

Wenn Sie ein Upgrade eines Log-Buckets zur Verwendung von Observability Analytics durchführen, können Sie SQL-Abfragen ausführen, um die in diesem Bucket gespeicherten Logdaten zu analysieren. Wenn ein Log-Bucket-Upgrade fehlschlägt oder ins Stocken gerät, können Sie dieses Dokument verwenden, um synchrone Validierungsfehler, asynchrone Bereitstellungsfehler und blockierte Vorgänge zu diagnostizieren und zu beheben. Informationen zum Upgrade eines Log-Buckets finden Sie unter Bucket für Observability Analytics aktualisieren.

Informationen zum Upgrade

Cloud Logging verwendet einen zweistufigen Prozess, wenn Sie einen Befehl zum Upgrade eines Log-Buckets für die Verwendung von Observability Analytics ausführen:

  1. Synchrone Validierung: Logging validiert die Befehlsparameter. Wenn die Validierung fehlschlägt, gibt der Befehl sofort einen Fehler zurück.
  2. Asynchrone Bereitstellung: Wenn die Validierung erfolgreich ist, startet Logging einen Vorgang mit langer Ausführungszeit, der in der Regel innerhalb von 10 Minuten abgeschlossen ist.

Upgrades von Log-Buckets sind auditierte Vorgänge. Wenn Sie den Status des Vorgangs mit langer Ausführungszeit prüfen oder Fehlerdetails abrufen möchten, können Sie den Vorgang mit der Methode Operations.GetOperation abfragen oder Ihre Audit-Logs abfragen.

Log-Bucket-Status während eines Upgrades

Wenn die synchrone Validierung einer Upgradeanfrage erfolgreich ist, ändert Logging den Status des Log-Buckets von ACTIVE in UPDATING und startet den Vorgang mit langer Ausführungszeit. Wenn der Vorgang abgeschlossen ist, wird der Status des Log-Buckets wieder auf ACTIVE gesetzt.

Sie können den aktuellen Status eines Log-Buckets mit dem Befehl gcloud logging buckets describe ermitteln:

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

Ersetzen Sie vor dem Ausführen des Befehls die folgenden Werte:

  • PROJECT_ID: die Projekt-ID
  • LOCATION_ID: Der Speicherort Ihres Buckets.
  • LOG_BUCKET_ID: Die ID Ihres Buckets.

Das Feld lifecycleState in der Antwort zeigt den Status des Buckets an:

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

In der Google Cloud Console, während sich der Log-Bucket im Status UPDATING befindet:

  • Auf der Seite Logspeicher wird in der Spalte Observability Analytics verfügbar der Status Wird aktualisiert… angezeigt, während der Vorgang mit langer Ausführungszeit aktiv ist (oder Nicht für Upgrade berechtigt, wenn die Console den Vorgangsstatus nicht abrufen kann).
  • Im Bereich Bucket bearbeiten und im Bereich Log-Bucket aktualisieren ist die Option zum Aktualisieren des Buckets deaktiviert. In der Kurzinfo wird Es sind keine ausstehenden Aktualisierungen vorhanden als nicht erfüllte Anforderung aufgeführt.

Überlegungen zu VPC Service Controls-Perimetern

Upgrades von Log-Buckets innerhalb eines VPC Service Controls-Perimeters können fehlschlagen, wenn APIs durch den Perimeter blockiert werden oder wenn projektübergreifende Konfigurationen vorliegen.

APIs, die der Perimeter zulassen muss

Wenn Sie ein Log-Bucket innerhalb eines VPC Service Controls-Perimeters upgraden möchten, darf der Perimeter die folgenden Dienste nicht einschränken:

  • logging.googleapis.com
  • cloudkms.googleapis.com: Erforderlich, um ein Upgrade für einen Log-Bucket durchzuführen, der einen kundenverwalteten Verschlüsselungsschlüssel (CMEK) verwendet.

Das Einschränken dieser Dienste hat folgende Auswirkungen:

  • logging.googleapis.com eingeschränkt: Der Upgrade-Befehl schlägt sofort mit einem PERMISSION_DENIED-Fehler fehl und Ihr Log-Bucket bleibt im Status ACTIVE.

    Lösung: Aktualisieren Sie den Perimeter, um die am Anfang dieses Abschnitts aufgeführten APIs zuzulassen, und versuchen Sie es dann noch einmal.

  • cloudkms.googleapis.com eingeschränkt: Bei CMEK-geschützten Log-Buckets schlägt der Vorgang mit langer Ausführungszeit mit einem INTERNAL-Fehler fehl und der Log-Bucket kehrt in den Status ACTIVE zurück.

    Lösung: Aktualisieren Sie den Perimeter, um die am Anfang dieses Abschnitts aufgeführten APIs zuzulassen, und versuchen Sie es dann noch einmal.

Perimeterübergreifende CMEK-Konfigurationen

Sie können keine identitätsbasierten Regeln für eingehenden oder ausgehenden Traffic verwenden, um perimeterübergreifenden Zugriff auf den Cloud Key Management Service-Schlüssel zu gewähren, wenn sich Ihr Log-Bucket und Ihr Cloud KMS-Schlüssel in verschiedenen VPC Service Controls-Perimetern befinden.

Wenn in dieser Konfiguration in der Regel für eingehenden Traffic nur die Identität des Logging-Dienstkontos angegeben ist, geschieht Folgendes:

  • Die asynchrone Bereitstellung schlägt mit dem Fehler INTERNAL fehl und der Log-Bucket kehrt in den Status ACTIVE zurück.
  • Der Fehler wird in einem Richtlinien-Audit-Log für das Cloud KMS-Projekt aufgezeichnet. Dieses Audit-Log zeigt, dass die Methode google.cloud.kms.v1.KeyManagementService.Encrypt mit einem NO_MATCHING_ACCESS_LEVEL-Verstoß gegen die eingehende Verbindung fehlgeschlagen ist, und gibt an, dass es sich um ein BigQuery-Verschlüsselungsdienstkonto handelt.

Lösung: Legen Sie in der Regel für eingehenden Traffic, die den Zugriff auf den Cloud KMS-Perimeter ermöglicht, identityType auf ANY_IDENTITY fest und geben Sie das Projekt, das den Log-Bucket enthält, als Quellressource an:

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

Ersetzen Sie im vorherigen Beispiel Folgendes:

  • PROJECT_NUMBER: Die Projektnummer des Projekts, das den Log-Bucket enthält.
  • KMS_PROJECT_NUMBER: Die Projektnummer des Projekts, das den Cloud KMS-Schlüssel enthält.

Wenn Sie auch eine Regel für ausgehenden Traffic angeben, muss diese ebenfalls identityType: ANY_IDENTITY festlegen.

Audit-Logs nach Fehlerinformationen abfragen

Mit den Abfragen in diesem Abschnitt können Sie Logeinträge finden, die Fehler beim Aktualisieren oder Upgraden eines Log-Buckets melden. Diese Abfragen sind für die Verwendung mit dem Log-Explorer vorgesehen.

Rufen Sie in der Google Cloud Console das und die Seite Log-Explorer auf:

Zum Log-Explorer

Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis mit der Zwischenüberschrift Logging aus.

Alle fehlgeschlagenen Bucket-Aktualisierungen oder -Upgrades in einem Projekt abfragen

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

Wenn Sie die Google Cloud Console verwenden, um sowohl ein Upgrade Ihres Log-Buckets zur Verwendung von Observability Analytics durchzuführen als auch ein verknüpftes BigQuery-Dataset zu erstellen, verwenden Sie die folgende Abfrage:

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

Die Ergebnisse der vorherigen Abfrage enthalten Logeinträge, die darauf hinweisen, dass das verknüpfte BigQuery-Dataset nicht erstellt werden konnte. Die Fehlermeldung kann Ihnen helfen, die Ursache des Fehlers zu beheben.

Nach fehlgeschlagenen Bucket-Updates oder -Upgrades für einen bestimmten Bucket suchen

Ersetzen Sie vor dem Ausführen der folgenden Abfrage die folgenden Werte:

  • PROJECT_ID: die Projekt-ID
  • LOCATION_ID: Der Speicherort Ihres Buckets.
  • LOG_BUCKET_ID: Die ID Ihres Buckets.
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

Abfrage nach Fehlern bei Vorgängen mit langer Ausführungszeit

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)

Die Fehlermeldung, die mit dem Fehlercode INVALID_ARGUMENT (3) bereitgestellt wird, enthält genügend Informationen, um den Fehler zu beheben. Aus diesem Grund werden in diesem Abschnitt nicht alle möglichen Fehlermeldungen aufgeführt.

Probleme mit Ressourcennamen

Um Probleme mit Ressourcennamen zu beheben, übergeben Sie einen gültigen Bucket-Ressourcennamen im Format projects/PROJECT_ID/locations/LOCATION_ID/buckets/LOG_BUCKET_ID.

Achten Sie darauf, dass die Länge des Ressourcennamens innerhalb der Längenbeschränkungen liegt.

Probleme mit der Aktualisierungsmaske

Eine Fehlermeldung, die den Text update_mask oder Update mask enthält, weist entweder auf einen fehlenden oder einen fehlerhaften Wert hin.

Geben Sie im API-Befehl update_mask an und legen Sie den Wert auf "analytics_enabled" fest, um dieses Problem zu beheben.

Probleme mit der Berechtigung für Log-Buckets

  • Sie können kein Upgrade für einen gesperrten _Default-Log-Bucket oder gesperrte benutzerdefinierte Buckets durchführen. Sie können den Bucket _Required upgraden, während er gesperrt ist.

    Wenn ein Log-Bucket gesperrt ist, lautet die Fehlermeldung "Bucket is not eligible for an upgrade to enable analytics".

    Erstellen Sie einen neuen für Analysen aktivierten Bucket und leiten Sie Logs dorthin weiter, um diesen Fehler zu beheben.

  • Sie können kein Upgrade eines Log-Buckets durchführen, während Sie andere Änderungen am Bucket vornehmen. Sie können beispielsweise nicht gleichzeitig ein Upgrade für einen Log-Bucket durchführen und die Beschreibung des Buckets aktualisieren.

    Senden Sie zur Behebung dieses Fehlers eine separate UpdateBucket- oder UpdateBucketAsync-Anfrage, die nur analytics_enabled in update_mask enthält, und aktualisieren Sie andere Log-Bucket-Felder in einer separaten Anfrage.

  • Log-Buckets in Organisationen, Ordnern oder Rechnungskonten können nicht upgegradet werden. Sie können nur Log-Buckets upgraden, deren übergeordnetes Element ein Google Cloud -Projekt ist.

  • Sie können kein Upgrade für einen Log-Bucket ausführen, für den bereits ein Upgrade ausgeführt wurde oder wird.

    Verwenden Sie GetBucket oder ListOperations, um festzustellen, ob ein Upgrade bereits abgeschlossen ist oder noch läuft.

Probleme mit Cloud KMS-Schlüsseln

Fehlermeldungen:

  • "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]"

Lösung: Aktualisieren Sie den cmek_settings.kms_key_name des Log-Buckets auf einen gültigen Cloud KMS-CryptoKey-Ressourcennamen, bevor Sie den Bucket upgraden. Sie müssen den Ressourcennamen aktualisieren, nicht die Schlüsselversion CryptoKeyVersion.

Nachricht für ungültiges Argument

Wenn die Meldung "Request contains an invalid argument." angezeigt wird, versuchen Sie Folgendes für CMEK-fähige Log-Buckets:

  • Prüfen Sie, ob das Logging-Dienstkonto, das mit der CMEK-Konfiguration des Buckets verknüpft ist, initialisiert ist.
  • Der Bucket muss eine positive Aufbewahrungsdauer haben.

Führen Sie den folgenden Befehl aus, nachdem Sie den Log-Bucket, den Standort und die Projekt-IDs aktualisiert haben, um den Namen des Dienstkontos zu ermitteln:

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

Das Dienstkonto kann sich in einem Projekt, einem Ordner oder einer Organisation befinden.

DEADLINE_EXCEEDED (4)

Verwenden Sie UpdateBucketAsync und rufen Sie den zurückgegebenen Vorgang mit langer Ausführungszeit mit der Methode Operations.GetOperation ab oder rufen Sie GetBucket auf, nachdem das Hintergrundupgrade abgeschlossen ist.

NOT_FOUND (5)

Versuchen Sie Folgendes, um diese Fehler zu beheben:

  • Prüfen Sie, ob die Projekt-ID oder Projektnummer korrekt und das Projekt aktiv ist. Wenn das Projekt zum Löschen vorgemerkt ist, stellen Sie es zuerst wieder her.
  • Der angegebene Standort muss von Logging unterstützt werden.
  • Prüfen Sie, ob die Log-Bucket-ID und der Standort im Projekt vorhanden sind und ob der Ziel-Bucket nicht _CloudTrace ist.

PERMISSION_DENIED (7)

Ein Fehler vom Typ „Berechtigung verweigert“ weist darauf hin, dass die angeforderte Aktion nicht zulässig ist.

Fehlende Nutzerberechtigungen

Wenn Sie einen Log-Bucket upgraden möchten, muss der Aufrufer eine IAM-Rolle (Identity and Access Management) haben, die die Berechtigung logging.buckets.update enthält (z. B. roles/logging.configWriter oder roles/logging.admin). Prüfen Sie außerdem, ob die Aktualisierung durch eine benutzerdefinierte Organisationsrichtlinie blockiert wird.

Einschränkungen für Organisationsrichtlinien

Achten Sie darauf, dass der VPC Service Controls-Perimeter den Dienst logging.googleapis.com nicht einschränkt, um die Fehlermeldung "Request is prohibited by organization's policy. vpcServiceControlsUniqueIdentifier: [ID]" zu beheben. Weitere Informationen finden Sie unter Überlegungen zum VPC Service Controls-Perimeter.

Probleme mit regionalen Endpunkten

Wenn Sie Fehler vom Typ „Berechtigung verweigert“ beheben möchten, die auftreten, wenn regionale Endpunkte angegeben sind, senden Sie die Anfrage an den globalen Endpunkt (logging.googleapis.com) oder an den regionalen Endpunkt, der dem Standort des Log-Buckets entspricht.

RESOURCE_EXHAUSTED (8)

Warten Sie, bis die laufenden Bereitstellungsvorgänge abgeschlossen sind, und versuchen Sie es dann mit exponentiellem Backoff noch einmal.

FAILED_PRECONDITION (9)

Versuchen Sie Folgendes, um diese Fehler zu beheben:

  • Prüfen Sie, ob der Log-Bucket den Status ACTIVE hat. Sie können kein Upgrade für einen Log-Bucket ausführen, der gerade gelöscht wird oder für den ein Aktualisierungs- oder Bereitstellungsvorgang ausgeführt wird.

    Informationen zum Ermitteln des Status eines Log-Buckets finden Sie unter Log-Bucket-Status während eines Upgrades.

  • Sie können kein Upgrade für einen gesperrten Log-Bucket durchführen.

  • Die allgemeine Meldung "Precondition check failed." gibt an, dass der Bucket-Status nicht ACTIVE ist. Warten Sie, bis ein laufender Vorgang abgeschlossen ist, und versuchen Sie dann noch einmal, das Upgrade auszuführen.

INTERNAL (13)

Fehlermeldungen:

  • Vorgang mit langer Ausführungszeit (Operations.GetOperation): "Failed to create analytics enabled bucket."
  • Cloud-Audit-Logs und synchrone UpdateBucket: "Internal error encountered."

Lösung: Versuchen Sie Folgendes:

  • Prüfen Sie bei einem CMEK-fähigen Log-Bucket, ob der Cloud KMS-Schlüssel aktiviert ist, ob das Logging-Dienstkonto, das mit der CMEK-Konfiguration des Buckets verknüpft ist, die Rolle roles/cloudkms.cryptoKeyEncrypterDecrypter für den Schlüssel hat, ob der Schlüssel für BigQuery zugänglich ist und ob keine Organisationsrichtlinie oder kein VPC Service Controls-Perimeter den Cloud KMS-Zugriff blockiert.

    Führen Sie den folgenden Befehl aus, um den Namen des Dienstkontos zu ermitteln:

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

    Das Dienstkonto kann sich in einem Projekt, einem Ordner oder einer Organisation befinden.

  • Prüfen Sie die vorhandenen Logansichten im Bucket (logging.views.list), um sicherzustellen, dass ihre Filter gültig sind, und versuchen Sie dann noch einmal, den Bucket zu aktualisieren.

  • Prüfen Sie, ob der Log-Bucket (DELETE_REQUESTED) nicht gelöscht wurde und keine in Konflikt stehende administrative Aktion für den Bucket ausgeführt wird. Versuchen Sie dann das Upgrade noch einmal.

  • Wiederholen Sie das Log-Bucket-Upgrade, nachdem vorübergehende Fehler beim Erstellen von BigQuery-Speicher-Datasets oder Suchindexen behoben wurden oder die Verfügbarkeit von BigQuery, Cloud KMS oder des Bereitstellungsdienstes wiederhergestellt wurde. Wenn der Fehler weiterhin auftritt, wenden Sie sich an Cloud Customer Care.

UNAVAILABLE (14)

Wenn die Meldung "The service is currently unavailable." angezeigt wird, wiederholen Sie die UpdateBucketAsync-Anfrage mit exponentiellem Backoff.