论可观测性和监控在软件中扮演的角色

译文
开发 架构
我们在本文中将深入探讨可观测性及其在软件中的重要性。我们将了解可观测性的历史、目标和重要性,以及软件生命周期缺少可观测性可能会带来的问题。我们还将分析可观测性与监控的主要区别。

​译者 | 布加迪

审校 | 孙淑娟

我们在本文中将深入探讨可观测性及其在软件中的重要性。我们将了解可观测性的历史、目标和重要性,以及软件生命周期缺少可观测性可能会带来的问题。我们还将分析可观测性与监控的主要区别。最后,我们将介绍采用可观测性的最佳实践、选择可观测性工具时要考虑的因素,以及如何为贵公司采用最佳策略。

图片

1.可观测性的历史 

图片

“可观测性”(observability)这个术语源自“观测”一词,意指专心观测某事物,旨在得出结论。回到技术领域,可观测性由Rudolf E. Kálmán在1960年首创,根源于控制理论(应用数学的一个分支,指使用反馈来影响系统的行为以实现预期的目标)。在机械系统中,传感器和检测器测量输出结果,为落实的控制措施提供数据依据。

可观测性只是知道您的用户、系统和应用程序在任何某个时间在做什么(数据收集),以告知您出了什么问题以及出问题的原因(跟踪)。无法观测,修复也就无从谈起。

可观测性首次出现在2013年,当时Twitter的工程师们发表了一篇名为《Twitter的可观测性》的博文,旨在观测“多样化服务拓扑”的运行状况和性能,当时Twitter正从整体式IT架构向分布式IT架构转变。

图片

我们已介绍了相应背景,不妨看看“可观测性”与“监控”的基本区别,因为英语将两者解释为几乎相同的意思。监控只是通过收集系统中预定义的指标集或日志集,告知并表明出了什么问题,而可观测性使用数据收集来告知出了什么问题、为什么会出问题,以便SRE(系统可靠性工程师)或DevOps团队可以轻松调试系统,因此它可以探究可能事先未定义的指标和模式。

2.我们为什么需要可观测性它的重要性又是什么? 

图片

先说说2021年《可观测性状况》研究报告所反映的问题:

  • 53%的受访者表示应用程序问题导致了客户流失或收入损失。
  • 45%的受访者表示服务失败导致客户满意度下降。
  • 30%的受访者表示因此失去了客户。

这导致相当大比例的受访者为服务失败的后果付出沉重的代价:

  • 客户满意度下降(45%)
  • 收入损失(37%)
  • 声誉受损(36%)
  • 客户流失(30%)

观测在法务和合规部门肯定不会被忽视,因为它在确保组织遵守法律义务,以保护敏感数据免遭未授权访问方面发挥着重要作用。可观测性技术还可用于安全领域,以识别违规和闯入,并防止数据泄露,从而使政府和监管机构得以避免或减少违规罚款。

统计数据也继续表明,奉行可观测性实践的组织提升了收入和盈利能力,这是由于可以监控客户行为以获取分析洞察力,这有助于营销人员做出战略决策,并改善用户体验,从而提高组织的声誉。

那么,接下来是什么?

3.可观测性的三大支柱 

图片

指标

指标是用数字表示如何在时间间隔内测量数据。从操作系统到应用程序,所有资源都会生成指标,包括一组属性,比如名称、时间戳和字段,以表明通常传达服务级别协议(SLA)、服务级别目标(SLO)和服务级别指标(SLI)等方面信息的某个值。说到监控,指标是合乎逻辑的起点,因为如此多的资源准备好向我们提醒有关它们自身的信息。通常,只要系统值超过指定阈值,SRE和运维工程师就使用指标来触发警报,这些指标是所选择的关键性能指标(KPI),比如响应时间、峰值负载、服务的请求、CPU容量、内存使用情况、错误率和延迟。代表性的KPI:

  • 当系统停机或负载均衡系统到最大容量时,触发警报
  • 量化性能
  • 监控异常活动

日志

日志是监控工具箱中一个很重要的工具,因为几乎所有内容都记录有关它们在任何给定时间所执行操作的信息。此外,日志提供了比指标更详细的资源信息,大多数应用程序框架、库和语言都支持日志。因此,如果指标显示资源已报废,日志将帮助您找出报废的原因。

日志的问题是正常情况信息太多了。由于环境中的一切在跟踪它们执行的操作,并急于共享该信息,不难发现这会导致大量数据;而不是简化监控过程。

跟踪

日志和指标适用于评估单个系统的行为和性能,但它们很少适用于确定分布式系统中请求的生命周期。跟踪是另一种可观测性方法,让您可以跨多个系统查看和了解某操作的整个生命周期。

如上所述,跟踪可以表示一系列因果关联的分布式事件,而这些事件封装了通过分布式系统的端到端请求流。

跟踪反映了请求或操作的整条路径,在遍历分布式系统中的所有节点时提供了关键的可见性,以便了解系统运行状况。跟踪提供了系统分析和检查,尤其是针对容器化应用程序、无服务器架构和微服务架构。

通过分析跟踪数据,您可以监控整体系统运行状况、识别潜在问题、更快地发现和处理问题,并确定需要优化和改进的重要方面。

4.实施可观测性工具 

图片

在考虑通过优化以确保贵组织的成功时,客户体验通常是首先要考虑的方面,也是如今大多数科技公司成功的关键。另一个关键标准是主动解决应用程序可用性和生产环境性能等问题的必要性。这时候可观测性派得上用场。现在需要一套可靠的可观测性架构来保持系统顺畅运行。

我整理出了一系列可观测性工具,它们可用于日志聚合、分布式跟踪、APM、时间序列分析和指标收集。虽然不是基于对主要优点或工具比较所作的深入研究,但这是个很好的起点,可以帮助您开始提高可观测性。

通过选择合适的可观测性平台,在单一视图中集中查看系统的性能数据,并打造可观测性文化,您将能够更快地发现问题,了解导致问题的原因,并最终更快速地构建注重客户的产品。要考虑的一些主要的可观测性和日志管理工具,包括如下:

  • Splunk
  • Datadog
  • Humio
  • Dynatrace
  • Grafana Labs
  • Honeycomb
  • New Relic

然后,您需要识别和监控与已经遇到的问题以及将来可能遇到的问题相关的指标。

将可观测性纳入事件管理流程后,您必须识别和监控与已经发生的问题和预计将来会发生的问题相关的指标。之后,您应该可以在整个组织中打造注重可观测性的文化。如果不实施这种模式,您可能无法充分利用可观测性架构,因为再多的可观测性工具都无法取代扎实的技术本能和直觉。

原文链接:https://medium.com/codex/the-role-of-observability-monitoring-in-software-46bd88f792fe​

责任编辑:武晓燕 来源: 51CTO技术栈
相关推荐

2009-08-27 11:23:56

ibmdwSaaS

2021-02-06 06:55:33

AI物联网人工智能

2023-03-08 17:33:36

KubernetesJava

2023-02-01 18:15:24

可观测性

2023-05-18 22:44:09

2023-03-30 16:30:08

可观测云原生

2023-10-26 08:47:30

云原生数据采集

2012-09-25 09:30:29

云服务云管理开源

2024-03-27 14:43:07

.NET Core后端监控可观测性

2023-10-13 13:40:29

2022-08-24 10:01:57

云原生容器

2023-08-21 09:37:57

MySQL工具MariaDB

2023-09-20 16:11:32

云原生分布式系统

2023-09-20 11:33:41

服务网格监控报警

2020-06-29 10:35:26

监控系统架构技术

2023-03-09 08:00:22

2021-05-04 18:28:23

Apache KafkSigNoz开源

2022-08-02 12:03:26

Python可观测性软件开发
点赞
收藏

51CTO技术栈公众号