Monitorar programaticamente um Azure Data Factory

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Gorjeta

Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange tudo, desde a movimentação de dados até ciência de dados, análises em tempo real, business intelligence e relatórios. Saiba como iniciar uma nova avaliação gratuitamente!

Este artigo descreve como monitorar um pipeline em uma fábrica de dados usando diferentes kits de desenvolvimento de software (SDKs).

Nota

Recomendamos que utilize o módulo do Azure Az PowerShell para interagir com o Azure. Veja Instalar o Azure PowerShell para começar. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

Intervalo de dados

O Data Factory armazena apenas dados de execução de pipeline por 45 dias. Quando você consulta programaticamente dados sobre execuções de pipeline do Data Factory - por exemplo, com o comando Get-AzDataFactoryV2PipelineRun PowerShell - não há datas máximas para os parâmetros opcionais e LastUpdatedBefore opcionaisLastUpdatedAfter. Mas se você consultar dados do ano passado, por exemplo, não receberá um erro, mas apenas dados de execução de pipeline dos últimos 45 dias.

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

Informações de execução do pipeline

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

  • Em fila
  • InProgress
  • Efetuado com êxito
  • Falha
  • A cancelar
  • Cancelado

.NET

Para obter um passo a passo completo sobre como criar e monitorar um pipeline usando o SDK do .NET, consulte Criar uma fábrica de dados e um pipeline usando o .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 seguinte código para recuperar detalhes de execução da atividade de cópia, por exemplo, 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 SDK do .NET, consulte Referência do SDK do .NET do Data Factory.

Python

Para obter um passo a passo completo sobre como criar e monitorar um pipeline usando Python SDK, consulte Criar uma fábrica de dados e pipeline usando Python.

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

# 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 Python SDK, consulte Data Factory Python SDK reference.

API REST

Para obter um passo a passo completo sobre como criar e monitorar um pipeline usando a API REST, consulte Criar uma fábrica de dados e um pipeline usando a API REST.

  1. Execute o script seguinte para verificar continuamente o estado de execução do pipeline até que este 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 seguinte para obter os detalhes da execução da atividade de cópia, como, por exemplo, o tamanho dos dados lidos/escritos.

    $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 a documentação completa sobre a API REST, consulte Referência da API REST do Data Factory.

PowerShell

Para obter um passo a passo completo sobre como criar e monitorar um pipeline usando o PowerShell, consulte Criar uma fábrica de dados e um pipeline usando o PowerShell.

  1. Execute o script seguinte para verificar continuamente o estado de execução do pipeline até que este 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 seguinte para obter os detalhes da execução da atividade de cópia, como, por exemplo, o tamanho dos dados lidos/escritos.

    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 obter a documentação completa sobre cmdlets do PowerShell, consulte Referência de cmdlets do PowerShell do Data Factory.

Consulte o artigo Monitorar pipelines usando o Azure Monitor para saber como usar o Azure Monitor para monitorar pipelines do Data Factory.