OpenTelemetry 项目前世今生
可观测开源技术从起源于 2010 年 Google 的 Dapper 论文,到目前为止也经历了非常多的演进和变化,让我们用 Tracing 的方式也来追踪一下,分布式链路追踪技术,以及 OpenTelmetry 项目的发展历程。
图片来源[1]
2010: Dapper
早在 2010 年,谷歌发表了一篇论文:Dapper,一种大规模分布式系统跟踪基础设施。谷歌在发布之前内部使用了该项目两年,并报告称:“Dapper 最重要的成功指标是它对开发和运营团队的有用性。”,“Dapper 最初是一个自包含的跟踪工具,但后来发展成为一个监控平台,使许多不同的服务和工具得以创建,其中一些是其设计者没有预料到的。” 这篇论文对分布式链路追踪技术产生了深渊的影响,后来的大多数项目都有借鉴这篇论文的思想。
2012: Zipkin
受 Dapper 启发的 Zipkin 由 Twitter 开发,并于 2012 年首次作为开源工具项目发布。它是一个分布式跟踪系统,用于收集和查找解决延迟问题所需的计时数据。
2014: Kubernetes
将 Kubernetes 排除在这个时间线之外是不对的——虽然它不是一个跟踪工具,但 Kubernetes 从根本上改变了我们所知道的计算方式。Kubernetes 加速了云原生项目的开发,这些项目使分布式系统和微服务架构成为可能,从而使跟踪成为一项重要的活动。
2015: Jaeger
2015 年,即 Zipkin 发布三年后,Uber 宣布开源发布 Jaeger,这是一个用于监控、分析和故障排除微服务的分布式跟踪系统。该项目被接受为云原生计算基金会 (CNCF) 的第 12 个托管项目,并于 2019 年移至毕业项目级别(最高级别)。
2015: OpenTracing
OpenTracing 被 CNCF 接受为其第三个托管项目(是的,它在 Jaeger 之前加入!)并专注于通过一致、富有表现力的、供应商中立的分布式跟踪和上下文传播 API 来使松耦合的微服务更容易管理。
2017: OpenCensus
OpenCensus 是来自谷歌的另一个项目,是一组用于各种语言的库,允许您收集应用程序指标和分布式跟踪,然后实时将数据传输到您选择的后端。然后可以分析数据以进行健康检查应用程序和调试问题。
2017: Apache Skywalking
该项目于 2015 年由吴晟创办,2017 年 12 月,Skywalking 加入 Apache 基金会,并于 2019 年 4 月毕业,并迅速成为国内非常流行的可观测平台。Apache SkyWalking 提供了分布式追踪,服务网格 Service Mesh 遥感数据分析,指标聚合和可视化等多种能力。项目覆盖范围,从一个单纯的分布式追踪系统,扩展为一个可观测性分析平台Observability Analysis Platform 和应用性能监控管理系统。
2019: OpenTelemetry
OpenCensus 和 OpenTracing 于 2019 年合并形成 OpenTelemetry。OpenTelemetry 为端到端分布式跟踪遥测提供了一个单一的、良好支持的集成表面。
OpenTelemetry 的联合发起人,Ben Sigelman 在博客[2] 中提到,如果要理解 OpenTelemetry 的一件事,那就是OpenTracing 和 OpenCensus 的领导层共同致力于将各自的社区迁移到这个单一且统一的倡议中。 虽然我们所有人都对如何从头开始重新开始有许多想法,但我们正在抵制这些冲动,而是专注于为我们的社区准备一个成功的过渡;我们合并的优先事项是明确的:
- 与 OpenTracing 和 OpenCensus 直接向后兼容(通过桥接的方式)
- 最小化 OpenTelemetry、OpenTracing 和 OpenCensus 共同开发的时间: 我们计划在 2019 年底之前将OpenTracing 和 OpenCensus 设置为“只读模式”。
- 再次简化和标准化可供开发人员使用的遥测解决方案。
在许多方面,将 OpenTelemetry 视为 OpenTracing 和 OpenCensus 的下一个主要版本是最准确的。就像任何版本的升级一样,我们将努力让新老最终用户都更容易使用,但我们认识到,生态系统的主要好处在于合并本身,而不是某个特定的闪亮的新功能,因此我们正在相应地优先考虑我们自己的努力。
2021 年,它发布了 V1.0.0,为客户端的跟踪部分提供稳定性保证。OpenTelemetry 现在是 CNCF 中快速增长的孵化项目,其活跃度仅此于 k8s,在 CNCF 基金会中名列第二。与此同时,OpenTracing 项目已被云原生计算基金会存档。维护人员当时表示:“在 OpenTracing 和 OpenCensus 合并为 OpenTelemetry 之后,存档 OpenTracing 一直是项目维护人员的意图。随着 OpenTelemetry 进入孵化阶段,OpenTracing 被提议作为存档项目,作为 OpenTelemetry 的前一个迭代,这应该有助于避免任何最终用户的混淆。”
2022:OpenTelemetry Tracing GA
分布式追踪是 OpenTelemetry 于2021年9月首次达到GA(General Availability)状态的信号。追踪API、SDK和协议规范都是稳定的。此外,许多编程语言的客户端库也已经达到或超过v1.0版本(这意味着追踪实现已经完成,实际上是GA),并实现了规范。在撰写本文时,这些 SDK 适用于 Java、Go、.Net、C++、JavaScript、Python、PHP、Ruby、Swift 和 Erlang,以及更多语言的版本
2022: OpenTracing 停止维护
2022 年 1 月,Austin Parker 在博客[7]中宣布 OpenTracing 项目完成归档处理。
2023: OpenCensus 停止维护
2023 年 5 月,来自 Google 的 Aaron Abbott 在一篇博客[4]中宣布 OpenCensus 项目。其提到,我们很高兴地宣布,OpenTelemetry 在 C++、.NET、Go、Java、JavaScript、PHP 和 Python 中达到了与 OpenCensus 的功能相同。 这些语言中的大多数都提供了 Tracing 和 Metrics SDK 的稳定版本,Go 和 PHP 即将推出。这意味着OpenTelemetry 可以收集和导出与 OpenCensus 相同级别的功能的遥测数据。除此之外,OpenTelemetry 还提供了一个更丰富的仪器库和导出器生态系统,以及一个活跃的开源社区。因此,我们将于 2023 年 7 月 31 日存档所有OpenCensus GitHub 存储库(census-instrumentation/opencensus-python1 除外)。 我们很高兴看到OpenTelemetry 的长期计划得以实现,并鼓励所有 OpenCensus 用户迁移到 OpenTelemetry。
2023: OpenTelemetry Metrics/Logs GA
在 2023 年的春天,OpenTelemetry Metrics 达到 GA 的状态。在 2023 年北美的 KubeCon 上,OpenTelemetry 项目的维护者宣布了 Logs 达到 GA 的状态。OTel 的日志记录现在已经达到了正式可用。这意味着 OTel 现在具有日志记录、指标和跟踪这三个可观察性遥测的支柱,都已准备好用于生产环境。这是 OTel 承诺提供统一的云原生遥测框架的实现。日志记录现在还可以在 OTel 上的多种语言中使用,并且 Java、.Net、C++ 和 PHP 的客户端库都是稳定的。
总的来说,OpenTelemetry 已经逐步成为可观测领域的事实标准,正在被越来越多的企业采纳和使用,也有越来越多的企业和开发者开始参与并贡献这个项目的开发中。未来随着更多的语言 SDK,自动埋点能力的提升,以及 Profiling 格式的标准化,还将会有更多的遥测数据的融合及发展。
参考引用:
- https://tracetest.io/blog/tracing-the-history-of-distributed-tracing-opentelemetry
- https://www.cncf.io/blog/2019/05/21/a-brief-history-of-opentelemetry-so-far/
- https://medium.com/opentracing/a-roadmap-to-convergence-b074e5815289
- https://opentelemetry.io/blog/2023/sunsetting-opencensus/
- https://opencensus.io/
- https://opentracing.io/
- https://medium.com/opentracing/opentracing-has-been-archived-fb2848cfef67