Cloud Logging für Batchvorgänge für Speicher

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

Batchvorgänge für Speicher unterstützen das Logging sowohl in Cloud Logging als auch in Cloud Storage-Cloud-Audit-Logs. 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 Loganalyse, die Echtzeitüberwachung und das erweiterte Filtern und ist damit eine robuste Lösung für die Verwaltung und Analyse Ihrer Batchvorgänge.

Hinweise

Prüfen Sie, ob Sie Zugriff auf Cloud Logging haben. Wenn Sie Cloud Logging verwenden möchten, empfehlen wir, Identity and Access Management-Rolle Logs Viewer (roles/logging.viewer) zu gewähren. Die Rolle Logs Viewer (roles/logging.viewer) der Identity and Access Management bietet die Berechtigungen der Identity and Access Management, 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 Storage Batch Operations die folgenden Details erfasst:

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

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

    • SUCCEEDED: Die Aktion war erfolgreich.
    • FAILED: Die Aktion ist fehlgeschlagen.

Logging aktivieren

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

Befehlszeile

Wenn Sie mit gcloud storage batch-operations jobs create einen Batchvorgangsjob für Speicher 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

Wobei:

  • 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 Status. Beispiel: succeeded,failed.

REST API

Create a storage batch operations job mit einem LoggingConfig.

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

Wobei:

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

Logs ansehen

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

Console

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

    Zu „Log-Explorer“

  2. Ein Google Cloud -Projekt auswählen

  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 für Speicher-Batchvorgänge 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 Speicher-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\""
}

Wobei:

my-project-name ist der Name Ihres Projekts.

Logformat für Speicherbatchvorgä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 Informationen zur Identifizierung der Ressource.
    resource.type String Der Ressourcentyp, der das Log generiert hat.
    objectMetadataBefore Objekt Enthält Metadaten des Objekts, bevor der Batchvorgang 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 Generierungsnummer 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"
          }
        }
        }
      }
      
    • PUT-Objekt-Hold (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 betriebsspezifischen Logfelder beschrieben:

    Vorgangsspezifische Logfelder Typ Beschreibung
    PutObjectHold Objekt Gibt einen Hold-Vorgang für ein Objekt an.
    PutObjectHold.temporaryHoldAfter Boolesch Wenn der Wert True ist, bedeutet das, dass nach Abschluss des Jobs für Storage-Batchvorgänge eine vorübergehende Sperre auf das Objekt angewendet wurde. Gültige Werte sind True und False.
    PutObjectHold.eventBasedHoldAfter Boolesch Wenn der Wert True ist, bedeutet das, dass nach Abschluss des Jobs für Storage-Batchvorgänge eine ereignisbasierte Aufbewahrungspflicht 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 Cloud Key Management Service-Schlüsselversion, die nach dem Umschreibevorgang verwendet wird. Das Feld kmsKeyVersionAfter wird gefüllt, wenn sich der Verschlüsselungsschlüssel des Objekts aufgrund des Umschreibens geändert hat. Dies ist ein optionales Feld, das möglicherweise nicht vorhanden ist, wenn die Cloud KMS-Schlüsselversion nach dem Umschreiben unverändert geblieben ist.
    PutMetadata Objekt Gibt einen Metadaten-Aktualisierungsvorgang für ein Objekt an.
    PutMetadata.content_disposition_after String Gibt den Headerwert Content-Disposition nach Abschluss des Jobs PutMetadata an. Dieses Feld ist optional und wird nur ausgefüllt, wenn die Inhaltsverfügung festgelegt oder geändert wurde.
    PutMetadata.content_encoding_after String Gibt den Headerwert Content-Encoding nach Abschluss des Jobs PutMetadata an. Dieses Feld ist optional und wird nur ausgefüllt, wenn die Inhaltsverschlüsselung festgelegt oder geändert wurde.
    PutMetadata.content_language_after String Gibt den Headerwert Content-Language nach Abschluss des Jobs PutMetadata an. Dieses Feld ist optional und wird nur ausgefüllt, wenn die Sprache des Inhalts festgelegt oder geändert wurde.
    PutMetadata.content_type_after String Gibt den Headerwert Content-Type nach Abschluss des Jobs PutMetadata an. Es ist ein optionales Feld und wird nur ausgefüllt, wenn der Inhaltstyp 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, das nur ausgefüllt wird, wenn die Cache-Steuerung 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 die benutzerdefinierte Zeit festgelegt oder geändert wurde.
    PutMetadata.custom_metadata_after Map (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.