Spec-Zone.ru › nginx

Модуль ngx_otel_module

  • Пример конфигурации
  • Директивы
  • otel_exporter
  • otel_service_name
  • otel_trace
  • otel_trace_context
  • otel_span_name
  • otel_span_attr
  • Атрибуты по умолчанию для трассировок
  • Встроенные переменные

Модуль ngx_otel_module (1.23.4) предоставляет поддержку распределённого трассирования OpenTelemetry. Модуль поддерживает распространение контекста по стандарту W3C и протокол экспорта OTLP/gRPC.

Исходный код модуля доступен здесь. Инструкции по загрузке и установке доступны здесь.

Модуль также доступен в виде предварительно скомпилированного nginx-module-otel пакета начиная с версии 1.25.3 и в nginx-plus-module-otel пакете в рамках нашей коммерческой подписки.

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

load_module modules/ngx_otel_module.so;

events {
}

http {

    otel_exporter {
        endpoint localhost:4317;
    }

    server {
        listen 127.0.0.1:8080;

        location / {
            otel_trace         on;
            otel_trace_context inject;

            proxy_pass http://backend;
        }
    }
}

Директивы

Синтаксис: otel_exporter { ... }
Значение по умолчанию: —
Контекст: http

Указывает параметры экспорта данных OTel:

endpoint
адрес конечной точки OTLP/gRPC, которая будет принимать данные телеметрии.
interval
максимальный интервал между двумя экспортами, по умолчанию 5 секунд.
batch_size
максимальное количество трассировок, отправляемых в одной партии на одного обработчика, по умолчанию 512.
batch_count
количество ожидающих партий на одного обработчика, трассировки, превышающие лимит, отбрасываются, по умолчанию 4.

Пример:

otel_exporter {
    endpoint    localhost:4317;
    interval    5s;
    batch_size  512;
    batch_count 4;
}
Синтаксис: otel_service_name name;
Значение по умолчанию: otel_service_name unknown_service:nginx;
Контекст: http

Устанавливает атрибут «service.name» ресурса OTel.

Синтаксис: otel_trace on | off | $variable;
Значение по умолчанию: otel_trace off;
Контекст: http, server, location

Включает или отключает трассирование OpenTelemetry. Директиву также можно включить, указав переменную:

split_clients "$otel_trace_id" $ratio_sampler {
              10%              on;
              *                off;
}

server {
    location / {
        otel_trace         $ratio_sampler;
        otel_trace_context inject;
        proxy_pass         http://backend;
    }
}
Синтаксис: otel_trace_context extract | inject | propagate | ignore;
Значение по умолчанию: otel_trace_context ignore;
Контекст: http, server, location

Указывает, как распространять заголовки traceparent/tracestate:

extract
использует существующий контекст трассировки из запроса, так что идентификаторы трассировки и родительской трассировки наследуются из входящего запроса.
inject
добавляет новый контекст в запрос, перезаписывая существующие заголовки, если таковые имеются.
propagate
обновляет существующий контекст (комбинирует extract и inject).
ignore
пропускает обработку заголовков контекста.
Синтаксис: otel_span_name name;
Значение по умолчанию: —
Контекст: http, server, location

Определяет имя OTel трассировки. По умолчанию это имя местоположения запроса. Имя может содержать переменные.

Синтаксис: otel_span_attr name value;
Значение по умолчанию: —
Контекст: http, server, location

Добавляет пользовательский атрибут OTel трассировки. Значение может содержать переменные.

Атрибуты по умолчанию для трассировок

Следующие атрибуты трассировки добавляются автоматически:

  • http.method
  • http.target
  • http.route
  • http.scheme
  • http.flavor
  • http.user_agent
  • http.request_content_length
  • http.response_content_length
  • http.status_code
  • net.host.name
  • net.host.port
  • net.sock.peer.addr
  • net.sock.peer.port

Встроенные переменные

$otel_trace_id
идентификатор трассировки, к которой относится текущая трассировка, например, 56552bc4daa3bf39c08362527e1dd6c4
$otel_span_id
идентификатор текущей трассировки, например, 4c0b8531ec38ca59
$otel_parent_id
идентификатор родительской трассировки, например, dc94d281b0f884ea
$otel_parent_sampled
флаг «sampled» родительской трассировки, может быть «1» или «0»

© 2002-2021 Igor Sysoev
© 2011-2024 Nginx, Inc.
Licensed under the BSD License.
https://nginx.org/en/docs/ngx_otel_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API