Log di sessione in un attività Copy

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

Suggerimento

Provare Data Factory in Microsoft Fabric, una soluzione di analisi completa per le aziende. Microsoft Fabric copre tutti gli elementi, dallo spostamento dei dati all'analisi scientifica dei dati, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Scopri come avviare gratuitamente una nuova versione di valutazione .

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

Quando si abilita l'impostazione della tolleranza di errore in un attività Copy per ignorare i dati difettosi, è anche possibile registrare 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 di sessione, sarà utile per l'utente negli scenari seguenti:

  • Dopo aver usato le attività di copia di Azure Data Factory per copiare i file da una risorsa di archiviazione a un'altra, si trovano alcuni file imprevisti nell'archivio di destinazione. È possibile analizzare i log di sessione attività Copy per vedere quale attività ha effettivamente copiato i file e quando. Con questo approccio è possibile trovare facilmente la causa radice e correggere le configurazioni in Azure Data Factory.
  • Dopo aver usato le attività di copia di Azure Data Factory 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 di sessione attività Copy per ottenere il timestamp dei processi di copia e i metadati dei file quando le attività di copia di Azure Data Factory 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 un'esecuzione della pipeline nella scheda Monitoraggio di ADF Studio nelle esecuzioni della pipeline. Selezionare l'esecuzione della pipeline da monitorare e quindi passare il puntatore sull'area accanto al nome dell'attività, dove 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

L'esempio seguente fornisce una definizione JSON per abilitare il log di sessione nell'attività di copia:

{
  "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/"
      }
    }
  }
}
Proprietà Descrizione Valori consentiti Richiesto
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 i file ignorati e le righe ignorate. Info
Avviso (impostazione predefinita)
No
enableReliableLogging Quando è vero, un attività Copy in modalità affidabile scarica i log immediatamente dopo che ogni file viene copiato nella destinazione. Quando si copiano molti file con modalità di registrazione affidabile abilitata nel attività Copy, è necessario prevedere che la velocità effettiva sia interessata, poiché sono necessarie operazioni di doppia scrittura per ogni file copiato. Una richiesta passa all'archivio di destinazione e un'altra all'archivio di archiviazione log. Un attività Copy in modalità di lavoro ottimale scarica i log con batch di record entro un periodo di tempo e la velocità effettiva della copia sarà molto meno interessata. La completezza e la tempestività della registrazione non sono garantite 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 vengono registrati. True
False (impostazione predefinita)
No
logLocation Impostazioni Gruppo di proprietà che possono essere usate per specificare il percorso in cui archiviare i log di 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 automaticamente un contenitore. No

Monitoraggio

Output da un attività Copy

Dopo l'esecuzione completa dell'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.
Livello 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 da 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 sono state ignorate.

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 che è stato copiato correttamente dall'archivio di origine a quello di destinazione.

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

  • Dammi l'elenco di file copiato.
select OperationItem from SessionLogDemo where Message like '%File is successfully copied%'
  • Dammi l'elenco di file copiato all'interno di 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 il tempo copiato e i metadati.
select * from SessionLogDemo where OperationItem='<file name>'
  • Dammi 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 dei file ignorati.
select OperationItem from SessionLogDemo where OperationName='FileSkip'
  • Dammi il motivo per cui un file specifico è stato ignorato.
select TIMESTAMP, OperationItem, Message from SessionLogDemo where OperationName='FileSkip'
  • Dammi 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%'
  • Assegnare 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

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