OpenTelemetry 语义约定:让遥测数据说同一种语言

OpenTelemetry 语义约定(Semantic Conventions)统一了遥测属性与事件的命名规范(如 service.name、http.request.method),让不同语言、不同框架产出的数据可以互相对齐。本文讲解 Resource/Trace/Metric/Log 四类约定与自定义属性命名规则。

最佳实践
OpenTelemetry 语义约定:让遥测数据说同一种语言封面

OpenTelemetry 语义约定是一套标准化的命名规范,规定遥测数据中资源、Span、指标与事件的属性名称、类型与取值——没有它,同样的 HTTP 请求在 Java 里叫 httpMethod、在 Go 里叫 http_method,跨语言分析就无从谈起;有了它,任何服务的数据都能用同一套查询与视图分析。

核心要点速览

  • 语义约定的价值:数据可移植、视图可复用、工具可自动理解数据含义;
  • 四大类约定:Resource(数据来源)、Trace(调用语义)、Metric(指标命名)、Log/Event;
  • 遵循稳定性等级:稳定约定放心用,实验性约定留意变更;
  • 自定义属性用反向域名前缀命名(如 com.example.order.id),避免与标准冲突。

语义约定为什么重要?

可观测性数据的分析价值取决于一致性:告警规则、仪表板、AI 根因分析都建立在「字段含义确定」的假设上。语义约定把约定俗成变成明文标准,让 http.request.method=GET 在任何语言、任何框架中都长一个样。

四类核心约定

Resource 语义约定

描述「谁产生了数据」:service.name(服务名,最重要的一个)、service.versiondeployment.environment.namehost.namek8s.pod.namecloud.region 等。统一资源属性是后续按服务、环境、地域切片分析的基础。

Trace 语义约定

描述「这次调用是什么」:HTTP(http.request.methodhttp.response.status_codeurl.path)、数据库(db.systemdb.statement)、消息队列(messaging.systemmessaging.destination.name)、RPC 等场景的 Span 名称与属性规范。

Metric 语义约定

规定指标命名(小写、点分层级、复数单位后缀如 http.server.request.duration)、单位(秒、字节用 UCUM 标准)、仪器类型选择与属性的需求级别(Required/Recommended/Optional)。

Log 与 Event 语义约定

日志记录的标准字段(如 severity_text、异常字段 exception.type/message/stacktrace),以及事件(Event)的命名规范(如 exception 事件)。

自定义属性怎么命名?

业务字段没有标准约定时,遵循两条规则:

  1. 加公司/项目前缀com.example.order.idcom.acme.user.tier,避免与未来标准冲突;
  2. 保持低基数警觉:自定义属性进入指标标签时遵守基数纪律(见《高基数问题》)。

观测云落地

观测云的数据模型与 OTel 语义约定天然对齐:

  1. 服务识别service.name 直接映射为 APM 中的服务名,务必规范填写;
  2. 环境划分deployment.environment.name 等属性用于区分生产/测试数据;
  3. 内置视图:观测云的内置视图与监控模板基于标准属性设计,遵循约定的数据开箱即用;
  4. 关联分析:日志中注入 trace_idservice 等字段后,与链路、指标自动关联。

常见问题(FAQ)

Q:语义约定会变吗?我的埋点要跟着改吗? 约定分稳定与实验两级。稳定约定承诺向后兼容;实验性约定可能调整。SDK 升级时关注 release notes 即可。

Q:老埋点不符合约定怎么办? 不必改代码——在 Collector 用 OTTL 做属性重命名,或在观测云 Pipeline 侧做字段映射,统一到标准命名。

Q:HTTP 语义约定为什么感觉老在改? HTTP 约定经历过一次大的稳定化重构(如 http.methodhttp.request.method),稳定后不再变动。以所用 SDK 版本对应的约定文档为准。

Q:必须背下所有约定吗? 不需要。自动埋点产生的数据天然遵循约定;手动埋点时查官方文档对应场景的约定表即可。

系列阅读

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台