Log sesi dalam aktivitas Salin

BERLAKU UNTUK:Azure Data Factory Azure Synapse Analytics

Tip

Cobalah Data Factory di Microsoft Fabric, solusi analitik all-in-one untuk perusahaan. Microsoft Fabric mencakup semuanya mulai dari pergerakan data hingga ilmu data, analitik real time, kecerdasan bisnis, dan pelaporan. Pelajari cara memulai uji coba baru secara gratis!

Anda dapat mencatat nama file yang disalin dalam aktivitas Salin. Hal ini dapat membantu memastikan data tidak hanya berhasil disalin dari sumber ke tujuan, tetapi juga memvalidasi konsistensi antara sumber dan tujuan.

Saat Anda mengaktifkan pengaturan toleransi kegagalan dalam aktivitas Salin untuk melewati data yang salah, file yang dilewati dan baris yang dilewati juga dapat dicatat. Anda bisa mendapatkan detail selengkapnya dari toleransi kesalahan dalam aktivitas salin.

Mengingat Anda memiliki kesempatan untuk mendapatkan semua nama file yang disalin oleh aktivitas Salin Azure Data Factory (ADF) dengan mengaktifkan log sesi, hal ini akan membantu Anda dalam skenario berikut:

  • Setelah Anda menggunakan aktivitas Salin ADF untuk menyalin file dari satu penyimpanan ke penyimpanan lainnya, Anda menemukan beberapa file yang tidak terduga di penyimpanan tujuan. Anda dapat memindai log sesi aktivitas Salin untuk melihat aktivitas mana yang benar-benar menyalin file, dan kapan. Dengan pendekatan ini, Anda dapat dengan mudah menemukan akar masalah dan memperbaiki konfigurasi Anda di ADF.
  • Setelah Anda menggunakan aktivitas Salin ADF untuk menyalin file dari satu penyimpanan ke penyimpanan lain, Anda menemukan file yang disalin ke tujuan tidak seperti yang diharapkan dari penyimpanan sumber. Anda dapat memindai log sesi aktivitas Salin untuk mendapatkan stempel waktu pekerjaan penyalinan serta metadata file saat aktivitas Salin ADF membacanya dari penyimpanan sumber. Dengan pendekatan ini, Anda dapat mengonfirmasi apakah file telah diperbarui oleh aplikasi lain di penyimpanan sumber setelah disalin oleh ADF.

Konfigurasi dengan Studio Azure Data Factory

Untuk mengonfigurasi pengelogan aktivitas Salin, pertama-tama tambahkan aktivitas Salin ke alur Anda, lalu gunakan tab Pengaturannya untuk mengonfigurasi pengelogan dan berbagai opsi pengelogan. Shows how to configure logging for a Copy activity in the settings tab.

Untuk memantau log selanjutnya, Anda dapat memeriksa output dari eksekusi alur di tab Pemantauan Studio ADF di bawah eksekusi alur. Di tab Pemantauan, pilih eksekusi alur yang ingin Anda pantau lalu arahkan ke area di samping nama Aktivitas, tempat Anda akan menemukan ikon ke tautan yang menunjukkan input alur, output (setelah selesai), dan detail lainnya.

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

Pilih ikon output untuk melihat detail pengelogan pekerjaan, dan catat lokasi pengelogan di akun penyimpanan yang dipilih, tempat Anda dapat melihat detail semua aktivitas yang dicatat.

Shows the output of a Copy activity with logging enabled.

Lihat di bawah untuk detail format output log.

Konfigurasi dengan JSON

Contoh berikut menyediakan definisi JSON untuk mengaktifkan Aktivitas Salin sesi proses masuk:

{
  "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/"
      }
    }
  }
}
Properti Deskripsi Nilai yang diizinkan Wajib
enableCopyActivityLog Saat diatur ke true, Anda akan memiliki kesempatan untuk mencatat file yang disalin, file yang dilewati, atau baris yang dilewati. Benar
False (default)
Tidak
logLevel "Info" akan mencatat semua file yang disalin, file yang dilewati, dan baris yang dilewati. "Peringatan" hanya akan mencatat file yang dilewati dan baris yang dilewati. Info
Peringatan (default)
Tidak
enableReliableLogging Jika true, aktivitas Salin dalam mode andal akan segera menghapus log setelah setiap file disalin ke tujuan. Saat menyalin banyak file dengan mode pengelogan andal yang diaktifkan di aktivitas Salin, throughput Anda akan terpengaruh, karena operasi penulisan ganda diperlukan untuk setiap file yang disalin. Satu permintaan masuk ke tempat tujuan dan permintaan lainnya ke tempat penyimpanan log. Aktivitas Salin dalam mode upaya terbaik akan menghapus log dengan batch catatan dalam jangka waktu tertentu, dan throughput salinan akan jauh lebih sedikit terpengaruh. Kelengkapan dan ketepatan waktu pengelogan tidak dijamin dalam mode ini karena ada beberapa kemungkinan bahwa batch terakhir peristiwa log belum dihapus ke file log saat aktivitas Salin gagal. Dalam skenario ini, Anda akan melihat beberapa file yang disalin ke tujuan tidak dicatat. Benar
False (default)
Tidak
logLocationSettings Sekelompok properti yang dapat digunakan untuk menentukan lokasi penyimpanan log sesi. Tidak
linkedServiceName Layanan tertaut Azure Blob Storage atau Azure Data Lake Storage Gen2 untuk menyimpan file log sesi. Nama layanan tertaut jenis AzureBlobStorage atau AzureBlobFS, yang merujuk pada instans yang Anda gunakan untuk menyimpan file log. Tidak
jalan Jalur file log. Tentukan jalur yang ingin Anda simpan file lognya. Jika Anda tidak menyediakan jalur, layanan akan membuatkan kontainer untuk Anda. Tidak

Pemantauan

Output dari aktivitas Salin

Setelah aktivitas salin selesai, Anda dapat melihat jalur file log dari output setiap eksekusi aktivitas Salin. Anda dapat menemukan file log dari jalur: https://[your-blob-account].blob.core.windows.net/[logFilePath]/copyactivity-logs/[copy-activity-name]/[copy-activity-run-id]/[auto-generated-GUID].txt. File log yang dihasilkan memiliki ekstensi .txt dan data mereka dalam format 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" 
           } 
        }

Catatan

Ketika enableCopyActivityLog properti diatur ke Enabled, nama file log dibuat sistem.

Skema file log

Tabel berikut menunjukkan skema file log.

Kolom Deskripsi
Tanda Waktu Tanda waktu saat ADF membaca, menulis, atau melewati objek.
Tingkat Tingkat log item ini. Dapat berupa 'Peringatan' atau "Info".
OperationName Perilaku operasional aktivitas Salin ADF pada setiap objek. Dapat berupa 'FileRead',' FileWrite', 'FileSkip', atau 'TabularRowSkip'.
OperationItem Nama file atau baris yang dilewati.
Pesan Informasi selengkapnya untuk memperlihatkan apakah file telah dibaca dari penyimpanan sumber, atau ditulis ke penyimpanan tujuan. Dapat juga mengapa file atau baris telah dilewati.

Berikut ini contoh file 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."

Dari file log di atas, Anda dapat melihat sample1.csv telah dilompati karena gagal diverifikasi untuk konsisten antara penyimpanan sumber dan tujuan. Anda bisa mendapatkan detail selengkapnya tentang mengapa sample1.csv menjadi tidak konsisten karena sedang diubah oleh aplikasi lain ketika aktivitas Salin ADF sedang menyalin pada waktu yang sama. Anda juga dapat melihat sample2.csv telah berhasil disalin dari sumber ke penyimpanan tujuan.

Anda dapat menggunakan beberapa mesin analisis untuk menganalisis lebih lanjut file log. Ada beberapa contoh di bawah ini untuk menggunakan kueri SQL untuk menganalisis file log dengan mengimpor file log csv ke database SQL di mana nama tabel dapat menjadi SessionLogDemo.

  • Memberikan daftar file yang disalin.
select OperationItem from SessionLogDemo where Message like '%File is successfully copied%'
  • Beri saya daftar file yang disalin dalam rentang waktu tertentu.
select OperationItem from SessionLogDemo where TIMESTAMP >= '<start time>' and TIMESTAMP <= '<end time>' and Message like '%File is successfully copied%'
  • Beri saya file tertentu dengan waktu dan metadata yang disalin.
select * from SessionLogDemo where OperationItem='<file name>'
  • Beri saya daftar file dengan metadata mereka yang disalin dalam rentang waktu.
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%')
  • Beri saya daftar berkas yang dilewati.
select OperationItem from SessionLogDemo where OperationName='FileSkip'
  • Beri saya alasan mengapa file tertentu dilewati.
select TIMESTAMP, OperationItem, Message from SessionLogDemo where OperationName='FileSkip'
  • Beri saya daftar file yang dilewati karena alasan yang sama: "file blob tidak ada".
select TIMESTAMP, OperationItem, Message from SessionLogDemo where OperationName='FileSkip' and Message like '%UserErrorSourceBlobNotExist%'
  • Beri saya nama file yang membutuhkan waktu lama untuk menyalin.
select top 1 OperationItem, CopyDuration=DATEDIFF(SECOND, min(TIMESTAMP), max(TIMESTAMP)) from SessionLogDemo group by OperationItem order by CopyDuration desc

Lihat artikel Aktivitas Penyalinan lainnya: