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

OpenTelemetry 接入炬鲸 OBSERVE:从埋点到全链路追踪

手把手教程:用 OpenTelemetry SDK 完成 Java/Go 应用的自动埋点,配置 OTLP 导出到炬鲸 OBSERVE,验证 trace 上报,并给出采样策略与常见接入问题的排查方法。

先跑通最小闭环

接入 OpenTelemetry 最常见的坑,是一上来就改大量业务代码,最后卡在导出配置上。建议先跑通“埋点 → 上报 → 查询”的最小闭环,再逐步扩大范围。

以 Java 应用为例,用 javaagent 自动埋点,不改业务代码:

java -javaagent:opentelemetry-javaagent.jar   -Dotel.service.name=order-service   -Dotel.exporter.otlp.endpoint=http://ob.jjhub.cn:4318   -Dotel.traces.exporter=otlp   -Dotel.metrics.exporter=otlp   -Dotel.logs.exporter=otlp   -jar order-service.jar

agent 会自动为 Spring MVC、MySQL、HTTP 客户端等生成 span,框架边界无需手写;Go 同理,引入 otel 的 gin、gorm 等 instrumentation 包即可。

为关键路径补手动埋点

自动埋点覆盖框架边界,业务内部的关键步骤(下单、扣库存、调第三方支付)需要手动埋点才能看清:

Span span = tracer.spanBuilder("place_order")
    .setAttribute("order.id", orderId)
    .startSpan();
try (Scope scope = span.makeCurrent()) {
    inventoryService.deduct(orderId);
    paymentService.pay(orderId);
} finally {
    span.end();
}

给 span 打上有意义的 attribute(订单号、用户 ID、渠道),排查时按这些字段过滤,能直接定位到具体业务对象。

配置 OTLP 导出与采样

OBSERVE 接收 OTLP/HTTP(4318)和 OTLP/gRPC(4317)两种协议,生产建议走 gRPC 并开启 gzip 压缩。采样策略分场景:核心交易链路 100% 全采;一般接口用尾采样(tail-based),正常低采样、出错全采;高流量日志只导出 error 以上。

验证与常见问题

接入后按顺序验证:制造一次请求,在“链路追踪”页按 service.name 过滤应能看到 trace;点开 trace 确认 span 时序和 attribute 齐全;在“服务”页确认服务被自动发现、QPS 和延迟有数据。

常见问题:上报超时先检查 endpoint 是否带协议前缀(http:// 或 https://);trace 缺失看采样率是否为 0;span 无 attribute 确认是否已 startSpan;时间不对齐检查是否都用了 NTP。本地暂无 OBSERVE 时,可先用 otel-collector 做中转。