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