Метрики Tarantool¶
Компоненты TCF работают поверх Tarantool и наследуют его базовые механизмы мониторинга. Метрики, собираемые из Tarantool, позволяют отслеживать состояние экземпляров, их производительность, сетевую активность, использование памяти, поведение в рамках репликации и другие параметры работы Tarantool.
Note
Общие рекомендации по анализу стандартных метрик 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– имя экземпляра, на котором собирается метрика.