译者|布加迪评论家|SunShujuan在本文中,我们将深入探讨可观察性及其在软件中的重要性。我们将了解可观察性的历史、目标和重要性,以及在软件生命周期中没有可观察性可能出现的问题。我们还将分析可观察性和监控之间的主要区别。最后,我们将介绍采用可观察性的最佳实践、选择可观察性工具时要考虑的因素,以及如何为您的公司采用最佳策略。一、可观察性的历史“可观察性”一词源于“观察”一词,意思是专心地观察某事,以得出结论。回到技术领域,可观察性由RudolfE.Kálmán于1960年率先提出,其根源在于控制理论(应用数学的一个分支,指的是使用反馈来影响系统的行为以实现预期目标)。在机械系统中,传感器和检测器测量输出并为实施的控制措施提供数据基础。可观察性只是了解您的用户、系统和应用程序在任何给定时间(数据收集)在做什么,以告诉您出了什么问题以及为什么(跟踪)。没有观察,修复是无从谈起的。可观察性最早出现在2013年,当时Twitter的工程师发表了一篇名为《Twitter的可观测性》的博文,旨在观察“多元化服务拓扑”的运行和性能。当时,Twitter正在从单体IT架构向分布式IT架构转型。现在我们已经了解了一些背景知识,让我们来看看“可观察性”和“监控”之间的基本区别,因为英语将两者解释为几乎相同的意思。监控只是通过收集系统中一组预定义的指标或日志来通知和显示出了什么问题,而可观察性则使用数据收集来告诉我们出了什么问题以及为什么会出错,以便SRE(系统可靠性工程师)或DevOps团队可以轻松地调试系统,以便它可以探测可能未事先定义的指标和模式。2.为什么我们需要可观察性,为什么它很重要?让我们从2021年《可观测性状况》研究报告开始:53%的受访者表示应用程序问题导致客户流失或收入损失。45%的受访者表示,服务失败会导致客户满意度下降。30%的受访者表示他们因此失去了客户。这导致很大比例的受访者为服务失败的后果付出沉重代价:客户满意度下降(45%)收入损失(37%)声誉受损(36%)客户流失(30%)当然不会被忽视,因为它在确保组织遵守保护敏感数据免遭未经授权访问的法律义务方面发挥着重要作用。可观察性技术还可用于安全领域,以识别漏洞和闯入并防止数据泄露,从而使政府和监管机构能够避免或减少违规罚款。统计数据还继续表明,采用可观察性实践的组织增加了收入和盈利能力,因为能够监控客户行为以获得分析见解,帮助营销人员做出战略决策并改善用户体验,从而提高组织的声誉。下一个是什么?3.可观察性指标的三大支柱指标是数据如何随时间间隔测量的数字表示。为从操作系统到应用程序的所有资源生成指标,包括一组属性,例如名称、时间戳和字段,以指示通常传达服务级别协议(SLA)、服务级别目标(SLO)和服务级别指标的字段(SLIs)具有一定价值的其他信息。在监控方面,指标是一个合乎逻辑的起点,因为有如此多的资源随时可以提醒我们注意自己。通常,只要系统值超过指定阈值,SRE和运维工程师就会使用指标来触发警报。这些指标是选定的关键性能指标(KPI),例如响应时间、峰值负载、服务请求、CPU容量、内存使用情况、错误率和延迟。代表性KPI:在系统停机或负载平衡系统以达到最大容量时触发警报量化性能监控异常活动日志记录日志记录是监控工具箱中的重要工具,因为在任何给定时间几乎都记录了关于它们的所有信息关于执行的操作的信息.此外,日志提供了比指标更详细的资源信息,并且受到大多数应用程序框架、库和语言的支持。因此,如果指标显示资源已停用,日志将帮助您找出原因。日志的问题是关于什么是正常的信息太多了。环境中的一切都在跟踪他们正在做的事情,并渴望分享这些信息,不难看出这会产生大量数据;而不是简化监控过程。跟踪日志和指标适用于评估单个系统的行为和性能,但它们很少适用于确定分布式系统中请求的生命周期。跟踪是另一种可观察性方法,它允许您查看和理解跨多个系统的操作的整个生命周期。如上所述,跟踪可以表示一系列因果链接的分布式事件,这些事件封装了通过分布式系统的端到端请求流。跟踪反映请求或操作的整个路径,在遍历分布式系统中的所有节点时提供对系统健康状况的关键可见性。Tracing提供系统分析和检查,特别是针对容器化应用程序、无服务器架构和微服务架构。通过分析跟踪数据,您可以监控整个系统的健康状况,识别潜在问题,更快地发现和解决问题,并确定需要优化和改进的重要领域。4.实施可观察性工具在考虑优化以确保您的组织取得成功时,客户体验通常是首先要考虑的方面,也是当今大多数技术公司成功的关键。另一个关键标准是需要主动解决应用程序可用性和生产环境性能等问题。这就是可观察性派上用场的地方。现在需要一个可靠的可观察性架构来保持系统平稳运行。我列出了可用于日志聚合、分布式跟踪、APM、时间序列分析和指标收集的可观察性工具列表。虽然不是基于对主要优势或工具比较的深入研究,但它是帮助您开始提高可观察性的一个很好的起点。通过选择正确的可观察性平台,将系统的性能数据集中在一个视图中,并培养可观察性文化,您将能够更快地发现问题,了解导致问题的原因,并最终构建以客户为中心的产品。需要考虑的一些主要可观察性和日志管理工具,包括:SplunkDatadogHumioDynatraceGrafanaLabsHoneycombNewRelic然后,您需要识别和监控与您已经遇到的问题和将来可能遇到的问题相关的指标。将可观察性纳入事件管理流程后,您必须识别和监控与已发生问题和预计未来会发生的问题相关的指标。之后,您应该能够在整个组织中营造一种可观察性文化。如果不实施此模式,您可能无法充分利用您的可观察性架构,因为再多的可观察性工具也无法取代扎实的技术本能和直觉。原文链接:https://medium.com/codex/the-role-of-observability-monitoring-in-software-46bd88f792fe
