首页/云/可观测性速查/Resource:描述数据来源的身份

Resource:描述数据来源的身份

Resource 是一组进程级属性,描述“谁在产出遥测”:service.name、service.version、deployment.environment 是筛选与聚合的核心字段。

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

Resource 是什么

Resource 描述「谁在产出这些遥测数据」,是一组进程级属性,随每条 span、metric、log 一起上报。service.name、service.version、deployment.environment 是最核心的三个:服务名决定检索入口,版本决定能否把故障与发布关联,环境决定测试数据会不会混进生产视图。因为它是进程级而非单次请求级,配置方式应当统一走环境变量或部署清单,改动的代价是服务视图整体切换。

基本信息

适用平台OpenTelemetry SDK 与 Collector,各语言实现一致
配置载体环境变量、SDK 构造参数,或 Collector 的 resource 处理器
核心字段service.name、service.version、deployment.environment
生效范围进程级,对该进程产出的全部遥测生效

典型使用场景

  • 服务识别:给链路与指标打上服务名,检索时不再靠猜主机名
  • 发布关联:写入版本号后,错误率曲线可与发布事件对齐
  • 环境隔离:用环境字段把预发与生产的看板分开
  • 主机定位:附带主机名或实例标识,问题可下钻到具体节点
  • 多云与多集群:用集群、区域属性做容量与故障域分析

配置方式

配置方式
# 环境变量(推荐,跨语言一致且与部署清单同源)
export OTEL_SERVICE_NAME=checkout-api
export OTEL_RESOURCE_ATTRIBUTES="deployment.environment=prod,service.version=1.8.2,host.name=ip-10-0-1-12"

# 代码方式(Python 示例)
# from opentelemetry.sdk.resources import Resource
# Resource.create({"service.name": "checkout-api", "service.version": "1.8.2"})

# 容器编排里把版本注入为镜像标签对应的值,避免手写漂移

核心资源属性

属性示例值用途
service.namecheckout-api服务检索与聚合的入口字段
service.version1.8.2关联发布与回归
deployment.environmentprod / staging环境隔离,防止数据混看
host.nameip-10-0-1-12下钻到具体主机
k8s.namespace.nameorder容器环境下的归属划分
service.name 一旦改动等于换了一个服务视图,历史数据不会自动跟随;命名应在团队规范里定死,并与部署清单、告警路由保持一致。
多环境共用一个采集端时,环境属性必须在采集前就带上;靠后端按 IP 猜环境的方式在容器与多集群场景下很快失效。

易错点

  • 命名风格不统一(有些服务用连字符、有些用驼峰)会让检索与聚合出现分裂视图,团队要统一规范
  • 缺少环境属性时预发流量混入生产看板,告警阈值按混合数据计算,误报与漏报同时出现
  • 在代码里硬编码服务名而不走部署配置,多套环境共用一份代码时属性无法区分
  • 资源属性里的高基数值(如请求 ID)会随进程数量放大序列,属性和其它元数据要分清层级

数据来源与参考

  • OpenTelemetry 官方文档 · Resources
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌