Перейти к основному содержимому
Версия: 6.2

Динамическое изменение уровней логирования компонентов Smart Monitor

Обратите внимание!

Изменение уровня логирования с INFO/WARN на DEBUG/TRACE может увеличить объем журналов и расход дискового пространства. После тестирования верните предыдущий уровень логирования или уровень по умолчанию.

Общая информация​

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

Сводная таблица поддержки динамического изменения уровня логирования​

КомпонентПоддерживаетСпособ
Smart Monitor Data Storage/Master NodeДаAPI
Smart Monitor WebНетИзменение конфигурации и перезапуск
Smart Monitor Data CollectorДаAPI
PostgreSQLДаSQL
Apache KafkaДаСкрипт .sh
ClickHouseДаИзменение файла .xml

Список переменных​

  • ${OSD_HOME} - домашняя директория Smart Monitor Web
  • ${LS_ADDRESS} - адрес хоста Smart Monitor Data Collector; в командах используется порт API по умолчанию (9600)
  • ${KAFKA_HOME} - домашняя директория Kafka
  • ${KAFKA_ADDRESS} - адрес брокера Kafka; в командах используется порт по умолчанию (9092)
  • ${KAFKA_NODE_ID} - идентификатор брокера Kafka
  • ${CLICK_CONFIG_HOME} - директория с конфигурационными файлами ClickHouse

Smart Monitor Data Storage/Master Node​

Предусловия​

  • все параметры логирования Smart Monitor Data Storage начинаются с logger.
  • запросы выполняются в консоли разработчика (Навигационное меню - Параметры системы - Консоль разработчика)
  • настройки из блока persistent сохраняются после полного перезапуска кластера, а настройки из блока transient возвращаются к значениям из log4j2.properties; перезапуск одного узла при работающем кластере не влияет на настройки transient. Для отката используйте тот же блок (persistent или transient), в котором была задана настройка

Проверить текущий уровень​

GET _cluster/settings?flat_settings
Обратите внимание!

Запрос показывает только явно заданные переопределения. Если настройки нужного компонента нет в выводе, проверьте файл log4j2.properties.

Изменить уровень​

Запрос задает уровень логирования на примере логгера Планировщика задач:

PUT _cluster/settings
{
"transient": {
"logger.com.sa.jobscheduler": "DEBUG"
}
}

После выполнения запроса настройка применяется автоматически.

Проверить результат​

Пример журнала уровня DEBUG для Планировщика задач:
[2026-09-18T12:57:00,397][INFO ][JobRunner ] [sm-node-01] [JOB][][6SqF0Z8BadR_g8ZYhv9S] Job was successfully finished
[2026-09-18T12:57:00,397][DEBUG][InternalLoggingManager] [sm-node-01] [LOGGING_MANAGER][][6SqF0Z8BadR_g8ZYhv9S] got info log
[2026-09-18T12:57:00,397][DEBUG][InternalLoggingManager] [sm-node-01] [LOGGING_MANAGER][][6SqF0Z8BadR_g8ZYhv9S] configuring source json
[2026-09-18T12:57:00,397][DEBUG][InternalLoggingManager] [sm-node-01] [LOGGING_MANAGER][][6SqF0Z8BadR_g8ZYhv9S] configuring index request

Откатить​

Укажите прежний уровень логирования (в примере - WARN) или удалите настройку, указав значение null:

PUT _cluster/settings
{
"transient": {
"logger.com.sa.jobscheduler": "WARN"
}
}

Чтобы удалить настройку:

PUT _cluster/settings
{
"transient": {
"logger.com.sa.jobscheduler": null
}
}

Smart Monitor Web​

Smart Monitor Web не поддерживает динамическое изменение уровня логирования: необходимо изменить конфигурацию и перезапустить сервис.

Предусловия​

Текущие настройки логирования находятся в файле ${OSD_HOME}/config/opensearch_dashboards.yml. Логирование управляется параметрами:

  • logging.verbose - подробное логирование
  • logging.silent - логирование отключено
  • logging.quiet - только сообщения об ошибках

Место вывода журнала задается параметром logging.dest (по умолчанию - stdout).

Проверить текущий уровень​

Откройте ${OSD_HOME}/config/opensearch_dashboards.yml и проверьте текущие значения параметров logging.verbose, logging.silent и logging.quiet.

Изменить уровень​

Измените значения параметров в ${OSD_HOME}/config/opensearch_dashboards.yml и перезапустите сервис.

Проверить результат​

Пример лога с logging.verbose: true:
{"type":"log","@timestamp":"2026-09-21T12:20:58Z","tags":["debug","security-service"],"pid":3575111,"message":"Starting plugin"}
{"type":"log","@timestamp":"2026-09-21T12:21:01Z","tags":["debug","metrics"],"pid":3575111,"message":"Refreshing metrics"}
{"type":"ops","@timestamp":"2026-09-21T12:21:03Z","tags":[],"pid":3575111,"os":{"load":[6.15,5.35,5.65],"mem":{"total":16770101248,"free":764551168},"uptime":3571085.67},"proc":{"uptime":18.813830455,"mem":{"rss":413589504,"heapTotal":313999360,"heapUsed":252867752,"external":10108280,"arrayBuffers":6361691},"delay":9.309514045715332},"load":{"requests":{},"responseTimes":{},"sockets":{"http":{"total":0},"https":{"total":0}}},"message":"memory: 241.2MB uptime: 0:00:19 load: [6.15 5.35 5.65] delay: 9.310"}
{"type":"log","@timestamp":"2026-09-21T12:21:06Z","tags":["debug","metrics"],"pid":3575111,"message":"Refreshing metrics"}

Откатить​

Верните исходные значения параметров в ${OSD_HOME}/config/opensearch_dashboards.yml и перезапустите сервис.


Smart Monitor Data Collector​

Предусловия​

Обратите внимание!

После обновления уровня логирования через API он не сохраняется после перезапуска сервиса и возвращается к значению из log4j2.properties.

Обратите внимание!

Уровни DEBUG и TRACE могут выводить содержимое обрабатываемых событий, включая исходные данные. Перед включением на продуктивном кластере убедитесь, что в журнал не попадут персональные данные, учетные данные и другая чувствительная информация.

В командах ниже используется http. Если для API Smart Monitor Data Collector включен SSL (параметр api.ssl.enabled: true в logstash.yml), замените схему на https. Если настроена базовая авторизация (api.auth.type: basic), добавьте к curl параметр -u <пользователь>:<пароль>.

Проверить текущий уровень​

curl -XGET "http://${LS_ADDRESS}:9600/_node/logging?pretty"

Ниже приведена часть секции loggers; остальные логгеры и метаданные узла опущены:

Пример вывода
{
"loggers" : {
"logstash.agent" : "INFO",
"logstash.api.service" : "INFO",
"logstash.codecs.json" : "INFO",
"logstash.codecs.jsonlines" : "INFO",
"logstash.codecs.plain" : "INFO",
"logstash.codecs.rubydebug" : "INFO",
"logstash.config.source.local.configpathloader" : "INFO",
"logstash.config.sourceloader" : "INFO",
"logstash.filters.clone" : "INFO",
"logstash.filters.csv" : "INFO",
"logstash.filters.date" : "INFO",
"logstash.filters.dissect" : "INFO",
"logstash.filters.drop" : "INFO",
"logstash.filters.grok" : "INFO",
"logstash.filters.json" : "INFO",
"logstash.filters.kv" : "INFO",
"logstash.filters.mutate" : "INFO",
"logstash.filters.ruby" : "INFO",
"logstash.filters.smcompliance" : "INFO",
"logstash.filters.split" : "INFO",
"logstash.filters.translate" : "INFO",
"logstash.filters.urldecode" : "INFO",
"logstash.filters.xml" : "INFO",
"logstash.inputs.beats" : "INFO",
"logstash.inputs.exec" : "INFO",
"logstash.inputs.file" : "INFO",
"logstash.inputs.jdbc" : "INFO",
"logstash.inputs.snmp" : "INFO",
"logstash.inputs.syslog" : "INFO",
"logstash.instrument.periodicpoller.cgroup" : "INFO",
"logstash.instrument.periodicpoller.deadletterqueue" : "INFO",
"logstash.instrument.periodicpoller.flowrate" : "INFO",
"logstash.instrument.periodicpoller.jvm" : "INFO",
"logstash.instrument.periodicpoller.os" : "INFO",
"logstash.instrument.periodicpoller.persistentqueue" : "INFO",
"logstash.javapipeline" : "INFO",
"logstash.modules.scaffold" : "INFO",
"logstash.outputs.file" : "INFO",
"logstash.outputs.opensearch" : "INFO",
"logstash.pluginmetadata" : "INFO",
"logstash.plugins.registry" : "INFO",
"logstash.runner" : "INFO",
"logstash.snmpmib" : "INFO",
"logstash.snmpmib.tree" : "INFO",
"logstash.util.decorators" : "INFO",
"slowlog.logstash.codecs.json" : "WARN",
"slowlog.logstash.codecs.jsonlines" : "WARN",
"slowlog.logstash.codecs.plain" : "WARN",
"slowlog.logstash.codecs.rubydebug" : "WARN",
"slowlog.logstash.filters.clone" : "WARN",
"slowlog.logstash.filters.csv" : "WARN",
"slowlog.logstash.filters.date" : "WARN",
"slowlog.logstash.filters.dissect" : "WARN",
"slowlog.logstash.filters.drop" : "WARN",
"slowlog.logstash.filters.grok" : "WARN",
"slowlog.logstash.filters.json" : "WARN",
"slowlog.logstash.filters.kv" : "WARN",
"slowlog.logstash.filters.mutate" : "WARN",
"slowlog.logstash.filters.ruby" : "WARN",
"slowlog.logstash.filters.smcompliance" : "WARN",
"slowlog.logstash.filters.split" : "WARN",
"slowlog.logstash.filters.translate" : "WARN",
"slowlog.logstash.filters.urldecode" : "WARN",
"slowlog.logstash.filters.xml" : "WARN",
"slowlog.logstash.inputs.beats" : "WARN",
"slowlog.logstash.inputs.exec" : "WARN",
"slowlog.logstash.inputs.file" : "WARN",
"slowlog.logstash.inputs.jdbc" : "WARN",
"slowlog.logstash.inputs.snmp" : "WARN",
"slowlog.logstash.inputs.syslog" : "WARN",
"slowlog.logstash.outputs.file" : "WARN",
"slowlog.logstash.outputs.opensearch" : "WARN"
}
}

Изменить уровень​

В теле запроса укажите нужный параметр из списка, добавьте к его имени префикс logger. и задайте уровень логирования. Следующий запрос включает уровень DEBUG для всех интеграций, использующих выходной плагин opensearch:

curl -XPUT "http://${LS_ADDRESS}:9600/_node/logging?pretty" -H 'Content-Type: application/json' -d'
{
"logger.logstash.outputs.opensearch" : "DEBUG"
}
'

Проверить результат​

После изменения в журналах интеграций появятся записи следующего вида:

[2026-09-16T14:19:37,673][WARN ][logstash.outputs.opensearch] Restored connection to OpenSearch instance {:url=>"https://logstash:xxxxxx@127.0.0.1:9200/"}
[2026-09-18T10:35:01,081][DEBUG][logstash.outputs.opensearch] Sending final bulk request for batch. {:action_count=>1, :payload_size=>3661, :content_length=>3661, :batch_offset=>0}
[2026-09-18T10:35:54,757][DEBUG][logstash.outputs.opensearch] Sending final bulk request for batch. {:action_count=>1, :payload_size=>2659, :content_length=>2659, :batch_offset=>0}
[2026-09-18T10:36:00,960][DEBUG][logstash.outputs.opensearch] Sending final bulk request for batch. {:action_count=>1, :payload_size=>2659, :content_length=>2659, :batch_offset=>0}
[2026-09-18T10:36:54,756][DEBUG][logstash.outputs.opensearch] Sending final bulk request for batch. {:action_count=>1, :payload_size=>1670, :content_length=>1670, :batch_offset=>0}
[2026-09-18T10:37:00,954][DEBUG][logstash.outputs.opensearch] Sending final bulk request for batch. {:action_count=>1, :payload_size=>1670, :content_length=>1670, :batch_offset=>0}

Откатить​

Сбросьте уровни логирования до значений из log4j2.properties:

curl -XPUT "http://${LS_ADDRESS}:9600/_node/logging/reset?pretty"

PostgreSQL​

Предусловия​

Обратите внимание!

Измененный уровень логирования записывается в postgresql.auto.conf и сохраняется после перезапуска. После тестирования верните исходное значение.

Обратите внимание!

Для PostgreSQL предусмотрены уровни детализации от debug1 до debug5; debug5 обеспечивает наибольшую детализацию.

Допустимые значения параметра log_min_messages: debug5, debug4, debug3, debug2, debug1, info, notice, warning, error, log, fatal, panic. По умолчанию используется warning.

Изменение уровня требует прав суперпользователя.

Проверить текущий уровень​

Выполните запрос в базе данных:

SHOW log_min_messages;

Изменить уровень​

ALTER SYSTEM SET log_min_messages = 'debug1';

После изменения настройки перезагрузите конфигурацию:

SELECT pg_reload_conf();

Проверить результат​

Пример сообщений уровня DEBUG:

2026-09-18 11:38:25.382 UTC [2446670] DEBUG: autovacuum: processing database "template1"
2026-09-18 11:38:45.379 UTC [2446804] DEBUG: autovacuum: processing database "postgres"
2026-09-18 11:39:05.405 UTC [2447241] DEBUG: autovacuum: processing database "Inventory"

Откатить​

ALTER SYSTEM RESET log_min_messages;

После отката также перезагрузите конфигурацию (SELECT pg_reload_conf();).


Kafka​

Предусловия​

Обратите внимание!

Уровень логирования не сохраняется после перезапуска брокера. Изменяйте настройку на каждом брокере, журналы которого необходимо проверить.

Обратите внимание!

Логгер kafka.request.logger на уровне DEBUG записывает содержимое обрабатываемых запросов, включая данные событий. Перед включением на продуктивном брокере убедитесь, что в журнал не попадут чувствительные данные.

Обратите внимание!

Если для подключения к брокеру используется защищенное соединение (SSL/SASL), добавьте ко всем командам kafka-configs.sh параметр --command-config <client_config_file>, где <client_config_file> - путь к файлу с клиентскими настройками подключения.

Apache Kafka версии 2.4+ поддерживает динамическое изменение уровня логирования. В качестве примера используется логгер запросов (компонент kafka.request.logger, по умолчанию в стандартной конфигурации — WARN).

Проверить текущий уровень​

${KAFKA_HOME}/bin/kafka-configs.sh --bootstrap-server ${KAFKA_ADDRESS}:9092 --entity-type broker-loggers --entity-name ${KAFKA_NODE_ID} --describe

Изменить уровень​

${KAFKA_HOME}/bin/kafka-configs.sh --bootstrap-server ${KAFKA_ADDRESS}:9092 --entity-type broker-loggers --entity-name ${KAFKA_NODE_ID} --alter --add-config kafka.request.logger=DEBUG

Проверить результат​

Записи kafka.request.logger сохраняются в отдельном файле kafka-request.log.

Пример лога с уровнем DEBUG:
[2026-09-21 12:26:07,626] DEBUG Completed request:{"isForwarded":false,"requestHeader":{"requestApiKey":0,"requestApiVersion":11,"correlationId":6,"clientId":"console-producer","requestApiKeyName":"PRODUCE"},"request":{"transactionalId":null,"acks":-1,"timeoutMs":1500,"topicData":[{"name":"test-logs","partitionData":[{"index":0,"recordsSizeInBytes":72}]}]},"response":{"responses":[{"name":"test-logs","partitionResponses":[{"index":0,"errorCode":0,"baseOffset":3,"logAppendTimeMs":-1,"logStartOffset":0,"recordErrors":[],"errorMessage":null}]}],"throttleTimeMs":0},"connection":"127.0.0.1:9092-127.0.0.1:47299-13","totalTimeMs":1.142,"requestQueueTimeMs":0.144,"localTimeMs":0.907,"remoteTimeMs":0.0,"throttleTimeMs":0,"responseQueueTimeMs":0.034,"sendTimeMs":0.055,"securityProtocol":"PLAINTEXT","principal":"User:ANONYMOUS","listener":"PLAINTEXT","clientInformation":{"softwareName":"apache-kafka-java","softwareVersion":"3.9.0"}} (kafka.request.logger)
[2026-09-21 12:26:08,805] DEBUG Completed request:{"isForwarded":false,"requestHeader":{"requestApiKey":0,"requestApiVersion":11,"correlationId":7,"clientId":"console-producer","requestApiKeyName":"PRODUCE"},"request":{"transactionalId":null,"acks":-1,"timeoutMs":1500,"topicData":[{"name":"test-logs","partitionData":[{"index":0,"recordsSizeInBytes":73}]}]},"response":{"responses":[{"name":"test-logs","partitionResponses":[{"index":0,"errorCode":0,"baseOffset":4,"logAppendTimeMs":-1,"logStartOffset":0,"recordErrors":[],"errorMessage":null}]}],"throttleTimeMs":0},"connection":"127.0.0.1:9092-127.0.0.1:47299-13","totalTimeMs":2.231,"requestQueueTimeMs":0.55,"localTimeMs":1.406,"remoteTimeMs":0.0,"throttleTimeMs":0,"responseQueueTimeMs":0.192,"sendTimeMs":0.082,"securityProtocol":"PLAINTEXT","principal":"User:ANONYMOUS","listener":"PLAINTEXT","clientInformation":{"softwareName":"apache-kafka-java","softwareVersion":"3.9.0"}} (kafka.request.logger)

Откатить​

Обратите внимание!

Команда ниже возвращает уровень логирования к уровню родительского логгера, а не к предыдущему значению.

${KAFKA_HOME}/bin/kafka-configs.sh --bootstrap-server ${KAFKA_ADDRESS}:9092 --entity-type broker-loggers --entity-name ${KAFKA_NODE_ID} --alter --delete-config kafka.request.logger

Чтобы явно установить уровень WARN, а не наследовать уровень родительского логгера:

${KAFKA_HOME}/bin/kafka-configs.sh --bootstrap-server ${KAFKA_ADDRESS}:9092 --entity-type broker-loggers --entity-name ${KAFKA_NODE_ID} --alter --add-config kafka.request.logger=WARN

ClickHouse​

Предусловия​

Обратите внимание!

Измененный уровень логирования сохраняется в logger.xml и не сбрасывается при перезапуске, пока не будет восстановлено исходное содержимое файла.

Поддерживаемые уровни:

  • none (выключает логирование)
  • fatal
  • critical
  • error
  • warning
  • notice
  • information
  • debug
  • trace

Проверить текущий уровень​

SELECT name, value FROM system.server_settings WHERE name LIKE 'logger.%' FORMAT Pretty;

После запроса появится примерно следующая таблица:

namevalue
1.logger.leveldebug
2.logger.log/var/log/clickhouse-server/clickhouse-server.log
3.logger.errorlog/var/log/clickhouse-server/clickhouse-server.err.log
4.logger.size1000M
5.logger.rotation100M
6.logger.count10
7.logger.stream_compress0
8.logger.console0
9.logger.console_log_leveltrace
10.logger.formatting.typejson
11.logger.use_syslog0
12.logger.syslog_leveltrace
13.logger.async1
14.logger.async_queye_max_size65536
15.logger.startup_level
16.logger.shutdown_level
примечание

Пример получен в ClickHouse версии 26.10.1.326. Название параметра в строке 14 сохранено в том виде, в котором оно отображается в этой версии. Из-за опечатки в коде некоторых версий параметр может называться async_queye_max_size вместо указанного в документации async_queue_max_size.

Изменить уровень​

Отредактируйте файл ${CLICK_CONFIG_HOME}/config.d/logger.xml: добавьте в блок <logger> строку <level>debug</level> или измените существующий параметр level. Конфигурация перечитывается автоматически. Если этого не произошло, выполните запрос SYSTEM RELOAD CONFIG.

Проверить результат​

Пример журнала с уровнем debug:

2026.09.21 15:01:35.931617 [ 12745 ] {dcb47c51-fc04-4aee-8e39-0144f77af4fe::202609_1_934_375} <Debug> MergeTreeSequentialSource: Reading 3 marks from part 202609_1_933_374, total 13838 rows starting from the beginning of the part
2026.09.21 15:01:35.931718 [ 12745 ] {dcb47c51-fc04-4aee-8e39-0144f77af4fe::202609_1_934_375} <Debug> MergeTreeSequentialSource: Reading 2 marks from part 202609_934_934_0, total 8 rows starting from the beginning of the part
2026.09.21 15:01:35.945633 [ 12738 ] {dcb47c51-fc04-4aee-8e39-0144f77af4fe::202609_1_934_375} <Debug> MergeTask::MergeProjectionsStage: Merge sorted 13846 rows, containing 34 columns (34 merged, 0 gathered) in 0.014 sec., 955011.944 rows/sec., 411.31 MiB/sec.
2026.09.21 15:01:35.946683 [ 12738 ] {dcb47c51-fc04-4aee-8e39-0144f77af4fe::202609_1_934_375} <Debug> system.part_log (dcb47c51-fc04-4aee-8e39-0144f77af4fe) (DataPartWriter): Spent 0 ms calculating 3 skip indices for the part 202609_1_934_375: [event_time_index: 0 ms, event_time_microseconds_index: 0 ms, query_id_index: 0 ms]

Откатить​

Удалите строку <level>...</level> или измените уровень на значение по умолчанию (trace).