前言
感谢你阅读我们就现代软件系统可观测性工程所写的这本书。我们的目标是帮助你在工程团队内开展可观测性实践。本书融合了我们在可观测性实践和工具(这些工具可以提升用户的可观测性实践)开发方面的经验。
作为在软件工程中推动可观测性实践的倡导者,我们希望本书能够清晰地阐明可观测性在现代软件系统背景下的含义——“可观测性”一词最近在软件开发生态系统中得到了广泛应用。本书旨在通过对以下内容进行深入分析,帮助你将事实与炒作区分开来:
• 在软件交付和运营的背景下,可观测性的含义。
• 构建基础组件来实现可观测性。
• 可观测性对团队动力的影响。
• 可观测性规模化的考虑因素。
• 在组织中建立可观测性文化的实用方法。
目标读者
可观测性主要关注如何更好地理解现实世界软件的运行方式。因此,本书对负责开发生产应用程序的软件工程师非常有用。当然,任何支持在生产中运行软件的人都会从本书中受益。
此外,对于想了解可观测性实践如何为组织带来好处的软件交付和运营团队经理,本书(特别是侧重于团队动力、文化和规模的章节)将为他们提供有益参考。
任何帮助团队交付和运营生产软件的人(例如产品经理、支持工程师和利益相关者),以及对“可观测性”这一新事物感到好奇和存疑的人,都会从本书受益。
为什么写这本书
可观测性已成为一个热门话题,并广受关注。随着它的普及,“可观测性”不幸被误作“监控”或“系统遥测”的同义词。可观测性是软件系统的一个特征。而且,只有当团队采用新的实践进行持续开发时,才能在生产软件系统中有效利用这一特征。因此,将可观测性引入系统既是一个技术挑战,也是一个文化挑战。
我们对可观测性话题充满热情,而且直言不讳。我们对它如此热衷,以至于成立了一家公司,致力于将可观测性力量带给所有管理生产软件的团队。我们率先推出了一类新的可观测性工具,其他供应商也纷纷效仿。
虽然我们都为Honeycomb工作,但写这本书并不是为了向你出售工具,而是为了解释我们如何以及为什么将可观测性的原始概念应用于管理现代软件系统。你可以使用不同的工具以不同的方式实现可观测性。然而,我们相信依据我们在软件行业推进可观测性实践所做出的贡献和积累的经验,我们可以编写一份详细描述常见挑战和有效解决方案的实践指南。无论你选择何种工具,你都可以应用本书中的概念来动手构建具有可观测性的生产软件系统。
本书旨在让你了解使用可观测性管理生产软件系统的团队所面临的各种考虑因素和挑战。有时,我们可能会以Honeycomb为例来说明如何应对共同的挑战。这些不是对Honeycomb的认可,而是对抽象概念的实际说明。我们的目标是向你介绍工作原则,不管你使用什么工具都可以在其他环境中应用这些原则。
你将学到什么
首先,你将了解什么是可观测性、如何识别可观测系统,以及为什么可观测性最适合管理现代软件系统。你还将了解可观测性与监控之间的区别,以及为什么和何时需要不同的方法。你还将了解为什么行业趋势有助于普及对可观测性的需求,以及它如何适应新兴生态系统,如云原生生态系统。
然后,我们将介绍可观测性的基本原理。我们将研究为什么结构化事件是可观测系统的构建块,以及如何将这些事件拼接成链路(trace)。事件是由内置在软件中的遥测技术生成的,你将了解开源计划,如OpenTelemetry,这些计划有助于启动探测过程。你将了解基于数据的调查过程(用于定位可观测系统中的问题来源),以及它与传统监控中使用的基于直觉的调查过程有何实质性差异。你还将了解可观测性和监控如何共存。
在了解了这些基本的技术概念之后,你将了解随着可观测性的采用而出现的社会和文化因素。在生产环境中管理软件是一项团队运动,你将了解如何使用可观测性来更好地塑造团队动力。你还将了解可观测性如何融入业务流程、如何影响软件供应链,以及如何揭示隐藏的风险。当我们研究如何使用服务水平目标(SLO)来实现更有效的告警时,你还会了解如何将这些技术和社会概念付诸实践,并深入了解为什么在使用可观测性数据时,告警既可操作又可调试。
接着,你将了解大规模实施可观测性解决方案时面临的固有挑战。我们将首先介绍你在决定是否购买或构建可观测性解决方案时应考虑的因素。可观测性解决方案的一个基本性质是,它们必须在迭代研究期间提供快速答案。因此,我们将向你展示如何在管理超大数据集时解决高效数据存储和检索的固有挑战。你还将了解何时引入事件采样等解决方案,以及如何在权衡中找到适合你的需求的正确方法。你还将学习如何使用遥测流水线管理大量数据。
最后,我们将探讨采用可观测性文化的组织方法。除了向团队介绍可观测性之外,你还将学习跨整个组织扩展可观测性实践的实用方法。你将学习如何识别关键利益相关者并与之合作,如何使用技术方法赢得合作伙伴,并为采用可观测性实践提供商业案例。
我们大约3年前就开始写这本书,之所以花了这么长时间才出版,部分是因为可观测性领域正在迅速变化,实践也在不断进步。
排版约定
本书中使用以下排版约定:
斜体(Italic)
表示新的术语、URL、电子邮件地址、文件名和文件扩展名。
等宽字体(Constant width)
用于程序清单,以及段落中的程序元素,例如变量名、函数名、数据库、数据类型、环境变量、语句以及关键字。
该图示表示一般性说明。
示例代码
可以从https://oreil.ly/7IcWz下载补充材料(示例代码、练习、勘误等)。
这里的代码是为了帮助你更好地理解本书的内容。通常,可以在程序或文档中使用本书中的代码,而不需要联系O’Reilly获得许可,除非需要大段地复制代码。例如,使用本书中所提供的几个代码片段来编写一个程序不需要得到我们的许可,但销售或发布本书的示例代码则需要获得许可。引用本书的示例代码来回答问题也不需要许可,将本书中的很大一部分示例代码放到自己的产品文档中则需要获得许可。
非常欢迎读者使用本书中的代码,希望(但不强制)注明出处。注明出处时包含书名、作者、出版社和ISBN,例如:
Observability Engineering,作者Charity Majors、Liz Fong-Jones和George Miranda,由O’Reilly出版,书号978-1-492-07644-5
如果读者觉得对示例代码的使用超出了上面所给出的许可范围,欢迎通过permissions@oreilly.com联系我们。
O’Reilly在线学习平台(O’Reilly Online Learning)
40多年来,O’Reilly Media致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。
我们拥有独一无二的专家和革新者组成的庞大网络,他们通过图书、文章、会议和我们的在线学习平台分享他们的知识和经验。O’Reilly的在线学习平台允许你按需访问现场培训课程、深入的学习路径、交互式编程环境,以及O’Reilly和200多家其他出版商提供的大量文本和视频资源。有关的更多信息,请访问http://oreilly.com。
如何联系我们
对于本书,如果有任何意见或疑问,请按照以下地址联系本书出版商。
美国:
O’Reilly Media,Inc.
1005 Gravenstein Highway North
Sebastopol,CA 95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司
要询问技术问题或对本书提出建议,请发送电子邮件至errata@oreilly.com.cn。
本书配套网站https://oreil.ly/observability-engineering上列出了勘误表、示例以及其他信息。
关于书籍、课程、会议和新闻的更多信息,请访问我们的网站https://www.oreilly.com。
我们在LinkedIn上的地址:https://linkedin.com/company/oreilly-media
我们在Twitter上的地址:https://twitter.com/oreillymedia
我们在YouTube上的地址:https://www.youtube.com/oreillymedia
致谢
如果没有Honeycomb领导的支持,本书是不可能完成的,感谢Christine Yen、Deirdre Mahon和Jo Ann Sanders。如果没有合作者利用业余时间不眠不休地相互督促,本书也不可能出版,感谢Rebekah Howard、Elly Fong-Jones和Dino Miranda。如果没有他们的努力,这本书可能还处在筹划阶段。
我们要特别感谢其他贡献者,他们通过分享不同的观点和专业知识,使本书的内容更加充实。第16章是由Ian Wilkes(Honeycomb Retriever引擎的作者,该引擎是案例研究的基础)和Joan Smith(审查参考外部文献的技术准确性)促成的。第14章由Frank Chen撰写,第18章由Suman Karumuri和Ryan Katkov撰写,感谢他们分享了他们在Slack用可观测性管理超大规模应用程序所获得的知识和经验教训。非常感谢Rachel(pie)Perkins对本书早期几章的贡献。感谢Honeycomb许多员工的大力支持,这些年来,他们帮助我们探索了通过可观测性所能实现的效果。
最后,感谢众多的外部审校者:Sarah Wells、Abby Bangser、Mads Hartmann、Jess Males、Robert Quinlivan、John Feminella、Cindy Sridharan、Ben Sigelman以及Daniel Spoonh-ower。在整个创作过程中,我们不断修改,纳入了更广泛的观点,并重新审视了概念。尽管我们都为Honeycomb工作,但我们的目标始终是编写一本客观而全面的书,详细说明可观测性在实践中是如何工作的,而不管具体的工具选择。感谢我们的审校者保证了本书的客观性,并帮助我们完善和丰富了本书的表述。