模块 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.nameOTel 资源的“ ”属性。
| 句法: |
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_sampledsampled父级span的 “ ”标志,可以是“1”或“0”
