可观测性和传统监控的区别

简介: 【1月更文挑战第25天】

传统监控的问题排查方法

传统的监控系统主要用于收集和汇总一定时间间隔内的性能指标,运维同学需要依靠这些指标的变化趋势来分析系统的性能,基于过往的经验判断系统是否正常,哪里可能有问题;或者通过设定监控指标的阈值进行告警。


将这些指标以图表形式展现出来,各种各样图表的组合以及自定义的视图便构成了一个个仪表盘。我们通常会为每一个系统服务设置一个静态的仪表盘,通过它了解系统的运行状态。


当我们想使用仪表盘来进一步分析问题的时候,会受制于这些仪表盘的预设条件,只能查看预设的维度;如果想分析其他的维度,可能就进行不下去了。因为这个维度的标签很可能并没有提前被添加进来,也就不能提供数据的聚合了。


使用传统监控排查故障的局限性

随着容器化的趋势、容器编排平台(例如 Kubernetes)的兴起、系统架构向微服务的转变、混合持久化(多种数据库,消息队列)的普遍使用,同时服务网格的引入、自动弹性伸缩实例的流行,甚至是无服务器(Serverless)的出现以及无数相关的 SaaS 服务的涌现,要将这些不同的工具串在一起形成一个现代系统体系结构,可能意味着一个请求在到达你控制的代码时,已经执行了多次跳转。


在云原生系统中,进行调试最困难的不再是理解代码的运行方式,而是找到有问题的代码在系统中的位置。这时候,通过仪表盘来查看哪个节点或服务速度较慢是不太可能的,因为这些系统中的分布式请求经常在不同的节点中循环,要在这些系统中找到性能瓶颈非常具有挑战性。当某个组件或者服务变慢了,一切都变慢了。


云原生系统通常作为平台运行,代码可能存在于你甚至无法控制的系统中(比如云上的云原生服务或是 PaaS 资源)。


每个请求都有可能跨越任意数量的服务和机器,这让与这些请求相关的几十个指标产生分裂,如果我们想推断在这个过程中各种请求跳转发生了什么,就必须将这些相关的指标都连接起来。而如果继续通过传统的设定阈值的方式进行故障定位,除非你能提前了解可能会在哪些节点出现问题,否则你将完全不知道故障是如何发生的,甚至都没法设定相关的阈值。


传统监控只能解决 Known-Unknowns 的问题

由于业务架构微服务化,加上日益普及的敏捷开发模式,业务的迭代速度变得非常快,这会导致仪表盘中配置的各种指标随着时间快速失效。结果就是,以往的告警和经验模式逐渐失去作用。每次出现故障,复盘的结果就是再增加一些指标或是一些告警,然而这些告警将来可能再也不会被触发。


依赖传统的监控系统,解决的是 Known-Unknowns 的问题(即你能够感知、但是不理解的问题)。比如说 CPU 使用率达到 90% 触发了告警,但却不清楚是什么原因导致了 CPU 的使用率如此之高。对于越来越多第一次发生的事情,你不可能知道这些本来你就不知道的情况,即 Unknown-Unknowns(即你既不理解、也没有感知的问题)。


随着系统复杂性的不断增加,系统性能问题的背后,涉及越来越繁多的相关性和可能性,很多问题超出了任何个人或团队能够直观理解的范畴,所以是时候引入突破这种被动和限制性的工具和方法了。


可观测性与传统监控的区别

通过查看和分析高维度和高基数数据,发现埋藏在复杂系统架构中的隐藏问题,而且不需要事先预测问题可能发生在哪里,以及问题发生的模式,这是可观测性和监控的第一个区别


可观测性和监控的第二个区别是,关注的维度不一样。监控更加关注基础设施的资源情况。将一切整合起来的可观测性就和原来的监控不同了:可观测平台瞄准的恰恰是应用软件本身。可观测性的目标是保障应用软件的可靠性和稳定性,解决的是应用软件在运行时的调试问题。

对于应用程序代码,最重要的指标是用户的体验。底层系统可能基本上是健康的,但用户请求仍然可能因为多种原因而失败。


可观测性和监控的第三个区别,体现在数据收集的全面性(不仅仅是指标数据)和关联性上。


构建自身系统完整的可观测性需要的能力非常广泛,一般情况下,对于大部分企业来说,这是一个包括数据收集、集成、展示在内的综合性系统工程。它可能涵盖的技术从底层操作系统,到各种语言环境网络协议,甚至还涉及前端用户访问数据,eBPF,Profiling 等等,这是一个非常庞大的知识结构。而且,仅仅收集数据也是不够的,利用数据所提供的可视化、交互性来真正意义上让可观测性落地才是核心。


可观测性强调的是从应用和业务维度,用各种数据垂直且实时地描述这个应用的全貌,它采用的不是传统的分层逻辑,不是用不同的独立的监控系统分开关注每一层的情况(例如基础设施、中间件、数据库、应用服务端代码、客户端等等)。


可观测性提供了一种不同的诊断方法,它能够帮助你研究任何系统,无论这个系统多么复杂,不需要依靠经验或“直觉”。有了可观测性工具,我们不再只能依赖团队中最有经验的工程师,而是可以全面收集和关联数据,通过探索性的问题来询问系统和应用,通过数据分析和发现来进一步开放式地查询和下钻,直到找到问题或故障的根本原因。


相关文章
|
8月前
|
存储 人工智能 监控
2026年企业如何应用数据中台?从搭建到落地的实践路径
数据中台是企业数字化转型的核心,通过整合数据资源、提升治理能力,实现数据资产化与业务赋能。本文系统梳理其建设路径:从战略规划、数据盘点,到集成治理、服务输出,结合瓴羊Dataphin与Quick Audience等工具,推动营销等场景落地,并展望实时化、智能化、平民化未来趋势,助力企业释放数据价值。
|
机器学习/深度学习 算法
【机器学习系列】- 准确率、召回率、F1值的思考
关于如何评估算法,我们常通过准确率、召回率和F1值进行评估。
3802 0
【机器学习系列】- 准确率、召回率、F1值的思考
|
10月前
|
运维 Prometheus 监控
监控体系大一统:OpenTelemetry 就是运维人的“鸿蒙”
监控体系大一统:OpenTelemetry 就是运维人的“鸿蒙”
1026 11
|
人工智能 自然语言处理 IDE
6 款 AI 工具,助力写出更优质代码
6 款 AI 工具,助力写出更优质代码
3319 3
6 款 AI 工具,助力写出更优质代码
|
SQL 分布式计算 数据挖掘
智能数据建设与治理 Dataphin 评测报告
本文详细记录了测试开发工程师“宏哥”对阿里巴巴云产品Dataphin的评测体验。Dataphin是一款基于OneData数据治理方法论的企业级数据中台工具,提供数据采集、建模、管理与应用的全生命周期能力。评测从开通试用、环境准备、项目创建到任务开发、周期补数据、即席分析及数据分析等多个环节展开。宏哥按照官方手册完成了数据处理全流程,但也指出了一些问题:如部分操作步骤不够清晰、新手友好数不足(例如SQL脚本编写难度)、以及业务流程逻辑需进一步优化。整体来看,Dataphin在数据同步、周期补数据和即席分析等方面表现出色,但用户体验和学习成本仍有提升空间。
555 8
|
10月前
|
JSON 程序员 开发者
‌Notepad++ 8.6:轻量级开发者的效率加速器!详细安装教程,附安装包
Notepad++ 8.6 是一款免费开源的轻量级代码编辑器,支持80+语言语法高亮与代码折叠,采用Scintilla内核,运行高效。支持插件扩展、跨文件搜索、正则替换及多编码转换,适用于编程开发与文本处理。
821 0
|
12月前
|
传感器 人工智能 安全
物联网
万物互联,智启未来。物联网通过连接人、物、环境,重塑生活、城市与产业。从智能家居到智慧城市,从工业互联网到精准农业,数据驱动智能化变革。融合AI、5G等技术,构建高效、安全、可持续的智能世界,开启人类社会新篇章。(238字)
|
消息中间件 数据采集 运维
一份运维监控的终极秘籍!监控不到位,宕机两行泪
【10月更文挑战第25天】监控指标的采集分为基础监控和业务监控。基础监控涉及CPU、内存、磁盘等硬件和网络信息,而业务监控则关注服务运行状态。常见的监控数据采集方法包括日志、JMX、REST、OpenMetrics等。Google SRE提出的四个黄金指标——错误、延迟、流量和饱和度,为监控提供了重要指导。错误监控关注系统和业务错误;延迟监控关注服务响应时间;流量监控关注系统和服务的访问量;饱和度监控关注服务利用率。这些指标有助于及时发现和定位故障。
1313 2
|
Prometheus Kubernetes 负载均衡
Opentelemetry collector用法
本文详细介绍了Opentelemetry Collector的使用方法及其各个组件(receiver、processor、exporter、connector和服务配置)的功能与配置。Collector的核心组件通过官方仓库提供丰富的实现,涵盖了认证、健康监控等功能。
3091 63
Opentelemetry collector用法