TDB Documentation portal logo
Помощь
Обновлена 30 июня 2026 г. в 07:00

Настройка трассировки

В этом руководстве описано, как включить технологическую роль app.roles.tracing и настроить конфигурацию трассировки. Кроме этого, приведены примеры использования трассировки при передаче контекста по сети и получении контекста от клиента.

Смотрите также: Трассировка с использованием Jaeger.

Содержание:

Включение трассировки

Технологическая роль app.roles.tracing включена по умолчанию на всех экземплярах кластера, но не используется, пока она не будет включена в секции tracing файла конфигурации (config.yaml). Включить трассировку можно с помощью опции app.roles.tracing.enabled:

roles_cfg:  app.roles.tracing:    enabled: true

Настройка частоты трассировки

Опция конфигурации tracing.global_sample_rate позволяет определить, как часто будет трассироваться запрос. Например, tracing.global_sample_rate = 5 означает, что трассируется каждый пятый вызов функции. В примере установлено значение 0, запросы при этом не трассируются:

roles_cfg:  app.roles.tracing:    enabled: true    global_sample_rate: 0

Пример конфигурации трассировки

Полная конфигурация трассировки может выглядеть так:

roles_cfg:  app.roles.tracing:    enabled: true    global_sample_rate: 0    sample_rates:      get_token_api: 2      debug_1: 1    base_url: 'http://tracing:9411/api/v2/spans'    api_method: 'POST'    report_interval: 1    spans_limit: 1000

Здесь:

  • enabled — включение трассировки;
  • global_sample_rate — глобальный коэффициент частоты трассировки запросов, при значении 0 запросы не трассируются;
  • sample_rates — коэффициенты частоты трассировки для заданных сегментов (spans);
  • base_url — URL-адрес сервера, куда отправляются данные трассировки;
  • api_method — HTTP-метод, который используется для отправки данных трассировки на сервер;
  • report_interval — интервал в секундах между отправкой данных трассировки на сервер;
  • spans_limit — максимальное количество сегментов (span) трассировки, которые могут быть сохранены локально на экземпляре Tarantool перед отправкой во внешнюю систему хранения результатов трассировки.

Полное описание опций конфигурации tracing приведено в соответствующем разделе Справочника по конфигурации.

Примеры использования трассировки

Пример использования роли tracing с передачей контекста по сети:

-- ROUTERbox.schema.func.create('get_token', {    language = 'LUA',    if_not_exists = true,    body = [[        function (param)            local vshard = require('vshard')            local tracing = require('app.roles.tracing')            local context = {}            local span = tracing.start_span(context, 'get_token_router')            local bucket_id = vshard.router.bucket_id_mpcrc32(param)            local _, err = vshard.router.callrw(bucket_id, 'get_token', {context, param}, {})            span:finish({error = err})        end    ]],})-- STORAGEbox.schema.func.create('get_token', {    language = 'LUA',    if_not_exists = true,    body = [[        function (context, param)            local tracing = require('app.roles.tracing')            local fiber = require('fiber')            local span = tracing.start_span(context, 'get_token_storage')            fiber.sleep(0.01)            span:finish()        end    ]],})

Получение контекста от клиента:

box.schema.func.create('get_token', {    language = 'LUA',    if_not_exists = true,    body = [[        function (ctx, ...)            local tracing = require('app.roles.tracing')            local context = {                trace_id = ctx.trace_id,                span_id = ctx.span_id,                sample = ctx.trace_id ~= nil,            }            local span_1 = tracing.start_span(context, 'span_1')            — ...            span_1:finish()        end    ]],})