Доставка логов serverless в тома Unity Catalog

Бессерверная доставка логов записывает логи приложений из бессерверных заданий в том Unity Catalog. Администраторы рабочего пространства настраивают назначение для этого пространства, чтобы команды могли хранить журналы и обрабатывать их с помощью инструментов observability. Журналы доставляются асинхронно после завершения задания. Получение может занять несколько минут и зависит от времени обработки и загрузки.

Important

Эта функция доступна в бета-версии. Чтобы использовать это, администратор рабочего пространства должен включить бессерверную доставку журналов в тома Unity Catalog на странице Previews. См. статью "Управление предварительными версиями Azure Databricks".

Требования

  • Рабочее пространство с бессерверными вычислениями и включённым каталогом Unity.
  • Бессерверная среда версии 5 или выше.
  • Требуется роль администратора рабочего пространства для настройки доставки журналов. См. Назначить роль администратора рабочего пространства пользователю.
  • Для рабочего пространства была включена предварительная версия бессерверной доставки журналов в тома Unity Catalog. Возможно, он уже включён. Если он отключён, администратор рабочего пространства может включить его на странице Previews. Включение режима предварительного просмотра делает конфигурацию доступной; оно не запускает доставку.
  • Целевой том. Администратору, настраивающему доставку, нужны USE CATALOG для своего каталога, USE SCHEMA для своей схемы и READ VOLUME и WRITE VOLUME для тома. См. раздел "Привилегии" для томов каталога Unity.

Note

Настройте доставку только на доверенный ресурс с ограниченным доступом. Доставленные логи могут содержать конфиденциальную информацию, включая электронную почту пользователей, пути хранения, трассы стека, внутренние идентификаторы и временные подписанные URL-адреса. Не гарантируется, что логи не содержат секретов.

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

Включить доставку логов

Администратор рабочего пространства должен включить доставку журналов для этого пространства.

  1. Откройте Настройки из меню пользователя.
  2. В разделе Workspace admin нажмите Compute.
  3. В разделе доставки логов включите бессерверную доставку логов.
  4. В разделе «Настроить доставку журналов» введите путь тома, например /Volumes/observability/production/serverless_logs, или нажмите на значок папки, чтобы просматривать тома.
  5. Нажмите кнопку Сохранить. Сохранение пункта назначения позволяет доставку.

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

Прочитать доставленные журналы

Вывод приложения включает стандартный вывод и стандартный поток ошибок пользовательского кода, включая пользовательские функции (UDF). Используйте Catalog Explorer для просмотра целевого тома и проверки доставленных файлов. См . статью "Работа с файлами в томах каталога Unity".

Доставка логов не предоставляет метрики кластера или профили запросов. Используйте страницу выполнения задания для изучения состояния и производительности запуска вместе с журналами приложения. См. Мониторинг заданий Lakeflow.

Запрос журналов с помощью SQL

Используйте read_files, чтобы запрашивать доставленные текстовые файлы. Замените путь тома в этом примере на целевой путь. Чтобы прочитать журналы, необходимы USE CATALOG для каталога, USE SCHEMA для схемы и READ VOLUME для тома.

Создайте временный вид, который извлекает идентификаторы заданий и запуска из пути файла и сохраняет каждую строку выхода журнала:

CREATE OR REPLACE TEMPORARY VIEW serverless_job_logs AS
SELECT
  regexp_extract(_metadata.file_path, '/job_id=([^/]+)/', 1) AS job_id,
  regexp_extract(_metadata.file_path, '/job_run_id=([^/]+)/', 1) AS job_run_id,
  regexp_extract(_metadata.file_path, '/task_run_id=([^/]+)/', 1) AS task_run_id,
  _metadata.file_name AS file_name,
  value AS log_line
FROM read_files(
  '/Volumes/observability/production/serverless_logs/',
  format => 'text'
);

Найдите строки, содержащие ошибки в разных запусках заданий:

SELECT job_id, job_run_id, task_run_id, file_name, log_line
FROM serverless_job_logs
WHERE log_line LIKE '%ERROR%';

Определите задания с наибольшим числом ошибок:

SELECT
  job_id,
  count(*) AS error_lines,
  count(DISTINCT job_run_id) AS affected_runs
FROM serverless_job_logs
WHERE log_line LIKE '%ERROR%'
GROUP BY job_id
ORDER BY error_lines DESC;

Эти запросы ищут буквальный текст ERROR. Настройте фильтр под формат логирования вашего приложения. См. табличную функцию read_files.

Измените пункт назначения или отключите доставку

Чтобы изменить пункт назначения, откройте Настройки > Compute > Доставка журналов, нажмите на значок карандаша рядом с названием тома, введите новый путь или укажите его в окне обзора и нажмите Сохранить. Сохранение пункта назначения включает доставку, в том числе когда доставка была отключена.

Чтобы отключить доставку, откройте Настройки > Вычисления > Доставка журналов и отключите Бессерверная доставка журналов. Настройка сохраняет место назначения, чтобы вы могли снова включить отправку без выбора другого тома. Отключение доставки не удаляет файлы, уже записанные на том. Управляйте доступом и хранением тех файлов отдельно.

Устранение неполадок с отсутствующими логами

Если логи не отображаются после завершения работы:

  1. Проверьте, включена ли доставка журналов Serverless в разделе Настройки > Вычисления > Доставка журналов. Только включение предпросмотра не запускает отправку.
  2. Проверьте, существует ли настроенный том и что у администратора, который настроил доставку, остаются необходимые разрешения.
  3. Убедитесь, что задание использует serverless-вычисления и производит выходные данные приложения. Подождите несколько минут после завершения работы для асинхронной передачи. Обработка и загрузка могут занять время, из-за чего доставка может задержаться.

Для классической доставки журналов вычислений см. Доставка журналов вычислений.