出品 | CSDN云原生
Apache SkyWalking是一个针对分布式系统的应用性能监控APM和可观测性分析平台,经过一年的更新,完成了从v8至v9的迭代。
2022年5月10日,在CSDN云原生系列在线峰会第4期“Apache SkyWalking峰会”上,Tetrate创始工程师、Apache基金会首位中国董事吴晟深入解析了SkyWalking v9的新功能。
戳?观看吴晟分享视频
Full Stack APM概念
SkyWalking v9可以称得上全栈APM,因为它涉及APM、最终用户、手机端以及基础性平台的基础设施(比如Linux、Kubernetes)。
如上图所示,左侧是浏览器、语言、主流的Service Mesh、Kubernetes以及操作系统。右侧是v9的菜单,按照层级划分,从普通的General Service到自监控。总体架构是除了基础设施从上到下的维度之外,通过数据源分成了Tracing、Metrics、Logging和Event 4个入口,不同于传统意义Tracing、Metrics、Logging 3个核心的概念,现在是4个核心的概念。因为Event是触发变更的基础,所以在这个过程中间起到了很大的作用。v9版本真正完成了这样的一张构想图,从最开始的浏览器到下面的操作系统,实现全栈多种数据源集成。
v9到底更新了什么?其实从SkyWalking社区、核心团队的角度来看,只是新增了一种概念,叫做Layer,可以称之为“层”或者应用软件基础设施的抽象分类。Layer代表的是一个抽象的框架,在整个计算机科学领域里面可能是操作系统、Kubernetes,也可能是Agent安装的一个服务,或者是Service Mesh,比如Istio、Istiod、Envoy。所有收到的数据都可以归属为一个“层”,并且具有共通性。也可以简单地映射到菜单上面,不同服务可能有不同的归属。这样分是因为每一层的Metrics、Tracing或者一些核心的功能都会有些区别。
比如Service Mesh里面的可观测性可以直接出拓扑图,Tracing的情况下也可以完全无缝地出拓扑图,但如果上Agent,那么Tracing就需要和拓扑图一起出,这是比较典型的区别;另外一个典型例子是操作系统上面的一些指标更涉及本地,而Kubernetes更多的是从Pod、Service、Scaling等角度去看每个服务,等到了Agent、SDK的Tracing级别可能更关心的是线程池、分布式追踪、无侵入的探针以及基于Agent的剖析。
关于eBPF的剖析,可能是针对Linux或者基于Kubernetes上面的某些服务直接进行剖析而不需要依赖SDK能力。
全新的Layer
下面介绍SkyWalking官方首次在v9版本里面开放的Layer。
1. General Service
General Service可以理解为SkyWalking从1.0、2.0、3.0版本就有的语言探针,探针抓Tracing分析服务间的拓扑、各个线和点之间的指标、Trace、Log以及每个服务的整体运行情况。
如上图所示,下半部分表格提供了基于Service预览的指标的全局视图,这也是在9.0会贯穿始终要展示的Service的模式。右侧有Load、Success Rate、Latency,这些都是在有Agent时比较典型的Metric。只有针对Layer才会有的指标。
2. Service Mesh
Service Mesh里分成三类:
-
针对整个服务,也就是Meshed Services
-
Istio的性能,比如XDS的推送,或者Istiod的运行情况和消耗
-
Envoy的内存,以及Envoy的Access Log正文采集到的像触发HTTPS SSL拒绝的日志
Serverless这些年有一些越来越热的趋势,有人可能认为FaaS和Serverless是竞争关系。但从整个行业来看他们不存在很大的竞争关系。Open Function或者Function编程擅长解决的问题是特有的,不像Service Mesh是解决一个通用性的、已经存在了服务的管理路由等一系列问题。
3. FaaS - Open Function
SkyWalking和OpenFunction在内核级别做了非常好的集成。用OpenFunction去写任何函数式的程序时都不用管Tracing,只需按照OpenFunction的要求写,在OpenFunction上激活,所有的Tracing、指标、拓扑图都可以开箱即用。这是云原生平台在底层进行整合的,对应用开发者来说完全透明的模式。
不管是OpenFunction、Istio还是Enovy,都是在Kubernetes上运行。
4. Kubernetes-Cluster and ServiceHealth/Status
Kubernetes作为云原生最重要甚至最核心的一个基础设施,它的健康以及服务的状态也是重点监控的内容。Pod的数量、节点的数量、部署的数量以及CPU各方面的消耗这些视图可以帮助大家看到整个Service Mesh、Open Function或者是Helm operator部署在Kubernetes里面的运行情况。
Kubernetes、Service Mesh以前在Dashboard里面也有相关的Layer去控制,以前会纠结Service应该看哪个视图,现在只需先选到需要的视图,它就会展示跟这个视图有关的所有的Service。比如Kubernetes有Cluster或者Kubernetes Service两种角度的视图,从Cluster的角度看预览,或者通过Service角度看部署以及通过这两个不同的角度去看整个集群、Node、Service的整个健康情况。
5. Linux-Infra
Linux作为一个非常典型的基础设施,是所有的VM或者云上动态计算单元都非常关心的。SkyWalking提供了基于Linux的监控,但SkyWalking并不是一个封闭的实体,比如在Linux会和Prometheus或者Zabbix的成熟Agent直接进行集成。SkyWalking有自己独有的Agent,需要通过Agent得到一个效率极高的拓扑图的分析。在和Service Mesh集成时是和Istio、Envoy、Metric Service直接进行集成。在Linux上面也一样,通过基础设施平台最成熟的Metric的集成,直接拿到 Linux的指标。
6. Browser App
社区一直都非常关注Browser相关的监控,因为不管Vue、Angular JS以及各种各样的前端框架,Browser的Layer其实上充当了两种角色。
第一个是Trace,作为所有应用Trace的起点,它可以从用户端一直追踪到服务端进行多次调用的跳转,需要在Browser端运行。
第二个是浏览器里面的各种个性化的指标,比如TLL等对应用来说非常重要的指标。评估每一个页面是否运行流畅,这些指标都起到非常重要的作用。
v8作为浏览器性能是一个服务,生成Trace是另一个服务,原因是受制于v8的内核限制。v9因为Layer的引入,可以存在于不同的Layer,还可以有分布式的Trace。
7. Virtual Database
SkyWalking目前没有专注于监控物理的数据库,比如和MySQL、PostgreSQL直接集成。在虚拟数据库方面,实际是在应用探针里面探查到的数据,比如用Java、.NET、Golang Go2sky做探针时,会在里面做一些数据库的调用。在客户端角度看这些数据库调用的性能,称作Virtual Service。
8. So11y-Self Observability
So11y是自监控,比如当应用程序很复杂时,构建一个像SkyWalking监控系统,就会面临一个挑战,SkyWalking应该由谁来监管?如果用另外一套工具监控SkyWalking实际上是一个非常困难的事情,所以直接把Ceph提上来了。只需探一下SkyWalking的 Server然后再把数据回送到 SkyWalking内部。
有人会问SkyWalking为什么没有Tracing?因为SkyWalking的Server本质上是一个轻量化的流计算平台,如果去Tracing每一条记录,那么所带来的负担是非常重的,并且没有价值。所以So11y提供的全部是Metrics相关的,这些Metrics都是经过精心挑选并且在SkyWalking的内核里面直接做了集成,不是通过探针技术或者某种很隐晦复杂的方式。SkyWalking和Prometheus、Grafana是可以互相切换的过程,但Prometheus因为数据量承载能力限制,所以SkyWalking并没有把所有数据都导给Prometheus。
9. So11y-Satellite
Satellite的作用是负载均衡,那么怎么做负载均衡?Nginx、Enovy这些标准的负载均衡主要是基于连接的,但Agent一般是保持连接的。保持连接会出现连接均衡数据不均衡的问题,Satellite可以实现基于数据流量的负载均衡,能够完全识别SkyWalking所有原生的数据格式。
10. Dashboard Management
Dashboard Management实际上是在Layer概念出来之后才有的。SkyWalking提供了所有的Dashboard定制的能力,依然会原生提供大量的配置方便开箱即用,也可以根据Layer修改布局。
前文提到将近10种Layer,Layer实际上并不是一个非常严格的定义。如果大家想监控MySQL Server,也可以加一种Layer,用监控的技术栈把新的Server监控起来,把刚才提到的全栈的概念做得更丰富、更完善一些。
END
限时活动,数量有限?
邀请好友助力免费领图书
扫描图片二维码立即参加
— 推荐阅读 —
云原生应用交付的前世今生与一线实践
☞2个维度5大方法,让你的微服务在K8s上跑起来
☞透彻解析云原生在数字化转型中的应用实践,PaaS功不可没
点这里↓↓↓记得关注标星哦 一键三连 「分享」「点赞」「在看」
成就一亿技术人
文章评论