Linux内核观测技术BPF
正版保障 假一赔十 可开发票
¥
43.99
5.6折
¥
79
全新
库存14件
作者大卫
出版社机械工业出版社
ISBN9787111660545
出版时间2023-03
装帧平装
开本16开
定价79元
货号28998636
上书时间2024-10-27
商品详情
- 品相描述:全新
- 商品描述
-
前言
2015年,David是Docker公司(一家让容器技术变得流行的公司)的一名核心开发工程师。他的日常工作包括两部分:维护Docker社区和促进Docker项目发展。他既需要审查贡献者提交的PR,也需要确保Docker可以在各种场景下稳定高效地工作,特别是在成千上万容器运行的高负载场景下。
当时,我们采用火焰图来分析Docker相关的性能问题。火焰图提供的高级可视化功能,可以让我们非常方便地浏览分析的数据。Go语言通过内嵌的HTTP服务可以非常容易地提取到应用的性能数据,并能够基于性能数据产生数据图表。David曾写过一篇文章,讲述Go语言的性能分析器,并描述如何基于数据生成火焰图。但是,使用Go语言性能分析器来收集Docker的性能数据也存在着一些问题,因为性能分析器的功能默认是关闭的。所以,如果要开启性能调试,我们必须要重启Docker服务,这可能导致失去运行时的性能数据,迫使我们花费时间等待问题再次重现。David的文章中提到了重启Docker是诊断Docker性能问题的必要步骤。但是, 好的方式应该是不重启服务就能达到分析性能问题的目的。这驱使David开始研究收集和分析程序性能指标的各种技术,不久他就发现了BPF。
与此同时,与David相距甚远的Lorenzo,也在寻求一种更好地研究Linux内核内部机制的方式,他发现学习BPF可以更容易地了解更多的内核子系统。几年后,他已经在InfluxData的工作中应用了BPF技术,以更快地在InfluxCloud中提取数据。如今Lorenzo不仅活跃于BPF社区,他还就职于Sysdig公司,从事Falco项目中IOVisor工具的开发—IOVisor使用BPF来保证容器和Linux系统的运行时安全。
在过去的几年时间内,我们已经尝试在更多的场景中使用BPF,包括收集Kubernetes集群数据、管理网络流量策略。通过阅读BPF领导者Brendan Gregg、Alexei Starovoitov,以及Clilium和Facebook公司的诸多技术博客,我们学习了BPF技术的底层原理。他们的博客和文章给予了我们极大的帮助,同时也是本书诸多引用的来源。
每次学习BPF技术时,我们都需要翻阅博客文章、手册以及Internet上的各种资料。本书的目的就是将分散在各处的知识汇总在一起,以便于BPF爱好者能更好地学习这一神奇技术。
本书分为9章演示如何使用BPF完成相关任务。你可以单独阅读一些章节作为参考指南,但是如果你是BPF的新手,我们建议你按顺序阅读。这样你可以了解BPF的核心概念,并逐步了解BPF在未来可能发挥的作用。
无论你是可观测性和性能分析方面的专家,还是正尝试开始研究新技术来解决生产系统问题的新手,我们都希望你能从本书中受益。
本书排版约定
下面是本书中使用的排版约定:
斜体(Italic)
表示新术语、URL、Email、文件名及文件扩展名。
等宽字体(Constant Width)
表示程序片段,以及正文中出现的变量、函数名、数据库、数据类型、环境变量、语句和关键字等。
等宽粗体(Constant width bold)
表示命令或其他由用户直接输入的文本。
等宽斜体(Constant Width Italic)
表示应当被用户提供的值或上下文决定的值所替换的文本。
这个图标表示提示或建议。
这个图标表示一般说明。
这个图标表示警告或注意。
示例代码
可以从https://oreil.ly/lbpf-repo下载补充材料(示例代码、练习等)。
这里的代码是为了帮助你更好地理解本书的内容。通常,可以在程序或文档中使用本书中的代码,而不需要联系O’Reilly获得许可,除非需要大段地复制代码。例如,使用本书中所提供的几个代码片段来编写一个程序不需要得到我们的许可,但销售或发布O’Reilly的配套CD-ROM则需要O’Reilly出版社的许可。引用本书的示例代码来回答一个问题也不需要许可,将本书中的示例代码的很大一部分放到自己的产品文档中则需要获得许可。
非常欢迎读者使用本书中的代码,希望(但不强制)注明出处。注明出处的形式包含书名、作者、出版社和ISBN,例如:
Linux Observability with BPF,作者David Calavera和Lorenzo Fontana,由O’Reilly出版,书号为978-1-492-05020-9
如果读者觉得对示例代码的使用超出了上面所给出的许可范围,欢迎通过permission@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)
奥莱利技术咨询(北京)有限公司
要询问技术问题或对本书提出建议,请发送电子邮件至bookquestions@oreilly.com。
本书配套网站https://or
导语摘要
本书是一本面向系统工程师的实践指南,皆在帮助他们获得Linux内核中BPF虚拟机的专业知识。通过本书,你不仅可以深入了解BPF程序的生命周期,熟悉日常工作所需的基本概念,增强有关性能优化、网络和安全方面的知识。还可以学习如何编写观测和修改内核行为的应用程序,以及通过代码注入的方式对内核事件进行监控、跟踪和安全观测等内容。同时,本书展示了相关的C、Go和Python代码示例。每次学习BPF技术时,我们都需要翻阅许多博客文章、手册以及Internet上的各种资料。 本书的目的就是将分散在各处的知识汇总在一起,以方便后续BPF爱好者能更好地学习这一技术。
作者简介
大卫·卡拉维拉(David Calavera)是Netlify的CTO,曾是Docker的维护者以及Runc、Go和BCC工具及其他开源项目的贡献者。他构建和促进了Docker插件生态系统,因Docker项目的工作而闻名。David非常喜欢使用火焰图和进行性能优化。
洛伦佐·丰塔纳(Lorenzo Fontana)是Sysdig开源团队的成员,主要负责CNCF(云本地计算基础)的Falco项目,该项目通过内核模块和eBPF实现了容器运行时安全和异常检测功能。他对分布式系统、软件定义网络、Linux内核和性能分析充满热情。
目录
序言1
前言3
第1章 引言9
1.1 BPF的历史10
1.2 架构12
1.3 小结13
第2章 运行个BPF程序14
2.1 编写BPF程序14
2.2 BPF程序类型17
2.3 BPF验证器24
2.4 BPF类型格式26
2.5 BPF尾部调用27
2.6 小结27
第3章 BPF映射28
3.1 创建BPF映射28
3.2 使用BPF映射30
3.3 BPF映射类型40
3.4 BPF虚拟文件系统52
3.5 小结55
第4章 BPF跟踪56
4.1 探针57
4.2 跟踪数据可视化71
4.3 小结81
第5章 BPF工具82
5.1 BPFTool82
5.2 BPFTrace92
5.3 kubectl-trace97
5.4 eBPF Exporter98
5.5 小结100
第6章 Linux网络和BPF102
6.1 BPF和数据包过滤103
6.2 基于BPF的流量控制分类器115
6.3 小结125
第7章 XDP126
7.1 XDP程序概述127
7.2 XDP和BCC138
7.3 测试XDP程序141
7.4 XDP用户案例147
7.5 小结149
第8章 Linux内核安全、能力和Seccomp150
8.1 能力150
8.2 Seccomp154
8.3 BPF的LSM钩子162
8.4 小结163
第9章 真实的用户案例164
9.1 Sysdig eBPF上帝视角164
9.2 Flowmill167
内容摘要
本书是一本面向系统工程师的实践指南,皆在帮助他们获得Linux内核中BPF虚拟机的专业知识。通过本书,你不仅可以深入了解BPF程序的生命周期,熟悉日常工作所需的基本概念,增强有关性能优化、网络和安全方面的知识。还可以学习如何编写观测和修改内核行为的应用程序,以及通过代码注入的方式对内核事件进行监控、跟踪和安全观测等内容。同时,本书展示了相关的C、Go和Python代码示例。每次学习BPF技术时,我们都需要翻阅许多博客文章、手册以及Internet上的各种资料。 本书的目的就是将分散在各处的知识汇总在一起,以方便后续BPF爱好者能更好地学习这一技术。
主编推荐
大卫·卡拉维拉(David Calavera)是Netlify的CTO,曾是Docker的维护者以及Runc、Go和BCC工具及其他开源项目的贡献者。他构建和促进了Docker插件生态系统,因Docker项目的工作而闻名。David非常喜欢使用火焰图和进行性能优化。
洛伦佐·丰塔纳(Lorenzo Fontana)是Sysdig开源团队的成员,主要负责CNCF(云本地计算基础)的Falco项目,该项目通过内核模块和eBPF实现了容器运行时安全和异常检测功能。他对分布式系统、软件定义网络、Linux内核和性能分析充满热情。
— 没有更多了 —
以下为对购买帮助不大的评价