Sessielogboek in een Copy-activiteit

VAN TOEPASSING OP: Azure Data Factory Azure Synapse Analytics

Tip

Probeer Data Factory uit in Microsoft Fabric, een alles-in-één analyseoplossing voor ondernemingen. Microsoft Fabric omvat alles, van gegevensverplaatsing tot gegevenswetenschap, realtime analyses, business intelligence en rapportage. Meer informatie over het gratis starten van een nieuwe proefversie .

U kunt de gekopieerde bestandsnamen registreren in een Copy-activiteit. Dit kan ervoor zorgen dat gegevens niet alleen van bron naar doel worden gekopieerd, maar ook consistentie tussen bron en doel valideren.

Wanneer u fouttolerantie-instelling inschakelt in een Copy-activiteit foutieve gegevens overslaat, kunnen de overgeslagen bestanden en overgeslagen rijen ook worden vastgelegd. U kunt meer informatie krijgen over fouttolerantie in de kopieeractiviteit.

Aangezien u de mogelijkheid hebt om alle bestandsnamen te krijgen die zijn gekopieerd door ADF (Azure Data Factory) Copy-activiteit via het inschakelen van sessielogboeken, is het handig voor u in de volgende scenario's:

  • Nadat u ADF Copy-activiteiten hebt gebruikt om de bestanden van de ene opslag naar de andere te kopiëren, vindt u enkele onverwachte bestanden in het doelarchief. U kunt de Copy-activiteit sessielogboeken scannen om te zien welke activiteit de bestanden daadwerkelijk heeft gekopieerd en wanneer. Met deze aanpak kunt u eenvoudig de hoofdoorzaak vinden en uw configuraties in ADF oplossen.
  • Nadat u ADF Copy-activiteiten hebt gebruikt om de bestanden van de ene opslag naar de andere te kopiëren, vindt u dat de bestanden die naar de bestemming zijn gekopieerd, niet worden verwacht uit het bronarchief. U kunt de Copy-activiteit sessielogboeken scannen om de tijdstempel van kopieertaken en de metagegevens van bestanden op te halen wanneer ADF-kopieeractiviteiten deze lezen uit het bronarchief. Met deze methode kunt u controleren of de bestanden zijn bijgewerkt door andere toepassingen in het bronarchief nadat ze zijn gekopieerd door ADF.

Configuratie met Azure Data Factory Studio

Als u Copy-activiteit logboekregistratie wilt configureren, voegt u eerst een Copy-activiteit toe aan uw pijplijn en gebruikt u vervolgens het tabblad Instellingen om logboekregistratie en verschillende logboekregistratieopties te configureren. Shows how to configure logging for a Copy activity in the settings tab.

Als u het logboek vervolgens wilt bewaken, kunt u de uitvoer van een pijplijnuitvoering controleren op het tabblad Bewaking van ADF Studio onder pijplijnuitvoeringen. Selecteer daar de pijplijnuitvoering die u wilt bewaken en beweeg de muisaanwijzer over het gebied naast de naam van de activiteit, waar u pictogrammen vindt voor koppelingen met de invoer, uitvoer van de pijplijn (zodra deze is voltooid) en andere details.

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

Selecteer het uitvoerpictogram om details van de logboekregistratie voor de taak te bekijken en noteer de locatie van de logboekregistratie in het geselecteerde opslagaccount, waar u details van alle geregistreerde activiteiten kunt zien.

Shows the output of a Copy activity with logging enabled.

Zie hieronder voor meer informatie over de indeling van de logboekuitvoer.

Configuratie met JSON

In het volgende voorbeeld ziet u een JSON-definitie om sessielogboek in te schakelen in kopieeractiviteit:

{
  "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/"
      }
    }
  }
}
Eigenschappen Beschrijving Toegestane waarden Vereist
enableCopyActivityLog Wanneer deze is ingesteld op true, hebt u de mogelijkheid om gekopieerde bestanden te registreren, bestanden overgeslagen of rijen overgeslagen. Waar
False (standaard)
Nee
Loglevel Met Info worden alle gekopieerde bestanden, overgeslagen bestanden en overgeslagen rijen vastgelegd. Met 'Waarschuwing' worden alleen overgeslagen bestanden en overgeslagen rijen vastgelegd. Info
Waarschuwing (standaard)
Nee
enableReliableLogging Wanneer dit het geval is, worden logboeken door een Copy-activiteit in de betrouwbare modus onmiddellijk leeggemaakt zodra elk bestand naar het doel wordt gekopieerd. Wanneer u veel bestanden kopieert met de betrouwbare logboekregistratiemodus die is ingeschakeld in de Copy-activiteit, moet u verwachten dat de doorvoer wordt beïnvloed, omdat dubbele schrijfbewerkingen vereist zijn voor elk gekopieerd bestand. Eén aanvraag gaat naar het doelarchief en een andere naar het logboekopslagarchief. Met een Copy-activiteit in de modus Best Effort worden logboeken met batch records binnen een bepaalde periode leeggemaakt en wordt de kopieerdoorvoer veel minder beïnvloed. De volledigheid en tijdigheid van logboekregistratie wordt niet gegarandeerd in deze modus, omdat er enkele mogelijkheden zijn dat de laatste batch logboekgebeurtenissen niet is leeggemaakt in het logboekbestand wanneer een Copy-activiteit mislukt. In dit scenario ziet u een aantal bestanden die naar de bestemming zijn gekopieerd, niet worden geregistreerd. Waar
False (standaard)
Nee
logLocation Instellingen Een groep eigenschappen die kan worden gebruikt om de locatie op te geven voor het opslaan van de sessielogboeken. Nee
linkedServiceName De gekoppelde service van Azure Blob Storage of Azure Data Lake Storage Gen2 om de sessielogboekbestanden op te slaan. De namen van een AzureBlobStorage gekoppelde service of AzureBlobFS typen, die verwijst naar het exemplaar dat u gebruikt om de logboekbestanden op te slaan. Nee
path Het pad van de logboekbestanden. Geef het pad op dat u de logboekbestanden wilt opslaan. Als u geen pad opgeeft, maakt de service een container voor u. Nee

Bewaking

Uitvoer van een Copy-activiteit

Nadat de kopieeractiviteit volledig is uitgevoerd, ziet u het pad van logboekbestanden uit de uitvoer van elke Copy-activiteit uitvoering. U kunt de logboekbestanden vinden via het pad: https://[your-blob-account].blob.core.windows.net/[logFilePath]/copyactivity-logs/[copy-activity-name]/[copy-activity-run-id]/[auto-generated-GUID].txt. De gegenereerde logboekbestanden hebben de extensie .txt en de bijbehorende gegevens hebben een CSV-indeling.

"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" 
           } 
        }

Notitie

Wanneer de enableCopyActivityLog eigenschap is ingesteld op Enabled, worden de namen van logboekbestanden door het systeem gegenereerd.

Het schema van het logboekbestand

In de volgende tabel ziet u het schema van een logboekbestand.

Kolom Beschrijving
Tijdstempel De tijdstempel wanneer ADF het object leest, schrijft of overslaat.
Niveau Het logboekniveau van dit item. Dit kan 'Waarschuwing' of 'Info' zijn.
OperationName ADF Copy-activiteit operationeel gedrag voor elk object. Dit kan 'FileRead', 'FileWrite', 'FileSkip' of 'TabularRowSkip' zijn.
OperationItem De bestandsnamen of overgeslagen rijen.
Bericht Meer informatie om weer te geven of het bestand is gelezen uit het bronarchief of naar het doelarchief is geschreven. Het kan ook zijn waarom het bestand of de rijen worden overgeslagen.

Hier volgt een voorbeeld van een logboekbestand:

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."

In het bovenstaande logboekbestand ziet u dat sample1.csv is overgeslagen omdat het niet kon worden geverifieerd om consistent te zijn tussen bron- en doelopslag. U kunt meer informatie krijgen over waarom sample1.csv inconsistent wordt omdat deze door andere toepassingen is gewijzigd wanneer ADF Copy-activiteit tegelijkertijd kopieert. U kunt ook zien dat sample2.csv is gekopieerd van de bron naar het doelarchief.

U kunt meerdere analyse-engines gebruiken om de logboekbestanden verder te analyseren. Hieronder vindt u enkele voorbeelden om sql-query te gebruiken om het logboekbestand te analyseren door csv-logboekbestand te importeren in SQL-database, waarin de tabelnaam SessionLogDemo kan zijn.

  • Geef me de gekopieerde bestandslijst.
select OperationItem from SessionLogDemo where Message like '%File is successfully copied%'
  • Geef mij de lijst met bestanden die binnen een bepaald tijdsbereik is gekopieerd.
select OperationItem from SessionLogDemo where TIMESTAMP >= '<start time>' and TIMESTAMP <= '<end time>' and Message like '%File is successfully copied%'
  • Geef me een bepaald bestand met de gekopieerde tijd en metagegevens.
select * from SessionLogDemo where OperationItem='<file name>'
  • Geef me een lijst met bestanden met hun metagegevens die binnen een tijdsbereik zijn gekopieerd.
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%')
  • Geef me de lijst met overgeslagen bestanden.
select OperationItem from SessionLogDemo where OperationName='FileSkip'
  • Geef me de reden waarom een bepaald bestand is overgeslagen.
select TIMESTAMP, OperationItem, Message from SessionLogDemo where OperationName='FileSkip'
  • Geef me de lijst met bestanden die om dezelfde reden zijn overgeslagen: 'blobbestand bestaat niet'.
select TIMESTAMP, OperationItem, Message from SessionLogDemo where OperationName='FileSkip' and Message like '%UserErrorSourceBlobNotExist%'
  • Geef me de bestandsnaam die het langst nodig heeft om te kopiëren.
select top 1 OperationItem, CopyDuration=DATEDIFF(SECOND, min(TIMESTAMP), max(TIMESTAMP)) from SessionLogDemo group by OperationItem order by CopyDuration desc

Zie de andere artikelen over kopieeractiviteiten: