TDB Documentation portal logo
Помощь
Обновлена 30 июля 2026 г. в 16:49

Настройка журнала медленных запросов

В этом руководстве описано, как включить технологическую роль app.roles.slow_log и настроить логирование медленных запросов.

Содержание:

Включение журнала медленных запросов

По умолчанию, запись медленных запросов в журнал отключена. Включить логирование медленных запросов можно с помощью опции slow_log.enable. Для включения записи:

  1. Задайте на нужном экземпляре технологическую роль slow_log.

  2. Задайте опцию slow_log.enable в файле конфигурации (config.yml) или в веб-интерфейсе TCM на вкладке Configuration. Для этого добавьте секцию app.roles.slow_log в секцию конфигурации roles_cfg:

    roles_cfg:  app.roles.slow_log:    enable: true

По умолчанию запись будет включена для запросов через модуль CRUD.

Пример

В спейс data добавлен кортеж с помощью функции из модуля CRUD:

require('crud').replace("data", {1, box.NULL, {}})

Запись в логе при этом может выглядеть так:

tarantool-router-msk-1  | 2025-02-05 11:17:23.203 [1] main/231/main/app.roles.slow_log slow_log.lua:21I> Function call crud.replace(["data",[1,null,[]]]) was too long: 0.000s

Запись в логе для такой функции может выглядеть так:

Установка порогового значения

Задать пороговое значение для времени выполнения запроса можно с помощью опции slow_log.threshold. При превышении этого значения запрос будет записан в журнал:

app.roles.slow_log:  enable: true  threshold: 0

По умолчанию, значение threshold равно 0.5.

Чтобы гарантированно получить сообщение в логе, для опции slow_log.threshold в конфигурационном файле задано значение 0.

Добавление функции для логирования

Добавить функции, которые нужно логировать, можно с помощью опции slow_log.namespace. В примере установлено логирование для

  • функций из модуля app (функции из _G['app']);
  • для персистентных функций с префиксом app..
app.roles.slow_log:  enable: true  threshold: 0  namespaces:    - "app"

Пример

При выполнении миграции была создана персистентная функция app.wait_for, которая ждет заданное количество секунд:

box.schema.func.call('app.wait_for', 3)

Запись в логе для такой функции может выглядеть так:

tarantool-router-msk-1  | 2025-02-05 11:55:16.351 [1] main/792/main/tarantool [string "return                     function(sleep_tim..."]:4 I> start wait_for 3tarantool-router-msk-1  | 2025-02-05 11:55:19.351 [1] main/792/main/tarantool [string "return                     function(sleep_tim..."]:6 I> stop wait_for 3tarantool-router-msk-1  | 2025-02-05 11:55:19.351 [1] main/792/main/app.roles.slow_log slow_log.lua:21 I> Function call app.wait_for([3]) was too long: 3.000s

При использовании модуля slow_log персистентные функции заменяются на версии с логированием времени выполнения. Оригинальные функции сохраняются с префиксом __slow_log_orig_. Для функции app.wait_for будет создана функция __slow_log_orig_app.wait_for. После отключения модуля функция __slow_log_orig_app.wait_for будет удалена.

Финальная конфигурация

После задания всех опций финальная конфигурация может выглядеть так:

roles_cfg:  app.roles.slow_log:    enable: true    threshold: 0    namespaces:      - "app"

Полное описание опций конфигурации slow_log приведено в Справочнике по конфигурации.