
OpenTelemetry Collector 全链路集成测试环境快速上手Docker Compose 十分钟跑通采集、处理与可视化【免费下载链接】opentelemetry-collectorOpenTelemetry Collector项目地址: https://gitcode.com/GitHub_Trending/op/opentelemetry-collector本文用 Docker Compose 搭建一套 OpenTelemetry Collector Docker 测试环境Collector 容器接收 OTLPOpenTelemetry 协议即行业通用的遥测数据上报格式数据Jaeger 界面查追踪Grafana 面板看指标。完成后本机会常驻四个服务采集 → 处理 → 可视化的 Collector 本地全链路部署就绪测试应用发一条数据几分钟内就能在浏览器里看到结果。环境蓝图组件角色与数据流整条链路的数据流向如下组件链路中的作用验证入口OpenTelemetry Collector接收遥测数据经内存限制与批处理后分发到两个后端ZPages 自查页 :55679otel-cli命令行测试应用负责向 Collector 发出示例 span终端命令Jaeger all-in-one追踪数据落库与调用链查询UI :16686Prometheus抓取并存储指标提供查询 API:9090Grafana指标可视化面板UI :3000宿主机需要预留的端口4317、4318OTLP 接收、9090Prometheus、3000Grafana、55679ZPages、16686Jaeger UI。Jaeger 的 14250/14268 与 Collector 的 8888 只在容器网络内部使用不需要映射到宿主机。启动前检查清单项目要求检查方式系统与架构linux/amd64Tier 1完整 CI 覆盖linux/arm64、darwin/arm64Tier 2基础测试uname -m分级说明见 docs/platform-support.md计算资源最低 2 核 / 4GB 内存 / 10GB 磁盘推荐 4 核 / 8GB / SSDnproc、free -h、df -hDockerCompose v2 插件可用docker compose version端口占用上表六个端口在宿主机未被占用sudo lsof -i :4317逐个确认备注Windows 下建议启用 WSL2 后端再跑容器否则网络与端口行为和 Linux 测试基线不一致排查成本会明显变高。 分步搭建环境1. 准备 Collector 配置文件官方样例 examples/local/otel-config.yaml 的监听地址是 localhost、导出端只有 debug直接挂载进容器无法对接外部后端需要改两处监听地址换成 0.0.0.0并挂上 Jaeger 与 Prometheus 两个真实导出端。extensions: zpages: endpoint: 0.0.0.0:55679 # 允许从容器外访问自查页 receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 http: endpoint: 0.0.0.0:4318 exporters: jaeger: endpoint: jaeger:14250 # 容器网络内的服务名指向追踪后端 tls: insecure: true # 内网传输不启用 TLS prometheus: endpoint: 0.0.0.0:8888 # 以 HTTP 形式暴露指标供抓取 debug: verbosity: detailed service: pipelines: traces: receivers: [otlp] processors: [memory_limiter, batch] exporters: [jaeger, debug]memory_limiter 参数、metrics 与 logs 管线保持官方样例原样即可完整文件以 examples/local/otel-config.yaml 为基准。2. 编写 docker-compose.yml在一个文件里声明四个服务与端口映射。宿主机与容器端口保持一致测试应用之后可以直连 localhost省去做端口换算。services: otel-collector: image: otel/opentelemetry-collector:latest volumes: - ./otel-config.yaml:/etc/otelcol/config.yaml # 挂载配置改配置不必重建镜像 ports: - 4317:4317 # OTLP gRPC - 4318:4318 # OTLP HTTP - 55679:55679 # ZPages jaeger: image: jaegertracing/all-in-one:latest ports: - 16686:16686 # 追踪查询 UI environment: - COLLECTOR_OTLP_ENABLEDtrue prometheus: image: prom/prometheus:latest ports: - 9090:9090 grafana: image: grafana/grafana:latest ports: - 3000:30003. 拉起容器docker compose up -d预期输出命令无报错随后docker compose ps显示四个服务全部为 Up。若某个服务反复重启直接跳到下一节的速查表。4. 确认启动日志docker compose logs -f otel-collector预期现象日志中出现 otlp receiver 已启动、正在监听 4317/4318 的记录且没有 error 行。这一步同时验证了配置挂载成功、管线声明无语法问题。数据流验证从发数据到看到结果按链路顺序依次过四个环节每一步都有明确的预期现象。1. 内部状态自查打开http://localhost:55679/debug/tracez。ZPages 是 Collector 的内置自查扩展一个 HTTP 状态页页面能加载出来、服务列表可见说明扩展已在运行。此时还没有数据属于正常现象。2. 发送测试数据go install github.com/open-telemetry/opentelemetry-collector-contrib/cmd/otel-clilatest otel-cli span --name test-span --service demo-service --endpoint localhost:4317第一条命令安装 OTLP 命令行工具第二条通过 gRPC 发一个 span。预期命令正常返回终端打印 span 的发送结果Collector 日志里能看到 debug exporter 输出详细数据。3. 追踪 UI 查询打开http://localhost:16686在服务列表里选择demo-service应能看到刚发出的 test-span 及其时间戳。若列表为空说明数据卡在 Collector 到 Jaeger 这一跳去速查表对应行处理。4. 指标面板查看打开http://localhost:3000默认账号 admin/admin添加 Prometheus 数据源URL 填http://prometheus:9090——Grafana 与 Prometheus 在同一容器网络内要用服务名而不是 localhost。保存并测试通过后导入一个仪表盘如内置的 Node Exporter 仪表盘 ID 1860即可观察主机层与 Collector 的运行指标。问题速查表现象可能原因解决方式Bind for 0.0.0.0:4317 failed: port is already allocated本地已跑 Collector 或别的进程占着 4317/4318sudo lsof -i :4317找到占用进程或把宿主映射改为43170:4317残留容器用docker compose down -v清掉Jaeger 里始终没有追踪数据traces 管线没接 jaeger exporter或两容器互连不通docker compose logs otel-collector \| grep error看报错进容器内确认到 jaeger:14250 的连通性Collector 启动后不断重启挂载路径写错或 YAML 语法错误docker compose exec otel-collector cat /etc/otelcol/config.yaml核对实际加载内容对照启动日志定位ZPages 页面 404extensions 里没声明 zpages或 55679 未映射确认配置含extensions.zpagescompose 中保留 55679 端口映射Grafana 查不到指标数据源用了宿主机地址而非容器服务名URL 改为http://prometheus:9090后重新测试连接这套四服务环境适合日常开发验证也可以直接搬进 CI 当集成测试环节。如果后续要验证多节点拓扑加一个 Collector 实例即可层级关系可参考 examples/k8s/otel-config.yaml 里的 agent/collector 拆分做负载压测时再接一个负载生成容器、指向 4317 端口。环境间差异用 docker-compose.override.yml 覆盖即可不必动主文件。参考资料examples/local/otel-config.yaml本文本地样例配置基准examples/k8s/otel-config.yamlagent/collector 分层部署参考docs/platform-support.md平台支持分级说明docs/项目完整文档目录README.md项目总览【免费下载链接】opentelemetry-collectorOpenTelemetry Collector项目地址: https://gitcode.com/GitHub_Trending/op/opentelemetry-collector创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考