关键要点
- 对于现代软件系统,可观察性与数学方程无关。它是关于人们如何与他们的复杂系统互动并试图理解他们的复杂系统。
- 可观察性利用混沌工程,因为它允许检测系统稳态的偏差。混沌工程利用可观察性,因为它有助于发现和克服系统的弱点。
- 可观察性以系统发出的信号为基础,并提供有关系统行为的原始数据。然而,可观察性不仅受限于这些信号的质量,还受限于这些信号的可视化和解释方式。
- 考虑到混沌工程、可观察性和可视化涉及人类及其个人解释,仪表板的设计者可能会对这些解释产生偏见,这是一个事实。从这个意义上说,视觉隐喻并不能保证我们以正确的方式解释这些数据。
- 基于视觉隐喻的仪表板可以提供比经典可视化更有用的数据。然而,这两种策略都容易产生偏见。例如,在一项研究中,大多数参与者注意到整体结果存在偏差,因为显示的条形图和折线图没有显示图中的重要截止点。
作者/ Yury Niño Roa
来源/翻译外网
由于 Netflix、Slack 和 Linkedin 等领先的技术公司已经采用混沌工程学科来抵御生产中的意外中断,因此这一学科近年来已成为主流。在这条道路上,可观察性发挥了关键作用,将数据和监控的力量带给了工程师,他们现在有策略来了解他们的系统,确定当出现故障时他们将如何表现,并增加弹性和可靠性。
混沌工程和可观察性是两个紧密相连的学科。根据 Russ Miles 的说法,“可观察性原则将系统变成可检查和可调试的犯罪现场,而混沌工程鼓励并利用可观察性来帮助先发制人地发现和克服系统弱点”。混沌工程鼓励并要求可观察性,因为要自信地执行混沌实验,可观察性必须检测系统何时正常以及在执行方法实验时它如何偏离该稳态。如图 1 所示。
学术界和科技行业都做出了巨大的努力来提供实践混沌工程和可观察性的工具。但是,指标的可视化和适当的视觉策略选择仍然有限。本文介绍了一个新角色:视觉隐喻。具体来说,它提供了混沌工程和可观察性的概念基础,展示了市场上最先进的可视化技术,并展示了树形图、仪表图、地心图和城市隐喻如何丰富视觉策略的范围以观察混沌。
01
混沌工程和可观测性的基础
关于混沌工程:混沌、弹性和可靠性是关键概念,而关于可观察性,监控、指标和仪表板对于人类想要观察他们的系统至关重要。因此,在深入研究混沌工程与可观察性之间的关系之前,明确这些定义很重要。
混沌工程被混沌原理定义为在系统上进行实验的学科,以建立对系统承受生产中动荡条件的能力的信心。为了专门解决大规模分布式系统的不确定性,混沌工程提供了一种基于以下四个步骤的实验的方法:第一个步骤包括定义稳定状态,即系统的可测量输出,指示正常行为。第二步与假设相关联,该假设提出了一个具有改变稳态后果的句子。有了这个假设,现在是时候介绍现实世界的事件了,例如服务器崩溃或硬盘驱动器故障,以证实或反驳该假设。最后,
可观察性是能够完全理解一个系统。在控制理论中,它被定义为衡量一个系统的内部状态可以从其外部输出的知识中推断出的程度。特别是,在软件工程中,可观察性可以被描述为提出正确问题、提供正确答案以及利用收集到的数据构建知识的艺术。
监控与可观察性不同,了解差异很重要。监控是关于收集、处理、汇总和显示有关系统的实时定量数据;而可观察性是关于处理和分析数据,允许团队积极理解和调试系统的行为。对于现代软件系统,可观察性与数学方程无关。它是关于人们如何与他们的复杂系统互动并试图理解他们的复杂系统。
从这个意义上说,监控涉及读取系统通过称为度量的数字发送的信号。指标是一个数字,可选择附加标签以进行分组和搜索,例如查询计数和类型、错误计数和类型、处理时间或服务器生命周期。这些值在仪表板中可视化,这些仪表板是提供服务核心指标核心摘要视图的应用程序。
传统上,仪表板是基于折线图、饼图或条形图构建的。考虑到可观察性取决于系统发出的信号以及这些信号的可视化和解释质量,因此提供最佳工具和设计非常重要。如果颜色、图例和比例尺使用不当,一些可视化可能会受到限制,并让操作员感到困惑。下一节提供了监控和可观察性的最新技术,并更详细地描述了其中的一些限制。
02
监控和可观察性
监控和可观察性已成为工程团队以及希望提供卓越解决方案的现代数字企业最重要的能力之一。由于监控和观察系统的原因有很多,因此 Google 记录了四个黄金信号或指标,这些信号或指标定义了系统健康的意义,并且是可观察性和监控平台当前状态的基础。四个指标描述如下:
延迟是服务处理请求所花费的时间。它包括由于失去与数据库或其他可能无法很快提供服务的关键后端的连接而触发的 HTTP 500 错误。延迟是一个基本指标,因为慢错误比快错误更糟糕。
流量是衡量系统需求量的指标。它确定系统在给定时间从用户或通过服务运行的事务承受多少压力。例如,对于 Web 服务,此度量通常是每秒 HTTP 请求数。通过监控应用程序或服务中的真实用户交互和流量,工程团队可以了解系统如何应对需求变化,以及他们应该如何扩展资源以满足需求。
错误与显式或隐式失败的请求率相关。根据系统和发生故障的组件,监控错误情况可能会大不相同。这就是为什么工程团队需要监控整个系统以及单个服务级别的错误发生率的原因。优先考虑哪些错误是关键的,哪些是不那么危险的,这也很重要。
最后,饱和度是系统关于资源利用率的信号,例如内存、I/O 或 CPU。考虑到许多系统在达到 100% 利用率之前性能会下降,因此有一个饱和度目标是必不可少的。它使我们能够回答以下问题:该服务还有多少容量?什么程度的饱和度可以确保为客户提供服务性能和可用性?
03
用于监控的传统可视化
如今,使用折线图、条形图或饼图等传统方法监控上一节中描述的四个黄金信号。
折线图是根据时间可视化系统的四个黄金信号的行为的最常用策略,如图 2 所示。
图 2. 虚构项目中的折线图
折线图在颜色、图例、轴和系列标题方面提出了不同的挑战,因为变量会聚、交叉并通常纠缠在一起。如果仪表板的创建者不使用适当的视觉资产,这种类型的图形可能会变成最令人困惑的图表之一。
另一个常见的图表是条形图,它用于显示具有高度或长度的矩形条的分类数据,与它们所代表的值成比例。一些云提供商使用它们来表示日志的分类数据,如图 3 所示。
图 3. 虚构项目中的条形图
最后,虽然使用较少,但饼图是一种表示和比较数据分布比例的简单方法。当一个比例占主导地位时,它们最有效——一半或四分之三。多个颜色的多个楔形在楔形之间产生相同性,从而难以比较值。
考虑到这些限制,下一节将介绍一种可视化四个黄金指标的不同方法。由于本文是关于混沌工程的,因此在报告事件的场景中分析了该技术。
04
视觉隐喻作为可视化混乱的建议
为了克服前面提到的限制,本文提出了一种可视化生产混乱的新策略。该提案基于其他科学领域的概念:视觉隐喻。视觉隐喻是一种将应用领域的概念和对象映射到相似性和类比系统的策略。计算机隐喻是交互式视觉对象和模型对象之间同化的基本思想。它的作用是促进对对象语义的更好理解。一个熟悉的例子可能是在跑车图片前使用黑豹,这表明该产品在速度、动力和耐力方面具有可比性。
一些示例包括:地图、城市和几何场景,如图 3 所示。该图显示了城市隐喻,这是一种用于可视化程序代码属性的流行方法。例如,许多项目都使用这种隐喻来可视化软件存储库的属性。现有的研究已被用于绘制带有包的社区,以及带有建筑物的类。
图 4. 虚构项目中的城市隐喻,取自此处。
在这种情况下,隐喻将类表示为建筑物,将包表示为建筑物所在的社区。建筑物的每个边缘都用于映射类的属性。
05
展示一个可视化事件的实验
为了确定参与运营活动的工程团队的看法,对其中的 28 个进行了关于经典仪表板和视觉隐喻的调查。具体来说,他们被问及使用经典仪表板和视觉隐喻将四个黄金指标、错误、延迟、流量和饱和度可视化的事件。
这项研究包括关于事件的具体问题,其中提供了两种可视化:一个带有传统图表,另一个带有视觉隐喻。对于每种情况,分析了每种可视化类型的价值。在接下来的段落中,将介绍每个问题和分析。
在人口统计方面,有 28 名参与者的背景分布在后端、前端和全栈工程师、软件架构师、数据工程师和站点可靠性工程师中。最大的参与来自后端开发工程师,如图 5 所示。
图 5. 人口数据
第一个问题是关于饱和信号的。基本上,使用了两个仪表板(折线图和城市隐喻)来询问五个微服务的状态:ms_authentication、ms_patients、ms_payments、ms_medications 和 ms_appointments。这些微服务是虚构医疗保健系统的一部分。
具体来说,问题是:使用传统仪表板(参见图 6)和视觉隐喻(参见图 7),哪些微服务受到影响?正确答案是 ms_authentication。
图 6. 传统折线图
图 7. 视觉城市隐喻
如图 8 所示,当他们使用视觉隐喻时,一些参与者的答案发生了变化,选择了正确的答案。
图 8. 参与者使用传统图表与视觉隐喻的回答
所有参与者都同意,受 CPU 高利用率影响的微服务是身份验证。在这种情况下,视觉隐喻比传统图表更有用,因为炭线令人困惑,颜色、形状和大小都很差,改变了参与者的感知。
关于错误信号,使用经典条形图和树形图要求参与者计算每个微服务的平均错误,如图 9 所示。
图 9. 用于可视化错误的传统条形图
图 10. 可视化错误的可视化树形图隐喻
正确答案是 ms_appointments,虽然有些参与者没有选择它,但他们中的许多人在使用视觉隐喻时改变了答案。图 11 说明了这一点。
图 11. 使用传统图表与视觉隐喻来可视化错误的参与者的答案
关于交通信号,使用经典的条形图和地心比喻来询问参与者哪个第三方服务的交通量更大。本案例分析了原有微服务与新增的四个第三方服务srv_ldap、srv_goverment、srv_assurance和srv_authentication之间的交互。图 12 使用条形图显示了这种集成,图 13 使用地心隐喻显示了相同的流量值。在比喻中,圆圈代表服务和微服务,线条连接它们之间的关系。
图 12. 用于可视化微服务和第三方服务之间流量的传统条形图
图 13. 可视化微服务和第三方服务之间流量的视觉地心隐喻
尽管有线条和大小来表示微服务和第三方服务之间的连接和流量负载,但这个比喻让参与者感到困惑。圆的大小可能与 srv_ldap 的最小百分比相关联,这是正确答案,由饼图中的绿色部分表示(参见图 14)。
图 14. 使用传统图表与视觉隐喻来可视化微服务和第三方服务之间的流量的参与者的回答。
最后,我们使用条形图可视化与仪表隐喻来分析延迟信号。两种可视化分别在图 15 和 16 中说明。
图 15. 用于可视化延迟信号的传统条形图。
图 16. 可视化微服务延迟的可视化仪表隐喻。
对于这种情况,这个比喻绝对没有为参与者提供价值,因为正确的答案是 ms_patients,如图 17 所示。
图 17. 使用传统图表与视觉隐喻来可视化微服务和第三方服务之间的延迟的参与者的回答。
06
引入视觉隐喻的结论
混乱的可视化,特别是生产事件的可视化,对专注于可观察性的工业和学术界提出了一些挑战。正如我们在本文中所展示的,由于混沌工程、可观察性和可视化涉及人类与机器的交互,因此解释中的偏差是一个持续存在的风险。通过一项研究,其中 28 位工程师回答了与经典仪表板与视觉隐喻相关的 12 个问题,可以得出结论,可观察性不仅受到这些信号的数量和质量的限制,而且还受到这些信号的可视化和解释方式的限制。结论是视觉隐喻可以比经典仪表板表现更好,但是,由于两者都涉及人类,因此无法保证操作员以正确的方式解释事件中的数据。
有疑问加站长微信联系(非本文作者)