Перейти к содержанию

Метрики Tarantool

Общие метрики

Общая информация об инстансе:

Метрика Описание
tnt_cfg_current_time Системное время инстанса в формате Unix timestamp.
tnt_info_uptime Время в секундах с момента запуска инстанса.
tnt_read_only Указывает, находится ли инстанс в режиме "только для чтения" (1 если да, 0 если нет).

Память (общая)

Следующие метрики дают картину использования памяти процессом Tarantool.

Метрика Описание
tnt_info_memory_cache Количество байт в кэше, используемом для хранения кортежей движка vinyl.
tnt_info_memory_data Количество байт, используемых для хранения пользовательских данных (кортежей) в движке memtx и на уровне 0 движка vinyl, без учета фрагментации памяти.
tnt_info_memory_index Количество байт, используемых для индексации пользовательских данных. Включает деревья памяти memtx и vinyl, страничный индекс vinyl и фильтры Блума vinyl.
tnt_info_memory_lua Количество байт, используемых средой выполнения Lua. Мониторинг этой метрики может предотвратить переполнение памяти.
tnt_info_memory_net Количество байт, используемых для буферов сетевого ввода/вывода.
tnt_info_memory_tx Количество байт, используемых активными транзакциями. Для движка vinyl это общий размер всех выделенных объектов (struct txv, struct vy_tx, struct vy_read_interval) и закрепленных за ними кортежей.

Выделение памяти (Slab allocator)

Отчет об использовании памяти слэб-аллокатором. Слэб-аллокатор является основным для хранения кортежей. Доступная память, байты:

Метрика Описание
tnt_slab_quota_size Объем памяти, доступный для хранения кортежей и индексов. Равен параметру memtx_memory.
tnt_slab_arena_size Общий объем памяти, доступный для хранения как кортежей, так и индексов. Включает выделенные, но свободные в данный момент слэбы.
tnt_slab_items_size Общий объем памяти, доступный для хранения только кортежей (не индексов). Включает выделенные, но свободные в данный момент слэбы.

Использование памяти, байты:

Метрика Описание
tnt_slab_quota_used Объем памяти, уже зарезервированный слэб-аллокатором.
tnt_slab_arena_used Эффективно используемая память для хранения как кортежей, так и индексов. Без учета выделенных, но свободных слэбов.
tnt_slab_items_used Эффективно используемая память для хранения только кортежей (не индексов). Без учета выделенных, но свободных слэбов.

Использование памяти, %:

Метрика Описание
tnt_slab_quota_used_ratio tnt_slab_quota_used / tnt_slab_quota_size
tnt_slab_arena_used_ratio tnt_slab_arena_used / tnt_slab_arena_size
tnt_slab_items_used_ratio tnt_slab_items_used / tnt_slab_items_size

Спейсы (Spaces)

Следующие метрики предоставляют информацию о каждом отдельном спейсе в инстансе Tarantool.

Метрика Описание
tnt_space_len Количество записей в спейсе. Всегда имеет метки: {name="test", engine="memtx"}, где name — имя спейса, engine — его движок.
tnt_space_bsize Общее количество байт во всех кортежах спейса. Всегда имеет метки: {name="test", engine="memtx"}.
tnt_space_index_bsize Общее количество байт, занимаемых индексом. Всегда имеет метки: {name="test", index_name="pk"}, где name — имя спейса, index_name — имя индекса.
tnt_space_total_bsize Общий размер кортежей и всех индексов в спейсе. Всегда имеет метки: {name="test", engine="memtx"}.
tnt_vinyl_tuples Общее количество кортежей для vinyl. Всегда имеет метки: {name="test", engine="vinyl"}. По умолчанию эта метрика отключена и может быть включена только глобальной переменной: rawset(_G, 'include_vinyl_count', true).

Сеть (Network)

Статистика сетевой активности. Метрики для мониторинга сетевой нагрузки, пиков использования и потерь трафика.

Метрика Описание
tnt_net_sent_total Байт, отправленных из инстанса по сети с момента его запуска.
tnt_net_received_total Байт, полученных инстансом с момента запуска.
tnt_net_connections_total Количество входящих сетевых соединений с момента запуска инстанса.
tnt_net_connections_current Количество активных сетевых соединений.
tnt_net_requests_total Количество сетевых запросов, обработанных инстансом с момента запуска.
tnt_net_requests_current Количество ожидающих обработки сетевых запросов.
tnt_net_requests_in_progress_total Общее количество запросов, обработанных потоком tx (транзакций).
tnt_net_requests_in_progress_current Количество запросов, обрабатываемых в данный момент в потоке tx.
tnt_net_requests_in_stream_total Общее количество запросов, помещенных в очереди потоков (стримов) за все время.
tnt_net_requests_in_stream_current Количество запросов, ожидающих в очередях потоков в данный момент.

Начиная с Tarantool 2.10, каждая сетевая метрика имеет метку thread, показывающую статистику по потокам.

Файберы (Fibers)

Статистика по файберам. Если ваше приложение создает много файберов, вы можете использовать эти метрики для мониторинга их количества и использования памяти.

Метрика Описание
tnt_fiber_amount Количество файберов.
tnt_fiber_csw Общее количество переключений контекста файберов.
tnt_fiber_memalloc Объем памяти, зарезервированной для файберов.
tnt_fiber_memused Объем памяти, используемой файберами.

Операции (Operations)

Вы можете собирать данные об iproto-запросах, обработанных инстансом, и агрегировать их по типу запроса. Это поможет узнать, какие операции ваши клиенты выполняют чаще всего.

Метрика Описание
tnt_stats_op_total Общее количество вызовов с момента запуска сервера.

Для различия между типами запросов эта метрика имеет метку operation. Например: {operation="select"}.

Возможные типы операций (operation):

Метка Описание
auth Запросы аутентификации.
call Запросы на выполнение хранимых процедур.
delete Запросы на удаление.
error Запросы, завершившиеся ошибкой.
eval Вызовы для выполнения кода Lua.
execute Запросы на выполнение SQL.
insert Запросы на вставку.
prepare Запросы на подготовку SQL.
replace Запросы на замену.
select Запросы на выборку.
update Запросы на обновление.
upsert Запросы на вставку или обновление.

Репликация (Replication)

Предоставляет текущий статус репликации.

Метрика Описание
tnt_info_lsn LSN (Log Sequence Number) инстанса.
tnt_info_vclock Номер LSN в векторных часах (vclock). Всегда имеет метку {id="id"}, где id — номер инстанса в наборе реплик.
tnt_replication_lsn LSN инстанса Tarantool. Всегда имеет метки {id="id", type="type"}, где id — номер инстанса, typemaster или replica.
tnt_replication_lag Значение лага репликации в секундах. Всегда имеет метки {id="id", stream="stream"}, где id — номер инстанса, streamdownstream или upstream.
tnt_replication_status Эта метрика равна 1, когда статус репликации — «follow», и 0 в противном случае. Всегда имеет метки {id="id", stream="stream"}.

Среда выполнения (Runtime)

Метрика Описание
tnt_runtime_lua Размер сборщика мусора Lua в байтах.
tnt_runtime_used Количество байт, используемых средой выполнения Lua.
tnt_runtime_tuple Количество байт, используемых кортежами (кроме кортежей, принадлежащих memtx и vinyl).

Метрики LuaJIT

Метрики LuaJIT дают представление о работе сборщика мусора Lua. Доступны в Tarantool 2.6 и новее.

Общие JIT-метрики:

Метрика Описание
lj_jit_snap_restore_total Общее количество восстановлений снэпшотов.
lj_jit_trace_num Количество JIT-трейсов.
lj_jit_trace_abort_total Общее количество прерванных трейсов.
lj_jit_mcode_size Общий размер выделенных областей машинного кода.

Строки JIT:

Метрика Описание
lj_strhash_hit_total Количество интернированных строк.
lj_strhash_miss_total Общее количество выделений строк.

Шаги GC:

Метрика Описание
lj_gc_steps_atomic_total Количество инкрементальных шагов GC (состояние atomic).
lj_gc_steps_sweepstring_total Количество инкрементальных шагов GC (состояние sweepstring).
lj_gc_steps_finalize_total Количество инкрементальных шагов GC (состояние finalize).
lj_gc_steps_sweep_total Количество инкрементальных шагов GC (состояние sweep).
lj_gc_steps_propagate_total Количество инкрементальных шагов GC (состояние propagate).
lj_gc_steps_pause_total Количество инкрементальных шагов GC (состояние pause).

Выделения (Allocations):

Метрика Описание
lj_gc_strnum Количество выделенных строковых объектов.
lj_gc_tabnum Количество выделенных табличных объектов.
lj_gc_cdatanum Количество выделенных cdata-объектов.
lj_gc_udatanum Количество выделенных udata-объектов.
lj_gc_freed_total Общий объем освобожденной памяти.
lj_gc_memory Текущая выделенная память Lua.
lj_gc_allocated_total Общий объем выделенной памяти.

Метрики CPU

Следующие метрики предоставляют статистику использования CPU. Доступны только на Linux.

Метрика Описание
tnt_cpu_number Общее количество процессоров, сконфигурированных операционной системой.
tnt_cpu_time Процессорное время хоста.
tnt_cpu_thread Процессорное время потока Tarantool. Всегда имеет метки: {kind="user", thread_name="tarantool", thread_pid="pid", file_name="init.lua"}, где kind может быть user или system, thread_nametarantool, wal, iproto или coio, file_name — имя входного файла.

Существуют также две кроссплатформенные метрики, которые можно получить с помощью вызова getrusage():

Метрика Описание
tnt_cpu_user_time Процессорное время пользователя Tarantool.
tnt_cpu_system_time Системное процессорное время Tarantool.

Vinyl

Метрики Vinyl предоставляют статистику движка vinyl.

Диск (Disk)

Метрики диска используются для мониторинга общего объема данных на диске.

Метрика Описание
tnt_vinyl_disk_data_size Объем данных в байтах, хранящихся в файлах .run, расположенных в vinyl_dir.
tnt_vinyl_disk_index_size Объем данных в байтах, хранящихся в файлах .index, расположенных в vinyl_dir.

Регулятор (Regulator)

Регулятор vinyl решает, когда начинать действия ввода-вывода на диск. Он группирует действия в пакеты для повышения эффективности.

Метрика Описание
tnt_vinyl_regulator_dump_bandwidth Расчетная средняя скорость дампа, байт в секунду. Начальное значение — 10485760 (10 МБ/с). Пересчитывается в зависимости от фактической скорости. Для оценки используются только значимые дампы размером более 1 МБ.
tnt_vinyl_regulator_write_rate Фактическая средняя скорость выполнения операций записи, байт в секунду. Рассчитывается как скользящее среднее за 5 секунд. Если значение метрики постепенно снижается, это может указывать на проблемы с диском.
tnt_vinyl_regulator_rate_limit Ограничение скорости записи, байт в секунду. Регулятор накладывает ограничение на транзакции на основе наблюдаемой производительности дампа/компактации. Если значение метрики падает примерно до 10^5, это указывает на проблемы с диском или планировщиком.
tnt_vinyl_regulator_dump_watermark Максимальный объем памяти в байтах, используемый для хранения LSM-дерева vinyl в памяти. При достижении этого максимума должен произойти дамп. Значение немного меньше объема памяти, выделенного для деревьев vinyl, который отражается в параметре vinyl_memory.
tnt_vinyl_regulator_blocked_writers Количество файберов, заблокированных в ожидании квоты памяти уровня 0 vinyl.

Транзакционная активность (Transactional activity)

Метрика Описание
tnt_vinyl_tx_commit Счетчик коммитов (успешных завершений транзакций). Включает неявные коммиты (например, любая операция вставки вызывает коммит, если она не внутри блока box.begin()–box.commit()).
tnt_vinyl_tx_rollback Счетчик откатов (неуспешных завершений транзакций). Это не просто количество явных box.rollback(), но и запросы, завершившиеся ошибками.
tnt_vinyl_tx_conflict Счетчик конфликтов, вызвавших откат транзакций. Если отношение tnt_vinyl_tx_conflict / tnt_vinyl_tx_commit выше 5%, это указывает на нездоровое состояние vinyl.
tnt_vinyl_tx_read_views Текущее количество read view (представлений чтения) — транзакций, которые временно перешли в состояние "только чтение" для избежания конфликта. Обычно значение равно 0. Если оно долго остается ненулевым, это указывает на утечку памяти.

Память (Memory)

Следующие метрики показывают области памяти, используемые vinyl для кэшей и буферов записи.

Метрика Описание
tnt_vinyl_memory_tuple_cache Объем памяти в байтах, используемый для хранения кортежей (данных) в кэше.
tnt_vinyl_memory_level0 Объем памяти уровня 0 (L0) в байтах. L0 — область, которую vinyl может использовать для хранения LSM-дерева в памяти. Наблюдая за этой метрикой, можно увидеть, когда L0 приближается к своему максимуму (tnt_vinyl_regulator_dump_watermark), после чего произойдет дамп. Можно ожидать, что сразу после завершения дампа L0 = 0.
tnt_vinyl_memory_page_index Объем памяти в байтах, используемый для хранения индексов. Если значение метрики близко к vinyl_memory, это указывает на неверный выбор vinyl_page_size.
tnt_vinyl_memory_bloom_filter Объем памяти в байтах, используемый фильтрами Блума.
tnt_vinyl_memory_tuple Общий размер памяти в байтах, занимаемый кортежами vinyl. Включает кэшированные кортежи и кортежи, закрепленные миром Lua.

Планировщик (Scheduler)

Планировщик vinyl вызывает регулятор и обновляет связанные переменные. Это происходит раз в секунду.

Метрика Описание
tnt_vinyl_scheduler_tasks Количество задач дампа/компактации планировщика. Всегда имеет метку {status = <status_value>}, где status_value может быть inprogress (выполняется), completed (успешно завершена) или failed (прервана из-за ошибок).
tnt_vinyl_scheduler_dump_time Общее время в секундах, затраченное всеми рабочими потоками на выполнение дампов.
tnt_vinyl_scheduler_dump_total Счетчик завершенных дампов.

Метрики цикла событий (Event loop)

Информация о потоке цикла событий tx:

Метрика Описание
tnt_ev_loop_time Время цикла событий (мс).
tnt_ev_loop_prolog_time Время пролога цикла событий (мс).
tnt_ev_loop_epilog_time Время эпилога цикла событий (мс).

Синхро (Synchro)

Показывает текущее состояние синхронной репликации.

Метрика Описание
tnt_synchro_queue_owner ID инстанса текущего мастера синхронной репликации.
tnt_synchro_queue_term Текущий терм очереди.
tnt_synchro_queue_len Сколько транзакций в данный момент ожидают подтверждений.
tnt_synchro_queue_busy Обрабатывает ли очередь какие-либо системные записи (CONFIRM/ROLLBACK/PROMOTE/DEMOTE).

Выборы лидера (Election)

Показывает текущее состояние узла набора реплик в отношении выборов лидера.

Метрика Описание
tnt_election_state Состояние (режим) узла в процессе выборов. Когда выборы включены, узел доступен для записи только в состоянии лидера. Возможные значения:
0 (follower): все не-лидеры называются подписчиками.
1 (candidate): узлы, начинающие новый раунд выборов, называются кандидатами.
2 (leader): узел, собравший кворум голосов, становится лидером.
tnt_election_vote ID узла, за который голосует текущий узел. Если значение равно 0, это означает, что узел еще не голосовал в текущем терме.
tnt_election_leader ID узла-лидера в текущем терме. Если значение равно 0, это означает, что узел не знает, какой узел является лидером в текущем терме.
tnt_election_term Текущий терм выборов.
tnt_election_leader_idle Время в секундах с момента последнего взаимодействия с известным лидером.

Memtx (MVCC)

Статистика памяти для многоверсионного управления конкурентным доступом (MVCC) в memtx. Менеджер транзакций состоит из двух частей: сами транзакции (секция TXN) и MVCC.

TXN

Метрика Описание
tnt_memtx_tnx_statements Операторы (statements) транзакции. Всегда имеет метку {kind="..."} с возможными значениями:
total: количество байт, выделенных под операторы всех текущих транзакций.
average: среднее количество байт, используемое транзакциями для операторов (txn.statements.total bytes / количество открытых транзакций).
max: максимальное количество байт, используемое одной из текущих транзакций для операторов.
tnt_memtx_tnx_user Память, выделенная через функцию box_txn_alloc() для текущей транзакции. Всегда имеет метку {kind="..."} с возможными значениями total, average, max (аналогично выше).
tnt_memtx_tnx_system Внутренние механизмы: логи, точки сохранения. Всегда имеет метку {kind="..."} с возможными значениями total, average, max.

MVCC

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

Метрика Описание
tnt_memtx_mvcc_trackers Трекеры, отслеживающие чтения транзакций. Всегда имеет метку {kind="..."} с возможными значениями total, average, max.
tnt_memtx_mvcc_conflicts Выделяется в случае конфликтов транзакций. Всегда имеет метку {kind="..."} с возможными значениями total, average, max.

Кортежи (Tuples)

Сохраненные кортежи разделены на 3 категории: используемые (used), read view (read_view), отслеживающие (tracking). Для каждой категории есть две метрики: * retained - кортежи, которых больше нет в индексе, но MVCC не позволяет их удалить. * stories - механизм историй (story) в MVCC. Почти каждый кортеж имеет историю.

Метрика Описание
tnt_memtx_mvcc_tuples_used_stories Кортежи, используемые активными транзакциями чтения-записи. Метка {kind="..."} со значениями count (количество) и total (байты).
tnt_memtx_mvcc_tuples_used_retained Удерживаемые кортежи, используемые активными транзакциями чтения-записи. Метка {kind="..."}.
tnt_memtx_mvcc_tuples_read_view_stories Кортежи, не используемые активными транзакциями чтения-записи, но используемые транзакциями только для чтения (в read view). Метка {kind="..."}.
tnt_memtx_mvcc_tuples_read_view_retained Удерживаемые кортежи, не используемые активными транзакциями чтения-записи, но используемые read-view транзакциями. Метка {kind="..."}.
tnt_memtx_mvcc_tuples_tracking_stories Кортежи, не используемые напрямую никакими транзакциями, но используемые MVCC для отслеживания чтений. Метка {kind="..."}.
tnt_memtx_mvcc_tuples_tracking_retained Удерживаемые кортежи, не используемые напрямую никакими транзакциями, но используемые MVCC для отслеживания чтений. Метка {kind="..."}.

Статистика Read View

Метрика Описание
tnt_memtx_tuples_data_total Общий объем памяти (в байтах), выделенный для кортежей данных. Включает значения метрик tnt_memtx_tuples_data_read_view и tnt_memtx_tuples_data_garbage, а также кортежи, фактически хранящиеся в спейсах memtx.
tnt_memtx_tuples_data_read_view Память (в байтах), занятая под read view.
tnt_memtx_tuples_data_garbage Память (в байтах), которая не используется и запланирована к освобождению (освобождается лениво при выделении памяти).
tnt_memtx_index_total Общий объем памяти (в байтах), выделенный для индексации данных. Включает значение метрики tnt_memtx_index_read_view плюс память, используемую для индексации кортежей, фактически хранящихся в спейсах memtx.
tnt_memtx_index_read_view Память (в байтах), занятая под read view для индексов.

Конфигурация Tarantool

Начиная с версии: 3.0.0.

Метрика Описание
tnt_config_alerts Количество текущих предупреждений (alerts) при применении конфигурации инстанса. Метка {level="warn"} покрывает предупреждения, {level="error"} — ошибки.
tnt_config_status Статус применения текущей конфигурации инстанса. Метка status содержит возможное имя статуса. Текущий статус имеет значение метрики 1, неактивные статусы — 0.

Пример набора метрик для статуса конфигурации: