Метрики 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 — номер инстанса, type — master или replica. |
tnt_replication_lag |
Значение лага репликации в секундах. Всегда имеет метки {id="id", stream="stream"}, где id — номер инстанса, stream — downstream или 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_name — tarantool, 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. |
Пример набора метрик для статуса конфигурации: