Перейти к содержимому
Последнее обновление

Управление журналами FE

Этот документ предназначен для инженеров по эксплуатации и разработчиков, работающих с кластером Doris. В нём описана система журналирования процесса FE (Frontend): категории файлов журналов, политики хранения и ротации, включение журналов DEBUG во время работы и интеграция журналов в контейнерных средах.

Этот документ применим к Doris 2.1.4 и более поздним версиям.

Сценарии использования​

СценарийРекомендуемый раздел
Узнать, какие файлы журналов создаёт FE и для чего предназначен каждый из нихКатегории журналов
Изменить срок хранения журналов в днях, размер отдельного файла или политику ротацииНастройка журналов
Включить журналы DEBUG для определённого класса или пакета при диагностике проблемВключение журналов DEBUG
Развернуть FE в Kubernetes или другой контейнерной среде и направить журналы в stdoutНастройка журналов в контейнерной среде
Узнать, где находится журнал аудита и что в нём записываетсяfe.audit.log в разделе Категории журналов и параметры аудита в разделе Настройка журналов

Категории журналов​

После запуска процесса FE командой sh bin/start_fe.sh --daemon в каталоге журналов FE (задаётся параметром LOG_DIR, по умолчанию это каталог log/ в каталоге развёртывания FE) создаются следующие файлы журналов:

Файл журналаТипОписание
fe.logЖурнал работы (основной)Основной журнал процесса FE. Содержит сообщения всех уровней, записываемые во время работы (DEBUG, INFO, WARN, ERROR и т. д.).
fe.warn.logЖурнал работы (предупреждения)Содержит только сообщения уровня WARN и выше. Представляет собой подмножество fe.log и удобен для быстрого поиска предупреждений и ошибок.
fe.audit.logЖурнал аудитаСодержит все операции с базой данных (SQL, DDL, DML и т. д.), выполненные через этот узел FE.
fe.outСтандартный поток вывода / ошибокСодержит вывод echo из скрипта запуска и сообщения, не перехваченные библиотекой log4j. Дополняет журнал работы. В редких случаях в нём можно найти дополнительную информацию.
fe.gc.logЖурнал GC JVMЖурнал сборки мусора JVM процесса FE. Его поведение определяется параметром JAVA_OPTS в fe.conf.

Настройка журналов​

Все перечисленные ниже параметры находятся в файле fe.conf. Они определяют путь хранения журналов, срок хранения, количество сохраняемых файлов, размер отдельного файла и связанные настройки.

Общие настройки​

ПараметрЗначение по умолчаниюДопустимые значенияОписание
LOG_DIRENV(DORIS_HOME)/logПуть хранения всех журналов. По умолчанию используется каталог log/ в каталоге развёртывания FE. Обратите внимание: это переменная окружения, и её имя должно быть указано в верхнем регистре.
sys_log_levelINFOINFO, WARN, ERROR, FATALУровень журналирования для fe.log. По умолчанию используется INFO. Менять его не рекомендуется, поскольку на уровне INFO записывается много важных сообщений.
sys_log_modeNORMALNORMAL, BRIEF, ASYNCРежим вывода журналов FE. NORMAL используется по умолчанию: сообщения записываются синхронно и содержат сведения о месте вызова в коде. ASYNC записывает сообщения асинхронно и включает сведения о месте вызова в коде. BRIEF записывает сообщения асинхронно, но без сведений о месте вызова в коде. Производительность возрастает при переходе от NORMAL к ASYNC и далее к BRIEF.
примечание

Начиная с версии 3.0.2, значение по умолчанию для sys_log_mode изменено на ASYNC.

Журналы работы (fe.log / fe.warn.log)​

ПараметрЗначение по умолчаниюДопустимые значенияОписание
log_roll_size_mb1024Максимальный размер отдельного файла fe.log, fe.warn.log или fe.audit.log. По умолчанию — 1024 МБ. Когда размер файла журнала превышает этот порог, автоматически создаётся новый файл.
sys_log_roll_intervalDAYDAY, HOURИнтервал ротации fe.log и fe.warn.log. По умолчанию — 1 день: новый файл журнала создаётся ежедневно.
sys_log_roll_num10Максимальное количество файлов fe.log и fe.warn.log за один день. По умолчанию — 10. Если из-за ротации или разделения файлов их количество превышает этот порог, старые файлы журналов удаляются.
sys_log_enable_compressfalsetrue, falseВключает сжатие старых файлов fe.log и fe.warn.log. По умолчанию отключено. Если параметр включён, старые журналы архивируются со сжатием gzip.
sys_log_verbose_modulesВключает журналирование уровня DEBUG для указанных пакетов или классов Java. См. раздел Включение журналов DEBUG.
подсказка

sys_log_roll_num определяет количество сохраняемых журналов за день, а не их общее количество. Чтобы определить общее количество сохраняемых журналов, этот параметр нужно использовать вместе с sys_log_delete_age.

Журнал аудита (fe.audit.log)​

ПараметрЗначение по умолчаниюДопустимые значенияОписание
audit_log_dirENV(DORIS_HOME)/logОтдельный путь хранения fe.audit.log. По умолчанию используется каталог log/ в каталоге развёртывания FE.
audit_log_roll_intervalDAYDAY, HOURИнтервал ротации fe.audit.log. По умолчанию — 1 день: новый файл журнала создаётся ежедневно.
audit_log_roll_num90Максимальное количество файлов fe.audit.log. По умолчанию — 90. Если из-за ротации или разделения файлов их количество превышает этот порог, старые файлы журналов удаляются.
audit_log_enable_compressfalsetrue, falseВключает сжатие старых файлов fe.audit.log. По умолчанию отключено. Если параметр включён, старые журналы аудита архивируются со сжатием gzip.
audit_log_modules{"slow_query", "query", "load", "stream_load"}Типы модулей, записываемых в fe.audit.log. По умолчанию: медленные запросы, запросы, загрузка и Stream Load. «Query» включает все операции DDL, DML и SQL; «slow query» — такие операции, время выполнения которых превышает порог qe_slow_log_ms; «load» — операции Broker Load; «stream load» — операции Stream Load.
qe_slow_log_ms5000Если время выполнения оператора DDL, DML или SQL превышает этот порог, он отдельно записывается в модуле slow_query журнала fe.audit.log. По умолчанию — 5000 мс.
sql_digest_generation_threshold_ms5000Порог времени для создания sql_digest, в миллисекундах. Если время ответа на запрос превышает этот порог, для него создаётся sql_digest в fe.audit.log. По умолчанию — 5000 мс.

Хранение по времени (log_rollover_strategy = age)​

ПараметрЗначение по умолчаниюДопустимые значенияОписание
log_rollover_strategyageage, sizeСтратегия хранения журналов. По умолчанию — age: старые журналы сохраняются с учётом времени; size определяет хранение старых журналов по их общему размеру.
sys_log_delete_age7dПоддерживаются форматы 7d, 10h, 60m, 120sДействует, только если log_rollover_strategy имеет значение age. Определяет срок хранения файлов fe.log и fe.warn.log. По умолчанию — 7 дней. Журналы старше 7 дней удаляются автоматически.
audit_log_delete_age30dПоддерживаются форматы 7d, 10h, 60m, 120sДействует, только если log_rollover_strategy имеет значение age. Определяет срок хранения файлов fe.audit.log. По умолчанию — 30 дней. Журналы старше 30 дней удаляются автоматически.

Хранение по размеру (log_rollover_strategy = size)​

ПараметрЗначение по умолчаниюДопустимые значенияОписание
info_sys_accumulated_file_size4Действует, только если log_rollover_strategy имеет значение size. Определяет суммарный размер файлов fe.log. По умолчанию — 4 ГБ. Когда суммарный размер журналов превышает этот порог, старые файлы журналов удаляются.
warn_sys_accumulated_file_size2Действует, только если log_rollover_strategy имеет значение size. Определяет суммарный размер файлов fe.warn.log. По умолчанию — 2 ГБ. Когда суммарный размер журналов превышает этот порог, старые файлы журналов удаляются.
audit_sys_accumulated_file_size4Действует, только если log_rollover_strategy имеет значение size. Определяет суммарный размер файлов fe.audit.log. По умолчанию — 4 ГБ. Когда суммарный размер журналов превышает этот порог, старые файлы журналов удаляются.

Включение журналов DEBUG​

Журналы уровня DEBUG на FE можно включить, изменив файл конфигурации, либо во время работы через интерфейс или REST API. Сравнение трёх способов:

СпособНеобходимость перезапускаОбласть действияСценарий использования
Изменение fe.confТребуется перезапуск FEКаждый узел применяет собственную конфигурацию после перезапускаПостоянное ведение определённых журналов DEBUG
Интерфейс FEПерезапуск не требуетсяТолько текущий узел FEВременная диагностика через графический интерфейс
REST APIПерезапуск не требуетсяТолько целевой узел FEВременная диагностика, массовые операции с помощью скриптов

Способ 1: через файл конфигурации​

Добавьте sys_log_verbose_modules в fe.conf. Например:

# Enable DEBUG log only for the class org.apache.doris.catalog.Catalog
sys_log_verbose_modules=org.apache.doris.catalog.Catalog

# Enable DEBUG log for all classes under the package org.apache.doris.catalog
sys_log_verbose_modules=org.apache.doris.catalog

# Enable DEBUG log for all classes under the package org
sys_log_verbose_modules=org

После добавления параметра перезапустите узел FE, чтобы изменение вступило в силу.

Способ 2: через интерфейс FE​

Интерфейс позволяет менять уровни журналирования во время работы без перезапуска узла FE. Порядок действий:

  1. Откройте в браузере адрес узла FE с его HTTP-портом (по умолчанию 8030) и войдите в интерфейс.

  2. Нажмите вкладку Log на верхней панели навигации.

    Через интерфейс FE

  3. В поле «Добавить» введите имя пакета или конкретного класса, чтобы включить для него журналирование DEBUG. Например, ввод org.apache.doris.catalog.Catalog включает журналирование DEBUG для класса Catalog:

    Через интерфейс FE

  4. В поле «Удалить» введите имя пакета или конкретного класса, чтобы отключить для него журналирование DEBUG.

примечание

Эти изменения влияют только на уровень журналирования соответствующего узла FE и не затрагивают другие узлы FE.

Способ 3: через REST API​

REST API также позволяет менять уровни журналирования во время работы без перезапуска узла FE.

  • Включение журнала DEBUG

    curl -X POST -uuser:passwd fe_host:http_port/rest/v1/log?add_verbose=org.apache.doris.catalog.Catalog

    Укажите имя и пароль пользователя root или admin, под которым вы входите в Doris. Параметр add_verbose задаёт имя пакета или класса, для которого нужно включить журналирование DEBUG. При успешном выполнении возвращается следующий ответ:

    {
    "msg": "success",
    "code": 0,
    "data": {
    "LogConfiguration": {
    "VerboseNames": "org,org.apache.doris.catalog.Catalog",
    "AuditNames": "slow_query,query,load",
    "Level": "INFO"
    }
    },
    "count": 0
    }
  • Отключение журнала DEBUG

    curl -X POST -uuser:passwd fe_host:http_port/rest/v1/log?del_verbose=org.apache.doris.catalog.Catalog

    Параметр del_verbose задаёт имя пакета или класса, для которого нужно отключить журналирование DEBUG.

Настройка журналов в контейнерной среде​

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

Способ запуска​

Запустите процесс FE на переднем плане следующей командой. Все журналы будут направляться в стандартный поток вывода:

sh bin/start_fe.sh --console

Определение типа журнала по префиксу​

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

RuntimeLogger 2024-06-24 00:05:21,522 INFO (main|1) [DorisFE.start():158] Doris FE starting...
RuntimeLogger 2024-06-24 00:05:21,530 INFO (main|1) [FrontendOptions.analyzePriorityCidrs():194] configured prior_cidrs value: 172.20.32.136/24
RuntimeLogger 2024-06-24 00:05:21,535 INFO (main|1) [FrontendOptions.initAddrUseIp():101] local address: /172.20.32.136.
RuntimeLogger 2024-06-24 00:05:21,740 INFO (main|1) [ConsistencyChecker.initWorkTime():106] consistency checker will work from 23:00 to 23:00
RuntimeLogger 2024-06-24 00:05:21,889 ERROR (main|1) [Util.report():128] SLF4J: Class path contains multiple SLF4J bindings.

Префиксы соответствуют следующим типам журналов:

ПрефиксСоответствующий файл журналаОписание
StdoutLoggerfe.outЖурналы из стандартного потока вывода.
StderrLoggerfe.outЖурналы из стандартного потока ошибок.
RuntimeLoggerfe.logОсновной журнал работы FE.
AuditLoggerfe.audit.logЖурнал аудита.
Без префиксаfe.gc.logЖурнал GC.

Дополнительные настройки для контейнерных сред​

ПараметрЗначение по умолчаниюДопустимые значенияОписание
enable_file_loggertruetrue, falseВключает запись журналов в файлы. По умолчанию — true. При запуске процесса FE с командой --console журналы записываются как в стандартный поток вывода, так и в обычные файлы журналов. Если установлено значение false, журналы записываются только в стандартный поток вывода, а файлы журналов не создаются.