All in one:如何搭建端到端可观测体系

简介:一文看懂可观测!

作者:西杰 & 白玙

可观测的前生今世

系统的可观测与故障可分析作为系统运维中重要的衡量标准,随着系统在架构、资源单位、资源获取方式、通信方式演进过程,遇到了巨大挑战。而这些挑战,也在倒逼着运维相关技术发展。在正式开始今天的内容前,我们来讲讲可观测的前世今生,纵观整个运维监控发展历程,监控与可观测已经发展了近 30 年。

1.png

上世纪 90 年代末,随着计算从大机(mainframe)逐渐转移到桌面电脑,client-server 架构的应用开始盛行,大家开始关注网络性能和主机资源。为了更好的监控这种 CS 的应用,第一代 APM 软件诞生。运维团队在这一时期看重与网络性能、主机性能,因为此时的应用架构还非常简单。此时,我们还称这些工具为监控工具。

进入到 2000 年,互联网飞速发展,浏览器成为新的用户界面。应用演进成为基于浏览器的 Browser-App-DB 的三层架构,同时 Java 作为企业级软件的第一编程语言开始盛行,编写一次、到处运行(write once,run anywhere)的理念,极大的提升了代码的生产力,然而 Java 虚拟机也屏蔽了代码运行的细节,使得调优排错变得愈加困难, 所以对于代码级的跟踪诊断和数据库的调优成为新的关注点,从而诞生了新一代的监控工具 APM(应用性能监控)。

2005 年之后,分布式应用成为很多企业的第一选择,像基于 SOA 架构、ESB 的应用大行其道。同时,虚拟化技术逐渐盛行,传统服务器这个物理单位逐渐淡化,变成了看不见、摸不到的虚拟资源模式。像消息队列、缓存这样的三方组件也开始应用在生产环境中。在这样的技术环境下,催生出新一代 APM 软件,企业开始需要进行全链路追踪,同时监控虚拟资源和三方组件监控,这样就衍生出了新一代 APM 的核心能力。

到了 2010 年之后,随着云原生架构开始落地实践,应用架构开始从单体系统逐步转变为微服务,其中的业务逻辑随之变成微服务之间的调用与请求。同时虚拟化更加彻底,容器管理平台被越来越多企业接受,三方组件也逐渐演变成云服务,整个应用架构成为云原生架构。服务的调用路径变长,使得流量的走向变得不可控,故障排查的难度增大,需要一种全新的可观测能力,通过覆盖全栈的各种可观测数据(指标,日志,链路,事件)在开发测试运维的全应用生命流程进行持续的分析。

可以看到,可观测能力成为云原生的基础设施。整个可观测能力从单纯的运维态开始向测试开发态演进。可观测的目的也从支撑业务正常运行进一步扩展到加速业务创新,让业务快速迭代起来。

监控 & APM & 可观测的认知同异

从上述历程,我们可以看到从监控到 APM 到可观测是个不断演进的过程。接下来,我们讲讲这三者之间的具体关系。为了更好的讲解,这里先引入一个经典认知模型。对于世界万物,我们通常会按照“知不知道”(awareness)以及“理不理解”(understanding)两个维度进行划分,即“感知”与“理解”。

2.png

那么,首先对于我们知道且能理解的事情,我们称之为事实。落到刚才讨论的话题中,这一部分对应的就是监控。比如进行运维工作时,一开始时候就会设计去监控服务器的 CPU 利用率,这个利用率不管是 80% 还是 90%,都是一个客观事实。这就是监控解决的事情,即基于知道要监控什么,制定采集相应指标,并建立监控大盘。

接下来,就是我们知道但不理解的事情。比如监控到 CPU 利用率达到 90%,但是为什么会到这么高,是原因什么导致的,这就是一个查证的过程。通过APM可以采集并分析主机上的应用性能,发现在应用链路调用过程中某个高延时的 log 框架,从而引起了主机上的 CPU 利用率飙升。这就是借助 APM 通过应用层分析去发现 CPU 利用率高的背后原因。

然后,就是我们理解但不知道的事情。依旧是 CPU 利用率高这个场景案例,如果通过学习历史数据和关联事件预测到未来的某个时刻会出现 CPU 利用率飙升,就可以实现预警。

最后,就是我们不知道且不理解的事情。还是上面的例子,如果通过监控发现 CPU 使用率飙升,通过 APM 发现应用日志框架所致。但进一步,如果分析这一时间段内用户的访问数据,发现在上海地域,通过苹果终端访问的请求,相比其他的情况响应时长要高 10 倍,而这种类型的请求由于日志框架的配置产生了海量的 Info 日志,导致了某些机器的 CPU 飙升。这就是一个可观测的过程。可观测是需要去解决你事先不知道(来自上海的苹果终端访问性能问题)也不理解的事情(错误配置日志框架产生海量 info 日志)

简单总结一下,在监控领域我们关注指标,这些指标可能集中在基础架构层,比如说机器、网络的性能指标。然后基于这些指标建立相应看板以及告警规则去监测已知范围里的事情。在监控发现了问题之后,APM 通过基于应用层面的链路以及内存和线程等诊断工具,去定位监控指标异常的根因。

可观测以应用为中心,通过将日志、链路、指标、事件等各种可观测数据源进行关联、分析,更加快速、直接地找出根因。并提供一个可观测界面,让用户可以灵活自由的在这些可观测数据中进行探索与分析。与此同时,可观测能力与云服务打通,即时强化应用的弹性扩缩容、高可用等能力,在发现问题时能够更加快地解决相关问题,恢复应用服务。

建设可观测体系关键要点

可观测能力带来了巨大业务价值的同时,也带来了不小的系统建设挑战。这不仅仅是工具或技术的选型,更是一种运维理念。这其中包括可观测数据的采集、分析以及价值输出三个部分。

3.png

可观测数据采集

目前业界广泛推行的可观测数据包含三大支柱:日志事件(Logging)、链路追踪(Tracing)、指标监控(Metrics),其中存在一些共性需要关注。

4.png

1)全栈覆盖

基础层、容器层、上方组建云服务应用,以及用户终端相应可观测数据以及与之对应的指标、链路、事件都需要被采集。

2)统一标准

整个业界都在推进标准统一,首先是指标(metrics),Prometheus作为云原生时代的指标数据标准已经形成了共识;链路数据的标准也随着 OpenTracing 和 OpenTelemetry 的推行而逐渐占据主流;在日志领域虽然其数据的结构化程度较低难以形成数据的标准,但在采集存储和分析侧也涌现了 Fluentd,Loki 等开源新秀;另一方面,Grafana 作为各种可观测数据的展示标准也愈加明朗。

3)数据质量

数据质量作为容易忽视的重要部分,一方面,不同监控系统的数据源需要进行数据标准的定义,确保分析的准确性。另一方面,同个事件可能导致大量重复指标、告警、日志等。通过过滤、降噪和聚合,把具备分析价值的数据进行分析,保证数据质量的重要组成部分。这也往往是开源工具与商业化工具差距相对较大的地方。举个简单例子,当我们采集一条应用的调用链路,到底采集多深?调用链路采样的策略是什么样的?发生错、慢时是不是能够全部采下来?是不是能够基于一定规则对采样策略进行动态调整等等,都决定了可观测数据采集的质量。

可观测数据分析

1)横纵关联

在目前的可观测体系里,应用是非常好的分析切入角度。首先,应用与应用之间是相互关联,可以通过调用链关联起来。其中包括微服务之间是如何调用,应用与云服务以及三方组件如何调用,都可以通过链路进行关联。同时,应用与容器层、资源层也可进行垂直映射。以应用为中心,通过横向纵向形成全局可观测数据关联。当出现问题需要进行定位时,能够从应用角度进行统一分析。

2)领域知识

面对海量数据,如何更快速的发现问题,更准确定位问题。除了通过以应用为中心的数据关联,还需要去定位分析问题的领域知识。对于可观测工具或产品而言,最重要的就是不断累积最佳排查路径、常见问题定位、根因的决策链路方法,并把相关经验固化下来。这相当于为运维团队配备经验丰富的运维工程师,去快速发现问题,定位根因。这个也是不同于传统的 AIOps 能力。

可观测价值输出

1)统一展现

上面提到可观测需要覆盖各个层次,每层都有相应可观测数据。但目前可观测相关工具非常零散,如何将这些工具产生的数据统一展现出来,成了比较大挑战。可观测数据的统一其实是相对较难的事情,包括格式、编码规则、字典值等问题。但数据结果统一呈现是可以做到的,目前主流的解决方案是使用 Grafana,搭建像统一监控大盘。

5.png

2)协作处理

在统一展现以及统一告警之后,如何借助像钉钉、企业微信等协作平台能够更加高效地进行问题发现并处理跟踪的 ChartOps,也逐渐成为刚需。

3)云服务联动

可观测能力成为云原生的基础设施,当可观测平台在发现并定位问题之后,需要与各种云服务快速联动,迅速进行扩缩容或负载均衡,从而更快的解决问题。

Prometheus + Grafana 实践

得益于云原生开源生态的蓬勃发展,我们可以轻而易举地建设一套监控体系,比如使用 Prometheus + Grafana 搭建基础监控,使用 SkyWalking 或 Jaeger 搭建追踪系统,使用 ELK 或 Loki 搭建日志系统。但对运维团队而言,不同类型可观测数据分散存储在不同后端,排查问题仍需在多系统之间跳转,效率得不到保证。基于以上,阿里云也为企业提供了一站式可观测平台 ARMS(应用的实时监控服务)。ARMS 作为产品家族,包含了不同可观测场景下的多款产品,比如:

  • 针对于基础架构层,Prometheus 监控服务对包括 ECS、VPC、容器在内的各类云服务以及三方中间件进行监控。
  • 针对应用层,基于阿里云自研 Java 探针的应用监控全面满足应用监控需求。相较于开源工具,在数据质量等方面非常大的提升。并通过链路追踪,即使使用开源 SDK 或探针,也可以将数据上报到应用监控平台。
  • 针对用户体验层,通过移动监控、前端监控、云拨测等模块,全面覆盖用户在不同终端上的体验与性能。
  • 统一告警,对于各层采集的数据、告警信息进行统一告警以及根因分析,直接通过Insight呈现发现结果。
  • 统一界面,不管是ARMS、Prometheus的上报数据,还是日志服务、ElasticSearch、MongoDB 等各种数据源,都可以通过全托管 Grafana 服务进行统一的数据可观测数据呈现,建立统一的监控大盘,并与阿里云各种云服务进行联动,提供 CloudOps 能力。

上述提到 ARMS 作为一站式产品,具备非常多的能力。目前企业已自建部分与ARMS类似能力,或采用 ARMS 中的部分产品,比如应用监控、前端监控。但完整的可观测系统对于企业而言,依旧至关重要,并希望基于开源去构建符合自身业务需求的可观测系统。在接下来的示例中,我们着重讲解 Prometheus + Grafana 如何去构建可观测系统。

数据快速接入

在 ARMS 中,我们可以快速建立一个 Grafana 独享实例,ARMS Prometheus、SLS日志服务、CMS 云监控数据源都可以非常便捷的进行数据同步。打开 Configuration,可以快速查看相应数据源。在时间快速接入各种数据源的同时,尽可能降低日常数据源管理的工作量。

6.png

7.png

预置数据大盘

在数据完成接入后,Grafana 自动帮大家创建好相应数据大盘。以应用监控以及容器监控大盘举例,像黄金三指标、接口变化等基础数据都将默认提供。

8.png

9.png

可以看到,Grafana 虽然帮助大家把各种数据看板搭建起来,但看到的依旧是零散大盘。在日常运维过程中,还需要基于业务域或基于应用创建统一大盘,能够将基础架构层、容器层、应用层、用户终端层的数据都放到同一个大盘中进行展现,从而实现整体监控。

全栈统一大盘

在建立全栈统一大盘时,我们按照用户体验、应用性能、容器层、云服务、底层资源等维度进行准备。

1)用户体验监控

常见的 PV、UV 数据、JS 错误率、首次渲染时间、API 请求成功率、TopN 页面性能等关键数据都会在第一时间呈现。

10.png

2)应用性能监控

以黄金三指标为代表的请求量、错误率、响应时间。并根据不同应用、不同服务进行区分。

11.png

3)容器层监控

各个 Pod 的性能、使用情况,同时也列出这些应用上跑的由哪些 department 创建的。这些 deployment 相关的 Pod 性能信息都呈现在这一块。

12.png

4)云服务监控

此外,就是相关的云服务监控,这里以消息队列 Kafka 举例,像消息服务常见的相关数据指标如消费量堆积、消费量等数据。

13.png

5)主机节点监控

针对整个主机节点,CPU、所运行的 Pod 等数据。

14.png

这样子,这张大盘就覆盖了从用户体验层到应用层到基础架构容器层的整体性能监测情况。更加重要的是整个大盘包含着所有微服务的相关数据。当切某个服务,服务相关联的性能数据都将独立展现出来。在容器、应用、云服务等不同层面都进行过滤。这里稍微提一下是怎么做到的,当 Prometheus 监控去采集这些云服务时,会顺带把云服务上的 tag 都采集下来。通过对 tag 进行打标,就可以把这些云服务基于不同业务维度或不同应用进行区分。在做我们统一大盘的时候,一定会遇到非常多的数据源管理问题。这里我们提供了 globalview 能力,把这个用户名下所有的 Prometheus 实例都汇聚到一起,统一进行查询。不管是应用层的信息,还是云服务的信息。

16.png

借助上面的场景,我们抛砖引玉提出可观测性平台设计方向:基于系统和服务观测的角度把不同数据在后端融合分析,而不是刻意强调系统支持可观测性三种数据的分别查询,在产品功能和交互逻辑上尽可能对用户屏蔽 Metrics、Tracing、Logging 的割裂。建立完整可观测闭环,从事故前异常发现、事故中故障排查到事故后的主动预警监控,为业务持续监控、优化服务性能提供一体化平台。

原文链接
本文为阿里云原创内容,未经允许不得转载。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/511794.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

链路分析 K.O “五大经典问题”

简介:链路分析是基于已存储的全量链路明细数据,自由组合筛选条件与聚合维度进行实时分析,可以满足不同场景的自定义诊断需求。 作者:涯海 链路追踪的 “第三种玩法” 提起链路追踪,大家会很自然的想到使用调用链排查…

Kubernetes 上容器的启动顺序如何把控?

作者 | AddoZhang来源 | 云原生指北为什么要做容器启动顺序控制?我们都知道 Pod 中除了 init-container 之外,是允许添加多个容器的。类似 TektonCD 中 task 和 step 的概念就分别与 pod 和 container 对应,而 step 是按照顺序执行的。此外还…

一文说清linux system load

简介:双十一压测过程中,常见的问题之一就是load 飙高,通常这个时候业务上都有受影响,比如服务rt飙高,比如机器无法登录,比如机器上执行命令hang住等等。本文就来说说,什么是load,loa…

KubeDL 0.4.0 - Kubernetes AI 模型版本管理与追踪

简介:欢迎更多的用户试用 KubeDL,并向我们提出宝贵的意见,也期待有更多的开发者关注以及参与 KubeDL 社区的建设! 作者:陈裘凯( 求索) 前言 KubeDL 是阿里开源的基于 Kubernetes 的 AI 工作负…

上云一时爽,遇坑泪两行

如今,企业的数字化转型进程已经进入了“快车道”,各行各业基于自身业务发展与变革的需要,为整体数字化转型带来了更多要求。企业纷纷依托云原生、低代码、大数据、人工智能等技术手段积极加入这场没有硝烟的战争。 对于传统企业而言&#xf…

读研期间一定得看论文吗_读研期间各阶段的目标和任务,你明确吗?

读研期间一般都要经历上课、论文材料的收集、论文的开题、发表小论文、毕业论文的答辩、找工作或考博士等几个关键环节。在校期间,我们不仅要完成以上的全部工作,还需要不断地学习正确的价值观和人生观,学会科学的思考。如何让自己的研究生生…

Spring Boot Serverless 实战系列“架构篇” | 光速入门函数计算

简介:如何以 Serverless 的方式运行 Spring Boot 应用? 作者:西流(阿里云函数计算专家) Spring Boot 是基于 Java Spring 框架的套件,它预装了 Spring 一系列的组件,开发者只需要很少的配置即可…

从 “香农熵” 到 “告警降噪” ,如何提升告警精度?

简介:ARMS 智能降噪功能依托于 NLP 算法和信息熵理论建立模型,从大量历史告警事件中去挖掘这些事件的模式规律。当实时事件触发后,实时为每一条事件打上信息熵值与噪音识别的标签,帮助用户快速识别事件重要性。 作者:…

AI 机器学习如何不被底层资源和数据“拉胯”,听听亚马逊云科技怎么说

编辑 | 宋慧 出品 | CSDN 云计算 在人工智能从爆火到普及应用之后,数据分析今年又一次被技术界广泛关注,热度再次到达高点。 分析与咨询机构也纷纷发表与数据相关的报告,德勤在刚刚发布的《 2022年度技术趋势 》中,第一个趋势即是…

Flow vs Jenkins 实操对比,如何将Java应用快速发布至ECS

简介:Jenkins 由于其开源特性以及丰富插件能力,长久以来都是中小企业搭建 CICD 流程的首选。不过 Jenkins 存在维护成本高、配置复杂等缺点,云效 Flow 较好地解决了这些问题。 本文从一个 Java 应用部署到云服务器(ECS&#xff09…

CSS 中的简写到底有多少坑?以后不敢了...

作者 | 零一来源 | 前端印象简写(语法糖)可能给我们编码带来了很多便利,但简写也会带来一些问题,今天来讨论一下 CSS 中的简写的"爱恨情仇"为什么说是爱恨情仇呢?因为简写给我们带来了很多的便利&#xff0c…

智能巡检云监控指标的实践

简介:在真实的企业生产中,对研发和运维的同学都会面临一个十分繁复且艰难的问题,就是对指标的监控和告警。具体我枚举一些特定的问题请对号入座,看看在算力爆炸的时代能否通过算力和算法一起解决! 背景介绍 在真实的…

新常态成型,飞连联手Forrester聚焦数字化办公新体验

随着互联网技术不断发展,在企业办公领域时间与空间的限制正在逐步消弭。但是,当企业面对内外部大量的不确定因素时,以往的办公模式无论是效率、安全性还是体验等各方面都将大打折扣。而在数字时代,混合办公模式则有望成为企业办公…

聊聊我们在业务链路升级中做的数据洞察

简介:关于数据相关的词条很多,虽然有不同的定义,但是本质上是相辅相成,通常结合使用才能拿到结果。类比词条诸如 数据分析,数据挖掘, 数据洞察。本文将聊聊我们在业务链路升级中做的数据洞察。 作者 | 金铎…

阿里云佘俊泉:创新探索不停,边缘云持续为客户创造价值

简介:在12月15日上午举办的分布式云领袖论坛中,阿里云边缘云产品负责人佘俊泉先生发表了《阿里云边缘云产品创新与场景探索》的主题演讲,分享了阿里云在边缘云领域的探索和思考,如何从产品演进、技术创新、场景应用等方面助力企业…

oracle 如何迁移到 mysql_怎么将数据库从Oracle迁移到SQL Server,或从Oracle迁移到MySQL...

有时候我们有迁移数据库的需求,例如从Oracle迁移到SQL Server,或者从MySQL迁移到Oracle。很多江湖好汉一时不知如何手工操作,所幸的是Navicat提供了迁移的自动化操作界面。当然,Navicat的数据库迁移无法做到完美,一些依…

深度解析单线程的 Redis 如何做到每秒数万 QPS 的超高处理能力!

作者 | 张彦飞allen来源 | 开发内功修炼服务器端只需要单线程可以达到非常高的处理能力,Redis 就是一个非常好的例子。仅仅靠单线程就可以支撑起每秒数万 QPS 的高处理能力。今天我们就来带大家看看 Redis 核心网络模块的内部实现,学习下 Redis 是如何做…

阿里云李克:边缘云技术发展与实践

简介:7年磨砺,阿里云边缘云的技术积累和沉淀哪了些?今年全面升级后的技术形态具有什么特性?它可以成熟地赋能哪些商业化技术应用场景?阿里云资深技术专家李克带来分享。 备受关注的2021全球分布式云大会深圳站于12月1…

小程序下一破局点?钉钉小程序卡片,应用与平台的深度集成

简介:卡片技术在钉钉上的运用。 20秒了解小程序卡片 案例1:幸福大巴一键抢座 “幸福大巴”是阿里员工在域内使用的城际客运功能,但因为需要来回跳转VPN工具和H5页面,在用户体验上带来了一定的障碍 抢座流程对比: 以…

建站就用这个方法,无需购买服务器10分钟快速部署你的静态网页

简介:阿里云云开发平台重磅推出开源应用中心,聚合最热门的开源应用,让你像安装app一样快速上线一个网站。面向新人和持续活跃的开发者用户推出上线激励加油包,最高100元无门槛代金券免费送,现在体验还能够领取年轻人的…