Логирование

В процессе работы ADQM генерирует текстовые лог-файлы, которые могут быть полезны при анализе причин возникновения различных ошибок. Дополнительно можно включить ведение других специализированных логов (например, собирать информацию о выполнении запросов, зависимых представлениях, потоках, трассировках стека), которые будут сохраняться в системные таблицы ADQM.

Лог-файлы

По умолчанию ADQM записывает следующие логи в каталог /var/log/clickhouse-server:

  • clickhouse-server.log — основной лог сервера ADQM (уровень детализации записей настраивается специальным параметром — см. описание параметров логирования ниже);

  • clickhouse-server.err.log — лог ошибок (содержит записи уровней warning, error, critical и fatal).

Изменить каталог хранения лог-файлов можно через параметр Log path в секции Directories на странице конфигурации сервиса ADQMDB интерфейса ADCM.

Установка пути к каталогу, содержащему лог-файлы
Установка пути к каталогу, содержащему лог-файлы

На этой же странице в секции Log settings (секция доступна при включенной опции Show advanced) можно настроить параметры логирования:

  • Logging level — уровень детализации сообщений, записываемых в лог-файл clickhouse-server.log. Возможные значения: trace, debug, information, notice, warning, error, critical, fatal, none.

    Уровень логирования для clickhouse-server.err.log отдельно не конфигурируется.

  • Log file size, MB — размер лог-файла (в МБ). Как только файл достигает указанного размера, он архивируется и переименовывается, a на его месте создается новый лог-файл.

  • Log files count — количество архивных лог-файлов, которые хранятся в ADQM.

ВАЖНО
После того, как необходимые параметры установлены, не забудьте нажать Save и выполнить действие Reconfig and restart для сервиса ADQMDB, чтобы сохранить информацию об изменениях конфигурации и перезапустить сервис.

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

$ sudo less /var/log/clickhouse-server/clickhouse-server.log

Пример вывода на экран:

2023.09.08 10:59:14.549245 [ 31027 ] {} <Information> Application: Will watch for the process with pid 31036
2023.09.08 10:59:14.549357 [ 31036 ] {} <Information> Application: Forked a child process to watch
2023.09.08 10:59:14.549768 [ 31036 ] {} <Information> SentryWriter: Sending crash reports is disabled
2023.09.08 10:59:14.549851 [ 31036 ] {} <Trace> Pipe: Pipe capacity is 1.00 MiB
2023.09.08 10:59:14.674600 [ 31036 ] {} <Information> : Starting ClickHouse 22.3.7.28 with revision 54460, build id: 6F5FF3E355A49AA523CB708AFAC0EB6C5EE73278, PID 31036
2023.09.08 10:59:14.674685 [ 31036 ] {} <Information> Application: starting up
2023.09.08 10:59:14.674703 [ 31036 ] {} <Information> Application: OS name: Linux, version: 3.10.0-1160.66.1.el7.x86_64, architecture: x86_64
2023.09.08 10:59:14.678336 [ 31036 ] {} <Trace> AsynchronousMetrics: Scanning /sys/class/thermal
2023.09.08 10:59:14.678369 [ 31036 ] {} <Trace> AsynchronousMetrics: Scanning /sys/block
2023.09.08 10:59:14.678516 [ 31036 ] {} <Trace> AsynchronousMetrics: Scanning /sys/devices/system/edac
2023.09.08 10:59:14.678536 [ 31036 ] {} <Trace> AsynchronousMetrics: Scanning /sys/class/hwmon
2023.09.08 10:59:14.981938 [ 31036 ] {} <Warning> Application: Calculated checksum of the binary: 1841F46AA9C864447AE24AC0D983E86C. There is no information about the reference checksum.
2023.09.08 10:59:14.991365 [ 31036 ] {} <Debug> Application: rlimit on number of file descriptors is 500000
2023.09.08 10:59:14.991394 [ 31036 ] {} <Debug> Application: Initializing DateLUT.
2023.09.08 10:59:14.991397 [ 31036 ] {} <Trace> Application: Initialized DateLUT with time zone 'UTC'.
2023.09.08 10:59:14.991426 [ 31036 ] {} <Debug> Application: Setting up /var/lib/clickhouse/tmp/ to store temporary data in it
2023.09.08 10:59:14.993872 [ 31036 ] {} <Debug> Application: Initiailizing interserver credentials.
2023.09.08 10:59:14.994558 [ 31036 ] {} <Debug> ConfigReloader: Loading config '/etc/clickhouse-server/config.xml'
2023.09.08 10:59:14.995658 [ 31036 ] {} <Debug> ConfigReloader: Loaded config '/etc/clickhouse-server/config.xml', performing update on configuration
...

В случае успешного запуска сервера ADQM, лог содержит следующие строки:

  • <Information> Application: starting up — сервер запускается.

  • <Information> Application: Ready for connections. — сервер запущен и готов принимать соединения.

Если в конфигурации ошибка и сервер не запустился, в логе будет строка с маркером <Error> и описанием ошибки. Например:

...
2023.09.08 10:59:14.991426 [ 31036 ] {} <Error> Application: DB::Exception: A setting 'query_profiler_cpu_time_period_ns' appeared at top level in config /etc/clickhouse-server/config.xml. But it is user-level setting that should be located in users.xml inside <profiles> section for specific profile. You can add it to <profiles><default> if you want to change default value of this setting. You can also disable the check - specify <skip_check_for_incorrect_settings>1</skip_check_for_incorrect_settings> in the main configuration file.
...

Если сообщения об ошибке нет в конце файла, просмотрите весь файл начиная со строки <Information> Application: starting up.

Лог-таблицы

ADQM поддерживает несколько системных таблиц для хранения различных типов логов. Чтобы начать логирование, необходимо активировать соответствующий параметр в секции Log settings на странице конфигурации сервиса ADQMDB — после этого ADQM создаст системную таблицу с тем же именем, что и параметр, и начнет записывать в нее соответствующий системный лог. Параметры для включения поддерживаемых типов логирования перечислены в следующей таблице, которая также содержит описание данных, хранящихся в логах.

Типы логов в ADQM
Параметр включения логирования Лог-таблица Описание данных лог-таблицы

query_log

query_log

Информация о выполняемых запросах (например, время начала выполнения запроса, длительность обработки, сообщения об ошибках)

trace_log

trace_log

Трассировки стека, собранные профилировщиком запросов (полезны для глубокого анализа производительности)

query_views_log

query_views_log

Информация о зависимых представлениях, выполняемых при обработке запросов, принятых с настройкой log_query_views = 1 (например, тип представления, продолжительность выполнения представления)

query_thread_log

query_thread_log

Информация о потоках выполнения запросов, принятых с настройкой log_query_threads = 1 (например, имя потока, время начала и завершения выполнения запроса потоком, продолжительность обработки запроса, объем прочитанных и записанных данных в байтах/строках)

part_log

part_log

Информация о событиях, связанных с данными таблиц семейства MergeTree (например, вставка/объединение/удаление кусков данных, загрузка данных с реплики, перемещение данных между дисками)

crash_log

crash_log

Информация о трассировках стека для фатальных ошибок

metric_log

metric_log

История значений метрик из таблиц system.metrics и system.events

asynchronous_metric_log

asynchronous_metric_log

История значений метрик из таблицы system.asynchronous_metrics

asynchronous_insert_log

asynchronous_insert_log

Информация об асинхронных вставках

ПРИМЕЧАНИЕ

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

В секции Log settings можно установить следующие настройки, общие для всех лог-таблиц:

  • Database — база данных, в которой хранятся таблицы;

  • Flush interval, milliseconds — интервал сброса данных из буфера памяти в таблицы (в миллисекундах);

  • TTL, days — время жизни логов (в днях).

Настройки логирования
Настройки логирования
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней