Поделиться через


Программный мониторинг Фабрика данных Azure

ОБЛАСТЬ ПРИМЕНЕНИЯ: Фабрика данных Azure Azure Synapse Analytics

Совет

Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !

В этой статье описывается как отслеживать конвейер в фабрике данных с помощью различных пакетов средств разработки программного обеспечения (пакетов SDK).

Примечание.

Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Сведения о начале работы см. в статье "Установка Azure PowerShell". Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.

Срок хранения данных

В фабрике данных данные запуска конвейеров сохраняются только в течение 45 дней. Если вы выполняете программный запрос на сведения о запуске для конвейера фабрики данных (например, с помощью команды PowerShell Get-AzDataFactoryV2PipelineRun), максимальные значения дат для необязательных параметров LastUpdatedAfter и LastUpdatedBefore не указываются. Однако если вы запросите данные за прошлый год, например, вы получите не ошибку, а лишь данные о запуске конвейера за последние 45 дней.

Если вы хотите хранить данные о запуске конвейера более 45 дней, настройте собственное ведение журнала диагностики с помощью службы Azure Monitor.

Сведения о выполнении конвейера

Свойства участка конвейера см. в справочнике по API PipelineRun. Участок конвейера имеет разный статус в течение своего жизненного цикла, возможные значения состояния выполнения перечислены ниже:

  • В очереди
  • InProgress
  • Выполнено успешно
  • Неудачно
  • Отмена
  • Отменено

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

Полная документация по пакету SDK для .NET приведена в справочнике по пакету SDK для .NET для фабрики данных.

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

Полная документация по пакету SDK для Python приведена в справочнике по пакету SDK для Python для фабрики данных.

REST API

Полное пошаговое руководство по созданию и мониторингу конвейера с помощью REST API см. в разделе Создание фабрики данных и конвейера с помощью REST API.

  1. Запустите следующий скрипт, чтобы проверять состояние выполнения, пока не закончится копирование данных.

    $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. Запустите следующий скрипт, извлекающий сведения о выполнении действия копирования, например размер записанных и прочитанных данных.

    $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
    

Полная документация по 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 приведена в справочнике по командлетам PowerShell для фабрики данных.

Дополнительные сведения об использовании Azure Monitor для отслеживания конвейеров фабрики данных см. в статье Monitor data factories using Azure Monitor (Отслеживание фабрик данных с помощью Azure Monitor).