Метрики Tarantool¶
Компоненты TCF работают поверх Tarantool и наследуют его базовые механизмы мониторинга. Метрики, собираемые из Tarantool, позволяют отслеживать состояние экземпляров, их производительность, сетевую активность, использование памяти, поведение в рамках репликации и другие параметры работы Tarantool.
Примечание
Общие рекомендации по анализу стандартных метрик Tarantool описаны в документации TDB.
Общая статистика¶
Тип метрик: gauge.
Эти метрики помогают отслеживать текущее состояние экземпляра Tarantool, включая его время с момента запуска, режим доступа и системное время.
- tnt_cfg_current_time– системное время экземпляра в формате Unix timestamp. Используется для проверки синхронизации времени между серверами. Расхождение во времени может вызвать проблемы с репликацией и логами;
- tnt_info_uptime– время работы экземпляра в секундах. Позволяет выявить незапланированные перезапуски. Регулярный сброс значения может свидетельствовать о сбоях;
- tnt_read_only– режим доступа экземпляра. Используется для контроля режима работы экземпляра. Если мастер-сервер перешёл в read-only, это приводит к отказу в записи.
Общая статистика использования памяти¶
Тип метрик: gauge.
- tnt_info_memory_data– объем памяти в байтах, используемый для хранения данных (кортежей). Резкое увеличение значения метрики может указывать на рост объёма данных;
- tnt_info_memory_index– объем памяти в байтах, используемый для индексации данных. Увеличение значения метрики может указывать на увеличение количества индексов или их размера;
- tnt_info_memory_lua– объем памяти в байтах, используемый средой выполнения Lua-кода; Резкое увеличение значения метрики может свидетельствовать о не оптимизированном коде;
- tnt_info_memory_cache– объем памяти в байтах, используемый для кэширования данных в движке базы данных vinyl;
- tnt_info_memory_net– объем памяти в байтах, используемый для буферов сетевого ввода/вывода. Метрика важна для отслеживания потребления памяти, связанного с сетевыми операциями, такими как передача данных между узлами в кластере;
- tnt_info_memory_tx– объем памяти в байтах, используемый активными транзакциями. Эта метрика помогает отслеживать количество памяти, потребляемое в процессе выполнения транзакций;
Статистика использования памяти для распределения slab¶
Распределение slab – это ключевой механизм хранения кортежей в Tarantool. Метрики этого раздела помогают отслеживать:
- суммарное использование памяти; 
- фрагментацию памяти; 
- доступную и фактически занятую память. 
Тип метрик: gauge.
Доступная память¶
- tnt_slab_quota_size– максимальный объем памяти в байтах, который может быть выделен для хранения кортежей и индексов (вся память под slab);
- tnt_slab_arena_size– общий объем памяти в байтах, используемый для кортежей и индексов. Включает в себя выделенные распределения slab, свободные в текущий момент;
- tnt_slab_items_size– общий объем памяти в байтах, выделенный только для хранения кортежей (без учета индексов). Не используется для индексов.
Использование памяти¶
- tnt_slab_quota_used– общий объем памяти, действительно использованной из доступного лимита (- quota_size);
- tnt_slab_arena_used– эффективный объем памяти в байтах, используемый для кортежей и индексов. Не включает в себя выделенные распределения slab, свободные в текущий момент;
- tnt_slab_items_used– объем памяти, который используется только кортежами (без учета индексов).
Потребление памяти (в процентах)¶
- tnt_slab_quota_used_ratio– соотношение- quota_used/- quota_size;
- tnt_slab_arena_used_ratio– соотношение- arena_used/- arena_size;
- tnt_slab_items_used_ratio– соотношение- items_used/- items_size. Это распределения slab, которые используются только для кортежей.
Статистика использования памяти в конкретных спейсах¶
Все метрики, за исключением tnt_space_index_bsize, имеют два тега:
- name– имя спейса;
- engine– движок базы данных, используемый для этого спейса.
Тип метрик: gauge.
- tnt_space_bsize{name,engine}– объем памяти в байтах, который занимает спейс, включая все кортежи и ключи индексов;
- tnt_space_index_bsize{name,index_name}– объем памяти в байтах, занятый под индексы. Метрика также имеет тег- index_name– название индекса;
- tnt_space_total_bsize{name,engine}– суммарный объем памяти в байтах для спейса, включая все кортежи, ключи индексов и индексы (суммарное значение- tnt_space_bsize+- tnt_space_total_bsize);
- tnt_vinyl_tuples{name,engine}– количество кортежей для спейса на движке vinyl. Эта метрика отключена по умолчанию и может быть включена только при настройке глобальной переменной:- rawset(_G, 'include_vinyl_count', true).
Статистика сетевой активности¶
Мониторинг нагрузки сети, пиков использования и падения трафика.
Метрики имеют тег thread, который отображает сетевую статистику для каждого потока.
Трафик¶
Тип метрик: counter.
- tnt_net_sent_total– исходящий трафик в байтах;
- tnt_net_received_total– входящий трафик в байтах.
Сетевые соединения¶
- tnt_net_connections_total– общее количество входящих сетевых соединений с момента запуска экземпляра. Тип метрики: counter;
- tnt_net_connections_current– текущее количество входящих сетевых соединений. Тип метрики: gauge.
Сетевые запросы¶
- tnt_net_requests_total– общее количество входящих сетевых запросов с момента запуска экземпляра. Тип метрики: counter;
- tnt_net_requests_current– текущее количество входящих сетевых запросов в обработке. Может быть ограничено параметром конфигурации базы данных- net_msg_max. Тип метрики: gauge;
- tnt_net_requests_in_progress_total– общее количество сетевых запросов, обработанных потоком процессора транзакций (TX thread). Тип метрики: counter;
- tnt_net_requests_in_progress_current– количество сетевых запросов, которые обрабатывает поток процессора транзакций (TX thread) в текущий момент. Тип метрики: gauge;
- tnt_net_requests_in_stream_total– общее количество сетевых запросов, помещенных в очереди стримов за все время потоком процессора транзакций (TX thread). Тип метрики: counter;
- tnt_net_requests_in_stream_current– количество сетевых запросов, ожидающих обработки в очередях стримов в текущий момент. Тип метрики: gauge.
Информация о файберах¶
Тип метрик: gauge.
- tnt_fiber_amount– общее количество активных файберов. В статистике учитываются только файберы, которые ещё не завершились. Завершённые файберы, уже очищенные сборщиком мусора, в эту метрику не попадают;
- tnt_fiber_csw– количество переключений контекста для всех активных файберов. Метрика отслеживает только файберы, которые ещё не завершились, поэтому она может становиться немонотонной, если файбер завершился и был очищен до того, как попал в статистику;
- tnt_fiber_memalloc– общий объем памяти в байтах, выделенный под файберы;
- tnt_fiber_memused– объем памяти в байтах, используемый файберами.
Статистика входящих запросов (по типу запросов)¶
Тип метрики: counter.
- tnt_stats_op_total{operation}– общее количество запросов данного типа с момента запуска экземпляра. Метрика имеет тег- operation– тип входящего запроса, приходящего по бинарному протоколу. Возможные типы запроса:- auth– запросы на аутентификацию;
- call– запросы на выполнение хранимой процедуры;
- delete– запросы на удаление;
- error– запросы, завершившиеся с ошибкой;
- eval– запросы на выполнение Lua-кода;
- execute– выполнение SQL-запросов;
- insert– запросы на вставку;
- prepare– запросы SQL prepare;
- replace– запросы на замену;
- select– запросы на поиск;
- update– запросы на обновление;
- upsert– запрос на обновление или вставку.
 
Информация о репликации¶
Текущий статус репликации. Тип метрик: gauge.
- tnt_info_lsn– LSN (log sequence number) , регистрационный номер в журнале данного экземпляра;
- tnt_info_vclock{id}– значение LSN из пары- id: lsnв векторных часах, где- id– идентификатор экземпляра в наборе реплик,- lsn– регистрационный номер в журнале. Метрика имеет тег- id– идентификатор экземпляра в наборе реплик;
- tnt_replication_lsn{id,type}– LSN экземпляра Tarantool. Метрика имеет теги:- id– идентификатор экземпляра в наборе реплик;
- type– тип. Возможные значения:- master,- replica;
 
- tnt_replication_lag{id,stream}– значение лага репликации в секундах. Метрика имеет теги:- id– идентификатор экземпляра в наборе реплик;
- stream– тип. Возможные значения:- downstream,- upstream;
 
- tnt_replication_status{id,stream}– принимает значение 1 при статусе репликации follow, иначе – 0. Значение- 0может указывать на проблемы с репликацией, например, потерю связи с мастером или сбои в сети. Метрика имеет теги:- id– идентификатор экземпляра в наборе реплик;
- stream– тип. Возможные значения:- downstream,- upstream.
 
Информация о синхронной репликации¶
Текущее состояние синхронной репликации. Тип метрик: gauge.
- tnt_synchro_queue_owner– ID экземпляра, который является лидером синхронной репликации в текущий момент;
- tnt_synchro_queue_term– текущий терм очереди;
- tnt_synchro_queue_len– количество транзакций, собирающих подтверждения в текущий момент;
- tnt_synchro_queue_busy– значение 1, если очередь обрабатывает системный запрос (CONFIRM/ROLLBACK/PROMOTE/DEMOTE), иначе – 0.
Информация о выборах лидера¶
Текущее состояние узла в наборе реплик относительно выборов лидера. Тип метрик: gauge.
- 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– время в секундах с момента последнего взаимодействия с известным лидером.
Статистика использования памяти для среды выполнения Lua-кода¶
Тип метрик: gauge.
- tnt_runtime_lua– объем динамической памяти сборщика мусора в Lua в байтах;
- tnt_runtime_used– объем памяти в байтах, используемый Lua в данный момент;
- tnt_runtime_tuple– объем памяти в байтах, используемый для кортежей (кроме кортежей memtx и vinyl).
Метрики LuaJIT¶
Общая статистика JIT, работа сборщика мусора Lua и статистика выделения (аллокации) памяти.
Общие метрики JIT¶
- lj_jit_snap_restore_total– общее количество восстановлений стека при выходе с трассы. Тип метрики: counter;
- lj_jit_trace_num– количество скомпилированных трасс. Тип метрики: gauge;
- lj_jit_trace_abort_total– общее количество прерванных компиляций. Тип метрики: counter;
- lj_jit_mcode_size– общий объем выделенного машинного кода в байтах. Тип метрики: gauge.
JIT-строки¶
- lj_strhash_hit_total– количество интернированных строк. Тип метрики: counter;
- lj_strhash_miss_total– общее количество выделенных строк. Тип метрики: counter.
Шаги сборщика мусора¶
- lj_gc_steps_atomic_total– количество шагов инкрементального сборщика мусора (фаза- atomic). Тип метрики: counter;
- lj_gc_steps_sweepstring_total– количество шагов инкрементального сборщика мусора (фаза- sweepдля строк). Тип метрики: counter;
- lj_gc_steps_finalize_total– количество шагов инкрементального сборщика мусора (фаза- finalize). Тип метрики: counter;
- lj_gc_steps_sweep_total– количество шагов инкрементального сборщика мусора (фаза- sweep). Тип метрики: counter;
- lj_gc_steps_propagate_total– количество шагов инкрементального сборщика мусора (фаза- propagate). Тип метрики: counter;
Выделение памяти¶
- lj_gc_strnum– количество выделенных объектов- string. Тип метрики: gauge;
- lj_gc_tabnum– количество выделенных объектов- table. Тип метрики: gauge;
- lj_gc_cdatanum– количество выделенных объектов- cdata. Тип метрики: gauge;
- lj_gc_udatanum– количество выделенных объектов- udata. Тип метрики: gauge;
- lj_gc_freed_total– объем освобожденной памяти в байтах. Тип метрики: counter;
- lj_gc_memory– текущий объем выделенной Lua-памяти в байтах. Тип метрики: gauge;
- lj_gc_allocated_total– объем выделенной памяти в байтах. Тип метрики: counter.
Статистика CPU¶
Информация об использовании процессора. Метрики доступны только для Linux. Тип метрик: gauge.
- tnt_cpu_number– общее количество процессоров, сконфигурированных операционной системой;
- tnt_cpu_time– процессорное время хоста в секундах;
- tnt_cpu_thread{kind,thread_name,thread_pid,file_name}– процессорное время потока Tarantool. Метрика имеет теги:- kind– вид. Возможные значения:- user,- system;
- thread_name– имя потока. Возможные значения:- tarantool,- wal,- iproto,- coio;
- thread_pid– PID (process ID), идентификатор потока;
- file_name– имя файла точки входа, например,- init.lua;
 
- tnt_cpu_user_time– использованное пользовательское время процессора в секундах;
- tnt_cpu_system_time– использованное системное время процессора в секундах.
Статистика работы движка vinyl¶
Информация о работе движка vinyl. Тип метрик: gauge.
Disk¶
Дисковые метрики используются для мониторинга общего объема данных на диске.
- tnt_vinyl_disk_data_size– количество данных в байтах, которое хранится в файлах- .run. Файлы- .runрасположены в директории- vinyl_dir;
- tnt_vinyl_disk_index_size– количество данных в байтах, которое хранится в файлах- .index. Файлы- .indexрасположены в директории- vinyl_dir.
Regulator¶
Регулятор движка vinyl определяет, когда начинать действия по дисковому IO, и группирует их в пакеты.
- tnt_vinyl_regulator_dump_bandwidth– пропускная способность дампа, байты в секунду;
- tnt_vinyl_regulator_write_rate– фактическая средняя скорость выполнения операций записи, байты в секунду;
- tnt_vinyl_regulator_rate_limit– ограничение скорости записи, байты в секунду;
- tnt_vinyl_regulator_dump_watermark– максимальный объем памяти в байтах, используемый для in-memory хранения LSM-дерева движка vinyl;
- tnt_vinyl_regulator_blocked_writers– количество файберов, заблокированных в ожидании квоты памяти движка vinyl для «Уровня 0» (L0).
Transactional activity¶
Работа с транзакциями.
- tnt_vinyl_tx_commit– счетчик коммитов (успешных завершений транзакций). Включает в себя неявные коммиты. Например, операция на вставку вызывает неявный коммит, если только операция не находится в блоке begin–commit;
- tnt_vinyl_tx_rollback– счетчик откатов (неудачных завершений транзакций). Включает в себя:- явные запросы на rollback; 
- запросы, завершившиеся с ошибкой; 
 
- tnt_vinyl_tx_conflict– счетчик конфликтов, которые привели к откату транзакций;
- tnt_vinyl_tx_read_views– текущее количество транзакций, которые перешли в состояние read-only, чтобы временно избежать конфликта;
Memory¶
Области памяти, используемые движком vinyl для кэша и буферов записи:
- tnt_vinyl_memory_tuple_cache– объем памяти в байтах, используемый в настоящее время для хранения кортежей (данных);
- tnt_vinyl_memory_level0– область памяти «Уровень 0» (L0) в байтах;
- tnt_vinyl_memory_page_index– объем памяти в байтах, используемый в настоящее время для хранения индексов;
- tnt_vinyl_memory_bloom_filter– объем памяти в байтах, используемый фильтрами Bloom;
- tnt_vinyl_memory_tuple– суммарный объем памяти в байтах, занятый кортежами в движке vinyl. Включает в себя кортежи, хранящиеся в кеше кортежей vinyl, а также кортежи, которые используются приложением Lua.
Scheduler¶
Планировщик движка vinyl, который раз в секунду вызывает регулятор и обновляет связанные с ним переменные.
- tnt_vinyl_scheduler_tasks{status}– количество задач планировщика на дамп / сжатие. Метрика имеет тег- status. Возможные значения тега:- inprogress– для задач, запущенных в данный момент;
- completed– для успешно завершенных задач;
- failed– для задач, прерванных из-за ошибок;
 
- tnt_vinyl_scheduler_dump_time– общее время в секундах, затраченное всеми рабочими потоками на выполнение дампов;
- tnt_vinyl_scheduler_dump_total– счетчик выполненных дампов.
Статистика цикла событий¶
Информация о потоке транзакций цикла событий в момент сбора метрик. Тип метрик: gauge.
- tnt_ev_loop_time– время цикла событий в миллисекундах;
- tnt_ev_loop_prolog_time– время пролога цикла событий в миллисекундах;
- tnt_ev_loop_epilog_time– время эпилога цикла событий в миллисекундах.
Статистика памяти транзакционного менеджера memtx¶
Статистика памяти memtx MVCC. Менеджер транзакций memtx включает в себя:
- транзакции; 
- механизм MVCC. 
Тип метрик: gauge.
Транзакции (TXN)¶
- tnt_memtx_tnx_statements{kind}– инструкция транзакции. Метрика имеет тег- kind. Возможные значения тега:- total– память в байтах, выделенная на инструкции для всех текущих транзакций;
- average– среднее количество байтов, используемых транзакциями для инструкций. Соотношение:- txn.statements.total/- количество открытых транзакций;
- max– наибольшее количество памяти в байтах, используемое конкретной текущей транзакцией для инструкций;
 
- tnt_memtx_tnx_user{kind}– статистика для функции- box_txn_alloc(). Метрика имеет тег- kind. Возможные значения тега:- total– количество памяти в байтах, выделенное на функцию- box_txn_alloc()для всех текущих транзакций;
- average– среднее значение транзакции. Соотношение:- общее количество выделенных байтов/- количество текущих транзакций;
- max– наибольшее количество памяти в байтах, выделенное на функцию- box_txn_alloc()для конкретной транзакции;
 
- tnt_memtx_tnx_system{kind}– внутренние компоненты (логи и точки сохранения). Метрика имеет тег- kind. Возможные значения тега:- total– память в байтах, выделенная на внутренние компоненты для всех текущих транзакций;
- average– среднее количество памяти в байтах, выделенное на внутренние компоненты. Соотношение:- общее количество выделенных байтов/- количество текущих транзакций;
- max– наибольшее количество памяти в байтах, выделенное на внутренние компоненты для конкретной транзакции.
 
MVCC¶
Механизм MVCC отвечает за изолирование транзакций. Он выявляет конфликты и следит, чтобы не были удалены отсутствующие в спейсе кортежи, которые читает или может прочитать какая-либо транзакция.
- tnt_memtx_mvcc_trackers{kind}– трекеры, отслеживающие чтение транзакций. Метрика имеет тег- kind. Возможные значения тега:- total– память в байтах, выделенная на трекеры по всем текущим транзакциям;
- average– среднее количество байтов, выделенное на трекеры по всем текущим транзакциям. Соотношение:- количество памяти/- количество транзакций;
- max– наибольшее количество памяти в байтах, выделенное на трекеры для одной транзакции.
 
- tnt_memtx_mvcc_conflicts{kind}– память, выделенная на конфликты транзакций. Метрика имеет тег- kind. Возможные значения тега:- total– память в байтах, суммарно выделенная на конфликты;
- average– среднее количество байтов, выделенное на конфликты по всем текущим транзакциям. Соотношение:- количество памяти/- количество транзакций;
- max– наибольшее количество памяти в байтах, выделенное на конфликты для одной транзакции.
 
Кортежи¶
Сохраненные кортежи можно разделить на три категории: used, read_view, tracking.
Каждая категория имеет две метрики:
- retained– сохраненные кортежи. Таких кортежей уже нет в индексе, но механизм MVCC не позволяет их удалить;
- stories– история кортежа. Истории – механизм, на котором основан MVCC. История есть почти у всех кортежей, в том числе у кортежей в индексе.
Тип метрик: gauge.
- tnt_memtx_mvcc_tuples_used_stories{kind}– кортежи, которые используются активными транзакциями чтения и записи. Метрика имеет тег- kind. Возможные значения тега:- count– соотношение- количество используемых кортежей/- количество историй;
- total– объем памяти в байтах, занятый историями используемых кортежей;
 
- tnt_memtx_mvcc_tuples_used_retained{kind}– сохраненные кортежи, которые используются активными транзакциями чтения и записи. Метрика имеет тег- kind. Возможные значения тега:- count– соотношение- количество используемых сохраненных кортежей/- количество историй;
- total– объем памяти в байтах, занятый используемыми сохраненными кортежами;
 
- tnt_memtx_mvcc_tuples_read_view_stories{kind}– кортежи, которые не используются активными транзакциями чтения и записи, но используются транзакциями read-only в read_view. Метрика имеет тег- kind. Возможные значения тега:- count– соотношение- количество кортежей read_view/- количество историй;
- total– объем памяти в байтах, занятый историями кортежей read_view;
 
- tnt_memtx_mvcc_tuples_read_view_retained{kind}– сохраненные кортежи, которые не используются активными транзакциями чтения и записи, но используются транзакциями read-only в read view. Метрика имеет тег- kind. Возможные значения тега:- count– соотношение- количество сохраненных кортежей read_view/- количество историй;
- total– объем памяти байтах, занятый кортежами read_view;
 
- tnt_memtx_mvcc_tuples_tracking_stories{kind}– кортежи, которые не используются транзакциями, но используются механизмом MVCC, чтобы отслеживать чтения. Метрика имеет тег- kind. Возможные значения тега:- count– соотношение- количество кортежей для отслеживания/- количество историй;
- total– объем памяти в байтах, занятый историями кортежей для отслеживания;
 
- tnt_memtx_mvcc_tuples_tracking_retained{kind}– сохраненные кортежи, которые не используются транзакциями, но используются механизмом MVCC, чтобы отслеживать чтения. Метрика имеет тег- kind. Возможные значения тега:- count– соотношение- количество сохраненных кортежей для отслеживания/- количество историй;
- total– объем памяти в байтах, занятый сохраненными кортежами для отслеживания.
 
Статистика представлений для чтения (read view)¶
- tnt_memtx_tuples_data_total– общее количество памяти в байтах, выделенной под кортежи данных. Эта метрика включает:- tnt_memtx_tuples_data_read_view– память, выделенную под read view;
- tnt_memtx_tuples_data_garbage– память, которая не используется и будет освобождена в будущем (используется «ленивое» освобождение);
- кортежи, которые фактически хранятся в спейсах memtx; 
 
- tnt_memtx_tuples_data_read_view– объем в памяти в байтах, выделенный под read view. Это часть памяти, которая используется для хранения данных, которые могут быть видны только транзакциям с определенными настройками изоляции;
- tnt_memtx_tuples_data_garbage– объем памяти в байтах, который не используется и который планируется освободить в будущем. Эти данные помечены как «мусор» (garbage) и будут очищены позже, возможно, в ходе процесса сжатия или при освобождении памяти;
- tnt_memtx_index_total– общее количество памяти в байтах, выделенной для индексации данных. Включает память, выделенную под read view, а также память, используемую для индексации кортежей, которые фактически хранятся в memtx;
- tnt_memtx_index_read_view– память в байтах, выделенная специально для индексации данных read view.
Конфигурация Tarantool¶
Информация о конфигурации Tarantool.
Тип метрик: gauge.
- tnt_config_alerts{level}– количество ошибок, возникших при применении текущей конфигурации экземпляра. Метрика имеет тег- level– это уровень критичности ошибки. Возможные значения тега:- error– критические ошибки;
- warn– другие ошибки;
 
- tnt_config_status{status, alias}– статус применения текущей конфигурации экземпляра. Метрика имеет следующие теги:- status– возможное имя статуса. Текущий статус имеет значение метрики 1, неактивные статусы имеют значение метрики 0;
 - # HELP tnt_config_status Tarantool 3 configuration status # TYPE tnt_config_status gauge tnt_config_status{status="reload_in_progress",alias="router-001-a"} 0 tnt_config_status{status="uninitialized",alias="router-001-a"} 0 tnt_config_status{status="check_warnings",alias="router-001-a"} 0 tnt_config_status{status="ready",alias="router-001-a"} 1 tnt_config_status{status="check_errors",alias="router-001-a"} 0 tnt_config_status{status="startup_in_progress",alias="router-001-a"} 0 - Например, этот набор метрик означает, что текущая конфигурация для - router-001-aготова.- alias– имя экземпляра, на котором собирается метрика.