CnOps 智能运维与可观测社区
首页开源项目实践文章视频课程常见问答开发者工具STAROps 专题
导航菜单
首页开源项目实践文章视频课程常见问答开发者工具STAROps 专题

CnOps 智能运维与可观测社区

愿景

CnOps 智能运维与可观测社区是一个以"智能运维与可观测"为核心的开放、包容、分享的技术社区,旨在聚集运维专家、开发者和爱好者,共同探讨、学习和分享可观测最佳实践与最新技术,与众多技术社区合作互动,共同探讨交叉领域的技术挑战,推动可观测领域的创新与进步。

内容社区

  • 实践文章
  • 视频课程
  • 开源项目
  • 常见问答
  • 开发者工具

友情链接

  • Prometheus
  • Grafana Lab
  • OpenTelemetry
  • LoongCollector

关注我们

阿里云云原生公众号阿里云云原生
阿里云可观测公众号阿里云可观测

Copyright © 2026 CnOps 社区. All rights reserved.

首页/开源项目/OpenTelemetry/资源
文档目录
文档开始手动插桩使用插桩库导出器资源采样什么是 OpenTelemetry?
开发人员入门运维人员入门参考应用规范
可观测性入门上下文传播
组件语义约定Resources(资源)插桩范围采样Distributions(发行版)术语表
演示架构Collector 数据流仪表盘开发Docker 部署Fork 演示仓库Kubernetes 部署
API 参考文档示例
PHP 零代码插桩
快速入门安装 Collector
管理发行版故障排查Collector 扩容转换遥测数据架构定制 Collector
基准测试自适应性
支持库列表
从 OpenTracing 迁移
规范状态概览
常见漏洞与暴露(CVE)处理敏感数据
前置条件Issue提交内容文档风格指南网站本地化博客PR 检查公告开发环境设置与构建、服务等命令SIG 审批者与维护者的实践指南

OpenTelemetry

资源

资源(Resource)应在初始化 Tracer、Meter 和 Logger 的提供者(Provider)时进行设置,其设置的方式与设置属性(Attribute)非常相似: 请注意,这里使用 semconv 包可以为资源属性提供规范化的命名方式。 这能够确保使用这些语义约定生成的遥测数据,其下游系统或使用者可以更容易地识别这些属性,并准确理解它们所代表的含义。 资源还可以通过...

资源(Resource)应在初始化 Tracer、Meter 和 Logger 的提供者(Provider)时进行设置,其设置的方式与设置属性(Attribute)非常相似:

res := resource.NewWithAttributes(
    semconv.SchemaURL,
    semconv.ServiceNameKey.String("myService"),
    semconv.ServiceVersionKey.String("1.0.0"),
    semconv.ServiceInstanceIDKey.String("abcdef12345"),
)

provider := sdktrace.NewTracerProvider(
    ...
    sdktrace.WithResource(res),
)

请注意,这里使用 semconv 包可以为资源属性提供规范化的命名方式。
这能够确保使用这些语义约定生成的遥测数据,其下游系统或使用者可以更容易地识别这些属性,并准确理解它们所代表的含义。

资源还可以通过 resource.Detector 来实现自动检测。这些 Detector 可能会发现以下信息:

  • 当前运行的进程信息;

  • 当前运行的操作系统;

  • 托管当前系统的云服务商;

  • 其他任意资源属性。

res, err := resource.New(
	context.Background(),
	resource.WithFromEnv(),      // 从环境变量 OTEL_RESOURCE_ATTRIBUTES 和 OTEL_SERVICE_NAME 中发现并提供属性。
	resource.WithTelemetrySDK(), // 发现并提供所使用的 OpenTelemetry SDK 信息。
	resource.WithProcess(),      // 发现并提供当前进程信息。
	resource.WithOS(),           // 发现并提供操作系统信息。
	resource.WithContainer(),    // 发现并提供容器信息。
	resource.WithHost(),         // 发现并提供主机信息。
	resource.WithAttributes(attribute.String("foo", "bar")), // 添加自定义资源属性。
	// resource.WithDetectors(thirdparty.Detector{}), // 也可以使用你自定义的外部 Detector 实现。
)
if errors.Is(err, resource.ErrPartialResource) || errors.Is(err, resource.ErrSchemaURLConflict) {
	log.Println(err) // 记录非致命错误。
} else if err != nil {
	log.Fatalln(err) // 遇到致命错误,终止程序。
}