9.2 可观测性与传统监控

了解什么是可观测性后,接踵而来的问题是,它与传统监控有何区别?业内专家 Baron Schwartz 曾用一句简洁的话总结了两者的关系,不妨来看他的解释。

可观测性与监控的关系

监控告诉我们系统哪些部分是正常的,可观测性告诉我们系统为什么不正常了。

——by《高性能 MySQL》作者 Baron Schwartz

如图 9-1,我们把系统的理解程度、可收集信息之间的关系象限化分析,说明可观测性与传统监控的区别。


图 9-1 可观测性帮助工程师解决未知的未知(Unknown Unknowns)

X 轴的右侧(Known Knows 和 Known Unknowns)表示确定性的已知和未知,图中给出了相应的例子。这类信息通常是系统上线前就能预见,并能够监控的基础性、普适性事实(如 CPU Load、内存、TPS、QPS 等指标)。传统的监控系统大部分围绕这些确定的因素展开。

但是很多情况下,上述信息很难全面描述和衡量系统的状态。比如坐标的左上角的 Unknown Knowns(未知的已知,通俗理解为假设),举个例子,通常会引入限流策略来保证服务可用性。假设请求量突然异常暴增,限流策略牺牲小部分用户、保证绝大部分用户的体验。但注意,这里的“假设”(请求量突然暴增)并未实际发生。因此,日常情况下的基础监控看不出任何异常。

但如果请求量真的突然暴增了,同时那些“假设”又未经过验证(如限流逻辑写错了),就会导致我们碰见最不愿见到的情况 —— Unknown Unknowns(未知的未知,毫无征兆且难以理解)。

经验丰富(翻了无数次车)的工程师根据以往经验,逐步缩小 Unknown Unknowns 的排查范围,从而缩短故障修复时间。但更合理的做法是,根据系统的细微输出(如 metrics、logs、traces,也就是遥测数据),以低门槛且直观的方式(如监控大盘、链路追踪拓扑等)描绘出系统的全面状态。如此,当发生 Unknown Unkowns 情况时,才能具象化的一步步定位到问题的根因。

总字数:624
Last Updated:
Contributors: isno