首页/云/可观测性速查/埋点方式:自动插桩、手动埋点与无侵入
监控体系与方法40 条

埋点方式:自动插桩、手动埋点与无侵入

三类埋点方式各有边界:自动插桩零代码改动覆盖通用框架,手动埋点补充业务语义,eBPF 等无侵入方式适合难以改造的存量系统。

可观测性速查云更新于 2026-10-13

埋点方式是什么

接入可观测性有三类埋点方式,各有边界:自动插桩零代码改动、覆盖框架层(HTTP、数据库、消息);手动埋点需要改代码,但能补上业务语义;eBPF 等无侵入采集适合难以改造的存量系统。实际项目通常是组合使用——自动插桩打底,手动埋点补关键路径。

基本信息

自动插桩无代码改动,挂 agent 或依赖库
手动埋点需要改代码,精确到业务方法
无侵入采集eBPF 等内核/网络层观测
自动插桩覆盖HTTP、DB、消息等通用框架
常见实现Java agent、各语言 SDK、eBPF 工具
组合策略自动打底 + 关键路径手动补

典型使用场景

  • 存量服务快速接入:先挂 agent 拿到框架级指标与链路
  • 关键业务路径(支付、下单)手动补 span 与业务指标
  • 无法改代码的第三方系统用无侵入方式采集网络与调用指标
  • 新项目立项时即按规范埋点,避免后期返工
  • 性能剖析场景下用无侵入工具先定位热点再决定改造点
  • 多语言技术栈用统一的 SDK 规范保证字段与命名一致

Java 应用挂载 OpenTelemetry agent

Java 应用挂载 OpenTelemetry agent
# 零代码改动接入:把 agent 挂到 JVM 启动参数
java -javaagent:/opt/otel/opentelemetry-javaagent.jar \
  -Dotel.service.name=order-api \
  -Dotel.exporter.otlp.endpoint=http://otel-collector:4317 \
  -Dotel.traces.sampler=parentbased_traceidratio \
  -Dotel.traces.sampler.arg=0.1 \
  -jar order-api.jar

方式对比

方式代码改动覆盖范围适用场景
自动插桩无(挂 agent/依赖库)框架级:HTTP、DB、消息快速接入标准技术栈
手动埋点需要改代码精确到业务方法业务指标、关键路径增强
无侵入采集无内核与网络层观测难以改造的存量系统
自动插桩拿到的是框架语义(如 HTTP 状态码),业务语义(订单类型、渠道)仍需手动补充,两者不是替代关系。
埋点方式要与采集架构一起设计:agent 挂载位置、采样策略与导出端点若各自为政,后期会积累大量重复字段与不一致命名。
自动插桩有一定性能开销(尤其是高流量服务),接入前应在预发环境实测,必要时通过采样与关闭无关插件来收敛。
无侵入采集看到的更多是网络与系统调用视图,业务字段通常缺失,适合定位「调用在哪一层变慢」而非回答业务问题。

易错点

  • 只做自动插桩时,指标粒度止步于框架层,无法回答具体业务问题
  • 手动埋点分散在业务代码里,缺少统一命名会让同名指标含义不一致
  • 把 agent 挂上就完事,采样与导出端点未规划,会造成数据量与成本失控
  • 指望无侵入采集提供业务维度,往往拿不到需要的字段而返工
  • 接入前没有在预发环境评估开销,上线后才发现吞吐下降,回退成本高

数据来源与参考

  • OpenTelemetry 文档 · Instrumentation
  • OpenTelemetry Java Agent 使用说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌