Настройка журнала медленных запросов
В этом руководстве описано, как включить технологическую роль slow_log и настроить логирование медленных запросов.
Содержание:
- Включение журнала медленных запросов
- Установка порогового значения
- Добавление функции для логирования
По умолчанию, запись медленных запросов в журнал отключена. Включить логирование медленных запросов можно с помощью опции конфигурации slow_log.enable. Для включения записи:
-
Задайте на нужном экземпляре технологическую роль slow_log.
-
Добавьте секцию
slow_logв файл конфигурации (config.yaml):slow_log:enable: true
По умолчанию запись будет включена для запросов через модуль CRUD.
Пример
В спейс data добавлен кортеж с помощью функции из модуля CRUD:
crud.replace("data", {1, box.NULL, {}})
Запись в логе при этом может выглядеть так:
slow_log-tarantool-router-1 | 2023-11-30 14:02:35.599 [12] main/176/main/tarantooldb.app.roles.slow_log I> Function call crud.replace(["data",[1,null,[]]]) was too long: 0.011s
Задать пороговое значение для времени выполнения запроса можно с помощью опции slow_log.threshold. При превышении этого значения запрос будет записан в журнал:
slow_log:enable: truethreshold: 0.01
По умолчанию, значение threshold равно 0.5.
Добавить функции, которые нужно логировать, можно с помощью опции slow_log.namespace. В примере установлено логирование для
- функций из модуля
app(функции из_G['app']); - для персистентных функций с префиксом
app..
slow_log:enable: truethreshold: 0.01namespaces:- "app"
Полное описание опций конфигурации slow_log приведено в Справочнике по конфигурации).
Пример
При выполнении миграции была создана персистентная функция app.wait_for, которая ждет заданное количество секунд:
box.schema.func.call('app.wait_for', 3)
Запись в логе для такой функции может выглядеть так:
slow_log-tarantool-router-1 | 2023-11-30 14:13:52.738 [12] main/225/main/tarantool I> start wait_for 3slow_log-tarantool-router-1 | 2023-11-30 14:13:55.740 [12] main/225/main/tarantool I> stop wait_for 3slow_log-tarantool-router-1 | 2023-11-30 14:13:55.740 [12] main/225/main/tarantooldb.app.roles.slow_log I> Function call app.wait_for([3]) was too long: 3.002s
При использовании модуля персистентные функции заменяются на версии с логированием времени выполнения.
Оригинальные функции сохраняются с префиксом __slow_log_orig_.
Для функции app.wait_for будет создана функция __slow_log_orig_app.wait_for.
После отключения модуля функция __slow_log_orig_app.wait_for будет удалена.