写点什么

OpenTelemetry 声明式配置迎来稳定性里程碑

作者:Matt Saunders
  • 2026-04-21
    北京
  • 本文字数:1517 字

    阅读完需:约 5 分钟

OpenTelemetry 项目宣布,其声明式配置规范的关键部分已经达到稳定状态。该可观测性框架针对遥测数据采集提供了一种供应商中立且语言无关的配置方式。InfoQ 近期曾经对此做过报道,包括 Airbnb 在内的一些知名企业正利用 OpenTelemetry 构建高流量指标管道,而 OpenTelemetry 项目组也发布了一篇“揭秘”文章来推动该框架的广泛采用。

 

最近的一篇博文中,Grafana Labs 首席工程师 Jack Berg 记录了相关变更。Berg 解释说,这个稳定版本的更新内容涵盖了数据模型的 JSON 模式、配置文件的 YAML 表示,以及配置数据的内存表示。

声明式配置模式有望成为整个项目中至关重要的跨语言用户级 API。

—— Jack Berg

 

公告指出,目前他们已经提供了五种语言的实现,分别是 C++、Go、Java、JavaScript 和 PHP。针对 .NET 和 Python 的实现仍在进行当中。Berg 强调,规范本身达到稳定状态是确保用户体验一致的最重要的一步。

 

Berg 解释说,声明式配置其中一个最大的优势在于,它允许在配置文件中定义遥测设置,而不是通过环境变量。他指出,这种方法为指定选项提供了更丰富的方式。新系统让用户可以使用声明式格式定义复杂的遥测管道,而且可以进行版本控制,并在团队间共享。

 

在一个地方就可以配置这三种可观测性信号,而过去,这往往需要在环境变量、SDK 程序化初始化代码和收集器配置之间来回切换。OpenTelemetry 的声明式配置格式改变了这一状况,它允许用户在一个 YAML 文件中定义 Trace 、指标和日志管道,SDK 会在启动时读取该文件。有一个实际的例子展示了用户如何通过单一文件格式配置资源属性、追踪提供程序、指标读取器和日志处理器,并随后通过环境变量 OTEL_CONFIG_FILE 将 SDK 指向该文件。

在最近一次 Grafana OpenTelemetry 社区电话会议上,与会者就声明式配置分享了更多见解。Grafana Labs OpenTelemetry JavaScript 审核员兼核心贡献者 Marylia Gutierrez 演示了声明式配置如何简化跨语言的配置过程。Gutierrez 解释说,在引入声明式配置之前,用户不得不依赖于环境变量,但环境变量无法满足复杂的配置需求。基于 YAML 的新方法提供了一种更稳健的结构,使用户能够在同一位置定义包含分层关系的所有设置。

 

这次会议有一场现场演示,展示了如何使用 Java 进行声明式配置。演示展示了用户如何配置自定义采样器,并根据属性模式指定哪些 Span 需要丢弃。Gutierrez 指出,通过环境变量实现这一功能同样需要编写自定义代码并使用单独的库。

 

这次会议还讨论了当前的语言支持情况。根据会议期间分享的兼容性矩阵,Java 和 PHP 已经完全符合基本要求。JavaScript 支持正在积极开发当中,并将陆续添加更多功能。Go 已经具备部分功能,但关于如何使用这些功能的文档正在更新之中。Python 支持功能也还在开发当中。

 

讨论还涉及远程和动态配置。Gutierrez 将其描述为一项未来功能,到时候,运维团队不用修改代码或重新部署,就可以推送配置变更来调整采样率或启用额外的监控功能。其愿景是:只需要推送 YAML 文件的变更,应用程序就可以自动获取并应用这些变更,而不需要重启。

 

OneUptime 还发布了一份关于如何使用声明式配置的详细指南。他们在博客上发布了一份教程,介绍配置文件的结构,包括资源属性、跟踪提供程序、指标读取器和日志记录提供程序。

Stabilising the schema is the most important thing for a stable user experience.确保 Schema 稳定是实现稳定的用户体验的关键所在。

—— Jack Berg

 

OpenTelemetry 项目组表示,他们将继续扩展对声明式配置的支持。动态配置(即允许在运行时更改遥测设置)尚在规划当中。

 

声明:本文为 InfoQ 翻译,未经许可禁止转载。

 

原文链接:https://www.infoq.com/news/2026/04/opentelemetry-declarative-config/