
可观测性与
DevOps
、
SRE
和云原生的关联
|
45
4.2 可观测性:调试方式的过去与现在
可观测性的目标是提供一定程度的自我审查,帮助人们对其系统和应用程序的内部状态
进行推理。这种状态可以通过各种方式实现。例如,你可以使用日志、指标和链路追踪
的组合作为调试信号。但就如何实现可观测性而言,这些并没有说清楚。
在单体系统中,你可以预测潜在的故障领域,因此可以自己调试系统,通过使用详细的
应用程序日志记录或粗略的系统级指标(如
CPU/
磁盘利用率)并结合顿悟来实现适当
的可观测性。然而,这些传统工具和本能技术将不再适用于云原生系统机遇带来的一系
列新的管理挑战。
云原生定义提到的示例技术包括容器、服务网格、微服务和不可变的基础设施。与虚拟
机和单体架构等传统技术相比,容器化微服务本质上引入了新问题,例如组件之间相互
依存的认知复杂性、容器重新启动后丢弃的瞬态以及单独发布的组件之间的不兼容版本
控制。不可变的基础设施意味着
ssh
进入主机进行调试不再可行,因为它可能会扰乱该
主机上的状态。服务网格添加了一个额外的路由层,提供了一种强大的方法来收集有关
服务调用如何发生的信息,但除非你稍后可以分析,否则该数据的用途有限。
调试异常问题需要一套新的功能,以帮助工程师从系统中检测和理解问题。当特定事件
发生时,分布式链路追踪等工具可以帮助捕获系统内部的状态。通过向每个事件添加许
多键值对形式的上下文,你将对系统所有部分中通常隐藏且无法推理的内容创建广泛而
丰富的视图。
例如,在分布式云原生系统中,你可能会发现很难通过使用日志或其他不相关的信号来调 ...