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


Интеграция журналов Airflow с Azure Monitor

В этой статье вы узнаете, как начать сбор журналов Airflow для экземпляров Microsoft Azure Data Manager для энергетических экземпляров в Azure Monitor. Эта функция интеграции помогает отлаживать сбои запуска Airflow DAG (ациклический граф).

Необходимые компоненты

  • Существующая рабочая область Log Analytics. Эта рабочая область будет использоваться для запроса журналов Airflow с помощью редактора запросов язык запросов Kusto (KQL) в рабочей области Log Analytics. Полезный ресурс. Создание рабочей области log analytics в портал Azure.

  • Существующая учетная запись хранения: она будет использоваться для хранения дампов JSON журналов Airflow. Учетная запись хранения не обязательно должна находиться в той же подписке, что и ваша рабочая область Log Analytics.

Включение параметров диагностики для сбора журналов в учетной записи хранения

Каждый экземпляр Azure Data Manager для энергетики создается с помощью экземпляра диспетчера оркестрации рабочих процессов Фабрика данных Azure (на базе Apache Airflow). Мы собираем журналы Airflow для внутренних целей устранения неполадок и отладки. Журналы airflow можно интегрировать с Azure Monitor следующими способами:

  • Storage account
  • Рабочая область Log Analytics

Чтобы получить доступ к журналам с помощью любого из описанных выше двух вариантов, необходимо создать параметр диагностики. Каждый параметр диагностики состоит из трех основных частей:

Часть Description
Имя. Это имя журнала диагностики. Убедитесь, что для каждого журнала задано уникальное имя.
Категории Категория журналов для отправки в каждое из направлений. Набор категорий будет разным для каждой службы Azure. Посетите: поддерживаемые категории журналов ресурсов
Назначения здесь указываются одно или несколько назначений для отправки журналов. Для всех служб Azure используется одинаковый набор возможных назначений. Каждый параметр диагностики может определять одно или несколько назначений, но не более одного назначения каждого типа. Это должна быть учетная запись хранения, пространство имен Центров событий или концентратор событий.

Выполните следующие действия, чтобы настроить параметры диагностики:

  1. Страница обзора Microsoft Azure Data Manager для энергетики

  2. Выбор параметров диагностики на левой панели

    Снимок экрана: страница обзора параметров диагностики Azure Monitor. На странице отображается список существующих параметров диагностики и параметр для добавления нового.

  3. Выбор параметра диагностики " Добавить"

  4. Выберите журналы задач Airflow в разделе "Журналы "

  5. Выбор архива в учетную запись хранения

    Снимок экрана: создание параметра диагностики для архивации журналов в учетную запись хранения. На рисунке показана подписка и учетная запись хранения, выбранная для параметра диагностики.

  6. Проверьте подписку и учетную запись хранения, в которую требуется архивировать журналы.

После создания параметра диагностики для архивации журналов задач Airflow в учетную запись хранения можно перейти на страницу обзора учетной записи хранения. Затем можно использовать браузер хранилища на левой панели, чтобы найти нужный JSON-файл. Просмотр различных каталогов интуитивно понятен при переходе от года к месяцу в день.

  1. Перейдите по контейнерам, доступным на левой панели.

    Снимок экрана: изучение архивных журналов в контейнерах учетной записи хранения. Контейнер будет отображать журналы из всех источников, настроенных.

  2. Откройте область сведений справа. Она содержит кнопку "Скачать", чтобы сохранить файл журнала локально.

  3. Скачанные журналы можно анализировать в любом редакторе.

Включение параметров диагностики для интеграции журналов с рабочей областью Log Analytics

Журналы Airflow можно интегрировать с рабочей областью Log Analytics с помощью параметров диагностики на левой панели страницы обзора экземпляра Microsoft Azure Data Manager для энергетики.

Снимок экрана: создание параметра диагностики. В нем показаны параметры выбора подписки и рабочей области Log Analytics, с которой необходимо интегрировать.

Работа с интегрированными журналами Airflow в рабочей области Log Analytics

Используйте язык запросов Kusto (KQL), чтобы получить требуемые данные о собранных журналах Airflow из рабочей области Log Analytics. Предварительно созданные запросы можно загрузить в рабочую область Log Analytics или создать собственные запросы.

Снимок экрана: страница Azure Monitor Log Analytics для просмотра собранных журналов. В разделе управления журналами таблицы из всех источников будут видны.

  1. Загрузка предварительно созданных запросов: выберите журналы из меню ресурса. Log Analytics открывается с окном "Запросы", включающее предварительно созданные запросы для типа ресурса. Просмотрите доступные запросы. Определите один из них, который нужно запустить, и нажмите кнопку "Выполнить". Запрос добавляется в окно запроса и возвращаются результаты.

  2. Напишите запросы в редакторе запросов: вы можете копировать, вставлять и изменять следующие запросы или писать собственные запросы в KQL в Редактор запросов рабочей области Log Analytics.

Примеры запросов

Этот запрос возвращает все журналы Airflow, которые имеют уровень ERROR. Вы можете фильтровать результаты, добавив (раскомментируя), где предложение для имени экземпляра Azure Data Manager для энергетического экземпляра и идентификатор корреляции для запуска DAG.


OEPAirFlowTask
| extend ResourceName = tostring(split(_ResourceId , '/')[-1])
// | where ResourceName == "<the name of ADME instance>"        // to filter on resourceName replace <...> and uncomment line
// | where CorrelationId == "<DAG run's runId>"                 // to filter on correlationID replace <...> with correlationId (same as runId) - we have created a duplicate for to maintain consistency of column name across all services 
| where LogLevel  == "ERROR"
| project TimeGenerated, DagName, LogLevel, DagTaskName, CodePath, Content

Этот запрос содержит список всех запусков DAG и их соответствующих идентификаторов корреляции в упомянутых ресурсах Azure Data Manager для энергетики.


OEPAirFlowTask
| extend ResourceName = tostring(split(_ResourceId , '/')[-1])
// | where ResourceName == "<the name of ADME instance>"        // to filter on resourceName replace <...> and uncomment line
| distinct DagName, CorrelationId                               // correlationId is same as runId - we have created a duplicate for consistency in search across logs of all services 
| sort by DagName asc

Мы добавили документ для устранения неполадок процесса приема манифеста с помощью журналов Airflow, собранных в рабочей области Log Analytics.

Следующие шаги

Теперь, когда вы собираете журналы ресурсов, создайте оповещение о запросе к журналу, чтобы получать уведомления при обнаружении определенных данных в журнале.