OpenTelemetry 服务属性
介绍
在分布式系统中,**服务属性(Service Attributes)**是OpenTelemetry资源模型的核心组成部分,用于唯一标识和描述服务的元数据。它们帮助监控工具(如Prometheus、Jaeger)区分不同服务的遥测数据(Traces、Metrics、Logs),是实现可观测性的基础。
备注
服务属性属于OpenTelemetry的**资源(Resource)**概念,资源代表生成遥测数据的实体(如服务、主机、容器)。
关键服务属性
OpenTelemetry定义了以下标准服务属性(通过语义约定):
属性名 | 描述 | 示例值 |
---|---|---|
service.name | 服务名称(必填) | checkout-service |
service.namespace | 服务分组命名空间 | shop |
service.instance.id | 服务实例的唯一标识符 | pod-1234 |
service.version | 服务版本号 | v1.2.0 |
代码示例
1. 通过代码设置服务属性(Python)
from opentelemetry.sdk.resources import Resource
from opentelemetry.semconv.resource import ResourceAttributes
# 创建资源对象
resource = Resource.create({
ResourceAttributes.SERVICE_NAME: "payment-service",
ResourceAttributes.SERVICE_NAMESPACE: "ecommerce",
ResourceAttributes.SERVICE_VERSION: "2.3.1",
ResourceAttributes.SERVICE_INSTANCE_ID: "payment-pod-5678"
})
# 初始化TracerProvider时附加资源
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
provider = TracerProvider(resource=resource)
trace.set_tracer_provider(provider)
2. 通过环境变量设置
export OTEL_RESOURCE_ATTRIBUTES="service.name=inventory,service.version=1.0.0"