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 až po datové vědy, analýzy v reálném čase, business intelligence a vytváření sestav. Přečtěte si, jak začít používat novou zkušební verzi zdarma.

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

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.

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 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 se nezobrazí chyba, ale pouze data spuštění kanálu za posledních 45 dnů.

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

Informace o spuštění kanálu

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

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

.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í kanálu, 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.

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])

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í 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
    

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

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 .