如果您之前对可观测性重要性,益处,以及组成不甚了解,本文是一个合适的指南手册。
可观测性被定义为根据系统产生的输出数据(如日志,指标和链路追踪)来衡量当前系统运行状态的能力。
可观测性目前被广泛的用于提升分布式 IT 系统的稳定性(系统复杂度成倍提升,在故障或者异常时很难快速定位和解决),它利用指标、日志和链路追踪三种类型数据,为分布式系统内部运行状态提供了深度透视能力,协助 DevOps 工程师解决各种问题并提升系统性能。
如果您还不明白什么是可观测性,那么让我们这样说吧:可观测性是可以帮助团队高效调试其系统的工具或技术解决方案。可观测性基于探索事先未定义的属性和模式(帮助我们主动地探索事先未定义的属性和规律,类似于解谜过程中的探索和揭示隐藏信息的能力)。
在大规模分布式系统上开展工作的跨职能团队,具备可观测性能力,特别是在生产环境中,可以精确的识别异常,做出更快速有效的反应。
通过可观测性系统,一旦确定导致应用程序性能下降的原因,就可以在它影响整体系统的性能或导致系统停摆之前来修复它。
可观测性带来的收益不仅限于 IT 场景,当您收集和洞察可观测性数据时,您还可以看到数字服务对您所在组织产生的影响。
通过透视系统运行状况的视角能够让您从监测用户体验 SLO (服务水平目标)的结果,来确保软件发布达到业务目标,并且根据业务影响选择各事项的优先次序。
对于初级 DevOps 或刚刚开始 SRE(站点可靠性工程师)的人来说,彻底理解可观测性与监控之间的区别非常重要。
以下是 DORA( DevOps 研究和评估)团队研究关于可观测性和监控的内容。
监控是可以帮助团队观察和了解其系统状态的工具或技术解决方案。监控基于收集一组预定义的指标或日志。 可观测性是可以帮助团队高效调试其系统的工具或技术解决方案。可观测性基于探索未预先定义的属性和模式。
利用系统输出到外部数据来识别系统内部状态的能力被定义为可观测性。
在 IT 领域,我们可以把可观测性理解为利用日志、指标和链路追踪来理解软件内部状态的能力。
同时,监控是指从系统中获取数据(日志、指标和链路追踪)的过程。
大多数监控工具都提供了一个拖拽交互的仪表盘来显示您所选择的数据和它们各自的指标。然而,这种方法存在一个重要的缺点,因为通常团队根据个人偏好来构建此类仪表板,可能会导致重要指标的遗漏、性能异常和数据缺失的问题。
其次,大多数监控工具要么可能是是因为安全问题,要么可能是由于代理程序采集数据的能力不足,在复杂的云原生应用和容器化环境不能很好兼容。
相比之下,可观测性工具在兼容性方面表现更好,因为它们专注于收集整个基础设施中的日志、链路追踪和指标数据,还能够及时通知 DevOps 工程师,使他们能够在问题变成实际问题之前就能察觉到并采取行动。
可观测性对于终端用户、企业和 IT 团队都带来了显著的优势。下面列举了可观测性的主要好处以及可观测性的重要性:
指标、日志和分布式链路追踪是可观测性的三个主要方面,也被称为 “可观测性的三大支柱”。将这三个支柱相结合,而不是单独使用它们,可以显著提高微服务架构中应用的监控和管理能力。由于微服务架构的复杂性,传统的监控方法可能无法满足对系统的全面观测和调试需求。
事件日志、指标和链路追踪是可观测性的三大支柱,它们不仅可以单独使用,还可以通过综合利用它们的数据来提供更全面的观测。通过综合使用三支柱的数据,我们可以更好地理解和优化系统的性能和行为。这对于 DevOps 团队来说,将显著提升其生产力,并为用户提供更好的体验。
事件日志记录包含时间戳,并且是三个支柱中信息提供最详细信息的一个。通常情况下,开发人员负责在代码中进行日志记录。
而且由于大多数软件包和编程语言已经内置了日志记录功能,因此实现事件日志记录非常简单。
事件日志在面对非典型或极端事件的场景下表现出色,它能够提供更详细的信息和上下文,这是通过平均值和百分位数指标无法涵盖或揭示的。
因此,事件日志能够帮助我们更好地了解分布式系统中较少发生但对系统性能和稳定性具有重要影响的意外行为。
在一段时间内收集的数据可以通过数值指标的形式进行表示。这些指标利用数学建模和预测能力,可以更加全面地了解系统在当前和未来时期内的行为方式。
通过对指标的存储、处理、压缩和检索进行优化,我们能够实现更长时间范围内的数据保留,并且简化查询操作。因此,指标数据非常适合用于创建展示历史模式的仪表板。
同时,使用指标还可以逐渐降低数据的分辨率。在一定的时间段后,我们可以将数据聚合成每日或每周的频率指标。这样做可以有效减少数据的复杂性,同时方便分析和理解数据。
分布式系统中的端到端请求流程可以被编码成一条完整的调用链,这个调用链代表了一系列分散事件的具体请求路径。
链路追踪数据的结构类似于事件日志,它们记录了请求的不同阶段。每个独立的请求链路可以深入了解请求的结构,并且展示了请求在不同组件或服务上经过的路径。了解请求的结构有助于理解不同组件或服务之间的异步交互方式,以及这种异步交互对请求的执行时间、顺序和并发性等方面的影响。整个请求路径可以帮助软件工程师和 SRE 清晰地了解涉及的各个组件或服务。
通过理解请求的完整生命周期,我们可以调试多个服务的请求,以确定延迟增加或资源使用量增加的原因。这使得我们能够更好地分析和优化系统性能。
可观测性平台是一个集成现有指标数据的工具,它能够为应用程序和基础设施组件添加新的监测数据。该平台的主要功能是持续地识别和收集性能数据,并提取关键信息。
一般而言,可观测性平台会收集指标、链路追踪和日志数据,并且实时地将它们串联起来。通过将这些数据整合到一起,该平台为 DevOps 团队、SRE 团队和 IT 人员提供了详尽的上下文信息,包括每个事件的具体细节、发生位置和原因。这样的上下文信息对于识别、分析和解决应用程序性能问题非常有价值。
虽然实现可观测性一直以来都是一个具有挑战性的难题,但是随着云服务的复杂性日益增加并且企业加速采用云服务的趋势,解决这个问题变得至关重要。特别是在微服务和容器化应用的环境下,云服务所产生的监控数据变得更加广泛和复杂。与过去相比,它们不仅数量更多,而且种类和规模也更大,超出了传统监控系统所能提供的数据范畴。
关于可观测性实现,通常会面临以下困难:
在 DevOps 中,可观测性是必不可少的。如果您想充分利用 DevOps 所提供的所有优势,可观测性是一个关键要素。因为 DevOps 方法论的一个关键目标之一就是项目交付的一致性(consistent project delivery)。
DevOps 的概念要求实施 CI/CD(持续集成和持续交付)。了解变更对应用程序可能会产生的影响是及其重要的!此外, 它使开发者在产品分发给用户时能够控制活动,确保用户获得更好体验。
通过实施可观测性的方法和工具,您可以处理复杂性问题。首先,它通过观测应用程序的输出来帮助您能够深入了解应用程序和系统的运行情况,从而更好地识别和解决潜在的问题。此外,它可以帮助我们精确定位问题,并确定问题发生的具体时间和位置。
要实现可观测性,您的系统和应用程序必须提供指标收集必要的指标数据。您可以通过自己创造的工具、利用开源软件或购买商业的可观测性解决方案来创建一个可观测的系统。
以下是开始实践可观测性的几个步骤:
通过回答这些问题和其他与业务相关的问题,将帮助您做出明智的决策。
一个可观测性系统需要与业务平台进行适配和兼容,否则可能会带来一些问题。这些问题包括:
因此,在实施过程中,我们需要明确希望通过可观测性系统解决的关键问题,以确保系统能够提供精准且有用的数据和可靠的见解。这些数据和见解可以帮助我们深入了解运营情况、问题和趋势,从而支持企业的决策和运营。
如果没有明确的指导方向,在构建可观测性系统时可能会出现混乱的网络,其中存在着相互冲突的问题,无法提供一致性的用户体验和支持。因此,需要有明确的目标和计划,以确保系统的稳定性和有效性。
如果觉得有用,就请关注、点赞、在看、分享到朋友圈吧。
END
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有