FDE Times 数据在招 FDE 职位 862▼55 近 7 天在招职位数的变化(同口径比较):不计入本周新开始追踪的公司的职位近 7 天新增 70在招公司 180支持远程 24%美国薪资中位数 $200k招聘最多 Palantir 95
ENVI

前线部署工程师(FDE)的专业媒体

书籍与课程

仪表盘全绿、用户却还在等时,该读这本书

Honeycomb 这本书教你向数据提问,而不是找资历最老的工程师;买前先看版本,第二版篇幅翻倍。

封面: Observability Engineering: Achieving Production Excellence
Observability Engineering: Achieving Production Excellence · Charity Majors · 封面图片:Open Library
分享微博

要点速览

  • 作者是 Charity Majors、Liz Fong-Jones 和 George Miranda,O'Reilly 于 2022 年出版;第二版几乎全部重写。
  • 值得记住的三个观点:结构化事件是基础,排查要靠假设而不是老员工的记忆,告警要基于 SLO。
  • 对 FDE 来说,最有价值的是核心分析循环(第一版第 8、15、16 章)。
前后对比图。左侧是一行日志“checkout ok, 2300ms”,只能看出请求很慢。右侧是一个结构化事件,包含端点 /checkout、一个购物车很大的客户、新的构建版本和 2300ms 的处理时间。客户和构建版本两个字段以橙色高亮,因为靠它们可以把慢请求这一组单独拎出来。
同一个很慢的结账请求:日志只说明它慢了,字段足够的结构化事件则能看出慢在哪里、对谁慢。示意图基于文中的结账场景,数值取自正文。

设想一个客户反馈“系统太慢了”。仪表盘一片绿,CPU 也正常,终端用户却还在等。这时很多团队会去找资历最老的工程师,因为只有他“懂这个系统”。

Observability Engineering: Achieving Production Excellence 正是为了打破这种习惯而写。三位作者 Charity Majors、Liz Fong-Jones 和 George Miranda 都来自 Honeycomb;O’Reilly Media 于 2022 年 5 月 6 日出版了第一版。如果你的工作是进入一个陌生系统,在几天内查出它为什么慢,这本书值得一读。

这本书讲什么,该读哪一版?

Goodreads 的概括很简短:可观测性是构建、运行和改进复杂的关键业务系统的前提。根据作者自己撰写的系列摘要,各组章节围绕结构化事件、排查用的分析循环、基于 SLO 的告警以及整个团队的协作方式展开。

购买前需要知道一点:Honeycomb 已宣布推出第二版,内容几乎全部重写,篇幅翻倍,新增 27 个全新章节。

第二版增加了面向技术决策者的可观测性治理部分,作者阵容也有变化,加入了 OpenTelemetry 联合创始人 Austin Parker。公告没有给出第二版的发布日期,下单前请先确认在售的是哪一版。

下文的章节编号以第一版为准,因为作者的摘要系列基于第一版。如果你买的是第二版,章节编号会不同。

如果暂时不打算买书,有一条捷径。Honeycomb 博客上的“Authors’ Cut”系列把每组章节的核心概念提炼出来,用更易读的方式重写。这些文章不按章节顺序排列,你可以只挑自己需要的部分。

观点一:每个请求都应讲清自己的经历

全书的基础是结构化事件。在一次关于本书的演讲中,Honeycomb 介绍了如何把结构化事件串联起来,通过分布式追踪跟踪一个请求,从而看清各组件之间的依赖关系。

以一个零售客户的结账流程为例。每个请求都输出一个事件,带上端点、客户 ID、区域、构建版本、所调用数据库的名称和处理时间。“checkout ok, 2300ms”这样的日志只能告诉你它慢了;字段足够的事件则能告诉你慢在哪里、对谁慢。

这一阶段最常见的错误是埋点字段太少。如果结账事件缺少构建版本或客户 ID,之后无论数据多少,都无法按这两个维度拆分慢请求。第二个错误是只记录错误、忽略成功的请求,而客户抱怨的恰恰是那些“成功但很慢”的请求。

因此,到客户现场后的第一件事,是重读一个慢请求的日志,问自己:这些数据足以把慢请求和正常请求区分开吗?如果不够,先修好埋点,再考虑优化。

观点二:靠假设排查,而不是靠记忆

第 8、15、16 章讲核心分析循环,以及工具该自建还是采购。对于“为什么慢”这个问题,这是全书最有价值的部分。作者称这个循环是一种强大且很多人都能上手的工具。

套用到结账的例子:先把慢请求单独拎出来,和正常请求放在一起对比,找出差异明显的字段。

也许所有慢请求都跑在新构建上,也许它们都来自同一个购物车特别大的客户。这时假设来自数据,可以用下一次查询去验证,而不是依赖某人对上次事故的记忆。

日本 Classmethod 的一位工程师在书评中认为,这本书最大的好处是让团队排查问题时不必依赖那些被比作“活字典”的工程师。

这位评论者也明确指出,本书并不否定传统监控。当系统的复杂度和规模开始超出监控能应对的范围时,它提供了一种新的方法。

观点三:告警要针对客户真正关心的事

第 12、13 章讲基于 SLO 的告警。作者的摘要提到,这种方法能帮助团队优先响应对客户和业务最重要的事。对 FDE 来说,这一点非常实际:客户关心的是订单能否顺利完成,而不是 CPU 是否到了 80%。

这也是交付时第三个常见错误:把告警设在 CPU 或内存上。在结账的例子里,CPU 可能一直很低,请求却在等一条很慢的数据库查询,于是值班工程师收不到任何告警,客户却已经感觉到变慢。

书中还指出,推行可观测性不只是给应用埋点,还关乎整个团队如何协作。所以交付时,你留给客户的还应有一种习惯:SLO 写成文档,告警与这些 SLO 挂钩,每个值班的人都知道如何向数据提问。

谁该读,按什么顺序读?

如果你是前线部署工程师(FDE),或者是希望转做 FDE 的后端工程师,先读结构化事件和链路追踪部分,再读核心分析循环,最后读 SLO。第二版的治理部分适合需要说服客户管理层投资工具的人。

求职方面,如果你瞄准的岗位描述提到 OpenTelemetry、分布式追踪或 SLO,应优先复习这几章。

写简历时,与其只写“使用过 Grafana”,不如描述一次具体经历:你用结构化事件给某个流程埋点,把慢请求拎出来并找到原因。一个具体的故事比一串工具名更能体现你的思考方式。

下次客户说“太慢了”,你不必是在场最了解这个系统的人,而应是最知道该向数据问什么的人。

这篇文章对你有帮助吗?

7 个信源
路线图上的下一篇 · 阶段 6: 价值度量只看错误率,找不到 Agent 坏在哪一步DeepLearning.AI 与 Arize 的短课程教你分开评测路由器、每个技能和端到端流程。