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.
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.
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.
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
Conteúdos relacionados
Veja os outros artigos da Atividade de cópia: