This is an automated email from the ASF dual-hosted git repository.
navendu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix.git
The following commit(s) were added to refs/heads/master by this push:
new 55eeb6b19 docs: correct the default collector config apisix actually
used for opentelemetry plugin (#11247)
55eeb6b19 is described below
commit 55eeb6b194d6f12c384214ec7147416abe8a7d86
Author: fl <[email protected]>
AuthorDate: Thu May 30 12:30:30 2024 +0800
docs: correct the default collector config apisix actually used for
opentelemetry plugin (#11247)
---
docs/en/latest/plugins/opentelemetry.md | 20 ++++++++++++++------
docs/zh/latest/plugins/opentelemetry.md | 20 ++++++++++++++------
2 files changed, 28 insertions(+), 12 deletions(-)
diff --git a/docs/en/latest/plugins/opentelemetry.md
b/docs/en/latest/plugins/opentelemetry.md
index eeaaf7253..9a0ed1373 100644
--- a/docs/en/latest/plugins/opentelemetry.md
+++ b/docs/en/latest/plugins/opentelemetry.md
@@ -53,18 +53,26 @@ You can set up the collector by configuring it in you
configuration file (`conf/
| Name | Type | Default
| Description
|
|--------------------------------------------|---------|---------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| trace_id_source | enum | random
| Source of the trace ID. Valid values are `random`
or `x-request-id`. When set to `x-request-id`, the value of the `x-request-id`
header will be used as trace ID. Make sure that is matches the regex pattern
`[0-9a-f]{32}`. |
+| trace_id_source | enum | x-request-id
| Source of the trace ID. Valid values are `random`
or `x-request-id`. When set to `x-request-id`, the value of the `x-request-id`
header will be used as trace ID. Make sure that it matches the regex pattern
`[0-9a-f]{32}`. |
| resource | object |
| Additional
[resource](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/sdk.md)
appended to the trace.
|
| collector | object | {address =
"127.0.0.1:4318", request_timeout = 3} | OpenTelemetry Collector configuration.
|
| collector.address | string | 127.0.0.1:4318
| Collector address. If the collector serves on
https, use https://127.0.0.1:4318 as the address.
|
| collector.request_timeout | integer | 3
| Report request timeout in seconds.
|
| collector.request_headers | object |
| Report request HTTP headers.
|
| batch_span_processor | object |
| Trace span processor.
|
-| batch_span_processor.drop_on_queue_full | boolean | true
| When set to `true`, drops the span when queue is
full. Otherwise, force process batches.
|
-| batch_span_processor.max_queue_size | integer | 2048
| Maximum queue size for buffering spans for
delayed processing.
|
-| batch_span_processor.batch_timeout | number | 5
| Maximum time in seconds for constructing a batch.
|
-| batch_span_processor.max_export_batch_size | integer | 256
| Maximum number of spans to process in a single
batch.
|
-| batch_span_processor.inactive_timeout | number | 2
| Time interval in seconds between processing
batches.
|
+| batch_span_processor.drop_on_queue_full | boolean | false
| When set to `true`, drops the span when queue is
full. Otherwise, force process batches.
|
+| batch_span_processor.max_queue_size | integer | 1024
| Maximum queue size for buffering spans for
delayed processing.
|
+| batch_span_processor.batch_timeout | number | 2
| Maximum time in seconds for constructing a batch.
|
+| batch_span_processor.max_export_batch_size | integer | 16
| Maximum number of spans to process in a single
batch.
|
+| batch_span_processor.inactive_timeout | number | 1
| Time interval in seconds between processing
batches.
|
+
+:::note
+
+If you find a `bad argument #1 to '?' (invalid value)` error triggered by the
`hex2bytes` function in error log, it's essential to verify if your traceId
matches the specified regex pattern `[0-9a-f]{32}`, as required by
opentelemetry's [traceId
format](https://opentelemetry.io/docs/specs/otel/trace/api/#retrieving-the-traceid-and-spanid).
+
+For instance, a possible scenario occurs when the plugin attribute
`trace_id_source` is configured as `x-request-id`, and requests include an
x-request-id header generated by Envoy. Envoy typically uses a
[UUID](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/observability/tracing#trace-context-propagation)
to create this header by default. When the opentelemetry plugin adopts this
UUID as the traceId, the presence of hyphens in the UUID can cause issues.
Since the UUID f [...]
+
+:::
You can configure these as shown below:
diff --git a/docs/zh/latest/plugins/opentelemetry.md
b/docs/zh/latest/plugins/opentelemetry.md
index 94dd63a3d..f6e322dbe 100644
--- a/docs/zh/latest/plugins/opentelemetry.md
+++ b/docs/zh/latest/plugins/opentelemetry.md
@@ -54,18 +54,26 @@ description: 本文介绍了关于 Apache APISIX `opentelemetry` 插件的基本
| 名称 | 类型 | 默认值
| 描述
|
| ------------------------------------------ | ------- |
------------------------------------------------- |
-------------------------------------------------------------------------------------------------------------------------------------------------
|
-| trace_id_source | enum | random
| trace ID 的来源。有效值为:`random` 或 `x-request-id`。当设置为
`x-request-id` 时,`x-request-id` 头的值将用作跟踪 ID。请确保当前请求 ID 是符合 TraceID
规范的:`[0-9a-f]{32}`。 |
+| trace_id_source | enum | x-request-id
| trace ID 的来源。有效值为:`random` 或 `x-request-id`。当设置为
`x-request-id` 时,`x-request-id` 头的值将用作跟踪 ID。请确保当前请求 ID 是符合 TraceID
规范的:`[0-9a-f]{32}`。 |
| resource | object |
| 追加到 trace 的额外
[resource](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/sdk.md)。
|
| collector | object | {address =
"127.0.0.1:4318", request_timeout = 3} | OpenTelemetry Collector 配置。 |
| collector.address | string | 127.0.0.1:4318
| 数据采集服务的地址。如果数据采集服务使用的是 HTTPS 协议,可以将 address 设置为
https://127.0.0.1:4318。 |
| collector.request_timeout | integer | 3
| 数据采集服务上报请求超时时长,单位为秒。 |
| collector.request_headers | object |
| 数据采集服务上报请求附加的 HTTP 请求头。 |
| batch_span_processor | object |
| trace span 处理器参数配置。 |
-| batch_span_processor.drop_on_queue_full | boolean | true
| 如果设置为 `true` 时,则在队列排满时删除 span。否则,强制处理批次。|
-| batch_span_processor.max_queue_size | integer | 2048
| 处理器缓存队列容量的最大值。 |
-| batch_span_processor.batch_timeout | number | 5
| 构造一批 span 超时时间,单位为秒。 |
-| batch_span_processor.max_export_batch_size | integer | 256
| 单个批次中要处理的 span 数量。 |
-| batch_span_processor.inactive_timeout | number | 2
| 两个处理批次之间的时间间隔,单位为秒。 |
+| batch_span_processor.drop_on_queue_full | boolean | false
| 如果设置为 `true` 时,则在队列排满时删除 span。否则,强制处理批次。|
+| batch_span_processor.max_queue_size | integer | 1024
| 处理器缓存队列容量的最大值。 |
+| batch_span_processor.batch_timeout | number | 2
| 构造一批 span 超时时间,单位为秒。 |
+| batch_span_processor.max_export_batch_size | integer | 16
| 单个批次中要处理的 span 数量。 |
+| batch_span_processor.inactive_timeout | number | 1
| 两个处理批次之间的时间间隔,单位为秒。 |
+
+:::note
+
+如果你在 error log 中发现由 hex2bytes 函数引发的 `bad argument #1 to '?' (invalid value)`
错误,务必确认你的 traceId 是否满足 opentelemetry 的 [traceId
格式](https://opentelemetry.io/docs/specs/otel/trace/api/#retrieving-the-traceid-and-spanid)
所需的正则规范`[0-9a-f]{32}`。
+
+例如,当插件属性 `trace_id_source` 配置为 `x-request-id` 时,如果请求包含由 Envoy 生成的 x-request-id
请求头,可能会发生上述情况。Envoy 默认使用
[UUID](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/observability/tracing#trace-context-propagation)
生成该请求头。当 opentelemetry 插件将此 UUID 作为 traceId 时,UUID 中的 `-` 可能会引起问题。由于带有 `-` 的
UUID 格式与 traceId 格式不符,因此尝试将跟踪推送到收集器时会导致错误。
+
+:::
你可以参考以下示例进行配置: