Partilhar via


Log de sessão em uma atividade de cópia

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Gorjeta

Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange tudo, desde a movimentação de dados até ciência de dados, análises em tempo real, business intelligence e relatórios. Saiba como iniciar uma nova avaliação gratuitamente!

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

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

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

  • Depois de usar as atividades de cópia do ADF para copiar os arquivos de um armazenamento para outro, você encontrará alguns arquivos inesperados no armazenamento de destino. Você pode verificar os logs da sessão Copiar atividade para ver qual atividade realmente copiou os arquivos e quando. Com essa abordagem, você pode encontrar facilmente a causa raiz e corrigir suas configurações no ADF.
  • Depois de usar as atividades de cópia do ADF para copiar os arquivos de um armazenamento para outro, você descobre que os arquivos copiados para o destino não são os esperados do armazenamento de origem. Você pode verificar os logs de sessão de atividade de cópia para obter o carimbo de data/hora de trabalhos de cópia, bem como os metadados de arquivos quando as atividades de cópia do ADF os lerem do armazenamento de origem. Com essa abordagem, você pode 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 log de atividade de cópia, primeiro adicione uma atividade de cópia ao pipeline e, em seguida, use a guia Configurações para configurar o registro em log e várias opções de registro. Mostra como configurar o log para uma atividade de Cópia na guia 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. Lá, selecione a execução do pipeline que deseja monitorar e, em seguida, passe o mouse sobre a área ao lado do Nome da atividade, onde você encontrará ícones para links mostrando a entrada, saída (assim que estiver concluída) e outros detalhes do pipeline.

Mostra como localizar a saída de uma atividade de cópia no ADF Studio.

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

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

Veja abaixo os detalhes do formato de saída de log.

Configuração com JSON

O exemplo a seguir fornece uma definição JSON para habilitar o log de sessão em Copy Activity:

{
  "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/"
      }
    }
  }
}
Property Description Valores permitidos Necessário
enableCopyActivityLog Quando definido como true, você terá a oportunidade de registrar arquivos copiados, arquivos ignorados ou linhas ignoradas. True
Falso (predefinição)
Não
logNível "Info" registrará todos os arquivos copiados, arquivos ignorados e linhas ignoradas. "Aviso" registrará somente arquivos ignorados e linhas ignoradas. Informações
Aviso (padrão)
Não
enableReliableLogging Quando for verdadeiro, uma atividade de cópia no modo confiável liberará os logs imediatamente assim que cada arquivo for copiado para o destino. Ao copiar muitos arquivos com o modo de log confiável habilitado na atividade Copiar, 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 vai para o armazenamento de destino e outra para o armazenamento de armazenamento de log. Uma atividade de cópia no modo de melhor esforço liberará os logs com um lote de registros dentro de um período de tempo, e a taxa de transferência da 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 liberado para o arquivo de log quando uma atividade de cópia falhou. Nesse cenário, você verá que alguns arquivos copiados para o destino não são registrados. True
Falso (predefinição)
Não
logLocationSettings Um grupo de propriedades que pode ser usado para especificar o local para armazenar os logs de sessão. Não
linkedServiceName O serviço vinculado do Armazenamento de Blobs do Azure ou do Azure Data Lake Storage Gen2 para armazenar os arquivos de log de sessão. Os nomes de um AzureBlobStorage ou AzureBlobFS tipos de serviço vinculado, que se refere à instância que você usa para armazenar os arquivos de log. Não
path O caminho dos arquivos de log. Especifique o caminho que você deseja armazenar os arquivos de log. Se você não fornecer um caminho, o serviço criará um contêiner para você. Não

Monitorização

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 atividade de cópia executada. Você pode encontrar os arquivos de log no 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 seus dados estão em 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" 
           } 
        }

Nota

Quando a enableCopyActivityLog propriedade é definida como Enabled, os nomes dos 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.

Column Description
Carimbo de Data/Hora O carimbo de data/hora quando o ADF lê, grava ou ignora o objeto.
Level O nível de log deste item. Pode ser 'Aviso' ou 'Info'.
OperationName Comportamento operacional da atividade de cópia do ADF em cada objeto. Pode ser 'FileRead', FileWrite', 'FileSkip' ou 'TabularRowSkip'.
OperationItem Os nomes de arquivo ou 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 por que o arquivo ou linhas foram ignorados.

Aqui está 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 sample1.csv foi ignorado porque não foi verificado se era consistente entre o armazenamento de origem e de destino. Você pode obter mais detalhes sobre por que sample1.csv se torna inconsistente é porque estava sendo alterado por outros aplicativos quando a atividade de cópia do ADF está copiando ao mesmo tempo. Você também pode ver sample2.csv foi copiado com êxito do armazenamento 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, onde o nome da tabela pode ser SessionLogDemo.

  • Dê-me a lista de arquivos copiados.
select OperationItem from SessionLogDemo where Message like '%File is successfully copied%'
  • Dê-me a lista de arquivos copiados dentro de 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%'
  • Dê-me um arquivo específico com seu tempo copiado e metadados.
select * from SessionLogDemo where OperationItem='<file name>'
  • Dê-me uma lista de arquivos com seus 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%')
  • Dê-me a lista de arquivos ignorados.
select OperationItem from SessionLogDemo where OperationName='FileSkip'
  • Dê-me a razão pela qual um determinado arquivo foi ignorado.
select TIMESTAMP, OperationItem, Message from SessionLogDemo where OperationName='FileSkip'
  • Dê-me a lista de arquivos ignorados devido ao mesmo motivo: "arquivo blob não existe".
select TIMESTAMP, OperationItem, Message from SessionLogDemo where OperationName='FileSkip' and Message like '%UserErrorSourceBlobNotExist%'
  • Dê-me o nome de arquivo que requer o maior tempo para copiar.
select top 1 OperationItem, CopyDuration=DATEDIFF(SECOND, min(TIMESTAMP), max(TIMESTAMP)) from SessionLogDemo group by OperationItem order by CopyDuration desc

Veja os outros artigos da Atividade de cópia: