Cloud Logging para el Servicio de transferencia de almacenamiento

En esta página, se describe cómo configurar y ver Cloud Logging para los registros del Servicio de transferencia de almacenamiento.

Cloud Logging para el Servicio de transferencia de almacenamiento es compatible con todas las transferencias. Las operaciones de FIND no se registran para las transferencias basadas en agentes.

Además, las transferencias del sistema de archivos pueden configurar registros de transferencia del sistema de archivos.

Antes de comenzar

Antes de comenzar, verifica que tengas acceso a Cloud Logging. Recomendamos el rol Visualizador de registros (roles/logging.viewer) de Identity and Access Management. Para obtener más información sobre el acceso de Logging, consulta Control de acceso con IAM.

A continuación, se describe cómo verificar y otorgar el acceso a IAM:

Acciones registrables

Se pueden registrar las siguientes acciones:

  • FIND: Buscar trabajo para hacer, como enumerar archivos en un directorio, enumerar objetos en un bucket o enumerar carpetas administradas en un bucket. No se admite para las transferencias basadas en agentes.
  • COPY: Copiar archivos o objetos a Cloud Storage
  • DELETE: Borrar archivos o objetos en el origen o el destino. En el caso de las transferencias entre dos sistemas de archivos, también se registra la eliminación de archivos del bucket intermedio de Cloud Storage.

Para cada acción, puedes optar por registrar los estados de éxito o error.

Habilitar registro

Para habilitar el registro, especifica las acciones y los estados que se registrarán.

gcloud CLI

Cuando crees un trabajo de transferencia con gcloud transfer jobs create, usa las siguientes marcas para habilitar el registro:

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

Debes especificar al menos un valor para cada marca.

REST

Para crear una configuración de registro, usa transferJobs.create con un 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/"
      },
   }
}

Ajusta loggingConfig para incluir los logActions y logActionStates específicos que se registrarán. Por ejemplo, para registrar cuándo fallan las acciones de copia y búsqueda, proporciona el siguiente loggingConfig:

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

Actualiza una configuración de registro

gcloud CLI

Para actualizar la configuración de registro de un trabajo existente, usa las marcas adecuadas con el comando gcloud transfer jobs update:

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

Para inhabilitar el registro de esta tarea, especifica --clear-log-config:

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

REST

Para actualizar la configuración de registro de un trabajo de transferencia existente, usa transferJobs.patch con LoggingConfig:

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

El updateTransferJobFieldMask especifica el campo que se actualiza en esta solicitud y es obligatorio.

Para inhabilitar el registro de esta tarea, envía un loggingConfig con listas vacías para logActions y logActionStates:

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

Visualiza registros

Para ver los registros de transferencia, haz lo siguiente:

Consola de Google Cloud

  1. Ve al menú de navegación de Google Cloud y selecciona Logging > Explorador de registros :<br\></br\>

    Ir al Explorador de registros.

  2. Selecciona un proyecto de Google Cloud.

  3. En el menú Actualizar (Upgrade), cambia del Visor de registros heredados a Explorador de registros.

  4. Para filtrar tus registros de modo que solo muestren las entradas del Servicio de transferencia de almacenamiento, escribe storage_transfer_job en el campo de consulta y haz clic en Ejecutar consulta.

  5. En el panel Resultados de la consulta, haz clic en Editar hora para cambiar el período de los resultados mostrados.

Para obtener más información sobre el uso del Explorador de registros, consulta Usa el Explorador de registros.

gcloud CLI

Para usar la CLI de gcloud a fin de buscar registros del Servicio de transferencia de almacenamiento, usa el comando gcloud logging read.

Especifica un filtro para limitar tus resultados a los registros del Servicio de transferencia de almacenamiento.

gcloud logging read "resource.type=storage_transfer_job"

API de Cloud Logging

Usa el método de la API de Cloud Logging entries.list.

Para filtrar tus resultados y incluir solo las entradas relacionadas con el Servicio de transferencia de almacenamiento, usa el campo filter. A continuación, se muestra un objeto de solicitud JSON de muestra.

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

Formato de registro de transferencia

En la siguiente sección, se describen los campos para los registros del Servicio de transferencia de almacenamiento.

Todos los campos específicos del Servicio de transferencia de almacenamiento se encuentran dentro de un objeto jsonPayload.

FIND acciones

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

Acciones de COPY y 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"
    }
  }
}
Campo de registro Descripción
@type El valor es siempre type.googleapis.com/google.storagetransfer.logging.TransferActivityLog.
action

Describe la acción de esta tarea en particular. Uno de los siguientes:

  • FIND: buscar trabajo para hacer, como enumerar archivos en un directorio o enumerar objetos en un bucket. No se informa para las transferencias basadas en agentes.
  • COPY: Copiar archivos o objetos a Cloud Storage
  • DELETE: Borrar archivos o objetos en el origen, el destino o el bucket intermedio.
findAction

Especifica si el asunto de la acción de búsqueda fue un objeto o una carpeta administrada.

completeTime La marca de tiempo compatible con ISO 8601 en la que se completó la operación.
destinationContainer

Solo está presente para las operaciones FIND. Las operaciones de FIND no se registran para las transferencias basadas en agentes.

El contenedor de destino de esta transferencia. Contiene dos subcampos:

  • gcsBucket.bucket: El nombre del bucket de destino de Cloud Storage.
  • type: Siempre es GCS
destinationObject

Solo está presente para las operaciones COPY y DELETE.

Información sobre el objeto en el destino. Contiene dos subcampos:

  • Es uno de los siguientes: gcsObject, gcsManagedFolder o posixFile, según el destino. Todas las opciones contienen varios subcampos que especifican el nombre, la ubicación, la información de fecha y hora, y el hash del objeto o archivo.
  • type es uno de GCS o POSIX_FS.

Por ejemplo:

"destinationObject": {
  "type": "POSIX_FS",
  "posixFile": {
    "crc32c": "0",
    "path": "/tmp/data/filename.txt",
    "lastModifiedTime": "2022-09-22T04:33:45Z"
  }
}
operation El nombre transferOperations completamente calificado.
sourceContainer

Solo está presente para las operaciones FIND. Las operaciones de FIND no se registran para las transferencias basadas en agentes.

El contenedor de origen de esta transferencia. Contiene dos subcampos:

  • Una entrada que especifica la ubicación de origen. El campo se nombra según el tipo de fuente. Los campos posibles son los siguientes.
    • awsS3Bucket.bucket: Es el nombre del bucket de AWS S3.
    • azureBlobContainer: Contiene subcampos account y container, que en conjunto definen el URI de almacenamiento de Microsoft Azure Blob.
    • gcsBucket.bucket: El nombre del depósito de Cloud Storage.
    • httpManifest.url: La URL de una lista de URL que especifica los archivos disponibles de forma pública para descargarlos desde un servidor HTTP(S).
  • type: Es uno de AWS_S3, AZURE_BLOB, GCS o HTTP.

Por ejemplo:

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

Solo está presente para las operaciones COPY y DELETE.

Información sobre el objeto de origen. Contiene dos subcampos:

  • Una entrada específica para el host del objeto de origen. El campo se asigna según el tipo de fuente y contiene subcampos para los metadatos. Los campos posibles son los siguientes.
    • awsS3Object: Un objeto de AWS S3.
    • azureBlob: Un archivo en Azure Blob Storage.
    • gcsObject: Un objeto de Cloud Storage
    • gcsManagedFolder: Es una carpeta administrada por Cloud Storage.
    • httpFile: un archivo especificado por una lista de URL.
    • posixFile: Es un archivo en un sistema de archivos POSIX.
  • type es uno de AWS_S3, AZURE_BLOB, GCS, HTTP o POSIX_FS.

Por ejemplo:

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

El estado de la acción. Si status.statusCode es OK, la acción se realizó correctamente. De lo contrario, la acción falló. Los campos status.errorType y status.errorMessage solo se propagan si el estado no es OK.

Además, el campo de nivel superior resource contiene los siguientes campos.

"resource": {
  "labels": {
    "job_id": "transferJobs/7876027868280507149"
    "project_id": "my-project-id"
  }
  "type": "storage_transfer_job"
}
Campo de registro Descripción
resource.labels.job_id Indica el nombre del trabajo del Servicio de transferencia de almacenamiento al que pertenece este registro.
resource.labels.project_id Es el ID del proyecto de Google Cloud de esta transferencia.