Airflow logging сохраняет диагностический след каждого шага ИИ-конвейера так, чтобы инженер нашёл причину сбоя по запуску и попытке задачи. В журнал записывайте техническое состояние, идентификаторы процесса и безопасные признаки результата. Сырой промпт, ключи и персональные данные оставляйте вне журнала. Для будущего пилота выберите место хранения, способ связи записей и тест чтения журнала после контролируемой ошибки.

След задачи

TL;DR

Airflow ведёт отдельный task log для задачи; стандартный шаблон пути включает dag_id, run_id, task_id и номер попытки. Такой след помогает разобрать конкретный шаг.

Для ИИ-конвейера сначала назовите границы задачи: получение разрешённого текста, подготовка входа, вызов модели, проверка формата и передача результата человеку. Журнал каждой задачи отвечает на вопрос, что произошло внутри её попытки и где остановилось исполнение. В официальном разделе про task logs описаны отдельные записи для задач и их чтение через интерфейс Airflow.

Событие для записи должно помогать диагностике. Например, шаг загрузки фиксирует код источника, статус чтения и идентификатор набора без содержимого документа. Шаг модели фиксирует выбранную версию маршрута, технический статус ответа и результат проверки схемы без текста запроса. По этим полям инженер связывает техническую ошибку с определённым запуском, сохраняя содержание материала в его разрешённом хранилище.

Task log отличается от callback: журнал хранит след выполнения, а callback сообщает о наступившем событии по настроенному маршруту. Уведомление может направить дежурного к ошибке, но подробности он читает в логе задачи. Повторная попытка создаёт собственный контекст диагностики. Смешение разных попыток в одной ручной заметке затруднит поиск исходной причины.

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

Границы данных

Составьте белый список полей журнала до написания кода. В него могут войти идентификатор запуска, имя шага, номер попытки, код ошибки, версия схемы ответа и ссылка на защищённый артефакт. Содержимое пользовательского запроса, полный ответ модели, ключ доступа и личные сведения остаются вне task log. Если для анализа нужен сам документ, сотрудник открывает его в разрешённой системе по отдельным правам.

Airflow умеет скрывать часть известных секретов в task logs, однако официальная документация о маскировании описывает ограничения автоматической обработки. Значение, переданное обходным путём или выведенное собственной функцией, способно остаться видимым. Поэтому защита начинается до вызова logger: приложение формирует безопасное событие из заранее разрешённых полей и исключает сырой объект запроса.

ШагПисать в журналОставить вне журнала
ЗагрузкаКод источника, статус, размер пакетаТекст документа и личные сведения
Вызов моделиИдентификатор операции, код ответаПромпт, ключ и полный ответ
ПроверкаВерсия схемы, вид ошибкиЧувствительный фрагмент результата
Передача человекуКод решения и адрес защищённой записиСодержимое переписки и секреты

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

Проверьте также сообщения библиотек и исключения. Даже аккуратный собственный logger оставит риск, если зависимость печатает тело запроса в traceback. В тестовом контуре задайте безопасный сбой, посмотрите полный вывод и удалите лишние данные у источника записи. Маскировку рассматривайте как дополнительный рубеж.

Хранение и доступ

Для будущего пилота определите, где task logs будут доступны при сбое worker. В документации Airflow описаны локальный файловый обработчик и удалённые обработчики для потоковой отправки либо хранения объектов. Выбор зависит от инфраструктуры, политики доступа и требований к сохранности следа. Инженеру нужен путь чтения после завершения задачи и после отказа исполнителя, а администратору — правила доступа и хранения.

Отдельно рассмотрите журналы scheduler и worker. Scheduler помогает разбирать назначение и состояние запуска; журналы worker показывают работу процесса исполнителя. Task log хранит сообщения конкретной задачи и попытки. При сбое чтения задача могла завершиться ошибкой, но журнал оказался в другом месте или доступ к нему нарушен. Поэтому диагностический маршрут включает все три уровня, сохраняя разные назначения каждого.

  1. Назначьте владельца настройки хранения и перечень ролей, которым разрешено читать task logs.
  2. Выберите локальное либо удалённое место хранения для тестового контура и зафиксируйте его в схеме наблюдения.
  3. Проведите безопасный сбой задачи, затем откройте соответствующий task log по идентификаторам запуска и попытки.
  4. Сверьте запись задачи с журналами scheduler и worker, проверьте полноту и отсутствие запрещённых данных.

Тест доступа выполняйте от имени той роли, которая будет разбирать инцидент. Успех записи на worker подтверждает создание события; чтение через интерфейс требует отдельного теста с ролью дежурного. Оговорите порядок хранения, архивирования и удаления по правилам компании без переноса содержимого в общую переписку. Для удалённого хранилища отдельно проверьте путь чтения и разрешения.

Если несколько процессов пишут свои журналы, общий идентификатор запуска связывает их логически. Время события помогает восстановить порядок; главным ключом служит идентификатор запуска. Зафиксируйте одинаковую форму идентификатора во всех разрешённых диагностических событиях.

● Discovery · 1 час · бесплатно

Сможет ли ваша команда прочитать task log после сбоя?

Прийти на Discovery →

Корреляция запуска

Для расследования удобно хранить dag_id, run_id, task_id и попытку как отдельные поля записи. У динамически размноженных задач добавляется индекс элемента. Airflow использует эти признаки в шаблоне имён task logs, поэтому инженер может перейти от карточки задачи к нужному файлу или удалённой записи. Дополнительный идентификатор обращения компании связывайте с журналом только в обезличенной форме и по утверждённым правилам.

При повторе шага модель может вернуть другой технический статус, поэтому попытки сравнивают отдельно. Скрипт собирает последовательность событий по идентификаторам и показывает, на каком шаге изменилось состояние. Языковая модель формулирует возможную причину расхождения по очищенной сводке; человек сверяет гипотезу с логом и настройками повтора. В журнале остаются технические факты, а решение о следующем действии принимает ответственный сотрудник.

Полезно различать ошибки самого задания и ошибки наблюдения. Первый тип означает отказ в обработке входа, вызове модели либо проверке результата. Второй означает, что задача выполнялась, но нужная запись отсутствует или её невозможно прочитать. Разделение помогает быстрее выбрать следующий источник: task log, журнал scheduler, журнал worker либо настройки удалённого обработчика.

Для каждой диагностической ветки подготовьте контрольный вопрос. Видно ли начало попытки? Записан ли технический код отказа? Совпадает ли идентификатор запуска в соседних системах? Может ли дежурный открыть запись с нужной ролью? Такой чек-лист полезнее общего уведомления об ошибке, поскольку проверяет сам след выполнения. Сценарии тестирования ИИ-агентов дают соседний подход к проверке отказов.

Приёмка пилота

Пилот предложите на синтетическом входе и отдельном тестовом DAG. Подготовьте успешное выполнение, отказ шага модели и сбой чтения удалённого журнала как проектные сценарии проверки. Команда заранее определяет ответственных за код события, хранение, доступ и приёмку. В журнал попадут только безопасные признаки; тестовые секреты тоже оставляют вне текста записи.

Критерии приёмки привяжите к наблюдаемым действиям. Инженер находит task log по идентификаторам запуска и попытки, отделяет его от сообщений scheduler и worker, восстанавливает ход шага и открывает запись после контролируемого сбоя. Ответственный за безопасность проверяет отсутствие сырого промпта, личных данных и ключей в полном выводе. Администратор подтверждает, что доступ к месту хранения соответствует ролям.

После изменения настройки обработчика повторите тест чтения, поскольку успешное выполнение задачи само по себе недостаточно для диагностики. Оцените, какой путь остаётся доступным при отказе worker и кто видит журнал из интерфейса. Если проверка провалена, сначала исправьте источник записи или маршрут хранения, затем повторите безопасный сценарий. Описание пилота остаётся планом, а измеренные результаты появятся после его проведения.

Стоимость организации журналов зависит от выбранного хранения, политики доступа, объёма событий и требований к разбору инцидентов. Тариф и смету обсуждают после схемы потоков и критериев приёмки. Если нужен рабочий маршрут наблюдения ИИ-конвейера, его можно включить в проект внедрения ИИ. На выходе команда должна получить читаемый и безопасный след шага, пригодный для проверки гипотез инженером.

Частые вопросы

Где смотреть task logs в Airflow?
Airflow показывает отдельный журнал задачи в интерфейсе. Путь чтения зависит от настроенного обработчика и места хранения. Для поиска уточните запуск, задачу и попытку.
Чем task log отличается от callback?
Task log сохраняет сообщения выполнения конкретной попытки. Callback запускает настроенную реакцию на событие, например уведомление. Для разбора причины инженер открывает журнал задачи.
Можно ли писать промпт в лог Airflow?
Для рабочего ИИ-конвейера журналируйте технические признаки без сырого промпта, личных данных и ключей. Содержимое храните в разрешённом контуре с отдельной проверкой доступа.
Как проверить чтение журнала после сбоя?
Запустите безопасную ошибку на тестовом DAG, найдите нужную попытку и откройте её task log с ролью дежурного. Сверьте события с журналами scheduler и worker.
Сколько стоит настройка Airflow logging?
Состав работ зависит от способа хранения, прав чтения, объёма событий и требований к диагностике. Смету обсуждают после выбора тестового сценария и критериев приёмки.