Compartir a través de

以编程方式监视 Azure 数据工厂

适用于:Azure 数据工厂 Azure Synapse Analytics

本文介绍如何使用不同的软件开发工具包 (SDK) 监视数据工厂中的管道。

注意

建议使用 Azure Az PowerShell 模块与 Azure 交互。 请参阅安装 Azure PowerShell 以开始使用。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az

数据范围

数据工厂仅将管道运行数据存储 45 天。 以编程方式查询有关数据工厂管道运行的数据时 - 比如使用 PowerShell 命令 Get-AzDataFactoryV2PipelineRun 来查询,对于可选的 LastUpdatedAfterLastUpdatedBefore 参数,无最大日期限制。 但如果查询例如过去一年的数据,则不会返回错误,而仅返回最近 45 天的管道运行数据。

如果要保留管道运行数据超过 45 天,请使用 Azure Monitor 设置自己的诊断日志记录。

管道运行信息

有关管道运行属性,请参阅 PipelineRun API 参考。 管道运行在其生命周期中具有不同状态,下面列出了可能的运行状态值:

  • 已排队
  • 正在进行
  • 已成功
  • 失败
  • 正在取消
  • 已取消

.NET

有关使用 .NET SDK 创建和监视管道的完整演练,请参阅使用 .NET 创建数据工厂和管道

  1. 添加以下代码以持续检查管道运行状态,直到它完成数据复制为止。

    // 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. 添加以下代码,用于检索复制活动的运行详细信息,例如,读取/写入的数据大小。

    // 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();
    

有关 .NET SDK 的完整文档,请参阅数据工厂 .NET SDK 参考

Python

有关使用 Python SDK 创建和监视管道的完整演练,请参阅使用 Python 创建数据工厂和管道

要监视管道的运行,请添加以下代码:

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

有关 Python SDK 的完整文档,请参阅数据工厂 Python SDK 参考

REST API

有关使用 REST API 创建和监视管道的完整演练,请参阅使用 REST API 创建数据工厂和管道

  1. 运行以下脚本来持续检查管道运行状态,直到它完成数据复制为止。

    $request = "https://management.chinacloudapi.cn/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. 运行以下脚本来检索复制活动运行详细信息,例如,读取/写入的数据的大小。

    $request = "https://management.chinacloudapi.cn/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
    

有关 REST API 的完整文档,请参阅数据工厂 REST API 参考

PowerShell

有关使用 PowerShell 创建和监视管道的完整演练,请参阅使用 PowerShell 创建数据工厂和管道

  1. 运行以下脚本来持续检查管道运行状态,直到它完成数据复制为止。

    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. 运行以下脚本来检索复制活动运行详细信息,例如,读取/写入的数据的大小。

    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"
    

有关 PowerShell cmdlet 的完整文档,请参阅数据工厂 PowerShell cmdlet 参考

若要了解如何使用 Azure Monitor 监视数据工厂管道,请参阅使用 Azure Monitor 监视管道一文。