Software Telemetry
作者: Jamie Riedesel
语言: 英文
出版年份: 2021
下载链接:
书籍均收集自互联网,仅供学习和研究使用,请莫用于商业用途。谢谢合作。

书籍摘要

Software Telemetry: Reliable logging and monitoring

书籍定位

《Software Telemetry: Reliable logging and monitoring》是一本专注于软件遥测系统架构与设计的权威指南,由Dropbox资深工程师Jamie Riedesel撰写。本书系统性地介绍了现代软件系统中从数据采集到展示的完整遥测流水线,涵盖了集中式日志、安全信息事件管理(SIEM)、指标系统和分布式追踪四大遥测风格。不同于传统的单一技术书籍,本书从架构师视角出发,深入探讨了telemetry pipeline的设计原则、性能优化和实际应用场景,为构建可靠、高效、可扩展的监控和日志系统提供了全面指导。

核心内容(章节描述)

本书分为三大部分,共18个章节和3个附录,内容结构严谨,层层递进:

第一部分:遥测系统架构(第1-7章)

  1. 第1章:引言 - 定义软件遥测系统的核心概念,介绍四种遥测风格:集中式日志、安全信息事件管理(SIEM)、指标系统和分布式追踪,为全书建立统一术语体系。
  2. 第2-5章:遥测流水线三阶段 - 详细描述遥测流水线的三个主要阶段:发射(emitting)、运输(shipping)和展示(presentation)。第2章专注于发射阶段,展示如何从代码中生成遥测数据;第3章探讨运输阶段,介绍如何将数据从源头传输到存储系统;第4章深入运输阶段的技术细节;第5章聚焦展示阶段,讲解如何有效呈现和分析遥测数据。
  3. 第6章:遥测转换与标记 - 探讨在遥测流水线各阶段对数据进行的转换和标记操作,包括数据格式转换、字段添加和上下文丰富等技术。
  4. 第7章:多租户概念 - 介绍多租户遥测系统的设计原理,解释为何需要多租户架构以及它如何改变遥测系统的设计决策。

第二部分:应用场景回顾(第8-10章)

  1. 第8章:云原生SaaS公司的演进 - 追踪一个基于云的SaaS公司从初创到企业级规模过程中遥测系统的演变,展示从完全依赖云提供商仪表板到内部自建系统的完整转型路径。
  2. 第9章:内部软件开发组织 - 分析仅开发内部使用软件的组织中遥测系统的应用,探讨办公室IT环境下遥测使用方式的变化以及内部开发引入后的扩展。
  3. 第10章:传统计算环境 - 深入大型机等传统计算环境中的遥测应用,展示这些环境虽然技术不同,但遥测使用的基本原则与现代化系统相似。

第三部分:遥测处理技术(第11-18章)

  1. 第11章:正则表达式优化 - 系统讲解遥测系统中正则表达式的性能优化技术,包括模式设计、引擎选择和缓存策略。
  2. 第12章:结构化日志记录 - 介绍标准化遥测格式,详细指导构建结构化日志记录器的方法和最佳实践。
  3. 第13章:非文件遥测发射技术 - 深入探讨容器和函数即服务(FaaS)环境中的遥测技术,包括内存网络通信和特定平台遥测策略。
  4. 第14章:基数管理 - 详细分析遥测系统中基数的概念及其管理策略,展示高基数如何影响系统性能并提供解决方案。
  5. 第15章:遥测完整性与安全性 - 涵盖遥测数据的完整性保证技术,包括在无法容忍不可变性的环境中确保数据不被篡改的方法。
  6. 第16章:受监管数据处理 - 解决遥测流水线中敏感信息(有毒数据)的处理问题,包括实时和事后数据脱敏技术以及存储系统升级时的重新处理策略。
  7. 第17章:保留策略设计 - 指导如何建立遥测数据的在线和离线保留策略,包括指标聚合策略和分布式追踪的采样技术。
  8. 第18章:法律发现流程 - 分析法律发现程序对遥测系统的影响,提供减少法律合规风险的具体策略。

附录部分

  • 附录A:遥测存储系统分析 - 详细评估Elasticsearch、Apache Cassandra、Grafana Loki、MongoDB、Prometheus、InfluxDB和Jaeger等七种主流存储系统的优缺点和适用场景。
  • 附录B:推荐清单参考 - 汇总全书各章节的推荐清单,包括遥测标准、展示阶段建议、基数管理、安全性和法律主题等。
  • 附录C:练习答案 - 提供全书练习题的解答和指导。

技术特色

本书采用Python 3作为主要示例语言,辅以Ruby示例和Logstash配置示例。通过大量实际代码和配置片段,展示真实场景下的实现方法。每章包含丰富的数据流图表、架构图示和性能分析,帮助读者直观理解复杂的遥测概念。

核心概念深度解析

  1. 四大遥测风格对比:书中详细对比了集中式日志、SIEM、指标和分布式追踪的适用场景、数据特征和实现复杂度。
  2. 基数管理:深入探讨索引复杂性对搜索性能的影响,提供降低基数、优化存储和查询的具体策略。
  3. 流水线设计:展示如何设计可扩展、可维护的遥测流水线,包括发射器、运输器和展示器的解耦设计。
  4. 多租户架构:解释在共享遥测基础设施中实现多租户隔离的技术挑战和解决方案。
  5. 性能优化:覆盖从正则表达式优化到存储系统调优的全链路性能提升技术。

适用读者

本书适合以下人群:

  1. DevOps工程师和SRE - 需要构建和维护生产环境监控系统的专业人士。
  2. 软件架构师和技术负责人 - 负责设计系统可观测性和监控策略的技术决策者。
  3. 全栈开发工程师 - 需要在代码层面实现高效遥测和日志记录的开发者。
  4. 平台工程师 - 负责构建和维护内部开发者平台和工具链的工程师。
  5. 技术经理和团队领导 - 需要理解遥测系统如何支持团队决策和故障排除的管理者。
  6. 云原生技术爱好者 - 对容器、微服务和serverless环境中的监控技术感兴趣的学习者。

阅读建议

建议按顺序阅读第一部分,建立完整的遥测系统架构理解后,根据自身工作需求选择性阅读第二和第三部分。

初学者路径:从第1章开始,系统学习遥测基础概念,重点关注第2-5章的流水线设计,然后根据实际需要阅读相关章节。

实践者路径:如果你已经有遥测系统经验,可以重点关注第11-18章的高级技术和优化策略,特别是正则表达式优化、基数管理和保留策略设计。

团队学习:本书适合技术团队集体学习,建议团队分工阅读不同章节,然后定期分享讨论,将书中的架构设计原则应用到实际项目中。

结合实践:阅读时建议结合现有的遥测系统进行分析,尝试应用书中的优化建议。书中包含大量代码示例和配置片段,建议在实验环境中实际操作理解。

本书不仅提供技术细节,更重要的是提供了一种系统性的思考方式,帮助读者理解遥测不仅仅是工具的选择,而是与组织架构、团队协作和业务需求紧密相连的复杂系统设计问题。

期待您的支持
捐助本站