Logowanie sesji w działanie Kopiuj

DOTYCZY: Azure Data Factory Azure Synapse Analytics

Napiwek

Wypróbuj usługę Data Factory w usłudze Microsoft Fabric — rozwiązanie analityczne typu all-in-one dla przedsiębiorstw. Usługa Microsoft Fabric obejmuje wszystko, od przenoszenia danych do nauki o danych, analizy w czasie rzeczywistym, analizy biznesowej i raportowania. Dowiedz się, jak bezpłatnie rozpocząć nową wersję próbną !

Skopiowane nazwy plików można rejestrować w działanie Kopiuj. Może to pomóc w zapewnieniu, że dane nie tylko zostaną pomyślnie skopiowane ze źródła do miejsca docelowego, ale także zweryfikuj spójność między źródłem i miejscem docelowym.

Po włączeniu ustawienia odporności na uszkodzenia w działanie Kopiuj pomijania uszkodzonych danych można również rejestrować pominięte pliki i pominięte wiersze. Więcej szczegółów można uzyskać od odporności na uszkodzenia w działaniu kopiowania.

Biorąc pod uwagę możliwość pobrania wszystkich nazw plików skopiowanych przez usługę Azure Data Factory (ADF) działanie Kopiuj za pośrednictwem włączania dziennika sesji, pomocne będzie wykonanie następujących scenariuszy:

  • Po użyciu działań kopiowania usługi ADF w celu skopiowania plików z jednego magazynu do innego znajdziesz nieoczekiwane pliki w magazynie docelowym. Możesz zeskanować dzienniki sesji działanie Kopiuj, aby zobaczyć, które działanie faktycznie skopiowało pliki i kiedy. Dzięki temu podejściu można łatwo znaleźć główną przyczynę i naprawić konfiguracje w usłudze ADF.
  • Po skopiowaniu plików z jednego magazynu do innego za pomocą działań kopiowania usługi ADF pliki kopiowane do miejsca docelowego nie są oczekiwane z magazynu źródłowego. Dzienniki sesji działanie Kopiuj można skanować, aby uzyskać sygnaturę czasową zadań kopiowania, a także metadane plików, gdy działania kopiowania usługi ADF odczytują je z magazynu źródłowego. Dzięki temu podejściu można sprawdzić, czy pliki zostały zaktualizowane przez inne aplikacje w magazynie źródłowym po skopiowaniu przez usługę ADF.

Konfiguracja za pomocą narzędzia Azure Data Factory Studio

Aby skonfigurować rejestrowanie działanie Kopiuj, najpierw dodaj działanie Kopiuj do potoku, a następnie użyj karty Ustawienia, aby skonfigurować rejestrowanie i różne opcje rejestrowania. Shows how to configure logging for a Copy activity in the settings tab.

Aby następnie monitorować dziennik, możesz sprawdzić dane wyjściowe uruchomienia potoku na karcie Monitorowanie programu ADF Studio w obszarze uruchomienia potoku. W tym miejscu wybierz przebieg potoku, który chcesz monitorować, a następnie umieść kursor nad obszarem obok pozycji Nazwa działania, gdzie znajdziesz ikony zawierające linki przedstawiające dane wejściowe potoku, dane wyjściowe (po zakończeniu) i inne szczegóły.

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

Wybierz ikonę danych wyjściowych, aby wyświetlić szczegóły rejestrowania zadania, a następnie zanotuj lokalizację rejestrowania na wybranym koncie magazynu, gdzie można wyświetlić szczegóły wszystkich zarejestrowanych działań.

Shows the output of a Copy activity with logging enabled.

Zobacz poniżej, aby uzyskać szczegółowe informacje o formacie danych wyjściowych dziennika.

Konfiguracja przy użyciu formatu JSON

W poniższym przykładzie przedstawiono definicję JSON umożliwiającą włączenie dziennika sesji w działaniu kopiowania:

{
  "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/"
      }
    }
  }
}
Właściwości opis Dozwolone wartości Wymagania
enableCopyActivityLog Po ustawieniu wartości true będzie można rejestrować skopiowane pliki, pomijane pliki lub pomijane wiersze. Prawda
False (domyślnie)
Nie.
Loglevel "Informacje" będą rejestrować wszystkie skopiowane pliki, pomijane pliki i pomijane wiersze. "Ostrzeżenie" spowoduje pominięcie plików i tylko pominięte wiersze. Informacje
Ostrzeżenie (ustawienie domyślne)
Nie.
enableReliableLogging Jeśli to prawda, działanie Kopiuj w trybie niezawodnym będzie opróżniać dzienniki natychmiast po skopiowaniu każdego pliku do miejsca docelowego. Podczas kopiowania wielu plików z włączonym trybem niezawodnego rejestrowania w działanie Kopiuj należy oczekiwać, że będzie to miało wpływ na przepływność, ponieważ dla każdego skopiowanego pliku wymagane są operacje podwójnego zapisu. Jedno żądanie przechodzi do magazynu docelowego, a drugie do magazynu magazynu dzienników. Działanie Kopiuj w trybie najlepszego nakładu pracy opróżnia dzienniki z partią rekordów w danym okresie, a przepływność kopiowania będzie znacznie mniej wpływać. Kompletność i terminy rejestrowania nie są gwarantowane w tym trybie, ponieważ istnieje kilka możliwości, że ostatnia partia zdarzeń dziennika nie została opróżniona do pliku dziennika, gdy działanie Kopiuj się nie powiódł. W tym scenariuszu zobaczysz, że kilka plików skopiowanych do miejsca docelowego nie jest rejestrowanych. Prawda
False (domyślnie)
Nie.
logLocation Ustawienia Grupa właściwości, których można użyć do określenia lokalizacji do przechowywania dzienników sesji. Nie.
linkedServiceName Połączona usługa usługi Azure Blob Storage lub Azure Data Lake Storage Gen2 do przechowywania plików dziennika sesji. Nazwy połączonej AzureBlobStorage usługi lub AzureBlobFS , która odwołuje się do wystąpienia używanego do przechowywania plików dziennika. Nie.
path Ścieżka plików dziennika. Określ ścieżkę do przechowywania plików dziennika. Jeśli nie podasz ścieżki, usługa utworzy kontener. Nie.

Monitorowanie

Dane wyjściowe z działanie Kopiuj

Po całkowitym uruchomieniu działania kopiowania można zobaczyć ścieżkę plików dziennika z danych wyjściowych każdego działanie Kopiuj uruchomienia. Pliki dziennika można znaleźć w ścieżce: https://[your-blob-account].blob.core.windows.net/[logFilePath]/copyactivity-logs/[copy-activity-name]/[copy-activity-run-id]/[auto-generated-GUID].txt. Wygenerowane pliki dziennika mają rozszerzenie txt, a ich dane są w formacie 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" 
           } 
        }

Uwaga

Gdy właściwość jest ustawiona enableCopyActivityLog na Enabled, nazwy plików dziennika są generowane przez system.

Schemat pliku dziennika

W poniższej tabeli przedstawiono schemat pliku dziennika.

Kolumna opis
Sygnatura czasowa Sygnatura czasowa, gdy usługa ADF odczytuje, zapisuje lub pomija obiekt.
Poziom Poziom dziennika tego elementu. Może to być "Ostrzeżenie" lub "Informacje".
OperationName Usługa ADF działanie Kopiuj zachowanie operacyjne dla każdego obiektu. Może to być "FileRead", FileWrite", "FileSkip" lub "TabularRowSkip".
OperationItem Nazwy plików lub pominięte wiersze.
Wiadomość Więcej informacji o tym, czy plik został odczytany z magazynu źródłowego, czy zapisany w magazynie docelowym. Może to być również przyczyną pomijania pliku lub wierszy.

Oto przykład pliku dziennika:

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

W powyższym pliku dziennika widać, że plik sample1.csv został pominięty, ponieważ nie można go zweryfikować, aby był spójny między magazynem źródłowym i docelowym. Możesz uzyskać więcej szczegółów na temat tego, dlaczego plik sample1.csv staje się niespójny, ponieważ został on zmieniony przez inne aplikacje, gdy usługa ADF działanie Kopiuj kopiuje w tym samym czasie. Można również zobaczyć, że plik sample2.csv został pomyślnie skopiowany ze źródła do magazynu docelowego.

Do dalszej analizy plików dziennika można użyć wielu aparatów analizy. Poniżej przedstawiono kilka przykładów, aby użyć zapytania SQL do analizowania pliku dziennika przez zaimportowanie pliku dziennika csv do bazy danych SQL, gdzie nazwa tabeli może być SessionLogDemo.

  • Nadaj mi skopiowaną listę plików.
select OperationItem from SessionLogDemo where Message like '%File is successfully copied%'
  • Nadaj mi listę plików skopiowaną w określonym zakresie czasu.
select OperationItem from SessionLogDemo where TIMESTAMP >= '<start time>' and TIMESTAMP <= '<end time>' and Message like '%File is successfully copied%'
  • Nadaj mi określony plik z skopiowanym czasem i metadanymi.
select * from SessionLogDemo where OperationItem='<file name>'
  • Nadaj mi listę plików z ich metadanymi skopiowanymi w zakresie czasu.
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%')
  • Nadaj mi pominiętą listę plików.
select OperationItem from SessionLogDemo where OperationName='FileSkip'
  • Daj mi powód, dla którego określony plik został pominięty.
select TIMESTAMP, OperationItem, Message from SessionLogDemo where OperationName='FileSkip'
  • Nadaj mi listę plików pominiętych z tego samego powodu: "plik obiektu blob nie istnieje".
select TIMESTAMP, OperationItem, Message from SessionLogDemo where OperationName='FileSkip' and Message like '%UserErrorSourceBlobNotExist%'
  • Nadaj mi nazwę pliku, która wymaga najdłuższego czasu do skopiowania.
select top 1 OperationItem, CopyDuration=DATEDIFF(SECOND, min(TIMESTAMP), max(TIMESTAMP)) from SessionLogDemo group by OperationItem order by CopyDuration desc

Zobacz inne artykuły dotyczące działania kopiowania: