Cloud Logging für Speicher-Batchvorgänge

Auf dieser Seite wird beschrieben, wie Sie Logs für Speicher-Batchvorgänge mit Cloud Logging konfigurieren und ansehen. Ein Job für Speicher-Batchvorgänge kann so konfiguriert werden, dass für jeden Transformationsjob Logeinträge in Cloud Logging generiert werden. Jeder Logeintrag entspricht der versuchten Transformation eines Objekts.

Speicher-Batchvorgänge unterstützen das Logging sowohl in Cloud Logging als auch in Cloud-Audit-Logs für Cloud Storage. Mit beiden Optionen werden Aktionen für Storage-Batchvorgänge erfasst. Wir empfehlen jedoch die Verwendung von Cloud Logging. Cloud Logging bietet eine zentrale Plattform für die Protokollanalyse, das Echtzeit-Monitoring und erweiterte Filterfunktionen und ist damit eine robuste Lösung für die Verwaltung und Analyse Ihrer Batchvorgänge.

Hinweis

Prüfen Sie, ob Sie Zugriff auf Cloud Logging haben. Wenn Sie Cloud Logging verwenden möchten, empfehlen wir, die IAM-Rolle Logs Viewer (roles/logging.viewer) zu gewähren. Die Rolle Logs Viewer (roles/logging.viewer) des Identity and Access Management bietet die Berechtigungen, die zum Aufrufen Ihrer Cloud Logging-Daten erforderlich sind. Weitere Informationen zu Logging-Zugriffsberechtigungen finden Sie unter Zugriffssteuerung mit IAM.

Führen Sie die folgenden Schritte aus, um die IAM-Berechtigungen zu überprüfen und zu erteilen:

Details zum Logging

Wenn die Protokollierung aktiviert ist, werden bei Speicher-Batchvorgängen die folgenden Details erfasst:

  • Protokollierbare Aktion: Der Wert für die protokollierbare Aktion ist immer transform.

  • Protokollierbare Statuswerte: Für jede Aktion können Sie festlegen, ob einer oder beide der folgenden Statuswerte protokolliert werden sollen:

    • SUCCEEDED: Die Aktion wurde erfolgreich ausgeführt.
    • FAILED: Die Aktion ist fehlgeschlagen.

Logging aktivieren

Geben Sie die Aktionen und Statuswerte an, die protokolliert werden sollen, um das Logging zu aktivieren.

Befehlszeile

Wenn Sie mit gcloud storage batch-operations jobs create einen Job für Speicher-Batchvorgänge erstellen, verwenden Sie die Flags --log-actions und --log-action-states, um das Logging zu aktivieren.

gcloud storage batch-operations jobs create JOB_NAME \
  --manifest-location=MANIFEST_LOCATION \
  --delete-object \
  --log-actions=transform \
  --log-action-states=LOG_ACTION_STATES

Dabei gilt:

  • JOB_NAME ist der Name, den Sie dem Job geben möchten. Beispiel: my-job.
  • MANIFEST_LOCATION ist der Speicherort Ihres Manifests. Beispiel: gs://my-bucket/manifest.csv.
  • LOG_ACTION_STATES ist eine durch Kommas getrennte Liste der zu protokollierenden Statuswerte. Beispiel: succeeded,failed.

REST API

Create a storage batch operations job mit LoggingConfig.

{
   "loggingConfig": {
      "logActions": ["TRANSFORM"],
      "logActionStates": ["LOG_ACTION_STATES"],
        }
}

Dabei gilt:

LOG_ACTION_STATES ist eine durch Kommas getrennte Liste der zu protokollierenden Statuswerte. Beispiel: "SUCCEEDED","FAILED".

Logs ansehen

So rufen Sie Logs für Speicher-Batchvorgänge auf:

Console

  1. Rufen Sie das Cloud de Confiance Navigationsmenü auf und wählen Sie Logging > Log-Explorer aus:<br\></br\>

    Zum Logs-Explorer

  2. Wählen Sie ein Projekt in Cloud de Confiance aus.

  3. Wechseln Sie im Menü Upgrade von Legacy-Loganzeige zu Log-Explorer.

  4. Wenn Sie Ihre Logs so filtern möchten, dass nur Einträge zu Speicher-Batchvorgängen angezeigt werden, geben Sie in das Abfragefeld storage_batch_operations_job ein und klicken Sie auf Abfrage ausführen.

  5. Klicken Sie im Bereich Abfrageergebnisse auf Zeit bearbeiten, um den Zeitraum zu ändern, für den Ergebnisse zurückgegeben werden sollen.

Informationen zur Verwendung des Log-Explorers finden Sie unter Log-Explorer verwenden.

Befehlszeile

Wenn Sie mit der gcloud CLI nach Logs für Storage-Batchvorgänge suchen möchten, verwenden Sie den Befehl gcloud logging read.

Geben Sie einen Filter an, um Ihre Ergebnisse auf Logs von Storage-Batchvorgängen zu beschränken.

gcloud logging read "resource.type=storage_batch_operations_job"

REST API

Verwenden Sie die Cloud Logging API-Methode entries.list.

Verwenden Sie das Feld filter, um Ihre Ergebnisse so zu filtern, dass nur Einträge zu Storage-Batchvorgängen enthalten sind. Das folgende Beispiel zeigt ein JSON-Anfrageobjekt:

{
"resourceNames":
  [
    "projects/my-project-name"
  ],
  "orderBy": "timestamp desc",
  "filter": "resource.type=\"storage_batch_operations_job\""
}

Dabei gilt:

my-project-name ist der Name Ihres Projekts.

Logformat für Speicher-Batchvorgänge

Alle spezifischen Felder für Storage-Batchvorgänge sind in einem jsonPayload-Objekt enthalten. Der genaue Inhalt von jsonPayload variiert je nach Jobtyp. Alle TransformActivityLog-Einträge haben jedoch eine gemeinsame Struktur. In diesem Abschnitt werden die allgemeinen Protokollfelder und dann die betriebsspezifischen Felder beschrieben.

  • Häufig verwendete Logfelder

    Die folgenden Felder sind in allen Logs enthalten:

    jsonPayload: {
    "@type": "type.googleapis.com/google.cloud.storagebatchoperations.logging.TransformActivityLog",
    "completeTime": "YYYY-MM-DDTHH:MM:SS.SSSSSSSSSZ",
    "status": {
      "errorMessage": "String indicating error",
      "errorType": "ENUM_VALUE",
      "statusCode": "ENUM_VALUE"
    },
    "logName": "projects/PROJECT_ID/logs/storagebatchoperations.googleapis.com%2Ftransform_activity",
    "receiveTimestamp": "YYYY-MM-DDTHH:MM:SS.SSSSSSSSSZ",
    "resource": {
      "labels": {
        "location":"us-central1",
        "job_id": "BATCH_JOB_ID",
        "resource_container": "RESOURCE_CONTAINER",
        // ... other labels
      },
      "type": "storagebatchoperations.googleapis.com/Job"
    },
    // Operation-specific details will be nested here (for example,
    // "DeleteObject", "PutObjectHold", "RewriteObject", "PutMetadata")
    // Each operation-specific object will also contain the following
    // object: "objectMetadataBefore": {
    //   "gcsObject": {
    //     "bucket": "BUCKET_NAME",
    //     "generation": "GENERATION_NUMBER",
    //     "objectKey": "OBJECT_PATH"
    //   }
    // }
    }
    

    In der folgenden Tabelle werden die einzelnen allgemeinen Logfelder beschrieben:

    Häufig verwendete Logfelder Typ Beschreibung
    @type String Gibt den Typ der Nutzlast des Logeintrags an und weist darauf hin, dass das Log einen TransformActivityLog für Speicher-Batchvorgänge darstellt.
    completeTime Zeitstempel Der ISO 8601-konforme Zeitstempel, zu dem der Vorgang abgeschlossen wurde.
    status Objekt Enthält Informationen zum Ergebnis der Batchvorgangsaktivität.
    status.errorMessage String Eine Fehlermeldung, wenn der Vorgang fehlschlägt. Die Fehlermeldung wird nur angezeigt, wenn der Wert status.statusCode nicht OK ist.
    status.errorType String Der Fehlertyp. Der Fehlertyp wird nur angezeigt, wenn der Wert status.statusCode nicht OK ist.
    status.statusCode String Der Statuscode des Vorgangs. Der Vorgang ist erfolgreich, wenn der Wert OK ist. Jeder andere Wert weist auf einen Fehler hin.
    logName String Der vollständige Ressourcenname des Logs, der das Projekt und den Logstream angibt.
    receiveTimestamp Zeitstempel Der Zeitstempel, der angibt, wann der Logeintrag vom Logging-System empfangen wurde.
    resource Objekt Informationen zur Ressource, die den Logeintrag generiert hat.
    resource.labels Objekt Schlüssel/Wert-Paare mit zusätzlichen personenidentifizierbaren Informationen zur Ressource.
    resource.type String Der Ressourcentyp, der das Log generiert hat.
    objectMetadataBefore Objekt Enthält Metadaten des Objekts, bevor das Ausführen des Batchvorgangs versucht wurde.
    objectMetadataBefore.gcsObject Objekt Details zum Objekt.
    objectMetadataBefore.gcsObject.bucket String Der Name des Buckets, in dem sich das Objekt befindet.
    objectMetadataBefore.gcsObject.generation String Die Generationsnummer des Objekts vor dem Vorgang.
    objectMetadataBefore.gcsObject.objectKey String Der vollständige Pfad des Objekts im Bucket.
  • Betriebsspezifische jsonPayload-Inhalte

    Der Unterschied zwischen Logeinträgen für verschiedene Batchvorgänge liegt im Objekt der obersten Ebene, das in jsonPayload verschachtelt ist. In einem bestimmten Logeintrag ist nur eines der folgenden Objekte verfügbar, das dem ausgeführten Batchvorgang entspricht:

    • Objekt löschen (DeleteObject)

      jsonPayload:
      {
      "DeleteObject": {
        "objectMetadataBefore": {
          "gcsObject": {
            "bucket": "test-bucket",
            "generation": "1678912345678901",
            "objectKey": "test_object.txt"
          }
        }
        }
      }
      
    • Objekt-Hold festlegen (PutObjectHold)

      jsonPayload:
      {
      "PutObjectHold": {
        "objectMetadataBefore": {
          "gcsObject": {
            "bucket": "test-bucket",
            "generation": "1678912345678901",
            "objectKey": "test_object.txt"
          }
        },
        "temporaryHoldAfter": True,
        "eventBasedHoldAfter": True
      }
      }
      
    • Objekt umschreiben (RewriteObject)

      jsonPayload:
      {
      "RewriteObject": {
        "objectMetadataBefore": {
          "gcsObject": {
            "bucket": "test-bucket",
            "generation": "1678912345678901",
            "objectKey": "test_object.txt"
          }
        },
        "kmsKeyVersionAfter": "projects/my-gcp-project/locations/us-central1/keyRings/my-keyring-01/cryptoKeys/my-encryption-key/cryptoKeyVersions/1"
      }
      }
      
    • Metadaten einfügen (PutMetadata)

      jsonPayload:
      {
      "PutMetadata": {
        "objectMetadataBefore": {
          "gcsObject": {
            "bucket": "test-bucket",
            "generation": "1678912345678901",
            "objectKey": "test_object.txt"
          }
        },
        "content_disposition_after": "attachment; filename=\"report_final.pdf\"",
        "content_encoding_after": "gzip",
        "content_language_after": "en-US",
        "content_type_after": "application/pdf",
        "cache_control_after": "public, max-age=3600",
        "custom_time_after": "2025-06-27T10:00:00Z",
        "custom_metadata_after": {
          "project": "marketing",
          "version": "2.0",
          "approvedBy": "Admin"
        }
      }
      }
      

    In der folgenden Tabelle werden die vorgangsspezifischen Logfelder beschrieben:

    Vorgangsspezifische Logfelder Typ Beschreibung
    PutObjectHold Objekt Gibt einen Hold-Vorgang für ein Objekt an.
    PutObjectHold.temporaryHoldAfter Boolescher Wert Wenn der Wert True ist, bedeutet dies, dass nach Abschluss des Jobs für Storage-Batchvorgänge ein temporärer Hold für das Objekt angewendet wurde. Gültige Werte sind True und False.
    PutObjectHold.eventBasedHoldAfter Boolescher Wert Wenn der Wert True ist, bedeutet das, dass nach Abschluss des Jobs für Storage-Batchvorgänge ein ereignisbasierter Hold auf das Objekt angewendet wurde. Gültige Werte sind True und False.
    RewriteObject Objekt Gibt einen Umschreibevorgang für ein Objekt an.
    RewriteObject.kmsKeyVersionAfter String Die Schlüsselversion von Cloud Key Management Service, die nach dem Umschreiben verwendet wird. Das Feld kmsKeyVersionAfter wird ausgefüllt, wenn sich der Verschlüsselungsschlüssel des Objekts aufgrund des Umschreibens geändert hat. Dies ist ein optionales Feld. Es ist also möglicherweise nicht vorhanden, wenn die Cloud KMS-Schlüsselversion nach dem Umschreiben unverändert geblieben ist.
    PutMetadata Objekt Gibt eine Metadatenaktualisierung für ein Objekt an.
    PutMetadata.content_disposition_after String Gibt den Content-Disposition-Headerwert nach Abschluss des PutMetadata-Jobs an. Dieses Feld ist optional und wird nur ausgefüllt, wenn die Content-Disposition festgelegt oder geändert wurde.
    PutMetadata.content_encoding_after String Gibt den Content-Encoding-Headerwert nach Abschluss des PutMetadata-Jobs an. Dieses Feld ist optional und wird nur ausgefüllt, wenn Content-Encoding festgelegt oder geändert wurde.
    PutMetadata.content_language_after String Gibt den Content-Language-Headerwert nach Abschluss des PutMetadata-Jobs an. Dieses Feld ist optional und wird nur ausgefüllt, wenn die Content-Sprache festgelegt oder geändert wurde.
    PutMetadata.content_type_after String Gibt den Content-Type-Headerwert nach Abschluss des PutMetadata-Jobs an. Dies ist ein optionales Feld, das nur ausgefüllt wird, wenn der Content-Typ festgelegt oder geändert wurde.
    PutMetadata.cache_control_after String Gibt den Cache-Control-Headerwert nach Abschluss des PutMetadata-Jobs an. Dies ist ein optionales Feld und wird nur ausgefüllt, wenn die Cachesteuerung festgelegt oder geändert wurde.
    PutMetadata.custom_time_after String Gibt den Custom-Time-Headerwert nach Abschluss des PutMetadata-Jobs an. Dieses Feld ist optional und wird nur ausgefüllt, wenn der benutzerdefinierte Zeitraum festgelegt oder geändert wurde.
    PutMetadata.custom_metadata_after Zuordnen (key: string, value: string) Enthält eine Zuordnung von Custom- Metadata-Schlüssel/Wert-Paaren nach der Transformation. Dieses Feld enthält alle benutzerdefinierten Metadaten, die für das Objekt festgelegt oder geändert wurden. So können zusätzliche Metadaten flexibel gespeichert werden.