目录
序 1
前言 5
第1章 分布式追踪的问题 17
1.1 分布式追踪部署的组件 19
1.2 分布式追踪,微服务,Serverless,怎么办 20
1.3 追踪的收益 22
1.4 设定基调22
第2章 埋点的本质 25
2.1 白盒vs黑盒 26
2.2 应用程序vs系统 29
2.3 代理vs库 31
2.4 传播上下文 32
2.4.1 进程间传播 35
2.4.2 进程内传播 37
2.5 分布式追踪的轮廓 40
2.5.1 亲近追踪的微服务和Serverless 40
2.5.2 在单体应用中追踪 42
2.5.3 在Web和移动客户端中追踪 44
第3章 开源的埋点处理:接口、库和框架 47
3.1 抽象埋点的重要性 48
3.2 OpenTelemetry 50
3.3 OpenTracing和OpenCensus 60
3.3.1 OpenTracing 60
3.3.2 OpenCensus 65
3.4 其他值得注意的格式和项目 70
3.4.1 X-Ray 70
3.4.2 Zipkin 71
3.5 互操作性和迁移策略 72
3.6 为什么使用开源埋点 75
3.6.1 互操作性 75
3.6.2 可移植性 76
3.6.3 生态系统与隐式可见性 76
第4章 埋点的最佳实践 79
4.1 追踪的示例 79
4.1.1 安装示例应用程序 80
4.1.2 添加基本的分布式追踪 80
4.1.3 自定义埋点 88
4.2 从何处着手——节点和边缘 90
4.2.1 框架埋点 91
4.2.2 服务网格埋点 94
4.2.3 创建服务拓扑图 95
4.3 span包含哪些内容 98
4.3.1 有效命名 98
4.3.2 有效标记 99
4.3.3 有效记录日志 100
4.3.4 了解性能的注意事项102
4.4 追踪驱动开发 104
4.4.1 使用追踪数据开发 105
4.4.2 使用追踪数据测试 109
4.5 创建埋点计划 111
4.5.1 识别埋点的应用场景 111
4.5.2 埋点的质量清单 113
4.5.3 了解何时停止埋点 115
4.5.4 理智且持续的添加埋点 117
第5章 部署追踪 119
5.1 在组织架构中采用分布式追踪 120
5.1.1 贴近你的用户 120
5.1.2 从中心着手:负载均衡器以及网关 121
5.1.3 利用基础设施:RPC 框架和服务网格 122
5.1.4 可复用的采用 123
5.2 追踪器架构 124
5.2.1 进程内的库 126
5.2.2 边车和代理 126
5.2.3 收集器 127
5.2.4 中心化存储和分析 129
5.2.5 增量部署 130
5.3 数据来源、安全性和联合 131
5.3.1 前端服务的遥测数据 131
5.3.2 服务器端的遥测数据 135
5.4 总结 136
第6章 开销、成本、采样 137
6.1 应用程序开销 138
6.1.1 延迟 138
6.1.2 吞吐量 140
6.2 基础设施成本 142
6.2.1 网络 143
6.2.2 存储 143
6.3 采样 144
6.3.1 下限 145
6.3.2 策略 145
6.3.3 选择追踪数据 150
6.4 现成的ETL解决方案 152
6.5 总结 153
第7章 新的可观测性计分卡 155
7.1 定义三大支柱 156
7.1.1 指标 156
7.1.2 日志 158
7.1.3 分布式追踪 159
7.2 三大支柱的致命弱点 161
7.2.1 设计目标 161
7.2.2 评估三大支柱 162
7.2.3 三根管道(而非支柱) 164
7.3 可观测性的目标和活动 165
7.3.1 可观测性的两个目标166
7.3.2 可观测性中的两个基本活动 167
7.3.3 新的计分卡 169
7.3.4 前路 172
第8章 改善基线性能 175
8.1 测量性能 176
8.1.1 百分位数 178
8.1.2 直方图 180
8.2 定义关键路径 182
8.3 改善性能的方法 185
8.3.1 单条追踪数据 185
8.3.2 偏差采样和比较追踪 188
8.3.3 搜索追踪 190
8.3.4 多模态分析 191
8.3.5 聚合分析 193
8.3.6 相关性分析 195
8.4 总结 199
第9章 恢复基线性能 201
9.1 界定问题 202
9.2 人为因素 204
9.2.1 (避免)相互指责 204
9.2.2 “压制”信使 205
9.2.3 移交事故 206
9.2.4 良好的事后总结 206
9.3 恢复性能的方法 207
9.3.1 与告警工作流集成 208
9.3.2 单条追踪数据 209
9.3.3 偏差采样 210
9.3.4 实时响应 211
9.3.5 怎样才算正常 214
9.3.6 聚合并分析相关根因 218
9.4 总结 221
第10章 我们实现目标了吗 223
10.1 分布式追踪:一段实用主义的历史 224
10.1.1 基于请求的系统 224
10.1.2 响应时间问题 224
10.1.3 面向请求的信息 224
10.2 著名的作品 225
10.2.1 Pinpoint 225
10.2.2 Magpie 226
10.2.3 X-Trace 227
10.2.4 Dapper 228
10.3 下一步 229
第11章 单个请求之外 231
11.1 聚合追踪数据的价值 233
11.1.1 示例1:网络阻塞会影响应用程序吗 233
11.1.2 示例2:API端点依赖哪些服务 233
11.2 组织数据 234
11.3 权衡 236
11.4 为聚合分析采样 237
11.5 处理管道 237
11.6 纳入异构数据 239
11.7 自定义函数 239
11.8 要点回顾与案例研究 241
11.8.1 聚合追踪数据的价值 242
11.8.2 组织数据 242
11.8.3 为聚合分析采样 242
11.8.4 处理管道 243
11.8.5 纳入异构数据 243
第12章 span之外 245
12.1 span成为主流的原因 245
12.1.1 可见性 245
12.1.2 实用主义 246
12.1.3 可移植性 246
12.1.4 兼容性 247
12.1.5 灵活性 247
12.2 为什么只有span还不够 247
12.2.1 是图而非树248
12.2.2 请求间依赖249
12.2.3 解耦依赖 250
12.2.4 分布式数据流 252
12.2.5 机器学习 252
12.2.6 底层性能指标 254
12.3 新的抽象 255
12.4 理清因果关系 256
第13章 分布式追踪之外 259
13.1 分布式追踪的局限性 260
13.1.1 挑战1:预测问题 261
13.1.2 挑战2:完整VS成本 262
13.1.3 挑战3:开放式用例 262
13.2 其他类似分布式追踪的工具 263
13.3 Census 263
13.3.1 启发性示例264
13.3.2 分布式追踪解决方案 265
13.3.3 标记传播和本地指标聚合 266
13.3.4 与分布式追踪对比 267
13.4 Pivot Tracing 268
13.4.1 动态埋点 268
13.4.2 反复出现的问题 269
13.4.3 工作原理 269
13.4.4 动态上下文270
13.4.5 与分布式追踪对比 271
13.5 Pythia 271
13.5.1 性能回归 272
13.5.2 设计 273
13.5.3 开销 273
13.5.4 与分布式追踪的比较 274
13.6 总结 274
第14章 上下文传播的未来 277
14.1 横切工具 277
14.2 用例 278
14.2.1 分布式追踪278
14.2.2 跨组件指标279
14.2.3 跨组件资源管理 279
14.2.4 管理数据质量的权衡 280
14.2.5 微服务的故障测试 281
14.2.6 跨系统的强一致性 282
14.2.7 复制请求 282
14.2.8 流处理系统中的记录Lineage 283
14.2.9 审计安全策略 283
14.2.10 生产测试 283
14.3 公共主题 283
14.4 你需要在意这些内容吗 284
14.5 Tracing Plane 285
14.5.1 行李够用吗286
14.5.2 键值对之外287
14.5.3 编译BDL 289
14.5.4 行李上下文290
14.5.5 合并 290
14.5.6 开销 291
14.6 总结 291
附录A 近年来分布式追踪的近况 293
附录B 上下文传播 299
参考文献 305
· · · · · · (
收起)
还没人写过短评呢