模块 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 |
---|---|
默认: |
otel_service_name unknown_service:nginx; |
语境: |
http |
设置service.name
OTel 资源的“ ”属性。
句法: |
otel_trace |
---|---|
默认: |
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 |
---|---|
默认: |
otel_trace_context ignore; |
语境: |
http , server ,location |
指定如何传播 traceparent/tracestate标头:
extract
- 使用请求中的现有跟踪上下文,以便 从传入请求继承 跟踪和父范围的标识符。
inject
- 向请求添加新上下文,覆盖现有标头(如果有)。
propagate
- 更新现有上下文(组合extract和insert)。
ignore
- 跳过上下文标头处理。
句法: |
otel_span_name |
---|---|
默认: | — |
语境: |
http , server ,location |
定义 OTel范围 的名称 。默认情况下,它是请求位置的名称。该名称可以包含变量。
句法: |
otel_span_attr |
---|---|
默认: | — |
语境: |
http , server ,location |
添加自定义 OTel span 属性。该值可以包含变量。
默认跨度属性
自动添加 以下跨度属性:
-
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
父级span的 “ ”标志,可以是“1
”或“0
”