每种库的插桩逻辑被定义为一条“规则”(rule),规则描述了要匹配的包路径、函数签名以及注入的代码模板。这带来几个关键优势:
- 社区可独立贡献:新增一个库的支持本质上就是提交一条新 rule,无需修改核心框架。
- 语义约定合规:所有生成的 span 和 metric 都遵循 OpenTelemetry Semantic Conventions,属性名、span 命名、metric 单位完全标准化,保证不管用 Jaeger、Tempo、SLS 还是 ARMS,数据语义都一致。
- 自动发现:otelc 默认扫描 go.mod 依赖树,自动发现并启用所有命中已注册规则的库,不需要手动指定。
规则本质上是一份“在哪个函数的哪个位置注入什么代码”的声明式描述,写规则的门槛远低于从头实现一个 SDK wrapper。




