SkyWalking是一个开源的观测平台,用于从服务和云原生等基础设施中收集、分析、聚合以及可视化数据。SkyWalking 提供了一种简便的方式来清晰地观测分布式系统,甚至可以观测横跨不同云的系统。SkyWalking 更像是一种现代的应用程序性能监控(Application Performance Monitoring,即APM)工具,专为云原生,基于容器以及分布式系统而设计
SkyWalking 在逻辑上分为四部分:探针、平台后端、存储和用户界面。其架构图如下:
探针:基于不同的来源探针可能是不一样的,但作用都是收集数据,将数据格式化为 SkyWalking 适用的格式。例如在Java中则是做字节码植入,无侵入式的收集,并通过 HTTP 或者 gRPC 方式发送数据到平台后端
平台后端:是一个支持集群模式运行的后台,用于数据聚合、数据分析以及驱动数据流从探针到用户界面的流程。平台后端还提供了各种可插拔的能力,如不同来源数据(如来自 Zipkin)格式化,不同存储系统以及集群管理。你甚至还可以使用观测分析语言来进行自定义聚合分析。
存储:是开放式的,可以选择一个既有的存储系统,如 ElasticSearch、H2 或 MySQL 集群(Sharding-Sphere 管理),也可以选择自己实现一个存储系统。
用户界面:也就是SkyWalking的可视化界面,UI非常炫酷且强大,同样它也是可定制以匹配你已存在的后端的
SkyWalking 为观察和监控分布式系统提供了许多不同场景下的解决方案。例如为Java、C#及Node.js提供语言自动探针,无侵入式的收集。同时也为一些编译型语言C++、GO等提供了手动打点 SDK(目前还未支持)。除此之外,还可以使用服务网格基础探针来收集数据,以帮助了解整个分布式系统。
在SkyWalking中也存在服务、服务实例及端点概念,因为SkyWalking就是提供了这些概念的观测能力:
服务(Service):表示对请求提供相同行为的一系列或一组工作负载。在使用打点代理或 SDK 的时候,你可以定义服务的名字。如果不定义的话,SkyWalking 将会使用你在平台上定义的名字,如 Istio。
服务实例(Service Instance):上述的一组工作负载中的每一个工作负载称为一个实例。就像 Kubernetes 中的 pods 一样,服务实例未必就是操作系统上的一个进程。但当你在使用打点代理的时候, 一个服务实例实际就是操作系统上的一个真实进程。
端点(Endpoint):对于特定服务所接收的请求路径,如 HTTP 的 URI 路径和 gRPC 服务的类名 + 方法签名
综上,SkyWalking 优势如下:
多种监控手段,语言探针和服务网格(Service Mesh)
模块化,UI、存储、集群管理多种机制可选
支持告警
优秀的可视化方案
更多内容可以参考官方文档:
搭建 SkyWalking 服务 - Linux
对SkyWalking有一个大致的了解后,本小节我们来在CentOS7上搭建 SkyWalking 服务。首先我们需要获取到SkyWalking的下载地址,官方下载地址如下:
这里我选择当前最新的6.6.0版本的二进制包:
复制下载地址到服务器上进行下载并解压,具体步骤如下: