阿里巴巴、Datadog 和 Quesma 联手推出 Go 编译时插桩

标准只有被广泛采用才有意义,而只有当可用工具促进采用时,采用才是有效的。我想象一下,如果当初引入国际单位制(SI units)时,你必须自己制作称来称量东西的公斤数,它就不会那么受欢迎了!

如果您在 Go 中使用 OpenTelemetry,您将熟悉配置插桩库以自动从知名开源组件生成遥测数据的挑战。由于 Go 语言的编译特性,您目前有两种选择1

出于各种原因,以上两种选择在您的环境中可能都不可行或并非最佳。然而,情况即将改变!

行业协作是开放标准的核心

在过去的几个月里,OpenTelemetry 收到不止一个,而是两个来自行业领导者的捐赠提案,旨在为上述问题提供解决方案,并实现 Go 应用程序的零代码、供应商中立的编译时插桩。它们是:

我们非常感谢阿里巴巴和 Datadog 提出的这些捐赠提案。这继续表明了整个行业向 OpenTelemetry 定义的标准靠拢的趋势。

编译时插桩利用标准的 Go 工具链的 -toolexec 机制,在 Go 源代码被传递给 Go 编译器之前对其进行重写,在所有相关位置(包括依赖项和 Go 标准库)添加插桩。

本次公告最令人兴奋的部分是,最终不会是阿里巴巴或 Datadog 的解决方案“获胜”。本着开源协作的真正精神,这两家公司已决定联手并贡献必要的资源,来启动一个新的 Go 编译时插桩 SIG。其目标是提供一个统一的、供应商中立的方法,借鉴每个解决方案的最佳方面,并使整个社区受益。他们还将获得 Quesma 的进一步支持,Quesma 将带来在 instrgen 方面的经验。instrgen 是 OpenTelemetry 最初的实验性方法,用于提供基于 -toolexec 的 Go 编译时插桩,它将被 SIG 的初步工作所取代。

从长远来看,该 SIG 将专注于:

  • 开发编译器插件或增强功能,自动注入插桩代码,确保最低的运行时性能开销和与现有 Go 项目的兼容性。
  • 提供与 OpenTelemetry 和其他监控框架一致的标准化插桩模式。

如果您有兴趣贡献,或者只是想了解更多信息,以下是有关 SIG 的一些有用信息:

我们期待看到这个新 SIG 的运作,并迫不及待地希望看到这次了不起的合作成果!


  1. 除非您想“自己制作称”,或者 OTel 的等效项,即手动插桩第三方库。↩︎