自动埋点做什么
自动埋点让接入链路不再需要逐行改代码:Java 通过挂载代理,Python 用包装命令启动,Node 用预加载钩子,即可自动覆盖主流网络框架、数据库驱动与消息组件的调用,快速得到可用的调用树。
它覆盖不到什么
它负责框架与组件层,业务语义仍要靠手动补充,例如订单号、业务类型这类只有业务代码才知道的信息。自动埋点还会明显放大环节数量——每次数据库调用都会产生一条记录,采样与批量导出参数需要一起调整。
基本信息
| Java | 挂载代理包启动即可 |
|---|---|
| Python | 安装依赖后用包装命令启动 |
| Node | 通过预加载钩子自动插桩 |
| 覆盖范围 | 网络框架、数据库驱动与消息组件 |
典型使用场景
- 快速接入:存量服务不改代码先拿到基础链路
- 服务间调用可视化:自动生成上下游调用关系
- 数据库耗时分析:定位慢查询来自哪个接口
- 消息链路追踪:观察生产者与消费者的关联
- 渐进改造:自动埋点打底,再按需补充业务属性
各语言接入方式
各语言接入方式
# Java:挂载代理包
java -javaagent:opentelemetry-javaagent.jar -jar app.jar
# Python:安装依赖后用包装命令启动
opentelemetry-bootstrap -a install
opentelemetry-instrument python app.py
# Node:预加载自动插桩
node --require @opentelemetry/auto-instrumentations-node/register app.js自动与手动分工
| 维度 | 自动埋点 | 手动埋点 |
|---|---|---|
| 覆盖范围 | 框架与组件调用 | 业务关键步骤 |
| 接入成本 | 低,改启动方式即可 | 需改代码 |
| 属性丰富度 | 通用属性为主 | 可写入业务语义 |
| 数量控制 | 需靠采样收敛 | 可按需只埋关键点 |
采用时的注意点
- 启动参数改动要纳入部署配置,避免遗漏导致线上无链路
- 采样比例与批量导出参数一起调,防止放大后的数据量压垮收集端
- 关键业务的语义属性用手动埋点补齐,否则链路只有技术层信息
自动埋点负责框架与组件层,业务语义靠手动补充,两者是配合关系而不是替代关系。
版本不匹配时插桩会静默失效:依赖升级后应回归验证关键链路是否仍然完整。