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.
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; }
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.
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 } }
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.
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 }
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 .