Logging für Storage Transfer Service aktivieren

Auf dieser Seite wird beschrieben, wie Sie Storage Transfer Service so konfigurieren, dass Logdaten generiert werden, in denen Aktionen und Status erfasst werden. Sie können die Logdaten mit Cloud Logging aufrufen und analysieren.

Storage Transfer Service kann Logdaten für alle Übertragungen generieren. FIND-Vorgänge werden jedoch nicht für agentbasierte Übertragungen protokolliert.

Bei Dateisystemübertragungen können zusätzlich Logs für Dateisystemübertragungen konfiguriert werden.

Hinweis

Prüfen Sie zuerst, ob Sie Zugriff auf Cloud Logging haben. Wir empfehlen die Identitäts- und Zugriffsverwaltungsrolle Logbetrachter (roles/logging.viewer). Weitere Informationen zum Logging-Zugriff finden Sie unter Zugriffssteuerung mit IAM.

In den folgenden Dokumenten wird beschrieben, wie Sie Ihren aktuellen Zugriff prüfen und IAM-Rollen gewähren:

Protokollierbare Aktionen

Die folgenden Aktionen können protokolliert werden:

  • FIND: Zu suchende Aufgaben finden, z. B. zum Auflisten von Dateien in einem Verzeichnis, zum Auflisten von Objekten in einem Bucket oder zum Auflisten verwalteter Ordner in einem Bucket. Wird nicht für agentbasierte Übertragungen unterstützt.
  • COPY: Dateien oder Objekte in Cloud Storage kopieren.
  • DELETE: Dateien oder Objekte an der Quelle oder am Ziel löschen. Bei Übertragungen zwischen zwei Dateisystemen wird auch das Löschen von Dateien aus dem Zwischen-Cloud Storage-Bucket protokolliert.

Protokollierbare Status

Für jede Aktion können Sie auch einen oder mehrere der folgenden Status aufzeichnen:

  • SUCCEEDED: Die Aktion wurde erfolgreich ausgeführt.
  • FAILED: Die Aktion ist fehlgeschlagen.
  • SKIPPED: Gilt nur für die Aktion `COPY` und wird nur für agentbasierte Übertragungsjobs unterstützt. Muss mit gcloud oder der REST API festgelegt werden. Dieser Status bedeutet, dass das Kopieren übersprungen wurde. Das passiert, wenn die Datei bereits in der Senke vorhanden ist und Ihr Übertragungsjob so konfiguriert ist, dass vorhandene Dateien ignoriert werden.

Best Practices

Wenn Sie das Logging für die Aktion FIND oder für den Status SUCCEEDED aktivieren, kann dies zu einer großen Menge an Logdaten führen und sich auf Ihre Cloud Logging-Kosten auswirken.

Mit den folgenden Strategien können Sie die Menge der gespeicherten Logdaten reduzieren:

  • Nur Fehler protokollieren. Wenn Sie keine vollständige Compliance-Auditierung auf Objektebene benötigen, konfigurieren Sie den Job so, dass Logs nur für Kopier- und Löschaktionen und nur bei einem Fehler geschrieben werden.

  • Messwertdaten verwenden, um Durchsatz, Byteanzahl und übersprungene oder fehlgeschlagene Objekte zu überwachen. Sie können Diagramme erstellen und Messwertdaten mit einer Benachrichtigungsrichtlinie überwachen. Eine Liste der verfügbaren Messwerte finden Sie unter Storage Transfer Service.

  • Cloud Logging so konfigurieren, dass Logdaten mit hohem Volumen und geringem Wert verworfen werden. Nehmen Sie dazu Änderungen an den Logsenken in Ihrem Projekt vor, um Storage Transfer Service-Logdaten mit geringem Wert auszuschließen. Da alle Logsenken in einem Projekt alle Logeinträge auswerten, müssen Sie möglicherweise mehrere Logsenken aktualisieren.

    Verwenden Sie den folgenden Ausschlussfilter, um Storage Transfer Service-Logeinträge auszuschließen, in denen erfolgreiche Aktionen aufgezeichnet werden:

    resource.type="storage_transfer_job" AND
    jsonPayload.status.statusCode="OK"
    

    Informationen zum Suchen und Ändern von Logsenken finden Sie unter Logs an unterstützte Ziele weiterleiten.

Logging aktivieren

Wenn Sie Storage Transfer Service so konfigurieren möchten, dass Logdaten generiert werden, geben Sie die Aktionen und Status an, die protokolliert werden sollen.

gcloud CLI

Wenn Sie mit gcloud transfer jobs create einen Übertragungsjob erstellen, verwenden Sie die folgenden Flags, um das Logging zu aktivieren:

gcloud transfer jobs create SOURCE DESTINATION \
  --log-actions=copy,delete,find \
  --log-action-states=succeeded,failed,skipped

Sie müssen für jedes Flag mindestens einen Wert angeben.

REST

Verwenden Sie zum Erstellen einer Logging-Konfiguration transferJobs.create mit einer LoggingConfig:

{
  "name":"transferJobs/myFirstTransfer",
  "status": "ENABLED",
  "projectId": "test-id-001",
  "loggingConfig": {
     "logActions": ["FIND", "DELETE", "COPY"],
     "logActionStates": ["SUCCEEDED", "FAILED", "SKIPPED"], #SKIPPED is only supported for agent-based transfers
  },
  "transferSpec": {
      "awsS3DataSource": {
          "bucketName": "AWS_SOURCE_NAME",
          "awsAccessKey": {
              "accessKeyId": "AWS_ACCESS_KEY_ID",
              "secretAccessKey": "AWS_SECRET_ACCESS_KEY"
          }
      },
      "gcsDataSink": {
           "bucketName": "destination_bucket",
           "path": "foo/bar/"
      },
   }
}

Passen Sie loggingConfig so an, dass die spezifischen logActions und logActionStates protokolliert werden. Wenn Sie beispielsweise protokollieren möchten, welche Kopier- und Suchaktionen fehlschlagen, geben Sie die folgende loggingConfig an:

"loggingConfig": {
  "logActions": ["COPY", "FIND"],
  "logActionStates": ["FAILED"],
}

Logging-Konfiguration aktualisieren

gcloud CLI

Verwenden Sie die entsprechenden Flags mit dem gcloud transfer jobs update Befehl, um die Logging-Konfiguration eines vorhandenen Jobs zu aktualisieren:

gcloud transfer jobs update NAME \
  --log-actions=copy,delete,find \
  --log-action-states=succeeded,failed,skipped

Geben Sie --clear-log-config an, um das Logging für diesen Job zu deaktivieren:

gcloud transfer jobs update NAME --clear-log-config

REST

Verwenden Sie transferJobs.patch mit LoggingConfig, um die Logging-Konfiguration eines vorhandenen Übertragungsjobs zu aktualisieren:

{
  "projectId": "test-id-001",
  "transferJob": {
    "loggingConfig": {
       "logActions": ["FIND", "DELETE", "COPY"],
       "logActionStates": ["SUCCEEDED", "FAILED", "SKIPPED"], #SKIPPED is only supported for agent-based transfers
    },
  },
  "updateTransferJobFieldMask": "loggingConfig"
}

updateTransferJobFieldMask gibt das Feld an, das in dieser Anfrage aktualisiert wird, und ist erforderlich.

Wenn Sie das Logging für diesen Job deaktivieren möchten, senden Sie eine loggingConfig mit leeren Listen für logActions und logActionStates:

{
  "projectId": "test-id-001",
  "transferJob": {
    "loggingConfig": {
       "logActions": [],
       "logActionStates": [],
    },
  },
  "updateTransferJobFieldMask": "loggingConfig"
}

Logs ansehen

So rufen Sie Übertragungslogs auf:

Google Cloud Console

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

    Zu „Log-Explorer“

  2. Wählen Sie ein Projekt in Google Cloud aus.

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

  4. Wenn Sie Ihre Logs so filtern möchten, dass nur Storage Transfer Service-Einträge angezeigt werden, geben Sie in das Abfragefeld storage_transfer_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 Using the Logs Explorer.

gcloud CLI

Wenn Sie mit der gcloud CLI nach Storage Transfer Service-Logs suchen möchten, verwenden Sie den Befehl gcloud logging read.

Geben Sie einen Filter an, um Ihre Ergebnisse auf Storage Transfer Service-Logs zu beschränken.

gcloud logging read "resource.type=storage_transfer_job"

Cloud Logging 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 in Storage Transfer Service enthalten sind. Unten finden Sie ein Beispiel für ein JSON-Anfrageobjekt.

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

Format von Übertragungslogs

Im folgenden Abschnitt werden die Felder für Storage Transfer Service-Logs beschrieben:

Alle spezifischen Felder für Storage Transfer Service sind in einem jsonPayload-Objekt enthalten.

FIND-Aktionen

{
  "jsonPayload": {
    "@type": "type.googleapis.com/google.storagetransfer.logging.TransferActivityLog",
    "action": "FIND",
    "completeTime": "2021-12-16T18:58:49.344509695Z",
    "destinationContainer": {
      "gcsBucket": {
        "bucket": "my-bucket-2",
      },
      "type": "GCS",
    },
    "operation": "transferOperations/transferJobs-7876027868280507149--3019866490856027148",
    "sourceContainer": {
      "gcsBucket": {
        "bucket": "my-bucket-1"
      },
      "type": "GCS"
    },
    "status": {
      "statusCode": "OK"
    }
  }
}

COPY- und DELETE-Aktionen

{
  "jsonPayload": {
    "@type": "type.googleapis.com/google.storagetransfer.logging.TransferActivityLog",
    "action": "COPY",
    "completeTime": "2021-12-16T18:59:00.510509049Z",
    "destinationObject": {
      "gcsObject": {
        "bucket": "my-bucket-2",
        "objectKey": "README.md"
      },
      "type": "GCS",
    },
    "operation": "transferOperations/transferJobs-7876027868280507149--3019866490856027148",
    "sourceObject": {
      "gcsObject": {
        "bucket": "my-bucket-1",
        "lastModifiedTime": "2021-12-07T16:41:09.456Z",
        "md5": "WgnCOIdfCXNTUDpQJSKb2w==",
        "objectKey": "README.md",
      },
      "type": "GCS",
    },
    "status": {
      "statusCode": "OK"
    }
  }
}
Logfeld Beschreibung
@type Der Wert ist immer type.googleapis.com/google.storagetransfer.logging.TransferActivityLog.
action

Beschreibt die Aktion dieser bestimmten Aufgabe. Beispiele:

  • FIND: Zu suchende Aufgaben finden, z. B. zum Auflisten von Dateien in einem Verzeichnis oder zum Auflisten von Objekten in einem Bucket. Wird nicht für agentbasierte Übertragungen gemeldet.
  • COPY: Dateien oder Objekte in Cloud Storage kopieren.
  • DELETE: Dateien oder Objekte an der Quelle, am Ziel oder im Zwischen-Bucket löschen.
findAction

Gibt an, ob das Subjekt der Suchaktion ein Objekt oder ein verwalteter Ordner war.

completeTime Der ISO 8601-konforme Zeitstempel, zu dem der Vorgang abgeschlossen wurde.
destinationContainer

Nur für FIND Vorgänge vorhanden. FIND-Vorgänge werden nicht für agentbasierte Übertragungen protokolliert.

Der Zielcontainer für diese Übertragung. Enthält zwei untergeordnete Felder:

  • gcsBucket.bucket: Der Name des Cloud Storage-Ziel-Buckets.
  • type: Immer GCS.
destinationObject

Nur für COPY und DELETE Vorgänge vorhanden.

Informationen zum Objekt am Ziel. Enthält zwei untergeordnete Felder:

  • Je nach Ziel entweder gcsObject, gcsManagedFolder, oder posixFile. Alle Optionen enthalten mehrere untergeordnete Felder, die Name, Speicherort, Datum/Uhrzeit info und den Hash des Objekts oder der Datei angeben.
  • type ist wahlweise GCS oder POSIX_FS.

Beispiel:

"destinationObject": {
  "type": "POSIX_FS",
  "posixFile": {
    "crc32c": "0",
    "path": "/tmp/data/filename.txt",
    "lastModifiedTime": "2022-09-22T04:33:45Z"
  }
}
operation Der vollständig qualifizierte transferOperations-Name.
sourceContainer

Nur für FIND Vorgänge vorhanden. FIND-Vorgänge werden nicht für agentbasierte Übertragungen protokolliert.

Der Quellcontainer für diese Übertragung. Enthält zwei untergeordnete Felder:

  • Ein Eintrag, der den Quellspeicherort angibt. Das Feld wird entsprechend dem Quelltyp benannt. Mögliche Felder:
    • awsS3Bucket.bucket: Der Name des AWS S3-Buckets.
    • azureBlobContainer: Enthält untergeordnete Felder account und container, die zusammen den Microsoft Azure Blob-Speicher-URI definieren.
    • gcsBucket.bucket: der Name des Cloud Storage-Buckets.
    • httpManifest.url: Die URL einer URL-Liste mit öffentlich verfügbaren Dateien, die von einem HTTP(S)-Server heruntergeladen werden können.
  • type ist wahlweise AWS_S3, AZURE_BLOB, GCS oder HTTP.

Beispiel:

"sourceContainer": {
  "gcsBucket": {
    "bucket": "my-bucket-1"
  },
  type: "GCS"
}
sourceObject

Nur für COPY und DELETE Vorgänge vorhanden.

Informationen zum Quellobjekt. Enthält zwei untergeordnete Felder:

  • Ein Eintrag, der für den Host des Quellobjekts spezifisch ist. Das Feld wird entsprechend dem Quelltyp benannt und enthält untergeordnete Felder für Metadaten. Mögliche Felder:
    • awsS3Object: Ein AWS-S3-Objekt.
    • azureBlob: Eine Datei in Azure Blob Storage.
    • gcsObject: Ein Cloud Storage-Objekt.
    • gcsManagedFolder: Ein verwalteter Cloud Storage Ordner.
    • httpFile: Eine Datei, die durch eine URL-Liste angegeben wurde.
    • posixFile: Eine Datei in einem POSIX-Dateisystem.
  • type ist wahlweise AWS_S3, AZURE_BLOB, GCS, HTTP, oder POSIX_FS.

Beispiel:

"sourceObject": {
  "gcsObject": {
    "bucket": "my-bucket-1"
    "lastModifiedTime": "2021-12-07T16:41:09.456Z"
    "md5": "WgnCOIdfCXNTUDpQJSKb2w=="
    "objectKey": "README.md"
  },
  type: "GCS"
}
status

Der Status der Aktion. Wenn status.statusCode den Wert OK hat, war die Aktion erfolgreich. Andernfalls ist die Aktion fehlgeschlagen. Die Felder status.errorType und status.errorMessage werden nur ausgefüllt, wenn der Status nicht OK lautet.

Außerdem enthält das übergeordnete Feld resource die folgenden Felder.

"resource": {
  "labels": {
    "job_id": "transferJobs/7876027868280507149"
    "project_id": "my-project-id"
  },
  "type": "storage_transfer_job"
}
Logfeld Beschreibung
resource.labels.job_id Der Name des Storage Transfer Service-Jobs, zu dem dieses Log gehört.
resource.labels.project_id Die Google Cloud-Projekt-ID für diese Übertragung.