可观测性对于构建、更改和理解驱动复杂现代系统的软件至关重要。应用可观测性的团队能够快速、从容地发布代码,识别异常值和异常行为,并了解每个用户的体验。本书基于最新的可观测性理论和实践,全面介绍了可观测性的概念、原理和技术方法。同时,本书还深入探讨了可观测性工程的设计、实施和优化过程,包括监控、日志管理、故障排查等方面。本书的内容权威性强,具有很高的参考价值和实用性。
来自Honeycomb公司的三位作者解释了良好的可观测性由哪些要素构成,展示了如何利用可观测性改进现有的工作,并结合具体案例阐释了实施可观测性面临的常见挑战及有效解决方案,提供了从传统工具(如度量工具、监控工具和日志管理工具)迁移的实际注意事项,还解释了可观测性与组织文化的相互影响。
学完本书,你将了解:
*可观测性概念如何应用于大规模软件管理。
* 在交付复杂的云原生应用和系统时实践可观测性的价值。
*可观测性对整个软件开发生命周期的影响。
* 不同职能团队如何以及为什么在SLO(服务水平目标)中使用可观测性。
*如何测试代码以帮助未来的工程师理解你今天编写的代码。
*如何为上下文感知的系统调试和系统维护生成高质量的代码。
*数据丰富的分析如何帮助你调试难以捉摸的问题。
目录
序1
前言3
第一部分 可观测性的路径
第1章 什么是可观测性11
1.1 可观测性的数学定义11
1.2 把可观测性应用到软件系统12
1.3 关于软件可观测性的错误描述14
1.4 为什么现在可观测性很重要15
1.5 使用指标进行调试与使用可观测性进行调试的对比18
1.6 使用可观测性进行调试21
1.7 可观测性适用于现代系统22
1.8 结论23
第2章 可观测性和监控之间的调试实践有何不同24
2.1 监控数据如何用于调试24
2.2 可观测性如何实现更好的调试30
2.3 结论31
第3章 不通过可观测性扩展系统的经验教训32
3.1 关于Parse的介绍32
3.2 Parse的扩展实践33
3.3 向现代系统演进36
3.4 向现代化实践变革38
3.5 在Parse的转变实践39
3.6 结论42
第4章 可观测性与DevOps、SRE和云原生的关联43
4.1 云原生、DevOps和SRE简介43
4.2 可观测性:调试方式的过去与现在45
4.3 可观测性增强了DevOps和SRE的实践45
4.4 结论47
第二部分 可观测性基础
第5章 结构化事件—可观测性的构建块51
5.1 通过结构化事件进行调试51
5.2 指标作为构建块的局限性52
5.3 传统日志作为构建块的局限性54
5.4 在调试中有用的事件属性56
5.5 结论57
第6章 将事件拼接成链路58
6.1 分布式链路追踪及其重要性58
6.2 链路追踪的组件59
6.3 硬编码探针构建链路追踪61
6.4 将自定义字段添加到链路span64
6.5 将事件拼接到链路中66
6.6 结论67
第7章 遵照OpenTelemetry的探针68
7.1 探针简介68
7.2 开源探针标准69
7.3 使用基于代码的示例的探针69
7.4 结论75
第8章 通过事件分析实现可观测性77
8.1 从已有条件调试77
8.2 从第一性原理调试79
8.3 AIOps的误导性承诺84
8.4 结论85
第9章 可观测性和监控的融合86
9.1 监控适合的地方86
9.2 可观测性适合的地方87
9.3 系统与软件注意事项88
9.4 评估你的组织需求89
9.5 结论92
第三部分 团队的可观测性
第10章 在团队中应用可观测性实践95
10.1 参与社区95
10.2 从最大的痛点着手96
10.3 购买代替自建97
10.4 反复完善你的探针99
10.5 温和改进,积极复用100
10.6 全力冲刺101
10.7 结论102
第11章 可观测性驱动开发103
11.1 测试驱动开发103
11.2 软件开发生命周期中的可观测性104
11.3 从哪里开始调试105
11.4 微服务时代的调试106
11.5 探针如何提高可观测性107
11.6 可观测性左移108
11.7 利用可观测性加快软件交付108
11.8 结论110
第12章 使用SLO来提高可靠性111
12.1 传统监控方法造成危险的告警疲劳111
12.2 阈值告警只适用于“已知的未知”情况112
12.3 用户体验是一颗北极星114
12.4 什么是SLO115
12.5 结论120
第13章 处理和调试基于SLO的告警121
13.1 在错误预算消耗完之前发出告警121
13.2 将时间定义成一个滑动窗口123
13.3 预见性地创建预测消耗告警124
13.4 使用SLO与时间序列数据的可观测性数据134
13.5 结论136
第14章 可观测性与软件供应链137
14.1 为什么Slack需要可观测性139
14.2 探针:共享客户端库和维度140
14.3 案例研究:软件供应链的运营143
14.4 结论148
第四部分 大规模可观测性
第15章 自建与购买以及投资回报率151
15.1 如何分析可观测性的投资回报率151
15.2 自建的真实成本152
15.3 购买软件的真实成本156
15.4 购买与自建不是二元选择159
15.5 结论160
第16章 高效的数据存储161
16.1 可观测性的功能要求161
16.2 案例研究:Honeycomb的列式数据存储实现168
16.3 结论177
第17章 如何使采样精准且便宜179
17.1 使用采样策略来优化数据采集179
17.2 使用不同的采样策略180
17.3 将采样策略转化为代码183
17.4 结论193
第18章 使用流水线进行遥测管理195
18.1 遥测流水线的属性196
18.2 管理一个遥测流水线:解剖200
18.3 管理遥测流水线时的挑战202
18.4 用例:Slack的遥测管理204
18.5 开源替代方案207
18.6 管理遥测流水线:自建与购买208
18.7 结论208
第五部分 传播可观测性文化
第19章 可观测性的商业案例211
19.1 被动引入变更的方法211
19.2 可观测性的投资回报213
19.3 主动引入变更的方法214
19.4 将可观测性引入实践215
19.5 使用合适的工具216
19.6 知道何时你有足够的可观测性218
19.7 结论219
第20章 可观测性利益相关方和联盟 220
20.1 识别非工程可观测性需求220
20.2 在实践中创建可观测性同盟222
20.3 使用可观测性与商业智能工具225
20.4 在实践中结合使用可观测性和商业智能工具227
20.5 结论228
第21章 可观测性成熟度模型229
21.1 关于成熟度模型的说明229
21.2 为什么可观测性需要成熟度模型230
21.3 关于可观测性成熟度模型231
21.4 可观测性成熟度模型中的能力参考232
21.5 在你的组织中使用可观测性成熟度模型237
21.6 结论238
第22章 未来发展趋势239
22.1 可观测性的过去与现在239
22.2 其他资源241
22.3 可观测性发展方向的预测242