Logeinträge nachträglich in Batches verarbeiten und weiterleiten

Sie können gespeicherte Logeinträge aus Cloud Logging-Log-Buckets in Cloud Storage-Buckets kopieren, um Sicherheitsaudits zu unterstützen, benutzerdefinierte Datenanalysen durchzuführen oder historische Logeinträge zu archivieren. Der Kopiervorgang ist nicht destruktiv. Logeinträge verbleiben im Quell-Log-Bucket und Sie können sie in verschiedene Google Cloud -Projekte kopieren.

Bei Kopiervorgängen werden vorhandene Logeinträge rückwirkend mithilfe der gcloud CLI weitergeleitet. Im Gegensatz dazu leiten Senken übereinstimmende Logeinträge automatisch in Echtzeit weiter, sobald sie eingehen. Logeinträge, die vor dem Erstellen der Senke gespeichert wurden, können jedoch nicht weitergeleitet werden.

Beschränkungen

Beim Kopieren von Logeinträgen gelten die folgenden Einschränkungen:

  • Sie können Logeinträge nur in Cloud Storage-Buckets kopieren, die nicht für Rapid Storage konfiguriert sind. Andere Ziele sind nicht verfügbar.

  • Sie können keine Logeinträge aus Log-Buckets kopieren, für die kundenverwaltete Verschlüsselungsschlüssel (CMEK) konfiguriert sind.

Hinweis

Bevor Sie mit dem Kopieren von Logeinträgen beginnen, müssen Sie Folgendes tun:

  • Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Projekt zuzuweisen, das den Log-Bucket enthält, aus dem Sie kopieren, um die Berechtigungen zu erhalten, die Sie zum Kopieren von Logeinträgen benötigen:

  • Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Storage Object Creator (roles/storage.objectCreator) für das Projekt zuzuweisen, das den Cloud Storage-Bucket enthält, um die Berechtigungen zu erhalten, die Sie zum Schreiben von Logeinträgen in Cloud Storage benötigen.

Logeinträge kopieren

Logging kopiert nur Logeinträge, die zu Beginn des Kopiervorgangs im Log-Bucket gespeichert sind. Logeinträge, die nach dem Start des Kopiervorgangs in Log-Buckets gespeichert werden, werden nicht in Cloud Storage kopiert.

Zum Kopieren von Logeinträgen in Cloud Storage benötigen Sie die folgenden Informationen:

  • Die ID und der Standort des Log-Buckets, aus dem Sie kopieren. Verwenden Sie den gcloud CLI-Befehl gcloud logging buckets list, um die Log-Bucket-ID und den Standort abzurufen.
  • Der Name des Cloud Storage-Bucket, in den Sie kopieren. Informationen zum Abrufen des Cloud Storage-Bucket-Namens finden Sie unter Cloud Storage-Bucket-Informationen abrufen.
  • Ein Filter für die Logeinträge, die Sie kopieren möchten.

Führen Sie den Befehl gcloud logging copy aus, um Logeinträge zu kopieren:

gcloud logging copy LOG_BUCKET_ID storage.googleapis.com/CLOUD_STORAGE_BUCKET_NAME \
--location=LOCATION --log-filter='FILTER' --project=PROJECT_ID

Führen Sie vor dem Ausführen des vorherigen Befehls die folgenden Schritte aus:

  • Ersetzen Sie LOG_BUCKET_ID durch den Namen Ihres Log-Buckets.
  • Ersetzen Sie CLOUD_STORAGE_BUCKET_NAME dabei durch den Namen des Cloud Storage-Buckets.
  • Ersetzen Sie LOCATION durch den Speicherort des Log-Buckets.
  • (Optional): Ersetzen Sie FILTER durch den Filter, der definiert, welche Logeinträge kopiert werden.

    Wenn Sie das Flag --log-filter weglassen, werden alle Logeinträge im Log-Bucket in den Cloud Storage-Bucket kopiert.

  • Ersetzen Sie dabei PROJECT_ID durch die ID Ihres Projekts in Google Cloud . Sie können dieses Flag weglassen, wenn die aktive gcloud CLI-Konfiguration auf das richtige Google Cloud -Projekt festgelegt ist.

Beispielbefehl:

gcloud logging copy my-log-bucket storage.googleapis.com/my-gcs-bucket \
--location=global --log-filter='timestamp > "2024-07-18T10:00:00.0Z"' \
--project=my-project

Dieser Befehl erstellt einen Vorgang mit langer Ausführungszeit, der im Hintergrund ausgeführt wird, und gibt den Namen des Kopiervorgangs und den Standort des Log-Buckets zurück:

name: projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID

Der Speicherort des Kopiervorgangs ist mit dem Speicherort des Log-Buckets identisch, aus dem Sie kopieren.

Kopiervorgänge anzeigen und verwalten

Sie können Ihre Kopiervorgänge mit den gcloud logging operations-Befehlen aufrufen und verwalten. Mit diesen Befehlen können Sie Vorgänge auflisten, aufrufen und abbrechen.

Bei den folgenden Befehlen müssen Sie den Standort des Vorgangs angeben. Verwenden Sie den Standort Ihres Log-Buckets. Informationen zum Ermitteln des Speicherorts Ihres Log-Buckets finden Sie unter Bucket-Details ansehen.

Kopiervorgänge auflisten

Sie können die letzten Kopiervorgänge auflisten, einschließlich geplanter, laufender, abgeschlossener, fehlgeschlagener und abgebrochener Vorgänge. Aktuelle Kopiervorgänge werden bis zu 30 Tage nach dem Endzeitpunkt in den Ergebnissen angezeigt.

Führen Sie den folgenden Befehl aus, um Kopiervorgänge aufzulisten:

gcloud logging operations list --location=LOCATION \
--operation-filter=request_type=CopyLogEntries \
--project=PROJECT_ID

Führen Sie vor dem Ausführen des vorherigen Befehls die folgenden Schritte aus:

  • Ersetzen Sie LOCATION durch den Speicherort des Log-Buckets, aus dem Sie kopieren.
  • Ersetzen Sie dabei PROJECT_ID durch die ID Ihres Projekts in Google Cloud .

Der Befehl gibt Informationen zum Vorgang mit langer Ausführungszeit zurück, einschließlich der Vorgangs-ID:

projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID

Status eines Kopiervorgangs abrufen

Sie können den Status und andere Metadaten zu Kopiervorgängen abrufen, darunter:

  • startTime: Der Zeitstempel, der die Erstellung des Vorgangs angibt
  • endTime: Der Zeitstempel, der den Abschluss des Vorgangs angibt
  • state: Der Status des Vorgangs (geplant, wird ausgeführt, abgebrochen, fehlgeschlagen oder erfolgreich).
  • cancellation: Gibt an, ob der Nutzer angefordert hat, den Vorgang abzubrechen
  • progress: Geschätzter Fortschritt des Vorgangs (0–100 %).
  • destination: Der Name des Cloud Storage-Bucket, in den der Vorgang Logeinträge kopiert.
  • filter: Der Filter, der angibt, welche Logeinträge kopiert werden sollen
  • name: Der Name des Log-Buckets, aus dem der Vorgang Logeinträge kopiert.
  • logEntriesCopiedCount: Die Anzahl der Logeinträge, die vom Vorgang erfolgreich in den Cloud Storage-Bucket kopiert wurden

Beachten Sie, dass nicht alle aufgelisteten Metadatenfelder für jeden Kopiervorgang gelten. Wenn beispielsweise ein Kopiervorgang noch ausgeführt wird, gelten die endTime-Metadaten nicht für den Vorgang. Wenn das Flag --log-filter=FILTER beim Ausführen des Befehls gcloud logging copy nicht verwendet wurde, gelten die filter-Metadaten nicht für den Vorgang.

Führen Sie den folgenden Befehl aus, um Informationen zu einem Kopiervorgang abzurufen:

gcloud logging operations describe OPERATION_ID \
--location=LOCATION --project=PROJECT_ID

Führen Sie vor dem Ausführen des vorherigen Befehls die folgenden Schritte aus:

  • Ersetzen Sie OPERATION_ID durch die ID des Vorgangs.
  • Ersetzen Sie LOCATION durch den Speicherort des Log-Buckets, aus dem Sie kopieren.
  • Ersetzen Sie dabei PROJECT_ID durch die ID Ihres Projekts in Google Cloud .

Der Befehl gibt Metadaten zum Kopiervorgang zurück. Hier sehen Sie beispielsweise eine Ausgabe für einen Vorgang, der gerade ausgeführt wird:

done: false
metadata:
  `@type`: type.googleapis.com/google.logging.v2.CopyLogEntriesMetadata
  progress: 75
  destination: storage.googleapis.com/CLOUD_STORAGE_BUCKET_NAME
  source: projects/PROJECT_ID/locations/LOCATION/buckets/LOG_BUCKET_ID
  verb: copy
  startTime: `2024-05-23T10:52:40.039751Z`
  state: OPERATION_STATE_RUNNING
name: projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID

Kopiervorgang abbrechen

Sie können einen laufenden Kopiervorgang abbrechen. Wenn Sie einen Kopiervorgang abbrechen, verbleiben alle Logeinträge, die vor dem Abbruch des Vorgangs kopiert wurden, im Cloud Storage-Bucket.

Nach dem Abbrechen eines Kopiervorgangs schließt Logging alle laufenden Prozesse ab, bevor der Abbruch abgeschlossen wird. Dies kann dazu führen, dass einige Logeinträge nach dem Abbruch des Vorgangs weiterhin in Cloud Storage kopiert werden.

Führen Sie den folgenden Befehl aus, um einen Kopiervorgang abzubrechen:

gcloud logging operations cancel OPERATION_ID \
--location=LOCATION --project=PROJECT_ID

Führen Sie vor dem Ausführen des vorherigen Befehls die folgenden Schritte aus:

  • Ersetzen Sie OPERATION_ID durch die ID des Vorgangs.
  • Ersetzen Sie LOCATION durch den Speicherort des Log-Buckets, aus dem Sie kopieren.
  • Ersetzen Sie dabei PROJECT_ID durch die ID Ihres Projekts in Google Cloud .

Logeinträge in Cloud Storage ansehen

Informationen zum Aufrufen und Verstehen der Logeinträge, die Sie in Cloud Storage kopiert haben, finden Sie unter An Cloud Storage weitergeleitete Logeinträge ansehen.

Kontingente und Limits

Alle Kopiervorgänge dauern mindestens eine Stunde, unabhängig von der Menge der zu kopierenden Daten.

Wenn Sie ein großes Volumen kopieren möchten, z. B. Petabyte, teilen Sie das Kopieren auf mehrere Kopiervorgänge auf. Verwenden Sie dazu das Feld timestamp im Flag --log-filter.

Mit dem Kopierbefehl können keine Logeinträge kopiert werden, deren Aufbewahrungsdauer abgelaufen ist.

Fehlerbehebung

In diesem Abschnitt wird beschrieben, wie Sie Fehler beim Kopieren von Logeinträgen beheben.

Exportdaten konnten nicht geschrieben werden

Wenn Sie den Status eines Kopiervorgangs mit gcloud logging operations describe aufrufen, wird möglicherweise der folgende Fehler angezeigt:

done: true
error:
  code: 7
  message: Failed to write export data to the destination Cloud Storage bucket.

Dieser Fehler tritt auf, wenn Logging keine Logdateien in den Cloud Storage-Ziel-Bucket schreiben oder abschließen kann. Das Schreiben exportierter Dateien während des Vorgangs kann aus mehreren Gründen fehlschlagen:

  • Ein VPC Service Controls-Dienstperimeter blockiert Anfragen an den Cloud Storage-Ziel-Bucket.
  • Die IAM-Berechtigungen des Kontos, das den Kopiervorgang initiiert hat, wurden während des Vorgangs geändert oder widerrufen.
  • Der Kopiervorgang hat so lange gedauert, dass die Autorisierungsdaten abgelaufen sind.
  • Der Cloud Storage-Ziel-Bucket verwendet CMEK und der Cloud Key Management Service-Schlüssel ist deaktiviert oder der Cloud Storage-Dienst-Agent hat keine Verschlüsselungsberechtigungen.
  • Bei einem Schreibwiederholungsversuch wird versucht, eine vorhandene Datei zu überschreiben, die nicht ersetzt werden kann. Wenn beispielsweise ein Export-Batch nach einer vorübergehenden Verzögerung wiederholt oder ein Kopiervorgang neu gestartet wird, versucht die Wiederholung möglicherweise, eine bereits erstellte Datei zu überschreiben. Wenn diese Datei durch einen aktiven Objekt-Hold oder eine gesperrte Aufbewahrungsrichtlinie geschützt ist, lehnt Cloud Storage das Überschreiben ab.
  • Der Ziel-Bucket wurde gelöscht, ist in einen gesperrten Zustand übergegangen oder das Projekt hat sein Ressourcenkontingent überschritten.

So beheben Sie das Problem:

  1. VPC Service Controls prüfen: Wenn Ihre Organisation VPC Service Controls verwendet, prüfen Sie die Cloud-Audit-Logs auf Perimeter-Ablehnungen (cloudaudit.googleapis.com/data_access). Der Perimeter für den Cloud Storage-Ziel-Bucket muss den Zugriff über das Projekt zulassen, in dem der Kopiervorgang ausgeführt wird. Alternativ können Sie eine Regel für eingehenden und ausgehenden Traffic konfigurieren.

  2. IAM-Rollen für den Ziel-Bucket prüfen: Das Konto, das den Kopiervorgang initiiert hat, muss die Rolle Storage-Objekt-Ersteller (roles/storage.objectCreator) für den Ziel-Bucket haben.

  3. Kundenverwaltete Verschlüsselungsschlüssel (CMEK) prüfen: Wenn der Ziel-Bucket CMEK für die Standardverschlüsselung verwendet, prüfen Sie, ob der Cloud KMS-Schlüssel aktiviert ist und ob der Cloud Storage-Dienst-Agent die Rolle Cloud KMS CryptoKey Encrypter/Decrypter (roles/cloudkms.cryptoKeyEncrypterDecrypter) für den Schlüssel hat.

  4. Große Kopiervorgänge in kürzere Zeitintervalle aufteilen: Um Zeitüberschreitungen oder das Ablaufen von Anmeldedaten beim Kopieren großer Mengen von Logeinträgen zu vermeiden, teilen Sie den Vorgang in kleinere Batches auf. Wenn Sie die Logeinträge in Batches aufteilen möchten, verwenden Sie das Feld timestamp im Flag --log-filter.

  5. Prüfen, ob Objekt-Holds oder Aufbewahrungskonflikte vorliegen: Prüfen Sie, ob der Ziel-Bucket am Zielpfad Objekte enthält, die durch einen aktiven Objekt-Hold oder eine gesperrte Aufbewahrungsrichtlinie geschützt sind.