Kopyalama etkinliği oturum günlüğü

UYGULANANLAR: Azure Data Factory Azure Synapse Analytics

İpucu

Kuruluşlar için hepsi bir arada analiz çözümü olan Microsoft Fabric'te Data Factory'yi deneyin. Microsoft Fabric , veri taşımadan veri bilimine, gerçek zamanlı analize, iş zekasına ve raporlamaya kadar her şeyi kapsar. Yeni bir deneme sürümünü ücretsiz olarak başlatmayı öğrenin!

Kopyaladığınız dosya adlarını bir Kopyalama etkinliği günlüğe kaydedebilirsiniz. Bu, verilerin yalnızca kaynaktan hedefe başarıyla kopyalanmasını sağlamakla kalmaz, aynı zamanda kaynak ile hedef arasındaki tutarlılığı da doğrulamaya yardımcı olabilir.

Hatalı verileri atlamak için bir Kopyalama etkinliği hataya dayanıklılık ayarını etkinleştirdiğinizde, atlanan dosyalar ve atlanan satırlar da günlüğe kaydedilebilir. Kopyalama etkinliğinde hataya dayanıklılıktan daha fazla ayrıntı alabilirsiniz.

Oturum günlüğünü etkinleştirerek Azure Data Factory (ADF) Kopyalama etkinliği tarafından kopyalanan tüm dosya adlarını alma fırsatınız olduğu düşünüldüğünde, aşağıdaki senaryolarda sizin için yararlı olacaktır:

  • Dosyaları bir depolama alanından diğerine kopyalamak için ADF Kopyalama etkinliklerini kullandıktan sonra, hedef depoda bazı beklenmeyen dosyalar bulursunuz. Dosyaları gerçekten hangi etkinliğin ne zaman kopyaladığına bakmak için Kopyalama etkinliği oturum günlüklerini tarayabilirsiniz. Bu yaklaşımla, ADF'de kök nedeni kolayca bulabilir ve yapılandırmalarınızı düzeltebilirsiniz.
  • Dosyaları bir depolama alanından diğerine kopyalamak için ADF Kopyalama etkinliklerini kullandıktan sonra, hedefe kopyalanan dosyaların kaynak depodan beklenen dosyalar olmadığını fark edebilirsiniz. Kopyalama işlerinin zaman damgasını ve ADF Kopyalama etkinlikleri tarafından kaynak depodan okunan dosyaların meta verilerini almak için Kopyalama etkinliği oturum günlüklerini tarayabilirsiniz. Bu yaklaşımla, dosyaların ADF tarafından kopyalandıktan sonra kaynak depodaki diğer uygulamalar tarafından güncelleştirilip güncelleştirilmediğini onaylayabilirsiniz.

Azure Data Factory Studio ile yapılandırma

Kopyalama etkinliği günlüğe kaydetmeyi yapılandırmak için önce işlem hattınıza bir Kopyalama etkinliği ekleyin ve ardından ayarlar sekmesini kullanarak günlüğe kaydetmeyi ve çeşitli günlük seçeneklerini yapılandırın. Ayarlar sekmesinde bir Kopyalama etkinliği için günlüğe kaydetmeyi yapılandırmayı gösterir.

Daha sonra günlüğü izlemek için, işlem hattı çalıştırmaları altında ADF Studio'nun İzleme sekmesinde bir işlem hattı çalıştırmasının çıkışını de kontrol edebilirsiniz. Burada, izlemek istediğiniz işlem hattı çalıştırmasını seçin ve ardından Etkinlik adının yanındaki alanın üzerine gelin; burada işlem hattı girişini, çıkışını (tamamlandıktan sonra) ve diğer ayrıntıları gösteren bağlantılara yönelik simgeler bulabilirsiniz.

ADF Studio'da bir Kopyalama etkinliği çıkışını bulmayı gösterir.

İşin günlüğünün ayrıntılarını görmek için çıkış simgesini seçin ve günlüğe kaydedilen tüm etkinliklerin ayrıntılarını görebileceğiniz seçili depolama hesabında günlüğe kaydetme konumunu not edin.

Günlüğe kaydetmenin etkinleştirildiği bir Kopyalama etkinliği çıkışını gösterir.

Günlük çıkış biçiminin ayrıntıları için aşağıya bakın.

JSON ile yapılandırma

Aşağıdaki örnek, Kopyalama Etkinliği'nde oturum günlüğünü etkinleştirmek için bir JSON tanımı sağlar:

{
  "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/"
      }
    }
  }
}
Özellik Açıklama İzin verilen değerler Zorunlu
enableCopyActivityLog True olarak ayarlandığında, kopyalanan dosyaları, atlanan dosyaları veya atlanan satırları günlüğe kaydetme fırsatınız olur. True
False (varsayılan)
Hayır
logLevel "Bilgi", kopyalanan tüm dosyaları, atlanan dosyaları ve atlanan satırları günlüğe kaydeder. "Uyarı", atlanan dosyaları ve atlanan satırları yalnızca günlüğe kaydeder. Bilgi
Uyarı (varsayılan)
Hayır
enableReliableLogging Doğru olduğunda, güvenilir modda bir Kopyalama etkinliği her dosya hedefe kopyalandığında günlükleri hemen temizler. Kopyalama etkinliği'de güvenilir günlük modu etkin olan birçok dosyayı kopyalarken, kopyalanan her dosya için çift yazma işlemleri gerektiğinden aktarım hızının etkilenmesini beklemelisiniz. İsteklerden biri hedef depoya, diğeri de günlük depolama deposuna gider. En iyi çaba modundaki bir Kopyalama etkinliği, belirli bir süre içinde günlükleri toplu kayıtlarla temizler ve kopyalama aktarım hızı çok daha az etkilenir. Günlük olaylarının son toplu işleminin bir Kopyalama etkinliği başarısız olduğunda günlük dosyasına boşaltılmamış olma olasılığı olduğundan günlüğün eksiksizliği ve zamanında olması bu modda garanti değildir. Bu senaryoda hedefe kopyalanan birkaç dosyanın günlüğe kaydedilmediğini göreceksiniz. True
False (varsayılan)
Hayır
logLocationSettings Oturum günlüklerinin depolanacak konumu belirtmek için kullanılabilecek bir özellik grubu. Hayır
linkedServiceName Oturum günlüğü dosyalarını depolamak için Azure Blob Depolama veya Azure Data Lake Storage 2. Nesil bağlı hizmeti. Günlük dosyalarını depolamak için kullandığınız örneğe başvuran veya AzureBlobFS türü bağlı hizmetin adlarıAzureBlobStorage. Hayır
yol Günlük dosyalarının yolu. Günlük dosyalarını depolamak istediğiniz yolu belirtin. Yol sağlamazsanız, hizmet sizin için bir kapsayıcı oluşturur. Hayır

İzleme

bir Kopyalama etkinliği çıktısı

Kopyalama etkinliği tamamen çalıştıktan sonra, her Kopyalama etkinliği çalıştırmasının çıkışından günlük dosyalarının yolunu görebilirsiniz. Günlük dosyalarını şu yoldan bulabilirsiniz: https://[your-blob-account].blob.core.windows.net/[logFilePath]/copyactivity-logs/[copy-activity-name]/[copy-activity-run-id]/[auto-generated-GUID].txt. Oluşturulan günlük dosyaları .txt uzantısına sahiptir ve verileri CSV biçimindedir.

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

Not

enableCopyActivityLog özelliği olarak Enabledayarlandığında günlük dosyası adları sistem oluşturulur.

Günlük dosyasının şeması

Aşağıdaki tabloda günlük dosyasının şeması gösterilmektedir.

Sütun Açıklama
Zaman damgası ADF'nin nesneyi okuması, yazması veya atlaması zaman damgası.
Level Bu öğenin günlük düzeyi. "Uyarı" veya "Bilgi" olabilir.
OperationName ADF her nesnede işlemsel davranış Kopyalama etkinliği. 'FileRead',' FileWrite', 'FileSkip' veya 'TabularRowSkip' olabilir.
OperationItem Dosya adları veya atlanan satırlar.
İleti Dosyanın kaynak depodan okunup okunmadığını veya hedef depoya yazıldığını göstermek için daha fazla bilgi. Dosya veya satırların atlanmasının nedeni de bu olabilir.

Günlük dosyası örneği aşağıda verilmişti:

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

Yukarıdaki günlük dosyasından kaynak ve hedef depo arasında tutarlı olduğu doğrulanamadığından sample1.csv atlandığını görebilirsiniz. ADF Kopyalama etkinliği aynı anda kopyalarken sample1.csv neden diğer uygulamalar tarafından değiştirildiği için tutarsız hale geldiği hakkında daha fazla bilgi edinebilirsiniz. Sample2.csv kaynaktan hedef depoya başarıyla kopyalandığını da görebilirsiniz.

Günlük dosyalarını daha fazla analiz etmek için birden çok çözümleme altyapısı kullanabilirsiniz. Aşağıda sql sorgusunu kullanarak csv günlük dosyasını SQL veritabanına aktararak günlük dosyasını analiz etmek için sql sorgusunu kullanmak için birkaç örnek verilmiştir. Burada tablo adı SessionLogDemo olabilir.

  • Kopyalanan dosya listesini ver.
select OperationItem from SessionLogDemo where Message like '%File is successfully copied%'
  • Belirli bir zaman aralığı içinde kopyalanan dosya listesini ver.
select OperationItem from SessionLogDemo where TIMESTAMP >= '<start time>' and TIMESTAMP <= '<end time>' and Message like '%File is successfully copied%'
  • Bana kopyalanan zamanı ve meta verilerini içeren belirli bir dosya verin.
select * from SessionLogDemo where OperationItem='<file name>'
  • Meta verilerinin bir zaman aralığı içinde kopyalanmış olduğu dosyaların listesini verin.
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%')
  • Atlanan dosya listesini ver.
select OperationItem from SessionLogDemo where OperationName='FileSkip'
  • Belirli bir dosyanın atlanma nedenini söyle.
select TIMESTAMP, OperationItem, Message from SessionLogDemo where OperationName='FileSkip'
  • Aynı nedenden dolayı atlanan dosyaların listesini ver: "blob dosyası yok".
select TIMESTAMP, OperationItem, Message from SessionLogDemo where OperationName='FileSkip' and Message like '%UserErrorSourceBlobNotExist%'
  • Kopyalamak için en uzun süreyi gerektiren dosya adını verin.
select top 1 OperationItem, CopyDuration=DATEDIFF(SECOND, min(TIMESTAMP), max(TIMESTAMP)) from SessionLogDemo group by OperationItem order by CopyDuration desc

Diğer Kopyalama Etkinliği makalelerine bakın: