Linux Observability with BPF
作者: David Calavera and Lorenzo Fontana
语言: 英文
出版年份: 2019
操作系统: Linux
下载链接:
书籍均收集自互联网,仅供学习和研究使用,请莫用于商业用途。谢谢合作。

书籍摘要

一、书籍背景与目的

随着计算系统的复杂性不断增加,理解软件行为变得极具挑战性。传统的日志分析和指标监控方法存在局限性,而新兴的可观测性(Observability)实践旨在通过收集系统产生的所有数据来回答任意问题。Linux 容器的兴起进一步增加了系统的复杂性,因为它们依赖于 Linux 内核的低级功能,如命名空间和 cgroups。为了更好地理解和监控这些复杂的系统,BPF(Berkeley Packet Filter)技术应运而生,它允许在内核中安全地运行程序以收集和分析数据。

二、BPF 技术概述

BPF 是一种内核子系统,最初用于网络数据包过滤,但随着扩展版 eBPF 的出现,其功能得到了极大增强。eBPF 程序可以在内核触发事件时安全地执行,而无需重新编译内核。BPF 的架构包括虚拟机(VM)、程序类型、执行点、BPF 映射(maps)等关键组件。BPF 映射是内核中的键值存储,用于在内核和用户空间之间共享数据。BPF 程序通过特定的执行点(如 kprobes、tracepoints、XDP 等)与内核交互,并利用 BPF 映射来存储和检索数据。

三、书籍内容结构

本书共分为九章,系统地介绍了 BPF 技术及其在 Linux 系统可观测性中的应用。主要内容包括:

第 1 章:介绍

  • 讨论了可观测性的概念及其重要性,以及 BPF 在其中的作用。
  • 回顾了 BPF 的历史,从最初的网络数据包过滤到现代的 eBPF 技术。

第 2 章:运行你的第一个 BPF 程序

  • 介绍了如何编写和加载 BPF 程序,包括使用 C 语言和 LLVM 编译器。
  • 讨论了 BPF 程序的类型,如 kprobes、tracepoints 和 XDP 等。
  • 详细说明了 BPF 验证器的作用,它确保 BPF 程序的安全性。

第 3 章:BPF 映射

  • 深入探讨了 BPF 映射的创建、更新、读取和删除操作。
  • 介绍了不同类型的 BPF 映射,如哈希表、数组、队列、栈等。
  • 讨论了 BPF 虚拟文件系统,用于持久化 BPF 对象。

第 4 章:使用 BPF 进行追踪

  • 介绍了内核和用户空间中的追踪技术,包括 kprobes、kretprobes、tracepoints、uprobes 和 uretprobes。
  • 讨论了如何使用 BPF 程序收集系统性能数据,并通过火焰图和直方图进行可视化。

第 5 章:BPF 工具

  • 介绍了 BPFTool、BPFTrace 和 kubectl-trace 等工具,这些工具简化了 BPF 程序的编写和调试。
  • 讨论了 eBPF Exporter,它可以将 BPF 指标导出到 Prometheus。

第 6 章:Linux 网络与 BPF

  • 探讨了 BPF 在网络数据路径中的应用,包括包捕获和过滤。
  • 介绍了如何使用 BPF 程序与 Socket Buffer 结构交互,以及如何编写基于 BPF 的 Traffic Control 分类器。

第 7 章:Express Data Path(XDP)

  • 详细介绍了 XDP 程序的特性、操作模式和加载方法。
  • 讨论了 XDP 在网络性能优化中的应用,如 DDoS 防御、负载均衡和防火墙。

第 8 章:Linux 内核安全、功能和 Seccomp

  • 讨论了 Linux 安全模块(LSM)和 BPF LSM 钩子。
  • 介绍了如何使用 BPF 程序实现 Seccomp 过滤器,以增强进程隔离和安全性。

第 9 章:真实世界的用例

  • 采访了一些使用 BPF 技术的项目创建者,分享了他们的经验和用例,如 Sysdig eBPF God Mode 和 Flowmill。

四、总结

《Linux Observability with BPF》是一本全面深入的 BPF 技术指南,适合希望深入了解 Linux 系统性能监控和安全性的开发人员、系统管理员和研究人员。通过阅读本书,读者将掌握如何利用 BPF 技术提升系统的可观测性,从而更好地理解和优化复杂的 Linux 系统。

期待您的支持
捐助本站