log_config

Секция log_config управляет тем, как серверный процесс YDB обрабатывает и управляет своими логами. Она позволяет настраивать уровни логирования для различных компонентов, а также глобальные форматы логов и методы вывода.

Примечание

Этот документ описывает конфигурацию прикладного и системного логирования. Для информации о логировании для целей аудита и обеспечения безопасности, см. Аудитный лог.

Обзор

Логирование является критически важной частью системы наблюдаемости YDB. Секция log_config позволяет настраивать различные аспекты логирования, включая:

  • уровень логирования по умолчанию;
  • уровни логирования для конкретных компонентов;
  • формат вывода логов;
  • интеграцию с syslog или внешними сервисами логирования.

Способы вывода логов

  • В stderr: по умолчанию, YDB отправляет все логи в stderr.
  • В файл: логи могут быть записаны в файл с помощью параметра backend_file_name.
  • В syslog: при включении параметра sys_log: true логи перенаправляются в системный журнал syslog и перестают выводиться в stderr. Логи отправляются с использованием сокета /dev/log.
  • В Unified Agent: при настройке секции uaclient_config логи отправляются в Unified Agent и перестают выводиться в stderr.

При одновременном включении sys_log и настройке uaclient_config, логи будут отправляться и в syslog, и в Unified Agent. Если вам нужно продолжать выводить логи в stderr при использовании других способов, активируйте sys_log_to_stderr: true.

Параметры конфигурации

Параметр Тип Значение по умолчанию Описание
default_level uint32 5 (NOTICE) Уровень логирования по умолчанию для всех компонентов.
default_sampling_level uint32 7 (DEBUG) Уровень семплирования по умолчанию для всех компонентов.
default_sampling_rate uint32 0 Частота семплирования по умолчанию для всех компонентов. Если установлено значение N (где N > 0), примерно 1 из каждых N сообщений журнала с приоритетом между default_level и default_sampling_level будет записано в лог. Например, чтобы записывать каждое 10-е сообщение, установите значение 10. Значение 0 означает, что сообщения в этом диапазоне не будут записаны в лог (все они отбрасываются).
sys_log bool false Включить логирование через syslog.
sys_log_to_stderr bool false Копировать логи в stderr в дополнение к syslog.
format string "full" Формат вывода логов. Возможные значения: "full", "short", "json".
cluster_name string Имя кластера для включения в записи логов. Поле cluster_name добавляется в логи только при использовании формата json или при отправке в Unified Agent. В форматах full или short это поле не отображается.
allow_drop_entries bool true Разрешить отбрасывание записей логов, если система логирования перегружена. При включении этой опции записи логов буферизуются в памяти и записываются в вывод, когда накапливается 10 сообщений или истекает время, указанное в time_threshold_ms. Если буфер переполняется, сообщения с низким приоритетом могут быть отброшены, чтобы освободить место для сообщений с более высоким приоритетом.
use_local_timestamps bool false Использовать локальный часовой пояс для временных меток логов (по умолчанию используется UTC).
backend_file_name string Имя файла для вывода логов. Если указано, логи записываются в этот файл.
sys_log_service string Имя сервиса для syslog. Соответствует полю tag в старом протоколе syslog RFC 3164 или полю app-name в современном протоколе RFC 5424.
time_threshold_ms uint64 1000 Если allow_drop_entries = true, определяет как часто, в миллисекундах, YDB пишет записи логов из буфера в вывод.
ignore_unknown_components bool true Игнорировать запросы логирования от неизвестных компонентов.
entry array [] Конфигурация уровня логирования и/или семплирования для конкретных компонентов YDB, cм. Объекты Entry ниже.
uaclient_config object Конфигурация для клиента Unified Agent, см. Объект UAClientConfig ниже.

Объекты Entry

Поле entry содержит массив объектов со следующей структурой:

Параметр Тип Описание
component string Имя компонента. C полным списком доступных компонентов можно ознакомиться на GitHub.
level uint32 Уровень логирования для этого компонента.
sampling_level uint32 Уровень семплирования для этого компонента. Работает аналогично default_sampling_level.
sampling_rate uint32 Частота семплирования для этого компонента. Работает аналогично default_sampling_rate.

Объект UAClientConfig

Поле uaclient_config настраивает интеграцию с Unified Agent:

Параметр Тип Значение по умолчанию Описание
uri string grpc URI сервера Unified Agent.
shared_secret_key string Путь к файлу с секретным ключом для аутентификации клиентских соединений.
max_inflight_bytes uint64 100000000 Максимальное количество байт в передаче при отправке данных.
grpc_reconnect_delay_ms uint64 Задержка между попытками переподключения в миллисекундах.
grpc_send_delay_ms uint64 Задержка между попытками отправки в миллисекундах.
grpc_max_message_size uint64 Максимальный размер сообщения gRPC.
client_log_file string Файл логов для самого клиента UA.
client_log_priority uint32 Уровень логирования для самого клиента UA.
log_name string Имя лога, которое передается в метаданных сессии.

Уровни логирования

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

Уровень Числовое значение Описание
EMERG 0 Возможен сбой системы (например, отказ кластера).
ALERT 1 Возможна деградация системы, компоненты системы могут выйти из строя.
CRIT 2 Критическое состояние.
ERROR 3 Некритическая ошибка.
WARN 4 Предупреждение, на которое следует отреагировать и исправить, если оно не временное.
NOTICE 5 Произошло событие, существенное для системы или пользователя.
INFO 6 Отладочная информация для сбора статистики.
DEBUG 7 Отладочная информация для разработчиков.
TRACE 8 Очень подробная отладочная информация.

Примеры

Базовая конфигурация

log_config:
  default_level: 5  # NOTICE
  format: "full"

Данная конфигурация выводит логи в stderr с уровнем логирования NOTICE и выше.

Конфигурация с выводом в файл

log_config:
  default_level: 5  # NOTICE
  format: "full"
  backend_file_name: "/var/log/ydb/ydb.log"

Эта конфигурация отправляет логи в файл, сохраняя уровень логирования NOTICE по умолчанию.

Конфигурация с выводом в syslog

log_config:
  default_level: 5  # NOTICE
  sys_log: true
  sys_log_service: "ydb"
  format: "full"

Эта конфигурация отправляет логи в syslog с именем сервиса "ydb".

Настройка уровней логирования для отдельных компонентов

log_config:
  default_level: 5  # NOTICE
  entry:
    - component: "SCHEMESHARD"
      level: 7  # DEBUG
    - component: "TABLET_MAIN"
      level: 6  # INFO
  backend_file_name: "/var/log/ydb/ydb.log"

Конфигурация семплирования

log_config:
  default_level: 5  # NOTICE
  default_sampling_level: 7  # DEBUG
  default_sampling_rate: 10  # Логировать каждое 10-е сообщение между NOTICE и DEBUG
  entry:
    - component: "BLOBSTORAGE"
      sampling_level: 8  # TRACE
      sampling_rate: 100  # Логировать каждое 100-е сообщение между NOTICE и TRACE

Эта конфигурация настраивает семплирование логов. При настройках по умолчанию каждое 10-е сообщение с приоритетом между NOTICE и DEBUG будет записано в лог. Для компонента BLOBSTORAGE каждое 100-е сообщение с приоритетом между NOTICE и TRACE будет записано в лог.

Конфигурация формата JSON

log_config:
  default_level: 5  # NOTICE
  format: "json"
  cluster_name: "production-cluster"
  uaclient_config:
    uri: "[fd53::1]:16400"
    grpc_max_message_size: 4194304
    log_name: "ydb_logs"

Эта конфигурация выводит логи в формате JSON и отправляет их в Unified Agent.

Примечания

  • Уровни логирования указываются в конфигурации как числовые значения, а не строки. Используйте таблицу выше для сопоставления между числовыми значениями и их значениями.
  • Если указан параметр backend_file_name, логи записываются в этот файл. Если параметр sys_log имеет значение true, логи отправляются в системный регистратор.
  • Параметр format определяет, как форматируются записи логов. Формат «full» включает всю доступную информацию, «short» предоставляет более компактный формат, а «json» выводит логи в формате JSON, который удобен для парсинга сервисами логирования.
  • Внутренний буфер логов имеет следующие ограничения по размеру:
    • Общий размер по умолчанию: 10МБ (10 * 1024 * 1024 байт)
    • Размер гранулы по умолчанию: 64КБ (1024 * 64 байт)
    • Максимальный размер сообщения: 1КБ (1024 байт)

Смотрите также

Предыдущая
Следующая