Compartilhar via


Registro de sessão em uma atividade Copy

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Dica

Data Factory no Microsoft Fabric é a próxima geração de Azure Data Factory, com uma arquitetura mais simples, IA interna e novos recursos. Se você não estiver familiarizado com a integração de dados, comece com Fabric Data Factory. As cargas de trabalho existentes do ADF podem ser atualizadas para Fabric para acessar novos recursos em ciência de dados, análise em tempo real e relatórios.

Você pode registrar os nomes dos arquivos copiados em uma atividade de cópia. Isso pode ajudar a garantir que os dados não sejam apenas copiados com êxito da origem para o destino, mas também validem a consistência entre a origem e o destino.

Quando você habilita a configuração de tolerância a falhas em uma atividade de cópia para ignorar dados defeituosos, os arquivos e linhas ignorados também podem ser registrados em log. Você pode obter mais detalhes da tolerância a falhas na atividade de cópia.

Dado que você tem a oportunidade de obter todos os nomes de arquivo copiados por Azure Data Factory (ADF) atividade Copy por meio da habilitação do log de sessão, isso será útil para você nos seguintes cenários:

  • Depois de usar as atividades Copy do ADF para copiar os arquivos de um armazenamento para outro, você encontra alguns arquivos inesperados em um armazenamento de destino. Você pode examinar os logs de sessão atividade Copy para ver qual atividade realmente copiou os arquivos e quando. Com essa abordagem, é possível encontrar a causa raiz e corrigir as configurações no ADF com facilidade.
  • Depois de usar as atividades Copy do ADF para copiar os arquivos de um armazenamento para outro, você verifica que os arquivos copiados para o destino não são os esperados do repositório de origem. Você pode verificar os logs de sessão da atividade Copy para obter o carimbo de data/hora dos trabalhos de cópia e os metadados de arquivos, quando as atividades Copy do ADF as leem a partir do armazenamento de origem. Com essa abordagem, é possível confirmar se os arquivos foram atualizados por outros aplicativos no armazenamento de origem depois de serem copiados pelo ADF.

Configuração com o Azure Data Factory Studio

Para configurar o registro em log da atividade Copy, primeiro adicione um atividade Copy ao pipeline e, em seguida, use sua guia Configurações para configurar o registro em log e várias opções de registro em log. Mostra como configurar o registro de logs para uma atividade de cópia na aba de configurações.

Para monitorar posteriormente o log, você pode verificar a saída de uma execução de pipeline na guia Monitoramento do ADF Studio em execuções de pipeline. Nessa opção, selecione a execução de pipeline que você deseja monitorar e passe o mouse sobre a área ao lado do Nome da atividade, onde você encontrará ícones para links mostrando a entrada do pipeline, a saída (quando for concluída) e outros detalhes.

Mostra como encontrar a saída de uma atividade de Cópia no ADF Studio.

Selecione o ícone de saída para ver detalhes do registro em log do trabalho e anote o local de registro em log na conta de armazenamento selecionada, onde é possível ver os detalhes de todas as atividades registradas.

Mostra a saída de uma atividade de cópia com registro ativado.

Consulte abaixo para obter detalhes do formato de saída do log.

Configuração com JSON

O exemplo a seguir fornece uma definição de JSON para habilitar o registro da sessão na atividade Copy:

{
  "name": "CopyActivityLog",
  "type": "Copy",
  "typeProperties": {
    "source": {
      "type": "BinarySource",
      "storeSettings": {
        "type": "AzureDataLakeStoreReadSettings",
        "recursive": true
      },
      "formatSettings": {
        "type": "BinaryReadSettings"
      }
    },
    "sink": {
      "type": "BinarySink",
      "storeSettings": {
        "type": "AzureBlobFSWriteSettings"
      }
    },
    "skipErrorFile": {
      "fileForbidden": true,
      "dataInconsistency": true
    },
    "validateDataConsistency": true,
    "logSettings": {
      "enableCopyActivityLog": true,
      "copyActivityLogSettings": {
        "logLevel": "Warning",
        "enableReliableLogging": false
      },
      "logLocationSettings": {
        "linkedServiceName": {
          "referenceName": "ADLSGen2",
          "type": "LinkedServiceReference"
        },
        "path": "sessionlog/"
      }
    }
  }
}
Propriedade Descrição Valores permitidos Obrigatório
AtivarRegistroDeCópiaDeAtividades Quando definido como true, você terá a oportunidade de registrar arquivos copiados, arquivos ignorados ou linhas ignoradas. Verdadeiro
Falso (padrão)
Não
logLevel “Info” registrará em log todos os arquivos copiados, arquivos ignorados e linhas ignoradas. “Aviso” registrará em log somente arquivos ignorados e linhas ignoradas. Informação
Aviso (padrão)
Não
habilitarRegistroConfiável Quando for true, a atividade Copy em modo confiável libera os registros imediatamente depois que cada arquivo for copiado para o destino. Ao copiar muitos arquivos com o modo de registro em log confiável habilitado no atividade Copy, você deve esperar que a taxa de transferência seja afetada, já que operações de gravação dupla são necessárias para cada arquivo copiado. Uma solicitação é para o repositório de destino e outra é para o repositório de armazenamento de registro. Uma atividade Copy no modo de melhor esforço limpará os registros com o lote de registros em um período e a taxa de transferência de cópia será muito menos afetada. A integridade e a pontualidade do registro em log não são garantidas nesse modo, pois há algumas possibilidades de que o último lote de eventos de log não tenha sido despejado no arquivo de log quando uma atividade de cópia falhou. Neste cenário, você verá que alguns arquivos copiados para o destino não foram registrados. Verdadeiro
Falso (padrão)
Não
logLocationSettings Um grupo de propriedades que pode ser utilizado para especificar o local para armazenar os registros de sessão. Não
nomeDoServiçoVinculado O serviço vinculado de Armazenamento de Blobs do Azure ou Azure Data Lake Storage Gen2 para armazenar os arquivos de log de sessão. O nome de um serviço vinculado AzureBlobStorage ou AzureBlobFS, que se refere à instância de armazenamento que você usa para armazenar os arquivos de log. Não
caminho O caminho dos arquivos de log. Especifique o caminho que você quer armazenar os arquivos de log. Se você não fornecer um caminho, o serviço criará um contêiner para você. Não

Monitoramento

Saída de uma atividade de cópia

Depois que a atividade de cópia for executada completamente, você poderá ver o caminho dos arquivos de log a partir da saída de cada execução da atividade de cópia. Você pode encontrar os arquivos de log do caminho: https://[your-blob-account].blob.core.windows.net/[logFilePath]/copyactivity-logs/[copy-activity-name]/[copy-activity-run-id]/[auto-generated-GUID].txt. Os arquivos de log gerados têm a extensão TXT, e os dados deles estão no formato CSV.

"output": {
            "dataRead": 695,
            "dataWritten": 186,
            "filesRead": 3,  
            "filesWritten": 1, 
            "filesSkipped": 2, 
            "throughput": 297,
            "logFilePath": "myfolder/a84bf8d4-233f-4216-8cb5-45962831cd1b/",
            "dataConsistencyVerification": 
           { 
                "VerificationResult": "Verified", 
                "InconsistentData": "Skipped" 
           } 
        }

Observação

Quando a propriedade enableCopyActivityLog é definida como Enabled, os nomes de arquivos de log são gerados pelo sistema.

O esquema do arquivo de log

A tabela a seguir mostra o esquema de um arquivo de log.

Coluna Descrição
Timestamp A data/hora em que o ADF lê, grava ou ignora o objeto.
Nível O nível de log deste item. Pode ser “Aviso” ou “Info”.
NomeDaOperação O comportamento operacional da atividade ADF Copy para cada objeto. Pode ser “FileRead”, “FileWrite”, “FileSkip” ou “TabularRowSkip”.
ItemDeOperação Os nomes de arquivo ou as linhas ignoradas.
Mensagem Mais informações para mostrar se o arquivo foi lido do repositório de origem ou gravado no repositório de destino. Também pode ser o motivo pelo qual o arquivo ou as linhas estão sendo ignorados.

Segue abaixo um exemplo de um arquivo de log:

Timestamp, Level, OperationName, OperationItem, Message
2020-10-19 08:39:13.6688152,Info,FileRead,"sample1.csv","Start to read file: {""Path"":""sample1.csv"",""ItemType"":""File"",""Size"":104857620,""LastModified"":""2020-10-19T08:22:31Z"",""ETag"":""\""0x8D874081F80C01A\"""",""ContentMD5"":""dGKVP8BVIy6AoTtKnt+aYQ=="",""ObjectName"":null}"
2020-10-19 08:39:56.3190846, Warning, FileSkip, "sample1.csv", "File is skipped after read 548000000 bytes: ErrorCode=DataConsistencySourceDataChanged,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Source file 'sample1.csv' is changed by other clients during the copy activity run.,Source=,'." 
2020-10-19 08:40:13.6688152,Info,FileRead,"sample2.csv","Start to read file: {""Path"":""sample2.csv"",""ItemType"":""File"",""Size"":104857620,""LastModified"":""2020-10-19T08:22:31Z"",""ETag"":""\""0x8D874081F80C01A\"""",""ContentMD5"":""dGKVP8BVIy6AoTtKnt+aYQ=="",""ObjectName"":null}"
2020-10-19 08:40:13.9003981,Info,FileWrite,"sample2.csv","Start to write file from source file: sample2.csv."
2020-10-19 08:45:17.6508407,Info,FileRead,"sample2.csv","Complete reading file successfully. "
2020-10-19 08:45:28.7390083,Info,FileWrite,"sample2.csv","Complete writing file from source file: sample2.csv. File is successfully copied."

No arquivo de log acima, você pode ver que sample1.csv foi ignorado porque ele não pôde ser verificado para ser consistente entre o repositório de origem e de destino. Você pode obter mais detalhes sobre por que sample1.csv se torna inconsistente porque ele estava sendo alterado por outros aplicativos quando o ADF atividade Copy está copiando ao mesmo tempo. Você também pode ver que sample2.csv foi copiado com êxito do repositório de origem para o de destino.

Você pode usar vários mecanismos de análise para analisar ainda mais os arquivos de log. Há alguns exemplos abaixo para usar a consulta SQL para analisar o arquivo de log importando o arquivo de log CSV para o banco de dados SQL em que o nome da tabela pode ser SessionLogDemo.

  • Forneça a lista de arquivos copiados.
select OperationItem from SessionLogDemo where Message like '%File is successfully copied%'
  • Forneça a lista de arquivos copiados em um intervalo de tempo específico.
select OperationItem from SessionLogDemo where TIMESTAMP >= '<start time>' and TIMESTAMP <= '<end time>' and Message like '%File is successfully copied%'
  • Forneça um arquivo específico com o horário de cópia e seus metadados.
select * from SessionLogDemo where OperationItem='<file name>'
  • Forneça uma lista de arquivos com os metadados copiados dentro de um intervalo de tempo.
select * from SessionLogDemo where OperationName='FileRead' and Message like 'Start to read%' and OperationItem in (select OperationItem from SessionLogDemo where TIMESTAMP >= '<start time>' and TIMESTAMP <= '<end time>' and Message like '%File is successfully copied%')
  • Me mostre a lista de arquivos ignorados.
select OperationItem from SessionLogDemo where OperationName='FileSkip'
  • Forneça o motivo pelo qual um arquivo específico foi ignorado.
select TIMESTAMP, OperationItem, Message from SessionLogDemo where OperationName='FileSkip'
  • Forneça a lista de arquivos ignorados devido ao mesmo motivo: “o arquivo de blob não existe”.
select TIMESTAMP, OperationItem, Message from SessionLogDemo where OperationName='FileSkip' and Message like '%UserErrorSourceBlobNotExist%'
  • Forneça o nome do arquivo que requer o tempo mais longo para copiar.
select top 1 OperationItem, CopyDuration=DATEDIFF(SECOND, min(TIMESTAMP), max(TIMESTAMP)) from SessionLogDemo group by OperationItem order by CopyDuration desc

Consulte os outros artigos sobre atividade de cópia: