关于运维:可观测性是什么-入门指南

46次阅读

共计 5312 个字符,预计需要花费 14 分钟才能阅读完成。

如果您之前对可观测性重要性,好处,以及组成不甚了解,本文是一个适合的指南手册。

什么是可观测性?

可观测性被定义为依据零碎产生的输入数据(如日志,指标和链路追踪)来掂量以后零碎运行状态的能力。

可观测性目前被宽泛的用于晋升分布式 IT 零碎的稳定性(零碎复杂度成倍晋升,在故障或者异样时很难疾速定位和解决),它利用指标、日志和链路追踪三种类型数据,为分布式系统外部运行状态提供了深度透视能力,帮助 DevOps 工程师解决各种问题并晋升零碎性能。

如果您还不明确什么是可观测性,那么让咱们这样说吧:
可观测性是能够帮忙团队高效调试其零碎的工具或技术解决方案。可观测性基于摸索当时未定义的属性和模式(帮忙咱们被动地摸索当时未定义的属性和法则,相似于解谜过程中的摸索和揭示暗藏信息的能力)。

为什么可观测性很重要?

在大规模分布式系统上发展工作的跨职能团队,具备可观测性能力,特地是在生产环境中,能够准确的辨认异样,做出更疾速无效的反馈。

通过可观测性零碎,一旦确定导致应用程序性能降落的起因,就能够在它影响整体零碎的性能或导致系统停摆之前来修复它。

可观测性带来的收益不仅限于 IT 场景,当您收集和洞察可观测性数据时,您还能够看到数字服务对您所在组织产生的影响。

通过透视零碎运行状况的视角可能让您从监测用户体验 SLO(服务水平指标)的后果,来确保软件公布达到业务指标,并且依据业务影响抉择各事项的优先秩序。

可观测性与监控之间的区别

对于高级 DevOps 或刚刚开始 SRE(站点可靠性工程师)的人来说,彻底了解可观测性与监控之间的区别十分重要。

以下是 DORA(DevOps 钻研和评估)团队钻研对于可观测性和监控的内容。

监控是能够帮忙团队察看和理解其零碎状态的工具或技术解决方案。监控基于收集一组预约义的指标或日志。

可观测性是能够帮忙团队高效调试其零碎的工具或技术解决方案。可观测性基于摸索未事后定义的属性和模式。

利用零碎输入到内部数据来识别系统外部状态的能力被定义为可观测性。

在 IT 畛域,咱们能够把可观测性了解为利用日志、指标和链路追踪来了解软件外部状态的能力。

同时,监控是指从零碎中获取数据(日志、指标和链路追踪)的过程。

大多数监控工具都提供了一个拖拽交互的仪表盘来显示您所抉择的数据和它们各自的指标。然而,这种办法存在一个重要的毛病,因为通常团队依据集体偏好来构建此类仪表板,可能会导致重要指标的脱漏、性能异样和数据缺失的问题。

其次,大多数监控工具要么可能是是因为平安问题,要么可能是因为代理程序采集数据的能力有余,在简单的云原生利用和容器化环境不能很好兼容。

相比之下,可观测性工具在兼容性方面体现更好,因为它们专一于收集整个基础设施中的日志、链路追踪和指标数据,还可能及时告诉 DevOps 工程师,使他们可能在问题变成理论问题之前就能察觉到并采取行动。

  • 简而言之,监控告诉您零碎产生了故障,而可观测性能够帮忙您找出系统故障的起因。

可观测性有什么益处

可观测性对于终端用户、企业和 IT 团队都带来了显著的劣势。上面列举了可观测性的次要益处以及可观测性的重要性:

  1. 应用程序性能监控:全面的端到端可观测性帮忙企业更快地辨认性能问题,甚至可能捕获因为采纳云原生和微服务架构而引起的问题。借助先进的可观测性解决方案,能够自动化更多的工作,进步运维和开发团队的生产力和创造力。
  2. DevSecOps 和 SRE:可观测性应该是应用程序及其底层基础设施的基本特征,而非单纯应用新工具的后果。软件设计团队和开发团队需确保其所开发的程序易于观测。在软件交付的整个生命周期中,DevSecOps 和 SRE 团队可能利用和了解可观测数据,以创立更弱小、更平安、更具弹性的应用程序。
  3. 基础设施、云和 Kubernetes 的监控:可观测性的一个益处是它有助于基础设施监控。基础设施和运维(I&O)团队能够利用可观测性解决方案提供更好的异样事件上下文环境,从而更快地辨认和解决问题,优化资源利用率,并进步对基础设施和应用程序的治理能力。
  4. 终端用户体验:舒服的用户体验能够晋升企业的名誉和支出,为其带来竞争劣势。通过可观测性解决方案,企业可能在终端用户觉察问题之前发现并解决这些问题,并在用户提出之前施行改良措施,从而进步客户满意度和留存率。

可观测性的次要组成部分是什么?

指标、日志和分布式链路追踪是可观测性的三个次要方面,也被称为“可观测性的三大支柱”。将这三个支柱相结合,而不是独自应用它们,能够显著进步微服务架构中利用的监控和治理能力。因为微服务架构的复杂性,传统的监控办法可能无奈满足对系统的全面观测和调试需要。

事件日志、指标和链路追踪是可观测性的三大支柱,它们不仅能够独自应用,还能够通过综合利用它们的数据来提供更全面的观测。通过综合应用三支柱的数据,咱们能够更好地了解和优化零碎的性能和行为。这对于 DevOps 团队来说,将显著晋升其生产力,并为用户提供更好的体验。

日志

事件日志记录蕴含工夫戳,并且是三个支柱中信息提供最详细信息的一个。通常状况下,开发人员负责在代码中进行日志记录。

而且因为大多数软件包和编程语言曾经内置了日志记录性能,因而实现事件日志记录非常简单。

事件日志在面对非典型或极其事件的场景下表现出色,它可能提供更具体的信息和上下文,这是通过平均值和百分位数指标无奈涵盖或揭示的。

因而,事件日志可能帮忙咱们更好地理解分布式系统中较少产生但对系统性能和稳定性具备重要影响的意外行为。

指标

在一段时间内收集的数据能够通过数值指标的模式进行示意。这些指标利用数学建模和预测能力,能够更加全面地理解零碎在以后和将来期间内的行为形式。

通过对指标的存储、解决、压缩和检索进行优化,咱们可能实现更长时间范畴内的数据保留,并且简化查问操作。因而,指标数据非常适合用于创立展现历史模式的仪表板。

同时,应用指标还能够逐步升高数据的分辨率。在肯定的时间段后,咱们能够将数据聚合成每日或每周的频率指标。这样做能够无效缩小数据的复杂性,同时不便剖析和了解数据。

链路追踪

分布式系统中的端到端申请流程能够被编码成一条残缺的调用链,这个调用链代表了一系列扩散事件的具体申请门路。

链路追踪数据的构造相似于事件日志,它们记录了申请的不同阶段。每个独立的申请链路能够深刻理解申请的构造,并且展现了申请在不同组件或服务上通过的门路。理解申请的构造有助于了解不同组件或服务之间的异步交互方式,以及这种异步交互对申请的执行工夫、程序和并发性等方面的影响。整个申请门路能够帮忙软件工程师和 SRE 清晰地理解波及的各个组件或服务。

通过了解申请的残缺生命周期,咱们能够调试多个服务的申请,以确定提早减少或资源使用量减少的起因。这使得咱们可能更好地剖析和优化零碎性能。

可观测性如何运作?

可观测性平台是一个集成现有指标数据的工具,它可能为应用程序和基础设施组件增加新的监测数据。该平台的次要性能是继续地辨认和收集性能数据,并提取要害信息。

一般而言,可观测性平台会收集指标、链路追踪和日志数据,并且实时地将它们串联起来。通过将这些数据整合到一起,该平台为 DevOps 团队、SRE 团队和 IT 人员提供了详尽的上下文信息,包含每个事件的具体细节、产生地位和起因。这样的上下文信息对于辨认、剖析和解决应用程序性能问题十分有价值。

可观测性实现面临哪些挑战?

尽管实现可观测性始终以来都是一个具备挑战性的难题,然而随着云服务的复杂性日益减少并且企业减速采纳云服务的趋势,解决这个问题变得至关重要。特地是在微服务和容器化利用的环境下,云服务所产生的监控数据变得更加宽泛和简单。与过来相比,它们不仅数量更多,而且品种和规模也更大,超出了传统监控零碎所能提供的数据领域。

对于可观测性实现,通常会面临以下艰难:

  1. 数据孤岛:因为存在泛滥采集代理程序、用不同的数据源和独立的监控工具,各工具之间没有很好的集成或协同工作,很难全面了解应用程序、各种云服务和数字渠道(包含 Web、挪动网络和物联网)之间的相互依赖关系。
  2. 大规模、高速度、多样性和复杂性挑战:在应用 AWS、Azure 和 GCP (Google Cloud Platform) 等古代云服务基础设施的架构中,各服务和组件产生的原始指标数据量十分宏大,抉择之前的监控计划,简直不可能找到答案(很难无效地解决和剖析这些数据,从中获取有用的信息和答案)。应用 Kubernetes 和容器进行疾速扩缩容的能力,导致了更频繁的数据生成和变动,减少了对数据管理和剖析的挑战。
  3. 不足预生产环境:只管进行了预生产模仿高负载的测试,但开发人员仍然短少精确观测或了解理论状况的办法,代码公布前无奈在生产环境中,理解到实在用户的操作(实在行为、网络提早、不同地理位置的拜访等因素)如何影响应用程序和基础设施。
  4. 排查故障消耗大量工夫:为了解决问题并试图确定问题源头,施行团队,运维团队,基数设施团队,开发团队和数字体验团队(DX,客户与企业所有数字渠道互动的形式,是您整体客户体验的重要组成部分)都被纳入故障排除工作。然而后果是,贵重的工夫被节约在猜想和了解指标数据上。

可观测性与 DevOps 有何关系?

在 DevOps 中,可观测性是必不可少的。如果您想充分利用 DevOps 所提供的所有劣势,可观测性是一个要害因素。因为 DevOps 方法论的一个要害指标之一就是我的项目交付的一致性(consistent project delivery)。

DevOps 的概念要求施行 CI/CD(继续集成和继续交付)。理解变更对应用程序可能会产生的影响是及其重要的!此外,
它使开发者在产品分发给用户时可能管制流动,确保用户取得更好体验。

通过施行可观测性的办法和工具,您能够解决复杂性问题。首先,它通过观测应用程序的输入来帮忙您可能深刻理解应用程序和零碎的运行状况,从而更好地辨认和解决潜在的问题。此外,它能够帮忙咱们精确定位问题,并确定问题产生的具体工夫和地位。

如何实际可观测性?

要实现可观测性,您的零碎和应用程序必须提供指标收集必要的指标数据。您能够通过本人发明的工具、利用开源软件或购买商业的可观测性解决方案来创立一个可观测的零碎。

以下是开始实际可观测性的几个步骤:

  1. 确定业务指标:通过优化系统资源来缩小基础设施收入、并且通过反对容量布局以促成业务增长,以及进步要害业务指标的体现(如均匀复原工夫),弱小的可观测性配置能够帮忙进步利润或净收入。
    通过向反对人员提供额定的上下文数据,能够促成问题的透明度,甚至发明踊跃的客户体验。然而,针对不同的业务指标,所需的可观测性配置可能会有很大的差别。一旦您确定了次要的业务指标,您须要制订一个可观测性策略,以确保您领有适当的伎俩和工具来反对这些指标的实现。
  2. 关注正确的指标:精心设计的可观测性办法,您能够在问题呈现之前就预测到潜在的谬误或故障,并精确定位根本原因。
    为了谋求透明度,须要进行多种数据收集、剖析以及其余监控和测试技术,以便全面理解和评估所波及的内容。
  3. 事件日志:对于架构和开发团队来说,事件日志是分布式系统中可观测性的重要数据源。有很多专为捕捉和存储事件日志设计的工具,如 Prometheus、Middleware 和 Splunk。
    这些事件信息可能包含零碎的各种过程的胜利信息、重大系统故障、意外停机或导致系统过载的流量变动。
    因为它为开发人员提供了要害的取证信息,用来发现有缺点的组件或有交互有问题的局部,所以这对于调试和定位错误处理尤为重要。
  4. 拜访可视化数据:当胜利采集到可观测性数据时,这些原始数据必须被压缩成通用的格局。通常再应用各种可视化工具对这些数据进行可视化渲染。
    通过这样形式,团队成员就能够高效的将该信息传递或分享给其余相干的团队。
  5. 抉择适合的可观测性平台:在抉择适合的可观测性平台时,请思考以下因素:
  6. 工具是否收费?
  7. 是否应用开源采集代理工具?
  8. 工具是否易用?
  9. 是否具备施展该工具最大后劲所需的技术常识储备?
  10. 工具的解决能力能够适应何种数据规模?

通过答复这些问题和其余与业务相干的问题,将帮忙您做出理智的决策。

论断

一个可观测性零碎须要与业务平台进行适配和兼容,否则可能会带来一些问题。这些问题包含:

  • 零碎变得轻便:如果零碎无奈适应不兼容的平台,可能导致系统变得复杂、难以治理和应用。
  • 减少经营老本:为了保护和支持系统,在不兼容的平台上可能须要额定的资源和投入,从而减少了经营老本。
  • 不足成果和可见性:如果零碎无奈提供令人满意的性能和足够的可见性,就无奈无效监控和理解零碎的运行状况。

因而,在施行过程中,咱们须要明确心愿通过可观测性零碎解决的关键问题,以确保零碎可能提供精准且有用的数据和牢靠的见解。这些数据和见解能够帮忙咱们深刻理解经营状况、问题和趋势,从而反对企业的决策和经营。

如果没有明确的领导方向,在构建可观测性零碎时可能会呈现凌乱的网络,其中存在着互相抵触的问题,无奈提供一致性的用户体验和反对。因而,须要有明确的指标和打算,以确保零碎的稳定性和有效性。

本文翻译自:https://devopscube.com/what-is-observability/,译者王梓禾,更多可观测性体系建设思路,请参考《面向故障解决的可观测性体系建设》

正文完
 0