模块 ngx_otel_module

Example Configuration
Directives
     otel_exporter
     otel_service_name
     otel_trace
     otel_trace_context
     otel_span_name
     otel_span_attr
Default span attributes
Embedded Variables

ngx_otel_module模块 (1.23.4) 提供 OpenTelemetry 分布式跟踪支持。该模块支持 W3C 上下文传播和 OTLP/gRPC 导出协议。

该模块作为我们商业订阅 包 的一部分提供 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
每个工作人员在一批中发送的最大 Span 数,默认为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.nameOTel 资源的“ ”属性。

句法: 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
更新现有上下文(组合extractinsert)。
ignore
跳过上下文标头处理。

句法: otel_span_name name;
默认:
语境: http, server,location

定义 OTel范围 的名称 。默认情况下,它是请求位置的名称。该名称可以包含变量。

句法: otel_span_attr name value;
默认:
语境: http, server,location

添加自定义 OTel span 属性。该值可以包含变量。

默认跨度属性

自动添加 以下跨度属性:

嵌入变量

$otel_trace_id
当前跨度所属迹线的标识符,例如,56552bc4daa3bf39c08362527e1dd6c4
$otel_span_id
当前跨度的标识符,例如4c0b8531ec38ca59
$otel_parent_id
父范围的标识符,例如,dc94d281b0f884ea
$otel_parent_sampled
sampled父级span的 “ ”标志,可以是“ 1”或“ 0