模块 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)。
示例配置
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 |
---|---|
默认值 |
otel_service_name unknown_service:nginx; |
上下文 |
http |
设置 OTel 资源的“service.name
”属性。
语法 |
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
- 从请求中使用现有的跟踪上下文,以便 跟踪 和 父跨度 的标识符从传入请求中继承。
注入
- 向请求添加新上下文,覆盖现有标头(如果有)。
传播
- 更新现有上下文(合并 提取 和 注入)。
忽略
- 跳过上下文标头处理。
语法 |
otel_span_name |
---|---|
默认值 | — |
上下文 |
http , server , location |
定义 OTel span 的名称。默认情况下,它是请求位置的名称。名称可以包含变量。
语法 |
otel_span_attr |
---|---|
默认值 | — |
上下文 |
http , server , location |
添加自定义 OTel span 属性。值可以包含变量。
默认 span 属性
以下 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
-
当前 span 所属的跟踪的标识符,例如,
56552bc4daa3bf39c08362527e1dd6c4
$otel_span_id
-
当前 span 的标识符,例如,
4c0b8531ec38ca59
$otel_parent_id
-
父 span 的标识符,例如,
dc94d281b0f884ea
$otel_parent_sampled
-
父 span 的“
sampled
”标志,可以是“1
”或“0
”