Monitorar programaticamente um Azure Data FactoryProgrammatically monitor an Azure data factory

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Este artigo descreve como monitorar um pipeline em um data factory usando diferentes SDKs (Software Development Kit).This article describes how to monitor a pipeline in a data factory by using different software development kits (SDKs).

Observação

Este artigo foi atualizado para usar o módulo Az PowerShell do Azure.This article has been updated to use the Azure Az PowerShell module. O módulo Az PowerShell é o módulo do PowerShell recomendado para interagir com o Azure.The Az PowerShell module is the recommended PowerShell module for interacting with Azure. Para começar a usar o módulo do Az PowerShell, confira Instalar o Azure PowerShell.To get started with the Az PowerShell module, see Install Azure PowerShell. Para saber como migrar para o módulo Az PowerShell, confira Migrar o Azure PowerShell do AzureRM para o Az.To learn how to migrate to the Az PowerShell module, see Migrate Azure PowerShell from AzureRM to Az.

Intervalo de dadosData range

O Data Factory armazena apenas os dados executados no pipeline por 45 dias.Data Factory only stores pipeline run data for 45 days. Quando você consulta por meio de programação dados sobre execuções de pipeline do Data Factory, por exemplo, com o comando do PowerShell Get-AzDataFactoryV2PipelineRun, não há nenhuma data máxima para os parâmetros LastUpdatedAfter e LastUpdatedBefore opcionais.When you query programmatically for data about Data Factory pipeline runs - for example, with the PowerShell command Get-AzDataFactoryV2PipelineRun - there are no maximum dates for the optional LastUpdatedAfter and LastUpdatedBefore parameters. Mas se você consultar dados do ano passado, por exemplo, a consulta não retornará um erro, mas retornará apenas dados executados no pipeline dos últimos 45 dias.But if you query for data for the past year, for example, the query does not return an error, but only returns pipeline run data from the last 45 days.

Se você quiser manter os dados executados no pipeline por mais de 45 dias, configure seu próprio log de diagnósticos com o Azure Monitor.If you want to persist pipeline run data for more than 45 days, set up your own diagnostic logging with Azure Monitor.

.NET.NET

Para ver um passo a passo completo da criação e monitoramento de um pipeline usando o SDK do .NET, consulte Criar um data factory e um pipeline usando o .NET.For a complete walkthrough of creating and monitoring a pipeline using .NET SDK, see Create a data factory and pipeline using .NET.

  1. Adicione o código a seguir para verificar continuamente o status da execução do pipeline até que ele termine de copiar os dados.Add the following code to continuously check the status of the pipeline run until it finishes copying the data.

    // 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")
            System.Threading.Thread.Sleep(15000);
        else
            break;
    }
    
  2. Adicione o código a seguir para recuperar os detalhes de execução da atividade de cópia, por exemplo, o tamanho dos dados lidos/gravados.Add the following code to that retrieves copy activity run details, for example, size of the data read/written.

    // Check the copy activity run details
    Console.WriteLine("Checking copy activity run details...");
    
    List<ActivityRun> activityRuns = client.ActivityRuns.ListByPipelineRun(
    resourceGroup, dataFactoryName, runResponse.RunId, DateTime.UtcNow.AddMinutes(-10), DateTime.UtcNow.AddMinutes(10)).ToList(); 
    if (pipelineRun.Status == "Succeeded")
        Console.WriteLine(activityRuns.First().Output);
    else
        Console.WriteLine(activityRuns.First().Error);
    Console.WriteLine("\nPress any key to exit...");
    Console.ReadKey();
    

Consulte Referência do SDK do .NET do Data Factory para obter uma documentação completa sobre o SDK do .NET.For complete documentation on .NET SDK, see Data Factory .NET SDK reference.

PythonPython

Para ver um passo a passo completo da criação e monitoramento de um pipeline usando o SDK de Python, consulte Criar um data factory e um pipeline usando Python.For a complete walkthrough of creating and monitoring a pipeline using Python SDK, see Create a data factory and pipeline using Python.

Para monitorar a execução de pipeline, adicione o código a seguir:To monitor the pipeline run, add the following code:

# 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))
activity_runs_paged = list(adf_client.activity_runs.list_by_pipeline_run(
    rg_name, df_name, pipeline_run.run_id, datetime.now() - timedelta(1),  datetime.now() + timedelta(1)))
print_activity_run_details(activity_runs_paged[0])

Para obter uma documentação completa sobre o SDK do Python, consulte Referência do SDK do Python do Data Factory.For complete documentation on Python SDK, see Data Factory Python SDK reference.

API RESTREST API

Para ver um passo a passo completo da criação e monitoramento de um pipeline usando a API REST, consulte Criar um data factory e um pipeline usando a API REST.For a complete walkthrough of creating and monitoring a pipeline using REST API, see Create a data factory and pipeline using REST API.

  1. Execute o script a seguir para verificar continuamente o status da execução de pipeline até que ela termine de copiar os dados.Run the following script to continuously check the pipeline run status until it finishes copying the data.

    $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") {
            Start-Sleep -Seconds 15
        }
        else {
            $response | ConvertTo-Json
            break
        }
    }
    
  2. Execute o script a seguir para recuperar os detalhes de execução da atividade de cópia, por exemplo, o tamanho dos dados lidos/gravados.Run the following script to retrieve copy activity run details, for example, size of the data read/written.

    $request = "https://management.azure.com/subscriptions/${subsId}/resourceGroups/${resourceGroup}/providers/Microsoft.DataFactory/factories/${dataFactoryName}/pipelineruns/${runId}/activityruns?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 GET -Uri $request -Header $authHeader
    $response | ConvertTo-Json
    

Para obter uma documentação completa sobre a API REST, consulte a Referência da API REST do Data Factory.For complete documentation on REST API, see Data Factory REST API reference.

PowerShellPowerShell

Para ver um passo a passo completo da criação e monitoramento de um pipeline usando o PowerShell, consulte Criar um data factory e um pipeline usando o PowerShell.For a complete walkthrough of creating and monitoring a pipeline using PowerShell, see Create a data factory and pipeline using PowerShell.

  1. Execute o script a seguir para verificar continuamente o status da execução de pipeline até que ela termine de copiar os dados.Run the following script to continuously check the pipeline run status until it finishes copying the data.

    while ($True) {
        $run = Get-AzDataFactoryV2PipelineRun -ResourceGroupName $resourceGroupName -DataFactoryName $DataFactoryName -PipelineRunId $runId
    
        if ($run) {
            if ($run.Status -ne 'InProgress') {
                Write-Host "Pipeline run finished. The status is: " $run.Status -foregroundcolor "Yellow"
                $run
                break
            }
            Write-Host  "Pipeline is running...status: InProgress" -foregroundcolor "Yellow"
        }
    
        Start-Sleep -Seconds 30
    }
    
  2. Execute o script a seguir para recuperar os detalhes de execução da atividade de cópia, por exemplo, o tamanho dos dados lidos/gravados.Run the following script to retrieve copy activity run details, for example, size of the data read/written.

    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"
    

Para ver uma documentação abrangente sobre os cmdlets do PowerShell, consulte Referência de cmdlets do PowerShell do Data Factory.For complete documentation on PowerShell cmdlets, see Data Factory PowerShell cmdlet reference.

Próximas etapasNext steps

Consulte o artigo Monitor pipelines usando o Azure Monitor para saber mais sobre como usar o Azure Monitor para monitorar os pipelines do Data Factory.See Monitor pipelines using Azure Monitor article to learn about using Azure Monitor to monitor Data Factory pipelines.