Monitorar programaticamente um Azure Data Factory
APLICA-SE A: Azure Data Factory Azure Synapse Analytics
Dica
Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange desde movimentação de dados até ciência de dados, análise em tempo real, business intelligence e relatórios. Saiba como iniciar uma avaliação gratuita!
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 Az PowerShell do Azure para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo Az PowerShell, confira Migrar o Azure PowerShell do AzureRM para o Az.
Intervalo de dados
O Data Factory armazena apenas os dados executados no pipeline por 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.
Caso queira manter os dados de execução de pipeline por mais de 45 dias, configure seu log de diagnósticos usando o Azure Monitor.
Informações sobre a execução de pipeline
Para acessar as propriedades da execução de pipeline, confira 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
- Com sucesso
- Com falha
- Cancelando
- Cancelado
.NET
Para obter um passo a passo completo sobre a criação e o monitoramento de um pipeline usando o SDK do .NET, confira como Criar um data factory e um pipeline usando o .NET.
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; }
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();
Consulte Referência do SDK do .NET do Data Factory para obter uma documentação completa sobre o SDK do .NET.
Python
Para obter um passo a passo completo sobre a criação e o monitoramento de um pipeline usando o SDK do Python, confira como Criar um data factory e um pipeline usando o Python.
Para monitorar a execução de 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 uma documentação completa sobre o SDK do Python, consulte Referência do SDK do Python do Data Factory.
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.
Execute o script a seguir para verificar continuamente o status da execução de pipeline até que ela 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 } }
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.
Execute o script a seguir para verificar continuamente o status da execução de pipeline até que ela 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 }
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.
Conteúdo relacionado
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.