Динамическое изменение уровней логирования компонентов 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;
После запроса появится примерно следующая таблица:
| name | value | |
|---|---|---|
| 1. | logger.level | debug |
| 2. | logger.log | /var/log/clickhouse-server/clickhouse-server.log |
| 3. | logger.errorlog | /var/log/clickhouse-server/clickhouse-server.err.log |
| 4. | logger.size | 1000M |
| 5. | logger.rotation | 100M |
| 6. | logger.count | 10 |
| 7. | logger.stream_compress | 0 |
| 8. | logger.console | 0 |
| 9. | logger.console_log_level | trace |
| 10. | logger.formatting.type | json |
| 11. | logger.use_syslog | 0 |
| 12. | logger.syslog_level | trace |
| 13. | logger.async | 1 |
| 14. | logger.async_queye_max_size | 65536 |
| 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).