Skywalking 介绍 | 学习笔记

本文涉及的产品
应用实时监控服务-用户体验监控,每月100OCU免费额度
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
应用实时监控服务-应用监控,每月50GB免费额度
简介: 快速学习 Skywalking 介绍

开发者学堂课程【分布式链路追踪 SkywalkingSkywalking 介绍】学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/743/detail/13152


Skywalking 介绍


什么是 Skywalking

1. Skywalking 概述

(1)一句话介绍:Skywalking 是基于 Open Tracing 规范使用了分布式链路追踪技术的 APM 系统。

根据官方的解释, Skywalking 不只是 APM 系统,同时还是一个可观测性分析平台(Observability Analysis Platform,简称 OAP),提供了在线分析的功能,和应用性能管理系统(Application Performance Management 简称 APM)。

提供分布式链路追踪、服务网格(Service Mesh)、遥测分析、度量(Metric)、聚合和可视化等一体化解决方案。

下面是 Skywalking 的几大特点:

①具备多语言自动探针。支持 Java、.Net Core 和 Node.JS 这些语言的探针。探针可以自动做集成,不需要手动添加代码。

②支持多种监控手段。除了语言探针,还支持微服务下比较热门的 service mesh。

③轻量高效。不需要额外搭建大数据平台(有些 APM 系统是需要额外搭建大数据平台的)。

④基于模块化架构。UI、存储、集群管理都可以模块化,也就是可以通过配置去进行替换,多种机制可选。

⑤支持告警功能。

⑥提供了优秀的可视化效果(5.0->6.0)。在 Skywalking 由5.0升级到6.0的提升下,UI 的效果也提升了很大的幅度。

(2)如图,Skywalking 整体架构如下:

image.png

解析:这张架构图实际上分为两个部分,首先是客服端,也就是说探针会在应用进行一个处理,把它的数据进行上报。然后服务端又分为两个部分,一个部分是观测平台,也就是说 UI 页面;另外一个部分是后端服务,这个后端服务相对来说比较复杂,要接收到探针上报的数据,包括 Service Mesh 上报的数据也可以接收,它是通过 gRPC 或 HTTP 协议进行接收;上报的数据分为两部分,第一个部分是 Tracing ,也就是分布式链路追踪,每一次调用都会有一个调用链进行上报,另一个部分是 Metric 这个概念,Metrics 实际上是一个可累加的数据,比如说当前的接口在十分钟内上报了多少次,平均的耗时是多少,这些都是一些统计性的数据,称为 Metrics 。这两个部分的数据会被 OPA 平台接收同时处理,把这些数据处理之后会存储到存储介质中。存储介质可以分为多种实现,如Elaticsearch、MYSQL TIDB、H2数据库等都可以进行存储。

如果此时 UI 页面想要访问这些数据,就会去调用 OAP 平台提供的查询引擎的接口,这样就能访问存储层的数据。

需要注意:①Metric 的特点是,它是可累加的:它们具有原子性,每个都是一个逻辑计量单元,或者一个时间段内的柱状图,例如:队列的当前深度可以被定义为一个计量单元,在写入或读取时被更新统计;输入 HTTP 请求的数量可以被定义为一个计数器,用于简单累加;请求的执行时间可以被定义为一个柱状图,在指定时间片上更新和统计汇总。

②Tracing 的最大特点就是,它在单词请求的范围内,处理信息。任何的数据、元数据信息都被绑定到系统中的单个事务上。例如:一次调用远程服务的 RPC 执行过程;一次实际的 SQL 查询语句;一次 HTTP 请求的业务性 ID。

③总结:Metric 主要用来进行数据的统计,比如 HTTP 请求数的计算。Tracing 主要包含了某一次请求的链路数据。

详细的内容可以查看 Skywalking 开发者吴晟翻译的文章,Metrics、Tracing 和 Logging 的关系:http://blog.oneapm.com/apm-tech/811.html

这里做一个总结,整体架构包含如下三个组成部分:

①探针(agent)负责数据的上报,包含了 Tracing 和 Metrics 两部分的数据,这个探针布置在应用服务所在的服务器上,agent 会被安装到服务所在的服务器上,以方便数据的获取。

②可观测性分析平台 OAP(Observability Analysis Platform),不只需要接收探针发送的数据,还需要对数据进行加工处理,即在内存中使用分析引擎(Analysis Core)进行数据的整合运算,然后将数据存储到对应的存储介质上,比如 Elasticsearch、MySQL 数据库、H2 数据库等。另外还提供了 UI 页面数据查询这个能力即同时 OAP 还使用查询引擎(Query Core)提供 HTTP 查询接口。

④Skywalking 提供单独的 UI 进行数据的查看,此时 UI 会调用 OAP 提供的接口,获取对应的数据,然后进行展示。

2. Skywalking 优势

Skywalking 相比较其它的分布式链路监控工具,具有以下特点:

  1. 社区相当活跃。Skywalking 已经进入 Apache 孵化阶段,目前的 star 数已经超过 11k;它的版本更新的很快,最新版本 6.5.0 已经发布。开发者吴胜是中国人,可以直接和项目发起人交流进行问题的解决。
  2. Skywalking 支持探针的语言很多:Java、.Net Core 和 Node.JS 语言。相对于其它平台:比如 Pinpoint 支持 Java 和 PHP,具有较大的优势。
  3. 探针无侵入性。对比 CAT 具有侵入性的探针需要进行代码编写,优势较大。不修改原有项目一行代码就可以把它引入进框架中进行集成。
  4. 探针性能优秀。有网友对 Pinpoint 和 Skywalking 的性能进行过测试,Pinpoint 每次收集的数据过多,所以对性能损耗较大,而 Skywalking 探针性能十分出色。

(5)支持组件较多。特别是对 RPC 框架的支持,这是其它框架所不具备的。Skywalking 对 Dubbo、gRPC 等有原生的支持,甚至连小众的 motan 和 sofarpc 都支持。

可以看到,Skywalking 对比其他有很大的优势,这也是人们选择 Skywalking 的原因。

3. Skywalking 主要概念介绍

(1)Skywalking 主要概念包含:服务(Service)、端点(Endpoint)和实例(Instance)

如图,使用如下案例来进行 Skywalking 主要概念的介绍:

image.png

上图中,编写了用户服务,这是一个 Web 项目,在生产中部署了两个节点:192.168.1.100 和 192.168.1.101。

浏览器发送了一个请求,这个请求的地址是usr query All,通过负载均衡器到达后端的用户服务集群,在这里,用户服务的概念是部署了很多用户服务的应用,这整个用户集群化的概念就叫服务,也称之为应用。由于服务暴露了接口也就是/usr/query/All,这个接口对于 Skywalking 来说就是一个端点,这个端点是可以经过其他服务来进行访问的。为了保证这个服务的高可用性,服务在集群上可能会部署多份,部署多份这个概念就叫做实例,比如说用户在192.168.1.100和192.168.1.101上部署了一个,也就是有两个实例分别进行了部署。

(2)总结:

服务就是指一个比较宽泛的概念,一份代码在线上上线了,就是一个服务。

这个服务在线上如果要保证高可用性,就需要部署多个节点,这个节点就是 Skywalking 的实例这个概念。

如果服务需要对外暴露接口,那么这些接口就称之为端点

相关实践学习
通过云拨测对指定服务器进行Ping/DNS监测
本实验将通过云拨测对指定服务器进行Ping/DNS监测,评估网站服务质量和用户体验。
相关文章
|
SQL 监控 测试技术
搭建Jaeger
搭建Jaeger
119 0
|
SQL Java Apache
skywalking 搭建(apache-skywalking-apm-es7-7.0.0)
skywalking 搭建(apache-skywalking-apm-es7-7.0.0)
554 0
|
1月前
|
存储 监控 Java
Zipkin/Pinpoint/SkyWalking全面对比
【11月更文挑战第1天】这里重点从探针的性能、Collector的可扩展性、调用链路分析、完整的应用拓扑、对于科技人员使用友好程度(部署安装、埋点接入、使用管理)几个方面来进行对比。
|
7月前
|
消息中间件 Java Kafka
skywalking日志收集
skywalking日志收集
skywalking日志收集
|
Kubernetes Cloud Native Java
SkyWalking项目实战
SkyWalking项目实战
|
Java Windows
skywalking03 - skywalking入门使用
skywalking03 - skywalking入门使用
145 0
|
存储 JavaScript Cloud Native
skywalking01 - skywalking介绍
skywalking01 - skywalking介绍
144 0
|
关系型数据库 MySQL 数据库
skywalking02 - skywalking安装
skywalking02 - skywalking安装
158 0
|
Java 数据库
skywalking05 - skywalking探针插件开发
skywalking05 - skywalking探针插件开发
224 0
|
SQL 监控 Java
Skywalking的不足
Skywalking的不足 全链路压测监控工具
615 0