什么是可观测性?

复制 URL

可观测性是指能够通过检查系统或应用的输出、日志和性能指标来监控、测量和理解系统或应用的状态。在现代软件系统和云计算中,可观测性在确保应用和基础架构的可靠性、性能和安全性方面发挥着越来越重要的作用。

随着软件系统的复杂程度不断增加、微服务的广泛采用以及对分布式架构的日益依赖,可观测性的重要性也越来凸显。

可观测性超越了传统的监控,能够帮助团队确定问题的根本原因。它能为利益相关者提供关于其应用程序和业务的洞察和信息,包括预报和预测可能出现的问题。可观测性实践使用的工具和技术丰富多样,因而部署方式也非常多样化。这会带来架构上的影响,因此 IT 团队必须知道如何采用适合自己的方法来建立可观测性系统。  

人工智能和机器学习

人工智能(AI)机器学习(ML)越来越多地被用于可观测性平台,以提供自动化异常检测、根本原因分析和预测性见解。这些技术有助于减少识别和解决复杂系统中问题所需的时间和精力。

混合环境和多云环境

随着企业或机构越来越多地采用混合云和多云策略,无论应用和服务部署到哪里,都需要可观测性工具来提供整个基础架构的视图。

边缘设备

边缘设备、物联网(IoT)设备或其他本地计算设备的未来发展将在监控和管理这些环境方面带来新的挑战。它们需要提供实时见解和快速响应时间。这可能涉及创建用于数据收集的轻量级代理,使用对边缘友好的数据格式和协议,以及结合去中心化数据处理和分析技术,同时还要部署可靠的安全防护和隐私保护功能。

DevOps 中的可观测性

随着可观测性在确保云原生应用的可靠性和性能方面变得越来越重要,它在 DevOps 中也越来越受重视。这包括将可观测性工具集成到 DevOps 工具链中,以及使用可观测性数据来推动应用性能和可靠性的持续改进。

开源可观测性工具越来越普及

近年来,Grafana、Jaeger、Kafka、OpenTelemetry 和 Prometheus 等开源可观测性工具越来越受欢迎,而且这种趋势可能会经久不息。这一方面是因为大家希望降低专有可观测性工具相关的成本,另一方面则是出于开源工具所能提供的灵活性和定制选项。

云原生基础架构愈发普遍

随着越来越多的企业或机构采用云原生基础架构,对专门为这类环境设计的可观测性工具的需求也可能会增加。云原生应用和基础架构生成的数据量不断增多,ML 和 AI 在云原生可观测性领域也变得愈发重要。这些新兴技术有助于在最终用户受到影响之前识别异常和性能问题,让企业或机构能够主动解决问题,以免造成重大问题。

更高的可靠性

在局面恶化之前检测并解决问题,最大限度减少停机时间,并确保系统依然可供用户使用。

高效的故障排除

深入了解系统行为,从而快速确定问题的根本原因并高效地解决问题。

优化性能

确定需要优化的领域,如系统中的瓶颈或未充分利用的资源,从而提高资源分配效率并改进性能。

数据驱动的决策

接收最新的系统性能和行为信息,实现数据驱动决策和持续改进。

可观测性和监控是彼此相关的概念,但也有一些关键区别。可观测性是指用系统运行时收集的表层信息来了解系统的内部状态,而不必拆开系统。

随着越来越多的企业或机构采用云原生基础架构,对专门为这类环境设计的可观测性工具的需求也可能会增加。云原生可观测性工具旨在收集和分析来自微服务容器和其他云原生技术的数据,并提供有关这些环境中系统性能的深度见解。

简而言之,云原生可观测性是一种对现代云原生应用进行监控、分析和故障排除的做法,这些应用使用微服务架构构建而成,并部署在容器或无服务器环境中。云原生可观测性的核心要素通常包括以下方面:

指标:侧重于收集有关 Kubernetes 环境和应用的定量数据。指标可以包括 CPU 和内存使用率、网络流量和请求延迟等数据。Kubernetes 可提供数个内置的指标,但您也有可能需要使用其他工具或库来收集更详细的指标。

日志:侧重于收集和分析来自 Kubernetes 环境和应用的日志数据。日志可以提供对应用行为的重要见解,并可用于排查问题、确定性能瓶颈和检测安全威胁。

跟踪:侧重于收集有关跨 Kubernetes 环境和应用执行请求或事务的数据。跟踪可以帮助您了解应用如何处理请求或事务,识别性能问题,并优化应用的性能。

事件:侧重于收集有关 Kubernetes 环境中发生的重要事件的数据,例如应用部署、扩展事件和错误等。事件可以帮助您监控 Kubernetes 环境的运行状况,并在出现问题时快速做出响应。

可观测性对于站点可靠性工程(SRE)和 DevOps 来说至关重要,因为它能确保系统可靠和高效地运行。可观测性之所以重要,是因为它可提供有关系统性能和行为的深度见解,从而能主动地进行监控、故障排除和优化。 

开发人员、运维团队或站点可靠性工程师需要采取特定的步骤,以利用可观测性数据来识别、分析和解决任何软件系统中的问题。这称为“调试旅程”。

可观测性的旅程始于问题的检测,无论是通过监控、警报系统还是用户报告的故障事件。

检测到问题后,团队必须判断其严重程度,排定它的优先顺序。这一分检过程涉及评估对用户、系统和整体性能的影响。

对于优先级较高的项目,调查收集到的可观测性数据来识别模式和相关性。

确定潜在的相关性和模式后,团队要深入研究这些数据,以查明问题的根本原因。

确定缘由之后,团队可以通过代码更改、修补程序或基础架构调整来实施修复,然后继续监控系统,查看解决方案是否奏效。

面向 DevOps 和 SRE 的可观测性需要结合使用各种工具、流程和专业知识,才能有效地监控、排除故障和优化系统,并且它在使企业能够向客户提供高质量的数字化服务方面具有举足轻重的作用。红帽 OpenShift Observability 可以提供必要的信息来制定系统的基线,然后监控和提醒与该基线的偏差,从而能缩短平均检测时间(MTTD)和平均解决时间(MTTR)。

红帽® OpenShift® Observability 旨在解决现代架构方面的复杂性,它能在各种可观测性工具和技术之间搭建桥梁,创造统一的可观测性体验。该平台经过精心设计,可实时呈现、监控和分析各种系统指标、日志、跟踪和事件,帮助用户快速诊断和排除问题,以免对应用或最终用户造成影响。

红帽 OpenShift 提供的可观测性能力可以帮助提升云应用的性能和可靠性。它通过收集和分析应用中的数据,帮助您在客户受到影响之前发现问题,对基础架构进行优化,并降低成本。您还可以更好地了解应用的行为,并且主动地修复问题。掌握了这些能力,用户能够深入了解其应用和基础架构在任何环境中的性能和运行状况,如公共云、本地和边缘等。

该平台经过精心设计,可实时呈现、监控和分析各种系统指标、日志、跟踪和事件,帮助用户快速诊断和排除问题,以免对应用或最终用户造成影响。

红帽 OpenShift Observability 的五大核心要素

数据存储

将各种可观测性工具和平台生成的数据(如日志、指标和跟踪等)存储到一个集中位置,以进行分析和监控。存储这些数据对于企业来说至关重要,因为他们依赖这些工具来深入了解系统性能,检测和诊断问题,以及优化自己的运维工作。红帽 OpenShift Observability 使用 Prometheus 和 Thanos 来存储指标,使用 Loki 来存储日志,并且使用 Jaeger 和 Elasticsearch 来存储跟踪数据。

数据收集

从系统、网络或应用内的各种来源收集不同类型的数据,如日志、指标和跟踪等,并将其发送到一个集中位置进行分析和监控。红帽 OpenShift Observability 使用 Prometheus 来收集指标,使用 Vector 来收集日志,并使用 OpenTelemetry 来收集跟踪数据。

数据分析

分析和解释从可观测性支柱收集的数据,从而深入了解系统、网络或应用的行为和性能。这个过程包括使用数据分析技术来识别数据中的趋势、异常和相关性。红帽 OpenShift Observability 可执行数据分析,并将其结果直接集成到 Red Hat OpenShift 控制台中。

数据交付

把从可观测性核心要素收集的数据,及时、高效地交付给相应的利益相关者。此过程涉及定义数据交付工作流、配置交付渠道以及设置警报和通知,以确保在问题发生时通知相关的利益相关者。为了在红帽 OpenShift Observability 中实现这一点,我们提供了 Observability Operator 来聚合和规范化数据,并准备好数据以用于警报。

数据可视化

以易于理解和阐释的可视化格式呈现从可观测性核心要素收集的数据。红帽 OpenShift Observability 使用红帽 OpenShift 控制台中内置的图形、图表和控制面板来呈现数据,以方便用户快速识别数据中的模式、趋势和异常。

红帽产品的可观测性工具

一个企业级应用平台,包含一系列统一经过测试的服务,可基于您选择的基础架构将应用推向市场。

 红帽 Kubernetes 高级集群管理徽标

红帽 Kubernetes 高级集群管理包含丰富的功能,能够统一多集群管理,提供基于策略的监管,以及扩展应用生命周期管理,还可主动监控集群运行状况和性能。

红帽智能分析可以持续分析平台和应用,以预测风险、推荐操作并跟踪成本,让企业能够更好地管理混合云环境。

随着软件变得愈加复杂,我们需要更多资源来提供可靠的检测组件。在此趋势下,使用专有可观测性产品会造成重复和效率低下。由于市场的发展和变化,公司之间越来越倾向于在开源核心上进行合作,然后在技术栈的更高层面进行竞争(包括功能和定价)。开源可观测性项目如此之多,Operator 可能会彼此脱节,分散各处,导致用户无法创造统一的堆栈。红帽 OpenShift Observability 可以解决这一问题,它能将无数的开源可观测性 Operator 连接在一起并使它们彼此协同配合,打造统一的可观测性体验。红帽致力于为客户提供跨开放混合云的选择自由和灵活性,同时回报给我们使用的所有可观测性开源项目,促进社区的开源组件进步。红帽可跨公共云、本地和边缘等任何环境提供单一、统一、一致、简化的可观测性体验。

扩展阅读

文章

什么是机器学习?

机器学习(ML)是人工智能(AI)的一个子类,是指利用算法识别一组数据中的模式并做出预测。 

文章

了解容器

通过利用容器技术,您可以将应用及其整个运行时环境(包括需要的所有文件)一起进行打包和隔离。

文章

什么是 Kubernetes?

Kubernetes 是一个开源的容器编排平台,可以自动完成在部署、管理和扩展容器化应用过程中涉及的许多手动操作。