2.15. Метрики | Tdg
Tarantool
Check out the new release policy

2.15. Метрики

Для мониторинга работы TDG предоставляются метрики в формате Prometheus. Для каждого из экземпляров кластера значения метрик доступны по адресу: http://<IP_адрес_экземпляра>/metrics. В системе-сборщике метрик необходимо подать на вход адреса для сбора метрик со всех экземпляров кластера.

Все доступные метрики можно разделить на несколько категорий:

Используются следующие типы метрик Prometheus:

  • counter — монотонно возрастающий счетчик;
  • gauge — метрика для числовых значений;
  • histogram — метрика для оценки интенсивности потока во времени.

Подробнее про типы метрик см. в официальной документации Prometheus.

2.15.1. Метрики TDG

2.15.1.1. Метрики запросов GraphQL

Для мониторинга и оценки запросов GraphQL предоставляются следующие метрики:

  • tdg_graphql_query_time{alias,schema,entity,operation_name} — время обработки запроса на получение данных (query), миллисекунды. Тип метрики: histogram;
  • tdg_graphql_mutation_time{alias,schema,entity,operation_name} — время обработки запроса на изменения данных (mutation), миллисекунды. Тип метрики: histogram;
  • tdg_graphql_query_fail{alias,schema,entity,operation_name} — количество запросов на получение данных (query) c ошибками. Тип метрики: counter;
  • tdg_graphql_mutation_fail{alias,schema,entity,operation_name} — количество запросов на изменение данных (mutation) c ошибками. Тип метрики: counter.

Бакеты (bucket) гистограмм распределены в диапазоне от 0 до 1000 миллисекунд с интервалом в 100 миллисекунд (см. пример ниже).

Каждая из метрик имеет следующие тэги:

  • alias — имя экземпляра, на котором собираются метрики. Имя экземпляра было задано при развертывании кластера;
  • schema — имя схемы (default или admin), в которую поступил запрос GraphQL;
  • entity — сущность, над которой производится операция;
  • operation_name — имя запроса GraphQL (может отсутствовать, если имя запроса не было задано). Рекомендуется указывать имена для всех запросов, чтобы можно было однозначно идентифицировать, к какому запросу относится информация в метрике.

Вызов сервиса аналогичен запросу (query) для сущности. В данном случае в тэг entity будет записано имя сервиса.

Каждый запрос может состоять из нескольких операций, которые, в свою очередь, могут состоять из получения/модификации нескольких сущностей. В этом случае по каждой сущности будет выдана отдельная метрика со своим набором тэгов.

Пример:

# HELP tdg_graphql_query_time Graphql query execution time
# TYPE tdg_graphql_query_time histogram
tdg_graphql_query_time_bucket{alias="core_1",schema="default",entity="City",operation_name="GetCity",le="100"} 25
tdg_graphql_query_time_bucket{alias="core_1",schema="default",entity="City",operation_name="GetCity",le="200"} 25
tdg_graphql_query_time_bucket{alias="core_1",schema="default",entity="City",operation_name="GetCity",le="300"} 25
tdg_graphql_query_time_bucket{alias="core_1",schema="default",entity="City",operation_name="GetCity",le="400"} 25
tdg_graphql_query_time_bucket{alias="core_1",schema="default",entity="City",operation_name="GetCity",le="500"} 25
tdg_graphql_query_time_bucket{alias="core_1",schema="default",entity="City",operation_name="GetCity",le="600"} 25
tdg_graphql_query_time_bucket{alias="core_1",schema="default",entity="City",operation_name="GetCity",le="700"} 25
tdg_graphql_query_time_bucket{alias="core_1",schema="default",entity="City",operation_name="GetCity",le="800"} 25
tdg_graphql_query_time_bucket{alias="core_1",schema="default",entity="City",operation_name="GetCity",le="900"} 25
tdg_graphql_query_time_bucket{alias="core_1",schema="default",entity="City",operation_name="GetCity",le="1000"} 25
tdg_graphql_query_time_bucket{alias="core_1",schema="default",entity="City",operation_name="GetCity",le="+Inf"} 25
tdg_graphql_query_time_sum{alias="core_1",schema="default",entity="City",operation_name="GetCity"} 55
tdg_graphql_query_time_count{alias="core_1",schema="default",entity="City",operation_name="GetCity"} 25

# HELP tdg_graphql_mutation_time Graphql mutation execution time
# TYPE tdg_graphql_mutation_time histogram
tdg_graphql_mutation_time_bucket{alias="core_1",schema="default",entity="City",operation_name="InsCity",le="100"} 16
tdg_graphql_mutation_time_bucket{alias="core_1",schema="default",entity="City",operation_name="InsCity",le="200"} 16
tdg_graphql_mutation_time_bucket{alias="core_1",schema="default",entity="City",operation_name="InsCity",le="300"} 16
tdg_graphql_mutation_time_bucket{alias="core_1",schema="default",entity="City",operation_name="InsCity",le="400"} 16
tdg_graphql_mutation_time_bucket{alias="core_1",schema="default",entity="City",operation_name="InsCity",le="500"} 16
tdg_graphql_mutation_time_bucket{alias="core_1",schema="default",entity="City",operation_name="InsCity",le="600"} 16
tdg_graphql_mutation_time_bucket{alias="core_1",schema="default",entity="City",operation_name="InsCity",le="700"} 16
tdg_graphql_mutation_time_bucket{alias="core_1",schema="default",entity="City",operation_name="InsCity",le="800"} 16
tdg_graphql_mutation_time_bucket{alias="core_1",schema="default",entity="City",operation_name="InsCity",le="900"} 16
tdg_graphql_mutation_time_bucket{alias="core_1",schema="default",entity="City",operation_name="InsCity",le="1000"} 16
tdg_graphql_mutation_time_bucket{alias="core_1",schema="default",entity="City",operation_name="InsCity",le="+Inf"} 16
tdg_graphql_mutation_time_sum{alias="core_1",schema="default",entity="City",operation_name="InsCity"} 34
tdg_graphql_mutation_time_count{alias="core_1",schema="default",entity="City",operation_name="InsCity"} 16

# HELP tdg_graphql_query_fail Graphql query fail count
# TYPE tdg_graphql_query_fail counter
tdg_graphql_query_fail{alias="core_1",schema="default",entity="City",operation_name="GetCity"} 2

# HELP tdg_graphql_mutation_fail Graphql mutation fail count
# TYPE tdg_graphql_mutation_fail counter
tdg_graphql_mutation_fail{alias="core_1",schema="default",entity="City",operation_name="InsCity"} 4

Чтобы получить информацию о среднем количестве запросов GraphQL в секунду из Prometheus, воспользуйтесь запросом

rate(tdg_graphql_query_time_count[2m])

Период, по которому вычисляется rate() (в примере — 2m), должен быть как минимум в два раза больше периода сбора метрик. Если вы добавляете панель на стандартный Grafana Tarantool dashboard, воспользуйтесь переменной $rate_time_range.

Среднее время выполнения запроса GraphQL можно получить с помощью

rate(tdg_graphql_query_time_sum[2m])/rate(tdg_graphql_query_time_count[2m])

95-й перцентиль времени выполнения запроса GraphQL можно получить с помощью

histogram_quantile(0.95, sum(rate(tdg_graphql_query_time_bucket[2m])) by (le))

2.15.1.2. Метрики системного администрирования

tdg_cluster_clock_delta{alias,uuid} — разница во времени между локальными часами (часы экземпляра, на котором собираются метрики) и часами другого экземпляра в кластере, секунды. Положительное значение указывает на то, что часы другого экземпляра опережают локальные. Отрицательное значение — на обратную ситуацию. Тип метрики: gauge.

Тэги метрики:

  • uuid — UUID экземпляра, разницу во времени с которым определяет метрика;
  • alias — имя экземпляра, на котором собираются метрики.

В конфигурации системы при помощи параметра clock_delta_threshold_sec можно задать максимально допустимую рассинхронизацию по времени. При превышении этого порога в журнал будет выведено сообщение об ошибке. Подробнее см. в описании параметра

Если несколько экземпляров расположены на одном физическом сервере, разница во времени между ними, как правило, будет очень небольшой, т.к. каждый из этих экземпляров «смотрит» на одни и те же часы — часы физической машины. Разницу во времени в этом случае можно считать сетевой погрешностью. Однако если экземпляры расположены на нескольких физических серверах, метрика может диагностировать ситуацию, когда между экземплярами этих серверов временная разница значительная, что может указывать или на рассинхронизацию часов разных физических серверов, или на сетевые проблемы.

Пример ниже иллюстрирует подобную ситуацию: в кластере развернуты 7 экземпляров (см. топологию кластера); мы собираем метрики на экземпляре с именем «core_1», у которого большая временная дельта одного порядка с тремя экземплярами, развернутыми на другой физической машине.

Пример:

# HELP tdg_cluster_clock_delta The time difference in cluster
# TYPE tdg_cluster_clock_delta gauge
tdg_cluster_clock_delta{uuid="1ab7778c-26f6-4424-b8cd-1daf1d93fc70",alias="core_1"} -0.0001205
tdg_cluster_clock_delta{uuid="76fb5acd-65fd-43f0-8d57-6622aafdc5aa",alias="core_1"} 3.5e-05
tdg_cluster_clock_delta{uuid="a87d0c8c-aced-4c5c-9880-a23cd4edbc01",alias="core_1"} -12.851604
tdg_cluster_clock_delta{uuid="401415dd-4d4d-4c29-9342-fb3efbee5d12",alias="core_1"} 4.75e-05
tdg_cluster_clock_delta{uuid="2e4bb162-d2e7-43f5-9ca9-530c60b2712d",alias="core_1"} 0.00029
tdg_cluster_clock_delta{uuid="b82e8c4f-b522-414c-9e51-a850db7302b1",alias="core_1"} -12.8515295
tdg_cluster_clock_delta{uuid="7acc17ad-aa8a-4954-b13f-3938964c9f41",alias="core_1"} -12.850967

2.15.1.3. Метрики для задач и отложенных работ

В системе TDG доступны метрики для задач (tasks) и отложенных работ (jobs). Метрики актуальны только для экземпляров с ролью task_runner, так как именно на этих экземплярах запускаются задачи и отложенные работы.

Метрики задач имеют следующие тэги:

  • alias — обозначает имя экземпляра, на котором собираются метрики. Имя экземпляра было задано при развертывании кластера;
  • name — имя задачи;
  • kind — вид задачи:
    • single_shot — единоразовая задача;
    • continuous — непрерывно выполняемая задача;
    • periodical — задача, выполняемая по расписанию.

Метрики отложенных работ и системных задач имеют только тэги alias и name.

В TDG версий 1.6.x и 1.7.x есть только одна системная задача (system task) — это задача по архивации (читать подробнее про секцию archivation в файле конфигурации).

  • tdg_tasks_started — показывает, сколько всего запущено задач. Тип метрики: counter.

    По аналогии: tdg_jobs_started — число запущенных отложенных работ, tdg_system_tasks_started — число запущенных системных задач.

    Пример:

    # HELP tdg_system_tasks_started Total system tasks started
    # TYPE tdg_system_tasks_started counter
    tdg_tasks_started{alias="runner_1",name="districts_stat.calc_statistics.call",kind="periodical"} 2
    
    # HELP tdg_jobs_started Total jobs started
    # TYPE tdg_jobs_started counter
    tdg_jobs_started{name="succeed",alias="runner_1"} 1
    
    # HELP tdg_system_tasks_started Total system tasks started
    # TYPE tdg_system_tasks_started counter
    tdg_system_tasks_started{name="tasks.system.archivation.start",alias="runner_1"} 718
    
  • tdg_tasks_failed — показывает, сколько задач завершились с ошибкой. Тип метрики: counter.

    По аналогии: tdg_jobs_failed — число отложенных работ, которые завершились с ошибкой.

    Пример:

    # HELP tdg_tasks_failed Total tasks failed
    # TYPE tdg_tasks_failed counter
    tdg_tasks_succeeded{alias="runner_1",name="districts_stat.calc_statistics.call",kind="periodical"} 1
    
    # HELP tdg_jobs_failed Total jobs failed
    # TYPE tdg_jobs_failed counter
    tdg_jobs_failed{name="fail",alias="runner_1"} 2
    
  • tdg_tasks_succeeded — показывает, сколько задач было успешно выполнено. Тип метрики: counter.

    По аналогии: tdg_jobs_succeeded — число успешно выполненных отложенных работ, tdg_system_tasks_succeeded — число успешно выполненных системных задач.

    Пример:

    # HELP tdg_tasks_succeeded Total tasks succeeded
    # TYPE tdg_tasks_succeeded counter
    tdg_tasks_succeeded{alias="runner_1",name="districts_stat.calc_statistics.call",kind="periodical"} 2
    
    # HELP tdg_jobs_succeeded Total jobs succeeded
    # TYPE tdg_jobs_succeeded counter
    tdg_jobs_succeeded{name="succeed",alias="runner_1"} 1
    
    # HELP tdg_system_tasks_succeeded Total system tasks succeeded
    # TYPE tdg_system_tasks_succeeded counter
    tdg_system_tasks_succeeded{name="tasks.system.archivation.start",alias="runner_1"} 718
    
  • tdg_tasks_stopped — показывает, сколько задач было приостановлено. Тип метрики: counter.

    Пример:

    # HELP tdg_tasks_stopped Total tasks stopped
    # TYPE tdg_tasks_stopped counter
    tdg_tasks_stopped{alias="runner_1",name="districts_stat.calc_statistics.call",kind="periodical"} 2
    
  • tdg_tasks_running — показывает, сколько задач запущено в данный момент. Тип метрики: gauge.

    По аналогии: tdg_jobs_running — число отложенных работ, запущенных в данных момент, tdg_system_tasks_running — число системных задач, запущенных в данный момент.

    Пример:

    # HELP tdg_tasks_running Currently running tasks
    # TYPE tdg_tasks_running gauge
    tdg_tasks_running{alias="runner_1",name="districts_stat.calc_statistics.call",kind="periodical"} 0
    
    # HELP tdg_jobs_running Currently running jobs
    # TYPE tdg_jobs_running gauge
    tdg_jobs_running{name="succeed",alias="runner_1"} 0
    
    # HELP tdg_system_tasks_running Currently running system tasks
    # TYPE tdg_system_tasks_running gauge
    tdg_system_tasks_running{name="tasks.system.archivation.start",alias="tnt_net_external_1_runner_1_1"} 0
    
  • tdg_tasks_execution_time — показывает статистику по времени исполнения задачи. Тип метрики: histogram.

    По аналогии: tdg_jobs_execution_time — статистика по времени исполнения отложенной работы, tdg_system_tasks_execution_time — статистика по времени исполнения системной задачи.

    Бакеты (bucket) гистограмм распределены в диапазоне от 0 до 5 секунд: 0.0001, 0.00025, 0.0005, 0.001, 0.0025, 0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5.

    Пример:

    # HELP tdg_tasks_execution_time Tasks execution time statistics
    # TYPE tdg_tasks_execution_time histogram
    tdg_tasks_execution_time_count{alias="runner_1",name="calc_districts_stat",kind="periodical"} 2
    tdg_tasks_execution_time_sum{alias="runner_1",name="calc_districts_stat",kind="periodical"} 0.014632841999969
    tdg_tasks_execution_time_bucket{alias="runner_1",name="calc_districts_stat",le="0.0001",kind="periodical"} 0
    tdg_tasks_execution_time_bucket{alias="runner_1",name="calc_districts_stat",le="0.00025",kind="periodical"} 0
    tdg_tasks_execution_time_bucket{alias="runner_1",name="calc_districts_stat",le="0.0005",kind="periodical"} 0
    tdg_tasks_execution_time_bucket{alias="runner_1",name="calc_districts_stat",le="0.001",kind="periodical"} 0
    tdg_tasks_execution_time_bucket{alias="runner_1",name="calc_districts_stat",le="0.0025",kind="periodical"} 1
    tdg_tasks_execution_time_bucket{alias="runner_1",name="calc_districts_stat",le="0.005",kind="periodical"} 1
    tdg_tasks_execution_time_bucket{alias="runner_1",name="calc_districts_stat",le="0.01",kind="periodical"} 1
    tdg_tasks_execution_time_bucket{alias="runner_1",name="calc_districts_stat",le="0.025",kind="periodical"} 2
    tdg_tasks_execution_time_bucket{alias="runner_1",name="calc_districts_stat",le="0.05",kind="periodical"} 2
    tdg_tasks_execution_time_bucket{alias="runner_1",name="calc_districts_stat",le="0.1",kind="periodical"} 2
    tdg_tasks_execution_time_bucket{alias="runner_1",name="calc_districts_stat",le="0.25",kind="periodical"} 2
    tdg_tasks_execution_time_bucket{alias="runner_1",name="calc_districts_stat",le="0.5",kind="periodical"} 2
    tdg_tasks_execution_time_bucket{alias="runner_1",name="calc_districts_stat",le="1",kind="periodical"} 2
    tdg_tasks_execution_time_bucket{alias="runner_1",name="calc_districts_stat",le="2.5",kind="periodical"} 2
    tdg_tasks_execution_time_bucket{alias="runner_1",name="calc_districts_stat",le="5",kind="periodical"} 2
    tdg_tasks_execution_time_bucket{alias="runner_1",name="calc_districts_stat",le="+Inf",kind="periodical"} 2
    
    # HELP tdg_jobs_execution_time Jobs execution time statistics
    # TYPE tdg_jobs_execution_time histogram
    tdg_jobs_execution_time_count{name="succeed",alias="runner_1"} 1
    tdg_jobs_execution_time_sum{name="succeed",alias="runner_1"} 1.0725110769272e-05
    tdg_jobs_execution_time_bucket{le="0.0001",name="succeed",alias="runner_1"} 1
    tdg_jobs_execution_time_bucket{le="0.00025",name="succeed",alias="runner_1"}1
    tdg_jobs_execution_time_bucket{le="0.0005",name="succeed",alias="runner_1"} 1
    tdg_jobs_execution_time_bucket{le="0.001",name="succeed",alias="runner_1"} 1
    tdg_jobs_execution_time_bucket{le="0.0025",name="succeed",alias="runner_1"} 1
    tdg_jobs_execution_time_bucket{le="0.005",name="succeed",alias="runner_1"} 1
    tdg_jobs_execution_time_bucket{le="0.01",name="succeed",alias="runner_1"} 1
    tdg_jobs_execution_time_bucket{le="0.025",name="succeed",alias="runner_1"} 1
    tdg_jobs_execution_time_bucket{le="0.05",name="succeed",alias="runner_1"}
    tdg_jobs_execution_time_bucket{le="0.1",name="succeed",alias="runner_1"} 1
    tdg_jobs_execution_time_bucket{le="0.25",name="succeed",alias="runner_1"} 1
    tdg_jobs_execution_time_bucket{le="0.5",name="succeed",alias="runner_1"} 1
    tdg_jobs_execution_time_bucket{le="1",name="succeed",alias="runner_1"} 1
    tdg_jobs_execution_time_bucket{le="2.5",name="succeed",alias="runner_1"} 1
    tdg_jobs_execution_time_bucket{le="5",name="succeed",alias="runner_1"} 1
    tdg_jobs_execution_time_bucket{le="+Inf",name="succeed",alias="runner_1"} 1
    
    # HELP tdg_system_tasks_execution_time System tasks execution time statistics
    # TYPE tdg_system_tasks_execution_time histogram
    tdg_system_tasks_execution_time_count{name="tasks.system.archivation.start",alias="runner_1"} 718
    tdg_system_tasks_execution_time_sum{name="tasks.system.archivation.start",alias="runner_1"} 0.052489631809294
    tdg_system_tasks_execution_time_bucket{le="0.0001",name="tasks.system.archivation.start",alias="runner_1"} 631
    tdg_system_tasks_execution_time_bucket{le="0.00025",name="tasks.system.archivation.start",alias="runner_1"} 715
    tdg_system_tasks_execution_time_bucket{le="0.0005",name="tasks.system.archivation.start",alias="runner_1"} 718
    tdg_system_tasks_execution_time_bucket{le="0.001",name="tasks.system.archivation.start",alias="runner_1"} 718
    tdg_system_tasks_execution_time_bucket{le="0.0025",name="tasks.system.archivation.start",alias="runner_1"} 718
    tdg_system_tasks_execution_time_bucket{le="0.005",name="tasks.system.archivation.start",alias="runner_1"} 718
    tdg_system_tasks_execution_time_bucket{le="0.01",name="tasks.system.archivation.start",alias="runner_1"} 718
    tdg_system_tasks_execution_time_bucket{le="0.025",name="tasks.system.archivation.start",alias="runner_1"} 718
    tdg_system_tasks_execution_time_bucket{le="0.05",name="tasks.system.archivation.start",alias="runner_1"} 718
    tdg_system_tasks_execution_time_bucket{le="0.1",name="tasks.system.archivation.start",alias="runner_1"} 718
    tdg_system_tasks_execution_time_bucket{le="0.25",name="tasks.system.archivation.start",alias="runner_1"} 718
    tdg_system_tasks_execution_time_bucket{le="0.5",name="tasks.system.archivation.start",alias="runner_1"} 718
    tdg_system_tasks_execution_time_bucket{le="1",name="tasks.system.archivation.start",alias="runner_1"} 718
    tdg_system_tasks_execution_time_bucket{le="2.5",name="tasks.system.archivation.start",alias="runner_1"} 718
    tdg_system_tasks_execution_time_bucket{le="5",name="tasks.system.archivation.start",alias="runner_1"} 718
    tdg_system_tasks_execution_time_bucket{le="+Inf",name="tasks.system.archivation.start",alias="runner_1"} 718
    

2.15.2. Метрики Tarantool

В системе TDG доступны метрики для мониторинга работы экземпляров Tarantool.

2.15.2.1. Общая статистика

Общая информация о различных параметрах экземпляров Tarantool. Метрики имеют тип gauge.

  • tnt_cfg_current_time — cистемное время экземпляра в формате unix timestamp;
  • tnt_info_uptime — время с момента запуска экземпляра, секунды;
  • tnt_read_only — обозначает, находится ли экземпляр в режиме «только чтение». 1 если верно, 0 если неверно;
  • tnt_info_lsn — LSN (log sequence number, регистрационный номер в журнале) данного экземпляра;
  • tnt_info_vclock — значение LSN из пары «id: lsn» в векторных часах, где id — идентификатор экземпляра в наборе реплик, а lsn — регистрационный номер в журнале.

2.15.2.2. Общая статистика использования памяти

Метрики имеют тип gauge.

  • tnt_info_memory_cache — объем памяти, используемый для кэширования данных, байты. Актуально для движка базы данных vinyl;
  • tnt_info_memory_data — объем памяти, используемый для хранения данных (кортежей), байты;
  • tnt_info_memory_index — объем памяти, используемый для индексирования данных, байты;
  • tnt_info_memory_lua — объем памяти, используемый средой выполнения Lua-кода, байты;
  • tnt_info_memory_net — объем памяти, используемый для буферов сетевого ввода/вывода, байты;
  • tnt_info_memory_tx — объем памяти, используемый активными транзакциями, байты.

2.15.2.3. Статистика использования памяти для распределения slab

Метрики имеют тип gauge.

  • tnt_slab_quota_size — максимальный объем памяти, который механизм распределения slab может использовать как для кортежей, так и для индексов, байты. Как настроено в параметре memtx_memory — по умолчанию 2^28 байт = 268 435 456 байт;
  • tnt_slab_arena_size — общий объем памяти, используемый для кортежей и индексов, включая выделенные, но в данный момент свободные slab’ы, байты;
  • tnt_slab_items_size — общий объем памяти, используемый только для кортежей, включая выделенные, но в данный момент свободные slab’ы, байты. Не используется для индексов;
  • tnt_slab_quota_used — объем памяти, уже выделенный для распределения slab, байты;
  • tnt_slab_arena_used — эффективный объем памяти, используемый для кортежей и индексов, не включая выделенные, но в данный момент свободные slab’ы, байты;
  • tnt_slab_items_used — эффективный объем памяти, используемый только для кортежей, не включая выделенные, но в данный момент свободные slab’ы, байты. Не используется для индексов;
  • 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 / slab_count * slab_size. Это slab’ы, которые используются только для кортежей, не для индексов.

2.15.2.4. Статистика использования памяти в конкретных спейсах

У каждой из этих метрик есть тэги alias (экземпляр, на котором собираются метрики), name (имя спейса) и engine (движок базы данных, используемый для этого спейса). Метрики имеют тип gauge.

  • tnt_space_len{alias,name,engine} — количество кортежей в спейсе;
  • tnt_space_bsize{alias,name,engine} — количество байтов в спейсе (количество байтов во всех кортежах, включая ключи индекса);
  • tnt_space_index_bsize{alias,name,engine} — количество байтов, занятых под индексы;
  • tnt_space_total_bsize{alias,name,engine} — суммарное количество байтов space_bsize + space_index_bsize.

2.15.2.5. Статистика сетевой активности

Метрики имеют тип gauge. У некоторых метрик ниже встречается значение RPS — это среднее количество запросов в секунду, за последние 5 секунд.

  • tnt_net_sent_total — исходящий трафик, байты;
  • tnt_net_sent_rps — исходящий трафик, RPS;
  • tnt_net_received_total — входящий трафик, байты;
  • tnt_net_received_rps — входящий трафик, RPS;
  • tnt_net_connections_total — общее количество входящих сетевых соединений с момента запуска экземпляра;
  • tnt_net_connections_current — текущее количество входящих сетевых соединений;
  • tnt_net_connections_rps — среднее количество входящих сетевых соединений, RPS;
  • tnt_net_requests_total — общее количество входящих сетевых запросов с момента запуска экземпляра;
  • tnt_net_requests_current — текущее количество входящих сетевых запросов в обработке. Может быть ограничено параметром конфигурации базы данных net_msg_max;
  • tnt_net_requests_rps — среднее количество входящих сетевых запросов, RPS.

2.15.2.6. Информация о файберах

Метрики имеют тип gauge.

  • tnt_fiber_count — общее количество файберов;
  • tnt_fiber_csw — количество переключений контекста для всех файберов;
  • tnt_fiber_memalloc — общий объем памяти, выделенный под файберы, байты;
  • tnt_fiber_memused — реальный объем памяти, используемый файберами, байты.

2.15.2.7. Статистика входящих запросов (по типу запросов)

Тип метрик — gauge. Метрики имеют следующие тэги:

  • alias — обозначает имя экземпляра, на котором собираются метрики. Имя экземпляра было задано при развертывании кластера;
  • operation — тип входящего запроса, приходящего по бинарному протоколу:
    • auth — запросы на аутентификацию;
    • call — запросы на выполнение хранимой процедуры;
    • delete — запросы на удаление;
    • error — запросы, завершившиеся с ошибкой;
    • eval — запросы на выполнение Lua-кода;
    • execute — выполнение SQL-запросов;
    • insert — запросы на вставку;
    • prepare — запросы SQL prepare;
    • replace — запросы на замену;
    • select — запросы на поиск;
    • update — запросы на обновление;
    • upsert — запрос на обновление или вставку.

Метрики:

  • tnt_stats_op_total{alias,operation} — общее количество запросов данного типа с момента запуска экземпляра;
  • tnt_stats_op_rps{alias,operation} — среднее количество запросов данного типа в секунду, за последние 5 секунд.

2.15.2.8. Статистика использования памяти для среды выполнения Lua-кода

Метрики имеют тип gauge.

  • tnt_runtime_lua — объем динамической памяти сборщика мусора в Lua, байты;
  • tnt_runtime_used — объем памяти, используемый Lua в данный момент, байты.

2.15.2.9. Статистика CPU

Метрики имеют тип gauge.

  • tnt_cpu_count — общее количество процессоров, сконфигурированных операционной системой;
  • tnt_cpu_total — процессорное время хоста;
  • tnt_cpu_thread{thread_pid,kind,thread_name,alias,file_name} — процессорное время потока Tarantool. У этой метрики всегда есть следующие тэги:
    • thread_pid — PID (process ID), идентификатор потока;
    • kind — вид, может быть user или system;
    • thread_name — имя потока, может быть tarantool, wal, iproto или coio;
    • alias — экземпляр, на котором собираются метрики;
    • file_name — имя файла точки входа, например, init.lua.
  • tnt_cpu_user_time — количество использованного пользовательского времени процессора, секунды;
  • tnt_cpu_system_time — количество использованного системного времени процессора, секунды.

2.15.2.10. Метрики работы экземпляров Tarantool в кластере

Метрики имеют тип gauge.

  • tnt_cartridge_issues{alias,level} — количество ошибок в работе экземпляра. У метрики всегда есть тэги alias (экземпляр, на котором собираются метрики) и level, где level — это уровень критичности ошибки:
    • critical относится к критическим ошибкам в работе экземпляра, например, когда используется более 90% памяти;
    • warning относится к другим ошибкам в работе кластера, например, ошибки репликации на экземпляре.
  • tnt_clock_delta{alias,delta} — дрейф часов в кластере. У метрики всегда есть тэги alias (экземпляр, на котором собираются метрики) и delta, который имеет следующие возможные значения:
    • max — разница с самыми быстрыми часами (всегда положительная);
    • min — разница с самыми медленными часами (всегда отрицательная).

2.15.2.11. Метрики LuaJIT

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

  • Общие метрики JIT
    • lj_jit_snap_restore — общее количество восстановлений стека по снимку. Тип метрики: counter;
    • lj_jit_trace_num — количество JIT-трассировок. Тип метрики: gauge;
    • lj_jit_trace_abort — общее количество прерванных трассировок. Тип метрики: counter;
    • lj_jit_mcode_size — общий объем выделенного машинного кода, байты. Тип метрики: gauge.
  • JIT-строки:
    • lj_strhash_hit — количество интернируемых строк. Тип метрики: counter;
    • lj_strhash_miss — общее количество выделенных строк. Тип метрики: counter.
  • Шаги сборщика мусора:
    • lj_gc_steps_atomic — количество шагов инкрементного сборщика мусора (фаза atomic). Тип метрики: counter;
    • lj_gc_steps_sweepstring — количество шагов инкрементного сборщика мусора (фаза sweep для строк). Тип метрики: counter;
    • lj_gc_steps_finalize — количество шагов инкрементального сборщика мусора (фаза finalize). Тип метрики: counter.
    • lj_gc_steps_sweep — количество шагов инкрементального сборщика мусора (фаза sweep). Тип метрики: counter;
    • lj_gc_steps_propagate — количество шагов инкрементального сборщика мусора (фаза propagate). Тип метрики: counter;
    • lj_gc_steps_pause — количество шагов инкрементального сборщика мусора (фаза pause). Тип метрики: counter.
  • Аллокация:
    • lj_gc_strnum — количество размещенных объектов-строк. Тип метрики: gauge;
    • lj_gc_tabnum — количество размещенных объектов-таблиц. Тип метрики: gauge;
    • lj_gc_cdatanum — количество размещенных объектов cdata. Тип метрики: gauge;
    • lj_gc_udatanum — количество размещенных объектов udata. Тип метрики: gauge;
    • lj_gc_freed — объем освобожденной памяти, байты. Тип метрики: counter;
    • lj_gc_total — текущий объем выделенной Lua-памяти, байты. Тип метрики: gauge;
    • lj_gc_allocated — объем выделенной памяти, байты. Тип метрики: counter.

2.15.2.12. Vinyl

Следующие метрики предоставляют статистику работы движка vinyl. Метрики имеют тип gauge.

  • Disk — дисковые метрики используются для мониторинга общего объема данных на диске:
    • tnt_vinyl_disk_data_size — количество данных в байтах, хранимое в файлах .run, расположенных в директории vinyl_dir;
    • tnt_vinyl_disk_index_size — количество данных в байтах, хранимое в файлах .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.
  • Transactional activity — работа с транзакциями:
    • tnt_vinyl_tx_commit — счетчик коммитов (успешных завершений транзакций);
    • tnt_vinyl_tx_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.
  • Scheduler — планировщик движка vinyl, который вызывает регулятор и обновляет связанные с ним переменные. Это происходит раз в секунду.
    • tnt_vinyl_scheduler_tasks{status,alias} — количество задач планировщика на дамп / компактификацию. У метрики всегда есть тэги alias (экземпляр, на котором собираются метрики) и status, который имеет следующие возможные значения:
      • inprogress для задач, которые запущены в данный момент;
      • completed для успешно завершенных задач;
      • failed для задач, прерванных из-за ошибок.
    • tnt_vinyl_scheduler_dump_time — общее время в секундах, затраченное всеми рабочими потоками на выполнение дампов;
    • tnt_vinyl_scheduler_dump_count — счетчик выполненных дампов.