Cloud Logging pour le service de transfert de stockage

Cette page explique comment configurer et afficher Cloud Logging pour les journaux du service de transfert de stockage.

Cloud Logging pour le service de transfert de stockage est compatible avec tous les transferts. Les opérations FIND ne sont pas consignées pour les transferts basés sur un agent.

Les transferts de systèmes de fichiers peuvent également configurer des journaux de transfert de système de fichiers.

Avant de commencer

Avant de commencer, vérifiez que vous avez accès à Cloud Logging. Nous vous recommandons le rôle Identity and Access Management (IAM) de lecteur de journaux (roles/logging.viewer). Pour en savoir plus sur l'accès à Logging, consultez la section Contrôle des accès avec IAM.

La section suivante explique comment vérifier et accorder l'accès IAM :

Actions enregistrables

Les actions suivantes peuvent être enregistrées:

  • FIND: recherche de tâches à effectuer, telles que répertorier les fichiers d'un répertoire ou les objets d'un bucket. Non disponible pour les transferts avec agent.
  • COPY : copie de fichiers ou d'objets vers Cloud Storage.
  • DELETE: supprimer des fichiers ou des objets à la source ou à la destination. Pour les transferts entre deux systèmes de fichiers, enregistre également la suppression de fichiers du bucket Cloud Storage intermédiaire.

Pour chaque action, vous pouvez choisir de consigner les états de réussite et/ou d'échec.

Activer la journalisation

Pour activer la journalisation, spécifiez les actions et les états à consigner.

gcloud CLI

Lorsque vous créez une tâche de transfert avec gcloud transfer jobs create, utilisez les options suivantes pour activer la journalisation:

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

Vous devez spécifier au moins une valeur pour chaque option.

REST

Pour créer une configuration de journalisation, utilisez la commande transferJobs.create avec un élément LoggingConfig :

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

Ajustez loggingConfig pour inclure les éléments logActions et logActionStates spécifiques à consigner. Par exemple, pour consigner l'échec de la copie et de la recherche d'actions, fournissez le loggingConfig suivant:

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

Mettre à jour une configuration de journalisation

gcloud CLI

Pour mettre à jour la configuration de journalisation d'une tâche existante, utilisez les options appropriées avec la commande gcloud transfer jobs update:

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

Pour désactiver la journalisation pour cette tâche, spécifiez --clear-log-config:

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

REST

Pour mettre à jour la configuration de journalisation d'un job de transfert existant, utilisez transferJobs.patch avec LoggingConfig:

{
  "projectId": "test-id-001",
  "transferJob": {
    "loggingConfig": {
       "logActions": ["FIND", "DELETE", "COPY"],
       "logActionStates": ["SUCCEEDED", "FAILED"],
    },
  },
  "updateTransferJobFieldMask": "loggingConfig"
}

updateTransferJobFieldMask spécifie le champ obligatoire qui est mis à jour dans cette requête.

Pour désactiver la journalisation pour cette tâche, envoyez un loggingConfig avec des listes vides pour logActions et logActionStates:

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

Afficher les journaux

Pour afficher les journaux de transfert, procédez comme suit :

Console Google Cloud

  1. Accédez au menu de navigation Google Cloud , puis sélectionnez Journaux > Explorateur de journaux :<br\></br\>

    Accéder à l'explorateur de journaux

  2. Sélectionnez un projet Google Cloud.

  3. Dans le menu Mettre à niveau, passez de l'ancienne visionneuse de journaux à l'explorateur de journaux.

  4. Pour filtrer vos journaux afin de n'afficher que les entrées du service de transfert de stockage, saisissez storage_transfer_job dans le champ de requête, puis cliquez sur Exécuter la requête.

  5. Dans le volet Résultats de la requête, cliquez sur Modifier l'heure pour modifier la période pendant laquelle les résultats doivent être renvoyés.

Pour en savoir plus sur l'utilisation de l'explorateur de journaux, consultez la page Utiliser l'explorateur de journaux.

gcloud CLI

Pour rechercher des journaux du service de transfert de stockage à l'aide de la CLI gcloud, utilisez la commande gcloud logging read.

Spécifiez un filtre pour limiter les résultats aux journaux du service de transfert de stockage.

gcloud logging read "resource.type=storage_transfer_job"

API Cloud Logging

Utilisez la méthode API Cloud Logging entries.list.

Pour filtrer vos résultats afin de n'inclure que les entrées liées au service de transfert de stockage, utilisez le champ filter. Vous trouverez ci-dessous un exemple d'objet de requête JSON.

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

Format du journal de transfert

La section suivante décrit les champs des journaux du service de transfert de stockage :

Tous les champs spécifiques au service de transfert de stockage sont contenus dans un objet jsonPayload.

FIND actions

{
  "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"
    }
  }
}

Actions COPY et DELETE

{
  "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"
    }
  }
}
Champ du journal Description
@type La valeur est toujours type.googleapis.com/google.storagetransfer.logging.TransferActivityLog.
action

Décrit l'action de cette tâche particulière. Choisissez l'une des options suivantes :

  • FIND : recherche de tâches à effectuer, comme répertorier les fichiers d'un répertoire ou les objets d'un bucket. Non rapporté pour les transferts basés sur un agent.
  • COPY : copie de fichiers ou d'objets vers Cloud Storage.
  • DELETE: suppression de fichiers ou d'objets dans le bucket source, de destination ou intermédiaire.
completeTime Horodatage conforme à la norme ISO 8601 indiquant quand l'opération s'est terminée.
destinationContainer

Présent uniquement pour les opérations FIND. Les opérations FIND ne sont pas consignées pour les transferts basés sur un agent.

Conteneur de destination pour ce transfert. Contient deux sous-champs:

  • gcsBucket.bucket : le nom du bucket Cloud Storage de destination.
  • type : toujours GCS.
destinationObject

Uniquement présent pour les opérations COPY et DELETE.

Informations sur l'objet dans la destination. Contient deux sous-champs:

  • gcsObject ou posixFile, selon la destination. Les deux options contiennent plusieurs sous-champs qui spécifient l'emplacement, la date et l'heure, ainsi que le hachage de l'objet ou du fichier.
  • type est l'une des valeurs suivantes : GCS ou POSIX_FS.

Exemple :

"destinationObject": {
  "type": "POSIX_FS",
  "posixFile": {
    "crc32c": "0",
    "path": "/tmp/data/filename.txt",
    "lastModifiedTime": "2022-09-22T04:33:45Z"
  }
}
operation Le nom complet de transferOperations.
sourceContainer

Présent uniquement pour les opérations FIND. Les opérations FIND ne sont pas consignées pour les transferts basés sur un agent.

Le conteneur source pour ce transfert. Contient deux sous-champs :

  • Une entrée spécifiant l'emplacement source. Le nom du champ dépend du type de source. Les champs possibles sont les suivants.
    • awsS3Bucket.bucket : nom du bucket AWS S3.
    • azureBlobContainer : contient les sous-champs account et container, qui définissent ensemble l'URI de stockage Microsoft Azure Blob.
    • gcsBucket.bucket : le nom du bucket Cloud Storage.
    • httpManifest.url : l'URL d'une liste d'URL spécifiant les fichiers accessibles au public à télécharger depuis un serveur HTTP(S).
  • type correspond à AWS_S3, AZURE_BLOB, GCS ou HTTP.

Exemple :

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

Uniquement présent pour les opérations COPY et DELETE.

Informations sur l'objet source. Contient deux sous-champs :

  • Une entrée spécifique à l'hôte de l'objet source. Le champ est nommé en fonction du type de source et contient des sous-champs pour les métadonnées. Les champs possibles sont les suivants.
    • awsS3Object : un objet AWS S3.
    • azureBlob : un fichier dans Azure Blob Storage.
    • gcsObject : un objet Cloud Storage.
    • httpFile : un fichier spécifié par une liste d'URL.
    • posixFile: fichier sur un système de fichiers POSIX.
  • type est l'un des éléments suivants : AWS_S3, AZURE_BLOB, GCS, HTTP ou POSIX_FS.

Exemple :

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

L'état de l'action. Si la valeur de status.statusCode est OK, l'action a réussi. Sinon, l'action a échoué. Les champs status.errorType et status.errorMessage ne sont renseignés que si l'état n'est pas OK.

De plus, le champ de niveau supérieur resource contient les champs suivants.

"resource": {
  "labels": {
    "job_id": "transferJobs/7876027868280507149"
    "project_id": "my-project-id"
  }
  "type": "storage_transfer_job"
}
Champ du journal Description
resource.labels.job_id Le nom de la tâche du service de transfert de stockage à laquelle appartient ce journal.
resource.labels.project_id L'ID de projet Google Cloud pour ce transfert.