Log sessione in un attività Copy

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

È possibile registrare i nomi di file copiati in un attività Copy. Ciò consente di garantire che i dati non vengano copiati correttamente dall'origine alla destinazione, ma anche convalidare la coerenza tra origine e destinazione.

Quando si abilita l'impostazione di tolleranza di errore in un attività Copy per ignorare i dati di errore, è possibile registrare anche i file ignorati e le righe ignorate. È possibile ottenere altri dettagli dalla tolleranza di errore nell'attività di copia.

Dato che è possibile ottenere tutti i nomi di file copiati da Azure Data Factory (ADF) attività Copy tramite l'abilitazione del log sessione, sarà utile per l'utente negli scenari seguenti:

  • Dopo aver usato le attività di copia di ADF per copiare i file da un archivio a un altro, è possibile trovare alcuni file imprevisti nell'archivio di destinazione. È possibile analizzare i log delle sessioni attività Copy per visualizzare l'attività effettivamente copiata dai file e quando. Con questo approccio è possibile trovare facilmente la causa radice e correggere le configurazioni in ADF.
  • Dopo aver usato le attività di copia di ADF per copiare i file da un archivio a un altro, i file copiati nella destinazione non sono quelli previsti dall'archivio di origine. È possibile analizzare i log delle sessioni attività Copy per ottenere il timestamp dei processi di copia e i metadati dei file quando le attività di copia ADF leggono dall'archivio di origine. Con questo approccio è possibile verificare se i file sono stati aggiornati da altre applicazioni nell'archivio di origine dopo essere stati copiati da ADF.

Configurazione con Azure Data Factory Studio

Per configurare attività Copy registrazione, aggiungere prima un attività Copy alla pipeline e quindi usare la scheda Impostazioni per configurare la registrazione e varie opzioni di registrazione. Shows how to configure logging for a Copy activity in the settings tab.

Per monitorare successivamente il log, è possibile controllare l'output di una pipeline eseguita nella scheda Monitoraggio di ADF Studio in esecuzione della pipeline. Selezionare l'esecuzione della pipeline da monitorare e quindi passare il puntatore del mouse sull'area accanto al nome dell'attività, in cui sono disponibili icone per i collegamenti che mostrano l'input della pipeline, l'output (una volta completato) e altri dettagli.

Shows how to find the output of a Copy activity in ADF Studio.

Selezionare l'icona di output per visualizzare i dettagli della registrazione per il processo e prendere nota del percorso di registrazione nell'account di archiviazione selezionato, in cui è possibile visualizzare i dettagli di tutte le attività registrate.

Shows the output of a Copy activity with logging enabled.

Per informazioni dettagliate sul formato di output del log, vedere di seguito.

Configurazione con JSON

Nell'esempio seguente viene fornita una definizione JSON per abilitare il log sessione nell'attività di copia:

"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/"
        }
    }
}
Proprietà Descrizione Valori consentiti Obbligatoria
enableCopyActivityLog Se impostato su true, sarà possibile registrare file copiati, file ignorati o righe ignorate. True
False (impostazione predefinita)
No
logLevel "Info" registra tutti i file copiati, i file ignorati e le righe ignorate. "Avviso" registra solo file ignorati e righe ignorate. Info
Warning (impostazione predefinita)
No
enableReliableLogging Quando è vero, un attività Copy in modalità affidabile scarica i log immediatamente una volta copiato ogni file nella destinazione. Quando si copiano molti file con modalità di registrazione affidabile abilitata nella attività Copy, si prevede che la velocità effettiva venga influenzata, poiché le operazioni di scrittura doppie sono necessarie per ogni file copiato. Una richiesta passa all'archivio di destinazione e un'altra all'archivio di archiviazione log. Un attività Copy in modalità migliore sforzo scarica i log con batch di record entro un periodo di tempo e la velocità effettiva della copia sarà molto meno influenzata. La completezza e la tempestività della registrazione non è garantita in questa modalità, poiché esistono alcune possibilità che l'ultimo batch di eventi di log non sia stato scaricato nel file di log quando un attività Copy non è riuscito. In questo scenario verranno visualizzati alcuni file copiati nella destinazione non registrati. True
False (impostazione predefinita)
No
logLocationSettings Gruppo di proprietà che possono essere usate per specificare il percorso per archiviare i log della sessione. No
linkedServiceName Servizio collegato di Archiviazione BLOB di Azure o Azure Data Lake Storage Gen2 per archiviare i file di log della sessione. Nomi di un servizio collegato di tipo AzureBlobStorage o AzureBlobFS che fa riferimento all'istanza da usare per archiviare i file di log. No
path Percorso dei file di log. Specificare il percorso desiderato per archiviare i file di log. Se non si specifica un percorso, il servizio crea un contenitore per l'utente. No

Monitoraggio

Output da un attività Copy

Dopo aver eseguito completamente l'attività di copia, è possibile visualizzare il percorso dei file di log dall'output di ogni attività Copy esecuzione. È possibile trovare i file di log dal percorso: https://[your-blob-account].blob.core.windows.net/[logFilePath]/copyactivity-logs/[copy-activity-name]/[copy-activity-run-id]/[auto-generated-GUID].txt. I file di log generati hanno l'estensione .txt e i relativi dati sono in 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 la enableCopyActivityLog proprietà è impostata su Enabled, i nomi dei file di log vengono generati dal sistema.

Schema del file di log

Nella tabella seguente viene illustrato lo schema di un file di log.

Colonna Descrizione
Timestamp Timestamp quando ADF legge, scrive o ignora l'oggetto.
Level Livello log dell'elemento. Può essere "Avviso" o "Info".
OperationName ADF attività Copy comportamento operativo in ogni oggetto. Può essere 'FileRead', 'FileWrite', 'FileSkip' o 'TabularRowSkip'.
OperationItem Nomi di file o righe ignorate.
Message Altre informazioni per visualizzare se il file è stato letto dall'archivio di origine o scritto nell'archivio di destinazione. Può anche essere il motivo per cui il file o le righe è stato ignorato.

Ecco un esempio di file di 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."

Dal file di log riportato sopra, è possibile vedere che sample1.csv è stato ignorato perché non è stato possibile verificarne la coerenza tra l'archivio di origine e quello di destinazione. È possibile ottenere altri dettagli sul motivo per cui sample1.csv diventa incoerente perché è stato modificato da altre applicazioni quando ADF attività Copy copia contemporaneamente. È anche possibile vedere sample2.csv è stato copiato correttamente dall'origine all'archivio di destinazione.

È possibile usare più motori di analisi per analizzare ulteriormente i file di log. Di seguito sono riportati alcuni esempi per usare SQL query per analizzare il file di log importando file di log csv in SQL database in cui il nome della tabella può essere SessionLogDemo.

  • Assegnami l'elenco di file copiato.
select OperationItem from SessionLogDemo where Message like '%File is successfully copied%'
  • Assegnami l'elenco di file copiato in un intervallo di tempo specifico.
select OperationItem from SessionLogDemo where TIMESTAMP >= '<start time>' and TIMESTAMP <= '<end time>' and Message like '%File is successfully copied%'
  • Dammi un particolare file con l'ora e i metadati copiati.
select * from SessionLogDemo where OperationItem='<file name>'
  • Assegnare un elenco di file con i relativi metadati copiati entro un intervallo di 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%')
  • Dammi l'elenco di file ignorato.
select OperationItem from SessionLogDemo where OperationName='FileSkip'
  • Datemi il motivo per cui un determinato file è saltato.
select TIMESTAMP, OperationItem, Message from SessionLogDemo where OperationName='FileSkip'
  • Assegnare l'elenco dei file ignorati a causa dello stesso motivo: "il file BLOB non esiste".
select TIMESTAMP, OperationItem, Message from SessionLogDemo where OperationName='FileSkip' and Message like '%UserErrorSourceBlobNotExist%'
  • Assegnami il nome file che richiede il tempo più lungo per la copia.
select top 1 OperationItem, CopyDuration=DATEDIFF(SECOND, min(TIMESTAMP), max(TIMESTAMP)) from SessionLogDemo group by OperationItem order by CopyDuration desc

Passaggi successivi

Vedere gli altri articoli relativi all'attività di copia: