Compartilhar via


Monitorar programaticamente um Azure Data Factory

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Dica

Data Factory no Microsoft Fabric é a próxima geração de Azure Data Factory, com uma arquitetura mais simples, IA interna e novos recursos. Se você não estiver familiarizado com a integração de dados, comece com Fabric Data Factory. As cargas de trabalho existentes do ADF podem ser atualizadas para Fabric para acessar novos recursos em ciência de dados, análise em tempo real e relatórios.

Este artigo descreve como monitorar um pipeline em um data factory usando diferentes SDKs (Software Development Kit).

Observação

Recomendamos que você use o módulo Azure Az PowerShell para interagir com Azure. Para começar, consulte Instalar Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, consulte Migrate Azure PowerShell do AzureRM para o Az.

Intervalo de dados

O Data Factory armazena dados de execução do pipeline por apenas 45 dias. 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. No entanto, caso consulte dados do ano passado, a consulta não retornará um erro, somente dados de execução de pipeline dos últimos 45 dias.

Se você quiser manter os dados de execução de pipeline por mais de 45 dias, configure seu próprio log de diagnóstico com Azure Monitor.

Informações sobre a execução de pipeline

Para propriedades da execução de pipeline, consulte a Referência de API PipelineRun. Uma execução de pipeline tem um status diferente durante o respectivo ciclo de vida. Os valores possíveis do status de execução estão listados abaixo:

  • Em fila
  • InProgress
  • Êxito
  • Falhou
  • Cancelando
  • Cancelado

.NET

Para um guia completo de como criar e monitorar um pipeline usando o .NET SDK, veja Como criar uma fábrica de dados e um pipeline usando .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.

    // 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. 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.

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

Para obter a documentação completa sobre o .NET SDK, consulte Data Factory referência do .NET SDK.

Python

Para obter um passo a passo completo sobre como criar e monitorar um pipeline usando Python SDK, consulte Criar um data factory e pipeline usando Python.

Para monitorar a execução do pipeline, adicione o código a seguir:

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

Para obter a documentação completa sobre o SDK do Python, consulte a referência do SDK do Data Factory em Python.

API REST

Para obter um passo a passo completo sobre a criação e o monitoramento de um pipeline usando uma API REST, confira como Criar um data factory e um pipeline usando uma API REST.

  1. Execute o script a seguir para verificar o status de execução do pipeline continuamente até que ele termine de copiar os dados.

    $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. 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.

    $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
    

Para obter uma documentação completa sobre a API REST, consulte a Referência da API REST do Data Factory.

PowerShell

Para obter um passo a passo completo sobre a criação e o monitoramento de um pipeline usando o PowerShell, confira como Criar um data factory e um pipeline usando o PowerShell.

  1. Execute o script a seguir para verificar o status de execução do pipeline continuamente até que ele termine de copiar os dados.

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

    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.

Consulte Monitor pipelines usando Azure Monitor artigo para saber mais sobre como usar Azure Monitor para monitorar pipelines do Data Factory.