Monitorování Azure Data Factory prostřednictvím kódu programu

PLATÍ PRO: Azure Data Factory Azure Synapse Analytics

Tento článek popisuje, jak monitorovat kanál v datové továrně pomocí různých sad SDK (Software Development Kit).

Poznámka

K interakci s Azure doporučujeme použít modul Azure Az PowerShell. Začněte tím, že si projdete téma Instalace Azure PowerShell. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.

Oblast dat

Data Factory ukládá pouze data spuštění kanálu po dobu 45 dnů. Při programovém dotazování na data o spuštění kanálu služby Data Factory – například pomocí příkazu Get-AzDataFactoryV2PipelineRun PowerShellu – nejsou k dispozici žádná maximální data pro volitelné LastUpdatedAfter parametry a LastUpdatedBefore parametry. Pokud se ale dotazujete například na data za minulý rok, nezobrazí se vám chyba, ale pouze data spuštěná kanálem za posledních 45 dnů.

Pokud chcete uchovávat data spuštění kanálu po dobu delší než 45 dnů, nastavte si vlastní diagnostické protokolování pomocí služby Azure Monitor.

Informace o spuštění kanálu

Informace o vlastnostech spuštění kanálu najdete v referenčních informacích k rozhraní PIPELINERun API. Spuštění kanálu má během svého životního cyklu jiný stav. Možné hodnoty stavu spuštění jsou uvedené níže:

  • Ve frontě
  • InProgress
  • Úspěšný
  • Neúspěšný
  • Probíhá zrušení
  • Cancelled

.NET

Úplný návod k vytvoření a monitorování kanálu pomocí sady .NET SDK najdete v tématu Vytvoření datové továrny a kanálu pomocí .NET.

  1. Přidejte následující kód, který bude průběžně kontrolovat stav spuštění kanálu, dokud se nedokončí kopírování dat.

    // Monitor the pipeline run
    Console.WriteLine("Checking pipeline run status...");
    PipelineRun pipelineRun;
    while (true)
    {
        pipelineRun = client.PipelineRuns.Get(resourceGroup, dataFactoryName, runResponse.RunId);
        Console.WriteLine("Status: " + pipelineRun.Status);
        if (pipelineRun.Status == "InProgress" || pipelineRun.Status == "Queued")
            System.Threading.Thread.Sleep(15000);
        else
            break;
    }
    
  2. Přidejte následující kód, který načte podrobnosti o spuštění aktivity kopírování, například velikost přečtených/zapsaných dat.

    // Check the copy activity run details
    Console.WriteLine("Checking copy activity run details...");
    
    RunFilterParameters filterParams = new RunFilterParameters(
        DateTime.UtcNow.AddMinutes(-10), DateTime.UtcNow.AddMinutes(10));
    ActivityRunsQueryResponse queryResponse = client.ActivityRuns.QueryByPipelineRun(
        resourceGroup, dataFactoryName, runResponse.RunId, filterParams);
    if (pipelineRun.Status == "Succeeded")
        Console.WriteLine(queryResponse.Value.First().Output);
    else
        Console.WriteLine(queryResponse.Value.First().Error);
    Console.WriteLine("\nPress any key to exit...");
    Console.ReadKey();
    

Úplnou dokumentaci k sadě .NET SDK najdete v tématu Referenční informace k sadě .NET SDK služby Data Factory.

Python

Úplný návod k vytvoření a monitorování kanálu pomocí sady Python SDK najdete v tématu Vytvoření datové továrny a kanálu pomocí Pythonu.

Pokud chcete monitorovat spuštění kanálu, přidejte následující kód:

# Monitor the pipeline run
time.sleep(30)
pipeline_run = adf_client.pipeline_runs.get(
    rg_name, df_name, run_response.run_id)
print("\n\tPipeline run status: {}".format(pipeline_run.status))
filter_params = RunFilterParameters(
    last_updated_after=datetime.now() - timedelta(1), last_updated_before=datetime.now() + timedelta(1))
query_response = adf_client.activity_runs.query_by_pipeline_run(
    rg_name, df_name, pipeline_run.run_id, filter_params)
print_activity_run_details(query_response.value[0])

Úplnou dokumentaci k sadě Python SDK najdete v referenčních informacích k sadě Data Factory Python SDK.

REST API

Úplný návod k vytvoření a monitorování kanálu pomocí rozhraní REST API najdete v tématu Vytvoření datové továrny a kanálu pomocí rozhraní REST API.

  1. Spusťte následující skript, který bude nepřetržitě kontrolovat stav spuštění kanálu, dokud nedokončí kopírování dat.

    $request = "https://management.azure.com/subscriptions/${subsId}/resourceGroups/${resourceGroup}/providers/Microsoft.DataFactory/factories/${dataFactoryName}/pipelineruns/${runId}?api-version=${apiVersion}"
    while ($True) {
        $response = Invoke-RestMethod -Method GET -Uri $request -Header $authHeader
        Write-Host  "Pipeline run status: " $response.Status -foregroundcolor "Yellow"
    
        if ( ($response.Status -eq "InProgress") -or ($response.Status -eq "Queued") ) {
            Start-Sleep -Seconds 15
        }
        else {
            $response | ConvertTo-Json
            break
        }
    }
    
  2. Spusťte následující skript, který načte podrobnosti o spuštění aktivity kopírování, například velikost načtených/zapsaných dat.

    $request = "https://management.azure.com/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DataFactory/factories/${factoryName}/pipelineruns/${runId}/queryActivityruns?api-version=${apiVersion}&startTime="+(Get-Date).ToString('yyyy-MM-dd')+"&endTime="+(Get-Date).AddDays(1).ToString('yyyy-MM-dd')+"&pipelineName=Adfv2QuickStartPipeline"
    $response = Invoke-RestMethod -Method POST -Uri $request -Header $authHeader
    $response | ConvertTo-Json
    

Úplnou dokumentaci k rozhraní REST API najdete v referenčních informacích k rozhraní REST API služby Data Factory.

PowerShell

Úplný návod k vytvoření a monitorování kanálu pomocí PowerShellu najdete v tématu Vytvoření datové továrny a kanálu pomocí PowerShellu.

  1. Spusťte následující skript, který bude nepřetržitě kontrolovat stav spuštění kanálu, dokud nedokončí kopírování dat.

    while ($True) {
        $run = Get-AzDataFactoryV2PipelineRun -ResourceGroupName $resourceGroupName -DataFactoryName $DataFactoryName -PipelineRunId $runId
    
        if ($run) {
            if ( ($run.Status -ne "InProgress") -and ($run.Status -ne "Queued") ) {
                Write-Output ("Pipeline run finished. The status is: " +  $run.Status)
                $run
                break
            }
            Write-Output ("Pipeline is running...status: " + $run.Status)
        }
    
        Start-Sleep -Seconds 30
    }
    
  2. Spusťte následující skript, který načte podrobnosti o spuštění aktivity kopírování, například velikost načtených/zapsaných dat.

    Write-Host "Activity run details:" -foregroundcolor "Yellow"
    $result = Get-AzDataFactoryV2ActivityRun -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -PipelineRunId $runId -RunStartedAfter (Get-Date).AddMinutes(-30) -RunStartedBefore (Get-Date).AddMinutes(30)
    $result
    
    Write-Host "Activity 'Output' section:" -foregroundcolor "Yellow"
    $result.Output -join "`r`n"
    
    Write-Host "\nActivity 'Error' section:" -foregroundcolor "Yellow"
    $result.Error -join "`r`n"
    

Úplnou dokumentaci k rutinám PowerShellu najdete v tématu Referenční informace k rutinám PowerShellu pro Data Factory.

Další kroky

Informace o monitorování kanálů služby Data Factory najdete v článku Monitorování kanálů pomocí služby Azure Monitor .