Sdílet prostřednictvím


Programové monitorování služby Azure Data Factory

PLATÍ PRO: Azure Data Factory Azure Synapse Analytics

Tip

Vyzkoušejte si službu Data Factory v Microsoft Fabric, řešení pro analýzy typu all-in-one pro podniky. Microsoft Fabric zahrnuje všechno od přesunu dat přes následné zpracování dat, analýzy v reálném čase, podnikovou inteligenci a reporting. Přečtěte si, jak začít používat novou zkušební verzi zdarma.

Tento článek popisuje, jak monitorovat datový tok v prostředí datové továrny pomocí různých sad nástrojů pro vývoj software (SDK).

Poznámka:

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

Rozsah dat

Data Factory ukládá data z běhu pipeline pouze po dobu 45 dnů. Při programovém dotazování na data o spuštění kanálu Data Factory – například pomocí příkazu Get-AzDataFactoryV2PipelineRun PowerShellu – nejsou pro volitelné LastUpdatedAfter parametry LastUpdatedBefore k dispozici žádná maximální data. Pokud se ale dotazujete na data za minulý rok, například nezískáte chybovou zprávu, ale pouze data z běhu datového toku za posledních 45 dnů.

Pokud chcete uchovávat data spuštění potrubí po dobu delší než 45 dnů, nastavte si vlastní protokolování diagnostiky pomocí Azure Monitor.

Informace o spuštění potrubí

Pro vlastnosti spuštění pipeline se podívejte do referenční dokumentace rozhraní API PipelineRun. Během životního cyklu může mít běh kanálu různé stavy. Možné hodnoty stavu běhu jsou uvedené níže:

  • Zařazeno do fronty
  • Probíhající
  • Úspěch
  • Neúspěšné
  • Probíhá zrušení
  • Zrušeno

platforma .NET

Kompletní 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í pipeline, dokud 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 načtených a 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();
    

Kompletní dokumentaci k sadě .NET SDK najdete v referenčních informacích k sadě .NET SDK služby Data Factory.

Python

Kompletní postup 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.

K monitorování běhu 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])

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

REST API

Kompletní postup 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í datového kanálu, dokud nebude dokončeno 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
    

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

PowerShell

Kompletní 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 pro nepřetržité sledování stavu běhu potrubí až do úplného dokončení 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"
    

Kompletní dokumentaci k rutinám PowerShellu najdete v referenčních informacích k rutinám PowerShellu služby Data Factory.

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