OpenTelemetry分布式链路追踪服务器集群部署实操指

适用场景与核心概念

当你管理多台服务器(比如微服务集群),想追踪一次请求经过哪些服务、每个环节耗时多少,就需要分布式链路追踪。
OpenTelemetry 是当前主流的可观测性标准,它提供统一的 SDK 和 Collector 组件,负责从应用采集链路数据,再上报给后端(如 Jaeger、Zipkin 或 Prometheus)。
本文重点讲的是 Collector 在集群中的部署与配置,让零基础用户也能快速用起来。

环境准备:三台服务器就够

实操前准备以下资源:

  • 三台 Linux 服务器(推荐 CentOS 7+ 或 Ubuntu 20.04+),IP 分别为 192.168.1.10、192.168.1.11、192.168.1.12。
  • 后端存储:可以在一台服务器上部署 Jaeger All-in-One 作为演示。
  • 开放端口:每台 Collector 需要 4318(HTTP)或 4317(gRPC)用于接收应用数据;后端 Jaeger 需要 16686(Web UI)和 14250(gRPC)。

如果你没有现成集群,可以用同一台服务器的不同端口模拟,不过集群部署的优势是数据分散接收、避免单点故障。

下载并启动 OpenTelemetry Collector

1. 下载 Collector 二进制文件

登录每一台服务器(这里以 192.168.1.10 为例),执行:

wget https://github.com/open-telemetry/opentelemetry-collector-releases/releases/latest/download/otelcol_linux_amd64.tar.gz
tar -xzf otelcol_linux_amd64.tar.gz
sudo mv otelcol /usr/local/bin/
注意:如果服务器是 ARM 架构,下载 otelcol_linux_arm64.tar.gz。版本号可以查看最新 release,但不要编造具体版本号,直接使用 latest 链接(实际会跳转到当前最新)。

2. 编写 Collector 配置文件

/etc/otelcol/config.yaml 中写入(集群中每台服务器的配置基本一致,只有 service 部分的 pipelines 自定义):

receivers:
  otlp:
    protocols:
      http:
        endpoint: 0.0.0.0:4318
      grpc:
        endpoint: 0.0.0.0:4317

exporters:
  otlp:
    endpoint: "192.168.1.10:4317"  # 假设 Jaeger 部署在 192.168.1.10
    tls:
      insecure: true

service:
  pipelines:
    traces:
      receivers: [otlp]
      exporters: [otlp]

关键说明:

  • receivers 部分定义 Collector 如何接收数据(来自应用的 OTLP 协议)。
  • exporters 定义数据发送到哪个后端。这里用另一台 Collector 的 gRPC 端口(如果 Jaeger 直接接收,则 endpoint 指向 Jaeger 的 14250 端口)。
  • 在实际集群中,可以配置多个 exporter 实现负载或高可用,新手先配置一个固定后端。

3. 启动 Collector 服务

创建 systemd 服务文件 /etc/systemd/system/otelcol.service

[Unit]
Description=OpenTelemetry Collector
After=network.target

[Service]
ExecStart=/usr/local/bin/otelcol --config=/etc/otelcol/config.yaml
Restart=always
User=root

[Install]
WantedBy=multi-user.target

启动并设置开机自启:

sudo systemctl daemon-reload
sudo systemctl start otelcol
sudo systemctl enable otelcol
sudo systemctl status otelcol

看到 active (running) 即成功。

配置数据上报到 Jaeger(后端验证)

在 Collector 所在服务器(也可以是单独一台)部署 Jaeger All-in-One 用于验证:

docker run -d --name jaeger \
  -e COLLECTOR_OTLP_ENABLED=true \
  -p 16686:16686 \
  -p 14250:14250 \
  -p 4317:4317 \
  -p 4318:4318 \
  jaegertracing/all-in-one:latest

然后修改 Collector 的 exporters 配置,
将 endpoint 指向 Jaeger 的 gRPC 地址(如 192.168.1.10:
4317
),
重启 Collector。

验证链路是否采集成功

  1. 确保至少有一个应用(如一个简单的 Python Flask 服务)已经接入 OpenTelemetry SDK,并将 OTLP 数据发送到 Collector 的 4318 或 4317 端口。
  2. 在浏览器访问 http://192.168.1.10:16686 进入 Jaeger UI。
  3. 选择服务名称,点击 Find Traces,如果能搜到链路记录,说明整个集群链路端到端打通。

也可以直接在 Collector 日志中查看是否有数据接收:

journalctl -u otelcol -f

出现 Everything is ready. 以及 otelcol Collector is up and running. 表示运行正常。

常见问题与避坑

Q1: Collector 启动报错 “failed to load config”

检查 YAML 格式是否合法(空格缩进必须一致),可用 otelcol --validate --config /etc/otelcol/config.yaml 验证。

Q2: 应用端发送数据后 Collector 日志无输出

  • 确认应用端 OTLP endpoint 配置的 IP 和端口与 Collector 的 receiver 一致。
  • 检查防火墙是否开放 4317/4318 端口:sudo ufw statusfirewall-cmd --list-ports
  • 在 Collector 所在服务器用 tcpdump 抓包确认数据是否到达。

Q3: 集群中多台 Collector 如何避免数据重复?

OpenTelemetry Collector 本身不持久化数据,只做转发。
如果每台 Collector 都指向同一个后端,应用端通常只向一个 Collector 发送数据(应用侧配置一个 Collector 的地址)。
若想高可用,可以配置 Collector 之间的转发(如使用 Load Balancing Exporter),但新手建议先单点部署,集群需求明确后再升级。

避坑说明

  • 不要在生产环境直接使用 latest 标签的 Collector 二进制,应锁定具体版本。本文使用 latest 仅作演示。
  • 如果 Jaeger 与 Collector 在同一台服务器,endpoint 可以用 localhost 提高性能。
  • 注意时区:链路中的时间戳默认是 UTC,前端界面可调整。

总结

本文演示了在服务器集群中部署 OpenTelemetry Collector 的核心步骤,从下载、配置到对接 Jaeger 验证。
关键点是正确填写 receiver 和 exporter 地址,并确保端口可达。
对于零基础用户,建议先在一台服务器上跑通整个流程,再复制到其他节点。
实际生产环境中,还可以加入 Prometheus、Elasticsearch 等更多后端,让可观测性体系更完善。
如果遇到其他报错,优先检查配置文件语法和网络连通性。

如果你正在处理 OpenTelemetry 分布式链路追踪服务器集群部署,建议按本文步骤完整执行,再根据自己的环境微调 exporter 和后端地址。
遇到异常时,回看避坑和高频问题部分,大部分问题都能定位。

分享到:
上一篇
Linux系统资源动态调度容器服务防止资源抢占
下一篇
VictoriaMetrics轻量化时序指标监控替代
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意