← 返回文章列表
使用指南 4 分钟阅读 炬鲸团队

10 分钟接入:用 OpenTelemetry Collector 把日志、指标、链路送到炬鲸 OBSERVE

一份可照着做的接入教程:安装 OpenTelemetry Collector,用一条配置把文件日志、OTLP 指标与链路统一上报到炬鲸 OBSERVE,并给出验证方法与常见问题排查。

把日志、指标、链路送到炬鲸 OBSERVE,不需要改业务代码。OpenTelemetry Collector 作为统一接入层:指向你的日志文件,让 SDK 往它上报,一条配置就能把三路数据送进 OBSERVE。本文带你十分钟内从零跑到数据流动。

前置准备

  • 一台能访问 OBSERVE 的 Linux 服务器(x86_64 或 ARM64)。
  • 已开通 OBSERVE 租户并拿到接入 Token(控制台 → 接入中心 → 生成 Token)。
  • 应用已产出文件日志,例如 /var/log/app/*.log

指标和链路需要应用侧挂 OpenTelemetry SDK 或自动埋点;日志则直接从文件采集,零代码改动。

安装 Collector

使用 contrib 发行版(内置 filelog 采集器):

wget https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/v0.105.0/otelcol-contrib_0.105.0_linux_amd64.tar.gz
tar -xzf otelcol-contrib_0.105.0_linux_amd64.tar.gz
sudo install otelcol-contrib /usr/local/bin/

ARM64 环境把包名里的 amd64 换成 arm64

编写配置

新建 /etc/otelcol/config.yaml

receivers:
  filelog:
    include: [/var/log/app/*.log]
    start_at: end
    operators:
      - type: json_parser
  otlp:
    protocols:
      grpc: { endpoint: 0.0.0.0:4317 }
      http: { endpoint: 0.0.0.0:4318 }

processors:
  batch:
    timeout: 5s
    send_batch_size: 1024

exporters:
  otlphttp:
    endpoint: https://ob.jjhub.cn/otel
    headers:
      Authorization: "Bearer <你的Token>"

service:
  pipelines:
    logs:
      receivers: [filelog]
      processors: [batch]
      exporters: [otlphttp]
    traces:
      receivers: [otlp]
      processors: [batch]
      exporters: [otlphttp]
    metrics:
      receivers: [otlp]
      processors: [batch]
      exporters: [otlphttp]

三条 pipeline(logs、traces、metrics)都路由到同一个指向 OBSERVE 的 otlphttp exporter;filelog 监听日志文件,otlp receiver 在 4317/4318 端口等 SDK 上报。

启动并验证

sudo otelcol-contrib --config /etc/otelcol/config.yaml

到控制台"接入中心"看数据:日志几秒内出现,指标一分钟内出现。链路要先让 SDK 上报——Java 用 -javaagent:path/to/opentelemetry-javaagent.jar 挂 agent,Go 接 otel sdk 和 exporter。

常见问题

  1. 只有日志没有指标/链路:确认应用真的在导出 OTLP,且 endpoint 指向 Collector 的 4317/4318 端口(指向 OBSERVE 也行,但会绕过 Collector 这条 pipeline)。
  2. 重启后日志重复采集:加 file_storage 扩展,让 filelog 持久化读取 offset。
  3. exporter 报 401:确认 header 写成 Authorization: Bearer <token>,别漏了 Bearer 前缀。

生产化加固

上线前补三件事:file_storage 扩展持久化 offset、exporter 加磁盘队列在网络抖动时缓冲、用 systemd 管理并加 Restart=always。exporter 的磁盘队列在配置里加上 sending_queuestorage: file_storagequeue_size 即可;采集器建议固定版本号,生产至少跑两个实例挂在负载均衡后面,避免单点。