10 分钟快速搭建 SkyWalking 服务
一、主要功能
1、分布式追踪
它能够追踪分布式系统中各个服务之间的调用链路。例如,在一个由多个微服务组成的电商系统中,当用户下单后,订单服务会调用库存服务、支付服务等。SkyWalking 可以记录从用户请求开始,经过各个服务的完整调用路径,包括每个服务的处理时间、请求参数和返回结果等信息。这有助于开发者快速定位系统中性能瓶颈和故障点。
对于跨进程、跨主机甚至跨数据中心的服务调用,SkyWalking 都可以准确地进行追踪。比如,在一个大型企业的分布式系统中,可能部分服务部署在本地数据中心,部分服务采用云服务,SkyWalking 可以跨越这些不同的环境,将整个系统的调用链路串联起来。
2、性能指标监控
SkyWalking 可以收集各种性能指标,如服务的响应时间、吞吐量、CPU 和内存使用率等。以一个互联网金融服务系统为例,它可以监控贷款审批服务的平均响应时间,如果发现响应时间突然变长,开发人员就可以及时进行调查,看是因为业务量增加还是系统出现了故障。
它还能够对数据库、消息队列等中间件的性能进行监控。比如,监控数据库查询语句的执行时间,了解哪些查询是性能瓶颈,帮助优化数据库操作。
拓扑图展示
能够自动生成系统的服务拓扑图。在这个拓扑图中,各个服务之间的调用关系一目了然。例如,在一个包含用户服务、商品服务、推荐服务的电商系统中,拓扑图会清晰地展示出用户服务如何调用商品服务来获取商品信息,以及推荐服务如何依赖用户行为数据来提供个性化推荐。这种可视化的方式让运维人员和开发人员能够直观地理解系统的架构和运行状态。
二、工作原理
1、数据收集
SkyWalking 通过在应用程序中植入探针(Agent)来收集数据。这些探针可以自动捕获服务的调用信息和性能数据。例如,对于一个基于 Java 开发的微服务,SkyWalking 提供了 Java Agent,它可以在不修改业务代码的情况下,在服务启动时加载并开始收集数据。
它还可以与消息中间件等其他系统集成,收集经过这些系统的消息数据,以完善整个系统的调用链路。
2、数据传输和存储
收集到的数据会被发送到后端存储系统。SkyWalking 支持多种存储方式,如 Elasticsearch、MySQL 等。这些数据在存储系统中被保存下来,以便后续的查询和分析。
数据传输过程中,SkyWalking 采用高效的协议来确保数据的完整性和及时性,同时也会对数据进行一定的压缩和加密处理,以提高传输效率和安全性。
3、数据分析和展示
后端的分析引擎会对存储的数据进行处理,例如计算服务的性能指标、生成调用链路等。然后,通过 Web 界面或者其他可视化工具,将分析结果展示给用户。开发人员和运维人员可以通过这些可视化的内容,如仪表盘、拓扑图等来了解系统的运行状况。
4、整体架构图
整个架构,分成上、下、左、右四部分:
考虑到让描述更简单,舍弃掉 Metric 指标相关,而着重在 Tracing 链路相关功能。
- 上部分 Agent :负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器。目前支持 SkyWalking、Zikpin、Jaeger 等提供的 Tracing 数据信息。而我们目前采用的是,SkyWalking Agent 收集 SkyWalking Tracing 数据,传递给服务器。
- 下部分 SkyWalking OAP :负责接收 Agent 发送的 Tracing 数据信息,然后进行分析(Analysis Core) ,存储到外部存储器( Storage ),最终提供查询( Query )功能。
- 右部分 Storage :Tracing 数据存储。目前支持 ES、MySQL、Sharding Sphere、TiDB、H2 多种存储器。而我们目前采用的是 ES ,主要考虑是 SkyWalking 开发团队自己的生产环境采用 ES 为主。
- 左部分 SkyWalking UI :负责提供控台,查看链路等等。
三、安装部署
为了方便朋友们入门,这里搭建一个skywalking 单机环境,步骤如下:
1、安装部署Elasticsearch
这里进行简单略过哈,详细请看之前的文章:Elasticsearch最新版快速入门看这个就可以了_elasticsearch最新版本-CSDN博客
2、安装部署skywalking
对于skywalking 的软件包,这里选择的是官方的二进制安装包
下载位置:https://archive.apache.org/dist/skywalking/10.0.1/apache-skywalking-apm-10.0.1.tar.gz
解压文件到指定目录下,并进行改名
tar -xf apache-skywalking-apm-10.0.1.tar.gz -C /usr/local/
cd /usr/local/
mv apache-skywalking-apm-bin skywalking
进行服务验证
由上面的部署图,可知道,skywalking包括UI 和 OAP两部分,8080是skywalking的UI界面访问端口,其11800是 SkyWalking OAP 服务端口负责接收 Agent 发送的 Tracing 数据信息。
3、测试验证
访问验证
进行检测服务问题,具体略过,详细请看另一篇:skywalking对接python的数据链路追踪,看这篇就可以了_python接入skywalking-CSDN博客
使用docker镜像进行测试
进行访问验证
4、替换skywalking存储为ES集群
修改配置文件
vim config/application.yml
将进程kill掉,进行重新启动,其默认启动的是oapService 和 webappService 服务,所以存在两个进程
需要确保ES集群的正常运行,否则可能会出现报错的情况。
5、进行访问验证
进到kibana中查看对应的索引情况