OpenTelemetry 常见问题
介绍
OpenTelemetry 是用于生成、收集和导出遥测数据(如追踪、指标和日志)的开源工具集。作为初学者,在使用过程中可能会遇到各种问题。本文将覆盖最常见的问题场景,并提供逐步解决方案。
1. 数据未出现在后端系统中
问题现象
配置了 OpenTelemetry SDK 但数据未显示在 Jaeger/Prometheus 等后端。
排查步骤
-
检查导出器配置:
// 错误示例:未设置导出器端点
const exporter = new ConsoleSpanExporter(); // 仅输出到控制台
// 正确示例:配置Jaeger导出器
const exporter = new JaegerExporter({
endpoint: 'http://localhost:14268/api/traces',
}); -
验证网络连接:
curl -v http://localhost:14268/api/traces
-
检查采样率:
# 设置采样率为100%(默认可能过低)
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import SimpleSpanProcessor
provider = TracerProvider(sampler=AlwaysOnSampler())
提示
使用 ConsoleExporter
先验证基础数据是否生成,再排查网络问题。
2. 高内存/CPU占用
典型场景
应用出现性能下降,监控显示OpenTelemetry相关进程资源占用过高。
解决方案
// 限制批量处理大小(Java示例)
BatchSpanProcessor batchProcessor = BatchSpanProcessor.builder(exporter)
.setMaxQueueSize(1000) // 默认2048
.setMaxExportBatchSize(512) // 默认512
.build();
警告
生产环境务必配置队列限制和批处理参数,避免OOM(内存溢出)!