概述
SkyWalking:一个开源的观测平台,用于从服务和云原生基础设施收集、分析、聚合以及可视化数据;
SkyWalking:为你提供了一种简便的方式来清晰地观测分布式系统,甚至可以观测横跨不同云的系统;
SkyWalking:更是一种现代的应用程序性能监控(Application Performance Monitoring)工具,尤其是专为云原生,基于容器以及分布式的系统。
为什么选择SkyWalking
在许多不同的场景下,SkyWalking为观察和监控分布式系统提供了解决方案,首先是像传统的方式那样,SkyWalking为服务提供了自动打点代理,如Java、C#和Node.js,同时也提供了手动打点SDK,像GO(尚未支持),C++(尚未支持),随着越来越多的编程语言需要获得支持,运行时操作代码的危险性,以及云原生基础设施越来越强大,SkyWalking还可以使用服务网格基础探针来收集数据,以帮助了解整个分布式系统。总之,SkyWalking为服务(service)、服务实例(service instance)以及端点(endpoint)提供了观测能力。
先了解下他们在SkyWalking中都代表什么意思?
- 服务(Service):表示对请求提供相同行为的一系列或一组工作负载,在使用打点代理或SDK的时候,你可以定义服务的名字,如果不定义的话,SkyWalking将会使用你在平台上定义的名字,如果lstio;
- 服务实例(Service Instance):上述的一组工作负载中的每一个工作负载称为一个实例,就像Kubernetes中的pods一样,服务实例未必就是操作系统上的一个进程,但当你在使用打点代理的时候,一个服务实例实际就是操作系统上的一个真实进程;
- 端点(Endpoint):对于特定服务所接收的请求路径,如Http的URI路径和gRPC服务的类名 + 方法签名。
使用SkyWalking时,你可以看到服务与端点之间的拓扑结构,每个服务、服务实例、端点的性能指标,还可以设置报警规则。
除此之外,你还可以通过SkyWalking原生代理,SDK以及Zipkin,Jaeger和OpenCensus来进行分布式追踪。
架构
SkyWalking逻辑上分为四部分:探针、平台后端、存储和用户界面。
- 探针:基于不同的来源可能是不一样的,但作用都是收集数据,将数据格式化为SkyWalking适用的格式;详见《探针介绍》
- 平台后端:是一个支持集群模式运行的后台,用于数据聚合、数据分析以及驱动数据流从探针到用户界面的流程,平台后端还提供了各种可插拔的能力,如不同来源数据(如来自Zipkin)格式化,不同存储系统以及集群管理,你甚至还可以使用观测分析语言来进行自定义聚合分析;详见《后端概览》
- 存储:开放式的,你可以选择一个既有的存储系统,如 ElasticSearch,H2 或 MySQL集群(Sharding-Sphere管理),也可以选择自己实现一个存储系统。当然,我们非常欢迎你贡献新的存储系统实现;
- 用户界面:对于SkyWalking的最终用户来说非常炫酷且强大,同样它也是可定制以匹配你已存在的后端。详见《用户界面UI介绍》
参考:
- Skywalking文档中文版(社区提供):https://skyapm.github.io/document-cn-translation-of-skywalking/
- 分布式链路追踪Skywalking存储模型设计:https://xie.infoq.cn/article/3bff5919c317b9a37280ac759