从零开始把 OpenTelemetry Collector 接到炬鲸 OBSERVE,覆盖 Agent 部署、配置改动、指标与 Trace 验证三个环节,附可直接复制的配置。
接入之前先明确三件事:要采哪些服务的指标和 Trace、数据量大概多大、采样率定多少。别一上来就 100% 采样,高流量服务先设 10%,等观察到瓶颈再调整。采样率写进配置,改起来比改代码快得多。
炬鲸 OBSERVE 的接入端点统一走 OTLP 协议,端口 4318(HTTP)和 4317(gRPC)都支持。建议生产用 gRPC,数据压缩后传输量更小。
先把 Collector 跑起来。用容器部署最快:
docker run -d --name otel-collector \
-v $(pwd)/otel-config.yaml:/etc/otelcol/config.yaml \
otel/opentelemetry-collector-contrib:0.95.0
Collector 建议部署在离应用近的位置:每台宿主机一个,或者每个集群一个。不要所有服务跨机房连一个中心 Collector,网络抖动会让指标丢点。
otel-config.yaml 里改 exporter 段:
exporters:
otlp/jjhub:
endpoint: "ob.jjhub.cn:4317"
headers:
Authorization: "Bearer <你的接入Token>"
tls:
insecure: false
service:
pipelines:
metrics:
exporters: [otlp/jjhub]
traces:
exporters: [otlp/jjhub]
Token 在炬鲸控制台的"接入管理"里创建,每个环境一个,别把生产 Token 写进测试配置再复制出去。
应用端不推荐手工埋点。优先用自动注入:Java 用 -javaagent:opentelemetry-javaagent.jar,Python 用 opentelemetry-instrument,Node 用 --require @opentelemetry/auto-instrumentations-node/register。
以 Java 为例,启动参数加:
-javaagent:opentelemetry-javaagent.jar
-Dotel.exporter.otlp.endpoint=http://localhost:4318
-Dotel.resource.attributes=service.name=order-service,env=prod
service.name 一定要设,而且要和团队约定好命名规范(如订单服务统一叫 order-service),否则 Trace 和指标里会出现一堆 unknown_service。
三条命令确认链路通了:
service.name="order-service",能看到 CPU 或请求数即可。service.name、trace_id、span_kind 是否齐全,缺了说明自动注入没生效。收数正常后,把采样策略、告警阈值、Dashboard 一次配齐。前两周建议每天看一次数据量曲线,确认没有突增或断点。