前言

软件开发的模式又一次改变了。开源软件和公有云供应商已经从根本上改变了我们构建和部署软件的方式。有了开源软件,我们的应用不再需要从头开始编码。而通过使用公有云供应商,我们不再需要配置服务器或连接网络设备。所有这些都意味着,你可以在短短几天甚至几小时内从头开始构建和部署一个应用程序。

但是,仅仅因为部署新的应用程序很容易,并不意味着操作和维护它们也变得更容易。随着应用程序变得更加复杂,更加异质,最重要的是,更加分布式,看清大局,以及准确地指出问题发生的地方,变得更加困难。

但有些事情并没有改变:作为开发者和运维,我们仍然需要能够从用户的角度理解应用程序的性能,我们仍然需要对用户的事务有一个端到端的看法。我们也仍然需要衡量和说明在处理这些事务的过程中资源是如何被消耗的。也就是说,我们仍然需要可观测性。

但是,尽管对可观测性的需求没有改变,我们实施可观测性解决方案的方式必须改变。本报告详细介绍了关于可观测性的传统思维方式对现代应用的不足:继续将可观测性作为一系列工具(尤其是作为 “三大支柱”)来实施,几乎不可能以可靠的方式运行现代应用。

OpenTelemetry 通过提供一种综合的方法来收集有关应用程序行为和性能的数据,包括指标、日志和跟踪,来解决这些挑战。正如本报告所解释的,OpenTelemetry 是一种生成和收集这些数据的新方法,这种方法是为使用开源组件构建的云原生应用而设计的。

事实上,OpenTelemetry 是专门为这些开源组件设计的。与供应商特定的仪表不同,OpenTelemetry 可以直接嵌入到开放源代码中。这意味着开源库的作者可以利用他们的专业知识来添加高质量的仪表,而不需要在他们的项目中增加任何解决方案或供应商特定的代码。

OpenTelemetry 对应用程序所有者也有好处。在过去,遥测的产生方式与它的评估、存储和分析方式相联系。这意味着,选择使用哪种可观测性解决方案必须在开发过程的早期完成,并且在之后很难改变。OpenTelemetry(就像它的前身 OpenTracing 和 OpenCensus 一样)将你的应用程序产生遥测的方式与遥测的分析方式相分离。

因此,当我们采用新技术时,我们往往没有考虑到该技术将如何被使用,特别是它将如何被不同角色的人使用。本报告描述了 OpenTelemetry 如何满足库作者、应用程序拥有者、运维和响应者的需求,以及它如何使这些角色中的每个人都能独立工作 —— 即自动做出关键决定并进行有效协作。

也许最重要的是,OpenTelemetry 为应用程序所有者和操作者提供了灵活性,使他们能够选择最适合其应用程序和组织需求的可观测性解决方案,包括需要多种工具的情况。它还包括这些需求随时间变化的情况,以及需要新的工具来满足这些需求的情况,因为随着技术的成熟和组织的发展,可能会出现这种情况。

虽然用户不需要致力于可观测性解决方案,但他们确实需要投资于生成遥测数据的一致方式。本报告展示了 OpenTelemetry 是如何被设计成范围狭窄、可扩展,而且最重要的是稳定的:如果你被要求进行这种投资,这正是你所期望的。

与以往任何时候相比,可观测性都不能成为事后的想法。没有一个有效的可观测性解决方案的风险,也就是说,无法了解你的应用程序中正在发生的事情的风险是非常高的,而对可观测性采取错误的方法的成本会造成你的组织多年来一直在偿还的债务。无论是长时间停机,还是开发团队被无休止的供应商迁移所困扰,你的组织的成功都取决于像 OpenTelemetry 这样的集成和开放的方法。

本报告提供了关于在你的组织中采用和管理 OpenTelemetry 的实用建议。它将使你开始走向成功的可观测性实践的道路,并释放出云原生和开源技术的许多真正的好处:你不仅能够快速建立和部署应用程序,而且能够可靠和自信地运行它们。

—— Daniel “Spoons” Spoonhower Lightstep