可观测性是指仅根据其外部输出(特别是遥测)的了解来理解复杂系统的内部状态或状况的能力。
可观测性在维护现代软件系统和云计算环境的可用性、性能和安全性方面起着至关重要的作用。
“可观测性”一词源自控制理论,这是一种专注于动态系统自动化控制的工程理论,例如根据流量控制系统的反馈调节管道水流。
可观测性提供了对现代分布式技术栈的深度可见性,可实现自动实时问题识别和解决。系统越容易观测,IT 团队就能越快越准确地根据已识别的性能问题确定根本原因,而无需进行额外测试或编码。
在 IT 运营 (ITOps) 和云计算中,可观测性需要借助软件工具来聚合、关联和分析来自应用程序及其运行所依靠的硬件和网络的稳定性能数据流。然后,团队可以使用这些数据来监控应用程序和网络、对其执行故障排查和调试,最终优化客户体验并满足服务级别协议 (SLA) 和其他业务要求。
可观测性经常与应用程序性能监控和网络性能管理 (NPM) 相混淆。但是,可观测性工具是应用程序性能监控和 NPM 数据收集方法的自然演变。它们更适合应对云原生应用程序部署日益分散和动态的特性。
可观测性并不取代其他监控方法,而是对其进行改进和扩展。
可观测性平台通过与应用程序和基础设施组件内置的仪表集成,不断发现和收集性能遥测,并为这些组件添加功能和仪表。
可观测性侧重于三种主要遥测数据类型:
日志是应用程序事件的记录,其特点是粒度细、带时间戳、完整且不可改变。除其他事项外,日志可用于创建每个事件的高精度毫秒级记录,并以相关的上下文信息作为补充。开发人员使用日志进行故障排除和调试。
跟踪会记录每个用户请求的端到端“旅程”,即从用户界面或移动应用程序开始,经过整个架构,再返回到用户的过程。
指标(有时称为时间序列指标)是衡量一段时间内应用程序和系统健康状况的基本测度。例如,指标用于衡量应用程序在五分钟内使用了多少内存或 CPU 算力,或者应用程序在使用量高峰期间遇到了多少延迟。
可观测性工具还会生成依赖关系图,揭示每个应用程序组件如何依赖其他组件、应用程序和 IT 资源。
收集遥测数据后,该平台会实时关联数据,为 DevOps 开发运维团队、站点可靠性工程 (SRE) 团队和 IT 人员提供完整的上下文信息。团队可以了解可能指示、导致或解决应用程序性能问题的任何事件的“内容、位置和原因”。
许多可观测性平台还会自动发现系统内出现的新遥测源,例如当网络中添加新的应用程序编程接口 (API) 时。领先的平台还包括人工智能运营 (AIOps) 能力,可以将表示真实问题的信号与“噪音”(与当前或潜在问题无关的数据)分开。
可观测性工具通常会自动执行三个关键流程,以帮助企业更清楚地了解其技术栈:
持续的数据收集使可观测性成为可能。可观测性工具有助于收集、汇总以及访问 CPU 内存数据、应用程序日志、高可用性数据、平均延迟及其他指标。
团队必须能够相对轻松地查看应用程序和系统数据,因此可观测性工具会设置仪表板来监控应用程序的健康状况、任何相关服务和任何相关的业务目标。
监控功能还可以通过使用依赖图等工具来帮助阐明服务如何相互协作并融入整体架构。
以前,数据分析任务是使用应用性能管理 (APM) 工具执行的,该工具将汇总从每个数据源收集的数据,以创建易于理解的报告、仪表板和可视化效果,类似于可观测性软件中的监控功能。
由于现代架构通常依赖于容器化的微服务,因此可观测性工具通常会将基本的遥测功能转移到 Kubernetes 层,从而使 IT 团队能够将数据分析重点放在服务级目标 (SLO) 和服务级指标 (SLI) 上。可观测性软件汇编多个来源的数据,对其进行审查以找出相关内容,并将可操作的洞察分析反馈给开发团队。
值得注意的是,可观测性软件的自动化功能超出了这三个过程。当新服务添加到网络时,可观测性工具还可以自动化调试过程、仪表和监控仪表板更新。它们管理代理处理,其中代理是部署在整个生态系统中的小型软件组件,用于持续收集遥测数据等。
在过去几十年中,IT 团队主要依靠 APM 工具来监控应用程序并执行故障诊断。APM 包括但不限于应用程序性能监控,它会定期采样并汇总应用程序和系统数据,从而识别应用程序性能问题。
APM 分析与关键绩效指标 (KPI) 相关的遥测数据,并将结果汇总在易于阅读的仪表板上,其中提醒运营和支持团队注意导致或可能导致系统性能问题的任何异常情况。
APM 工具可以有效地监控单体应用程序和传统的分布式应用程序,并进行故障排除。在这些配置中,会定期发布新代码,并且应用程序组件、服务器和相关资源之间的工作流和依赖关系是十分明确的或相对容易跟踪的。
然而,如今,组织正在拥抱数字化转型。他们正在迅速转向现代开发实践,如敏捷开发、持续整合和持续部署 (CI/CD)、DevOps 开发运维,并采用云原生技术,如 Docker 容器和无服务器架构功能。
现代应用程序通常依赖于微服务架构,通常在容器化的 Kubernetes 集群中运行。结果,开发人员可以比以往更快地将更多服务推向市场。
但是,在这样做时,他们会在整个架构中部署新的应用程序组件。这些组件以不同的语言和数据格式运行,并且运行持续时间各不相同,有时仅持续数秒或几分之一秒,就像无服务器架构一样。这意味着需要多个运行时,每个运行时在架构内的不同位置输出日志。
APM 每分钟一次的数据采样和传统的监控协议无法跟上如此海量的数据。
相反,企业需要可观测性工具提供的细粒度、高容量、自动化遥测和实时洞察分析生成。这些工具使开发团队能够创建和存储网络上每个应用程序、用户请求和数据交易的实时、高精度、上下文丰富、完全相关的记录。
可观测性主题已成为现代 DevOps 开发运维的核心,它通过结合和自动化软件开发和 IT 运营团队的工作来加速应用程序和服务的交付。DevOps 开发运维方法使用共享工具和实践以及规模较小且频繁的更新,使软件开发速度更快、更高效、更可靠。
有效的 DevOps 战略要求团队识别最终用户体验中的潜在性能瓶颈和问题,并使用可观测性工具来解决问题。借助可观测性平台,DevOps 开发运维团队可以通过使用相关数据洞察来快速识别有问题的组件和事件。
可观测性平台还为 DevOps 开发运维团队提供工具和可观测性工程方法,以便更好地了解他们的系统。这些工具和方法包括:事件分析,可帮助找到意外系统事件的原因并改善未来的事件响应策略;功能标记,可允许团队在不修改源代码的情况下启用和禁用应用程序功能;以及持续验证,其使用机器学习 (ML) 分析历史部署数据并建立性能基准。
高质量的可观测性数据洞察分析意味着在软件开发和测试过程中获得更快、更好的反馈,以及更高效的 CI/CD 管道。
人工智能正在改变可观测性,将高级分析、自动化和预测功能集成到 IT 运营中。传统的可观测性可提供对系统的详细可见性,而 AI 通过智能分析数据来增强这种可见性,以在问题发生之前预见和预防问题。
由 AI 驱动的可观测性使开发团队能够主动保护企业 IT 基础架构,而不是在问题出现时才去处理。通过使用 ML 算法,可观测性工具可以解析大量数据流,以查找模式、趋势和异常,从而揭示人类工作者可能忽略的洞察分析。
部分 AI 驱动式可观测性工具和功能包括:
可观测性工具可以运用 AI 技术在修复过程中模拟和自动执行人类决策。
假设一个团队正在使用数字体验管理 (DEM) 平台。目前,这些平台使用一系列修复脚本,使 IT 人员能够执行一键修复并向用户建议自助服务。
通过持续监控,基于 AI 的可观测性功能可以分析传入数据以发现超出既定阈值的异常和活动。然后,可观测性平台可以执行一系列修复措施,类似于修复脚本,以解决问题。
如果出于某种原因,软件无法解决问题,它将自动生成包含所有相关详细信息的工单。这些详细信息包括问题的位置、优先级以及 IT 团队问题管理平台中 AI 模型的任何相关洞察分析。
此过程使 IT 人员能够专注于软件无法处理的问题,并尽快解决系统性能问题。
LLM 擅长识别大量重复性文本数据中的模式,这些数据与复杂动态系统中的日志和遥测数据非常相似。如今,可以通过训练当今的 LLM 来执行特定的 IT 流程,或者通过 提示工程协议来驱动 LLM,从而通过使用人类语言语法和语义来返回信息和洞察分析。
LLM 的进步可以帮助可观测性工具的用户使用自然语言编写和深入了解查询,从而摆脱复杂的查询语言。这一发展可以显著惠及各个技能水平的用户,特别是技术知识有限的人,帮助他们更有效地管理复杂数据。
LLM 目前还不适合实时分析和故障排除,因为它们通常缺乏捕获完整上下文的精确度。然而,LLM 具有先进的文本处理功能,有助于简化可观测性平台中的数据洞察分析。
更容易获得的洞察分析可以更好地提高对系统行为的了解,并更深入、更广泛地理解 IT 问题和故障点。
因果 AI 是 AI 的一个分支,它侧重于阐明变量之间的因果关系并建立模型,而不仅仅是识别相关关系。
ML 等传统 AI 技术通常依赖统计相关性进行预测。而因果 AI 旨在找到产生相关性的底层机制,以提高预测能力并实现更有针对性的决策。
将因果 AI 纳入可观测性系统可以显著增强组织对其 IT 环境的洞察力。
因果 AI 使 IT 团队能够分析基础架构组件之间的关系和相互依赖关系,从而更好地查明运营和质量问题的根本原因。它使开发人员不仅能够了解系统问题的“时间和地点”,还能够了解“原因”,从而帮助团队更快地解决问题并提高系统可靠性。
全栈可观测性可以使系统更易于理解和监控,更容易和更安全地使用新代码进行更新,并且更容易修复。它有助于使 IT 团队能够:
监控工具的一个主要限制在于:它们只监视“已知的未知问题”,即 IT 团队已经知道需要监视的异常情况。可观测性工具可以发现团队可能永远不会知道或想去寻找的条件,然后追踪它们与特定性能问题的关系。这种洞察分析提供了更广阔的背景信息,有助于确定根本原因并加快解决速度。
可观测性将监控集成到软件开发流程的早期阶段。此集成有助于 DevOps 开发运维团队快速识别并修复新代码中的问题,以免影响客户体验或 SLA。
可观测性工具使开发人员能够收集、分析、关联和发现各种遥测数据,以更好地了解用户行为并优化用户体验。
可观测性工具可支持团队在 Kubernetes 聚类配置中指定检测点和数据聚合方案,例如从聚类启动到关闭的全程收集遥测数据。
IT 团队可以将可观测性与 AIOps、ML 和自动化功能结合起来,以根据系统输出预测问题,并在无需人工干预的情况下解决问题。
可观测性解决方案可加快发现问题和解决问题的进程。这种加速有助于团队保持应用程序的高可用性、较低的平均修复时间 (MTTR) 并将中断时间降至最低。
可观测性解决方案采用整体的云原生方法来记录并监控应用程序。它们可实现无缝流程自动化,并与历史上下文数据协同配合,帮助团队更好地优化各类用例中的企业应用程序。