Ativar a geração de registros para o Serviço de transferência do Cloud Storage

Esta página descreve como configurar o Serviço de transferência do Cloud Storage para gerar dados de registro que gravam ações e estados. É possível visualizar e analisar os dados de registro usando o Cloud Logging.

O Serviço de transferência do Cloud Storage pode gerar dados de registro para todas as transferências. No entanto, as operações FIND não são registradas para transferências baseadas em agentes.

As transferências do sistema de arquivos também podem configurar registros de transferência do sistema de arquivos.

Antes de começar

Antes de começar, verifique se você tem acesso ao Cloud Logging. Recomendamos o papel Leitor de registros (roles/logging.viewer). do Identity and Access Management. Para mais informações sobre o acesso ao Logging, consulte Controle de acesso com o IAM.

Os documentos a seguir descrevem como verificar seu acesso atual e como conceder papéis do IAM:

Ações registráveis

As seguintes ações podem ser registradas:

  • FIND: buscar trabalho a fazer, como listar arquivos em um diretório, listar objetos em um bucket ou listar pastas gerenciadas em um bucket. Não há suporte para transferências baseadas em agentes.
  • COPY: copiar arquivos ou objetos para o Cloud Storage.
  • DELETE: excluir arquivos ou objetos na origem ou no destino. Para transferências entre dois sistemas de arquivos, também registra a exclusão de arquivos do bucket intermediário do Cloud Storage.

Estados registráveis

Para cada ação, também é possível registrar um ou mais dos seguintes estados:

  • SUCCEEDED: a ação foi bem-sucedida.
  • FAILED: a ação falhou.
  • SKIPPED: só se aplica à ação COPY e só é compatível com jobs de transferência baseados em agentes. Precisa ser definido usando gcloud ou API REST. Esse estado significa que a cópia foi ignorada. Isso ocorre quando o arquivo já existe no coletor e o job de transferência está configurado para ignorar arquivos atuais.

Práticas recomendadas

Ativar a geração de registros para a ação FIND ou para o estado SUCCEEDED pode resultar em um grande volume de dados de registro, o que pode afetar seus custos do Cloud Logging.

É possível usar as seguintes estratégias para reduzir o volume de dados de registro armazenados:

  • Registrar apenas falhas. Se você não precisar de uma auditoria de conformidade completa no nível do objeto, configure o job para gravar registros apenas para ações de cópia e exclusão e somente quando ocorrer uma falha.

  • Use dados de métricas para monitorar a capacidade de processamento, as contagens de bytes e os objetos ignorados ou com falha. É possível criar gráficos e monitorar dados de métricas usando uma política de alertas. Para uma lista de métricas disponíveis, consulte Serviço de transferência do Cloud Storage.

  • Configure o Cloud Logging para descartar dados de registro de alto volume e baixo valor. Para fazer essa mudança, atualize os coletores de registro no projeto para excluir dados de registro de baixo valor do Serviço de transferência do Cloud Storage. Como todos os coletores de registro em um projeto avaliam todas as entradas de registro, talvez seja necessário atualizar vários coletores de registro.

    Use o filtro de exclusão a seguir para excluir entradas de registro do Serviço de transferência do Cloud Storage que registram ações bem-sucedidas:

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

    Para informações sobre como encontrar e modificar os coletores de registro, consulte Rotear registros para destinos compatíveis.

Ativar a geração de registros

Para configurar o Serviço de transferência do Cloud Storage para gerar dados de registro, especifique as ações e os estados a serem registrados.

CLI gcloud

Ao criar um job de transferência com gcloud transfer jobs create, use as seguintes flags para ativar a geração de registros:

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

É preciso especificar pelo menos um valor para cada flag.

REST

Para criar uma configuração de geração de registros, use transferJobs.create com um 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/"
      },
   }
}

Ajuste loggingConfig para incluir os logActions e logActionStates específicos a serem registrados. Por exemplo, para registrar quando as ações de copiar e buscar falharem, forneça o seguinte loggingConfig:

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

Atualizar uma configuração de geração de registros

CLI gcloud

Para atualizar a configuração de geração de registros de um job atual, use as flags apropriadas com o gcloud transfer jobs update comando:

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

Para desativar a geração de registros para esse job, especifique --clear-log-config:

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

REST

Para atualizar uma configuração de geração de registros de uma transferência atual, use transferJobs.patch com LoggingConfig:

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

O updateTransferJobFieldMask especifica o campo que está sendo atualizado nesta solicitação e é obrigatório.

Para desativar a geração de registros para esse job, envie um loggingConfig com listas vazias para logActions e logActionStates:

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

Ver registros

Para ver os registros de transferência, faça o seguinte:

Google Cloud Console do

  1. Acesse o menu de navegação do Google Cloud e selecione Logging > Análise de registros :

    Acesse a Análise de registros

  2. Selecionar um Google Cloud projeto do

  3. No menu Upgrade, alterne de Leitor de registros legados para Análise de registros.

  4. Para filtrar seus registros e mostrar apenas entradas do Serviço de transferência do Cloud Storage, digite storage_transfer_job no campo de consulta e clique em Executar consulta.

  5. No painel Resultados da consulta, clique em Editar hora para alterar o período de retorno dos resultados.

Para mais informações sobre como usar a Análise de registros, consulte Como usar a Análise de registros.

CLI gcloud

Para usar a CLI gcloud para pesquisar registros do Serviço de transferência do Cloud Storage, use o comando gcloud logging read.

Especifique um filtro para limitar os resultados aos registros do Serviço de transferência do Cloud Storage.

gcloud logging read "resource.type=storage_transfer_job"

API Cloud Logging

Use o método entries.list da API Cloud Logging.

Para filtrar os resultados e incluir apenas entradas relacionadas ao Serviço de transferência do Cloud Storage, use o campo filter. Veja abaixo um exemplo de objeto de solicitação JSON.

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

Formato do registro de transferência

A tabela a seguir descreve os campos para os registros do Serviço de transferência do Cloud Storage:

Todos os campos específicos do Serviço de transferência do Cloud Storage estão contidos em um objeto jsonPayload.

Ações FIND

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

Ações COPY e 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 Descrição
@type O valor é sempre type.googleapis.com/google.storagetransfer.logging.TransferActivityLog.
action

Descreve a ação dessa tarefa específica. Opções:

  • FIND: buscar trabalho a fazer, como listar arquivos em um diretório ou listar objetos em um bucket. Não informado para transferências baseadas em agentes.
  • COPY: copiar arquivos ou objetos para o Cloud Storage.
  • DELETE: excluir arquivos ou objetos na origem, no destino ou no bucket intermediário.
findAction

Especifica se o assunto da ação de busca era um objeto ou uma pasta gerenciada.

completeTime O carimbo de data e hora em conformidade com a ISO 8601 em que a operação foi concluída.
destinationContainer

Presente apenas para operações FIND. As operações FIND não são registradas para transferências baseadas em agentes.

O contêiner de destino dessa transferência. Contém dois subcampos:

  • gcsBucket.bucket: o nome do bucket de destino do Cloud Storage.
  • type: sempre GCS.
destinationObject

Presente apenas para COPY e DELETE operações.

Informações sobre o objeto no destino. Contém dois subcampos:

  • Um de gcsObject, gcsManagedFolder, ou posixFile, dependendo do destino. Todas as opções contêm vários subcampos que especificam o nome, o local, as informações de data/hora e o hash do objeto ou arquivo.
  • type é um de GCS ou POSIX_FS.

Exemplo:

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

Presente apenas para operações FIND. As operações FIND não são registradas para transferências baseadas em agentes.

O contêiner de origem dessa transferência. Contém dois subcampos:

  • Uma entrada especificando o local de origem. O campo é nomeado de acordo com o tipo de origem. Veja abaixo os campos possíveis.
    • awsS3Bucket.bucket: o nome do bucket do AWS S3.
    • azureBlobContainer: contém subcampos account e container, que juntos definem o URI de armazenamento do Blob do Microsoft Azure.
    • gcsBucket.bucket: o nome do bucket do Cloud Storage.
    • httpManifest.url: o URL de uma lista de URLs que especifica arquivos disponíveis publicamente para download em um servidor HTTP(S).
  • type é um dos campos AWS_S3, AZURE_BLOB, GCS ou HTTP.

Exemplo:

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

presente apenas para operações COPY e DELETE.

Informações sobre o objeto de origem. Contém dois subcampos:

  • Uma entrada específica para o host do objeto de origem. O campo é nomeado de acordo com o tipo de origem e contém subcampos para os metadados. Veja abaixo os campos possíveis.
    • awsS3Object: um objeto AWS S3.
    • azureBlob: um arquivo no Armazenamento de Blobs do Azure.
    • gcsObject: um objeto do Cloud Storage.
    • gcsManagedFolder: uma pasta gerenciada do Cloud Storage.
    • httpFile: um arquivo especificado por uma lista de URLs.
    • posixFile: um arquivo em um sistema de arquivos POSIX.
  • type é um dos campos AWS_S3, AZURE_BLOB, GCS, HTTP, ou POSIX_FS.

Exemplo:

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

O status da ação. Se status.statusCode for OK, a ação foi bem-sucedida. Caso contrário, a ação falhou. Os campos status.errorType e status.errorMessage só serão preenchidos se o status não for OK.

Além disso, o campo resource de nível superior contém os seguintes campos.

"resource": {
  "labels": {
    "job_id": "transferJobs/7876027868280507149"
    "project_id": "my-project-id"
  },
  "type": "storage_transfer_job"
}
Campo de registro Descrição
resource.labels.job_id O nome do job do Serviço de transferência do Cloud Storage a que o registro pertence.
resource.labels.project_id O ID do projeto do Google Cloud para essa transferência.