教授云原生开发者如何使用 OpenTelemetry 通过分布式跟踪探索他们的服务。
译自 OTel 101: Build Observability Skills with Hands-on Workshops,作者 Paige Cruz。
我们正处于向开放、可扩展和可观测世界转变的构造性变革之中。随着每个拉取请求,“一次检测,随处观察”的梦想比以往任何时候都更加接近。分布式跟踪尤其具有独特优势,可以帮助开发人员了解和理解他们正在构建和操作的云原生服务的复杂性:能够跨分布式微服务环境跟踪事务具有难以置信的价值。
然而,自分布式跟踪引入以来,许多跟踪计划在十多年间都步履蹒跚,并且一直保持着作为超级工程师工具的声誉。在我看来,跟踪本身并不是问题。早期工具很复杂,因此跟踪的实用性集中在少数高级用户上。
但是,由单个站点可靠性工程 (SRE) 团队领导和执行的跟踪计划将无法蓬勃发展。为了让团队充分发挥跟踪数据的潜力,每个开发人员都必须能够使用跟踪工具。这意味着要学习从一开始如何发出数据到如何使用该数据的所有内容。
我尝试了许多策略来帮助开发人员培养分析和利用跟踪以更好地理解系统行为和为决策提供依据的技能。最成功的计划是实践研讨会,例如我在芝加哥举行的 KubeCon North America 2023 上关于 OpenTelemetry (OTel) 和跟踪的研讨会。我的课程 OpenTelemetry 101:让我们插桩! 旨在让开发人员迈出跟踪的第一步。
我渴望帮助尽可能多的开发人员踏上他们的跟踪之旅,因此本文分享了开发研讨会的幕后花絮,包括:
该研讨会专为跟踪新手设计,我希望参加者能够掌握将跟踪应用到他们自己的项目所需的知识和技能。实现这种独立性意味着我只有几个小时的时间来介绍基本的可观测性概念;概述 OpenTelemetry 及其各种子项目;为参加者提供大量机会来培养他们的检测能力并思考在何处、何时以及如何添加跨度;并在他们对跟踪中的详细程度感到满意之前帮助他们验证结果数据。
一次性引入所有这些内容,即使是最经验丰富的开发人员也会不知所措,所以我将其分解为三个主要部分:
许多人会在工作中非正式地学习可观测性。这可能导致误解,例如将特定于供应商的产品名称与可观测性概念混淆。这就是我每次可观测性培训课程都从术语和概念的快速水平设置开始的原因。即使是一句定义也能澄清问题:
在定义了关键术语后,我开始概述 OpenTelemetry (OTel),涵盖组件、协议和社区的高级内容。我忍不住想详细介绍它的历史、开发和每个组件,但我没有这么做。相反,我转向学习目标寻求指导。开发人员真的有必要了解 收集器 才能自信地使用 OpenTelemetry 检测跟踪吗?不。因此,我在收集器上添加了一张幻灯片,简要解释了它在生态系统中的作用。随着他们继续学习之旅,这让人们对收集器有了初步的了解。
在这一点上,参与者已经有了足够的基础来开启吸引他们的实际主题:插桩跟踪。
此研讨会的设计考虑了会议受众,因此我介绍了检测的所有三种方法:自动、编程和手动。
在学习体验的早期阶段,为人们提供快速获胜的机会以建立信心并保持他们的参与度非常重要,因此我从自动检测开始。为了保持简单,我教授了如何为跟踪配置 console_exporter
并探索跨度的文本表示。根据我的经验,这种动手实践方法比展示带有相同跨度的幻灯片并对它的每一部分进行讲解更有效。对于我想传授的每项技能或知识点,找到一种动手实践的方式让参与者通过实践学习非常重要,而不是听我讲课。
转向编程和手动方法提供了更多练习和加强学习者检测技能的机会。他们重复了相同的工作流——规划检测位置、添加检测代码、运行程序以生成跟踪,然后验证跟踪数据是否重复——一遍又一遍。
跟踪的真正价值来自你使用它的所有方式。它有助于更好地理解系统中发生的事情,并让你为下一个主题做好准备。
能够检测和发送跟踪是第一步,但研讨会的巅峰是学习如何查询、可视化、解释和分析跟踪数据。这为最终的新组件 Jaeger 打开了大门。
Jaeger 与 OpenTelemetry 一样,有着悠久而丰富的历史,但这与实现学习目标没有直接关系。因此,我专注于如何与跟踪瀑布、拓扑图进行交互以及解释跟踪散点图,而不是操作 Jaeger 和在生产中使用它的细节。
我希望我分享开发这个 OTel 101 研讨会背后的思考过程能激励你举办你自己的研讨会。我的研讨会是为广泛的开源开发者设计的(想想 KubeCon),所以我必须在一定限制内工作。为公司同事设计研讨会将让每个人都能从关于你的业务和技术栈的共享背景中受益。以下是我概括的要点。
在云原生可观测性方面,每个开发者都应该能够使用分布式跟踪来探索他们的服务。如果你正在着手一项引入跟踪或重启停滞的跟踪工作的新举措,请考虑精心设计的培训如何提供帮助。