前言
SkyWalking 是什么?
分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。
提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案,通俗说现在我们项目几乎已经全是微服务似的架构,当我们微服务在项目需求的迭代下数量和体积也会变得更多,同时微服务中的调用和依赖关系也会更加的复杂,当我们调用一个接口出错时我们并不会知道是该接口本身的错误还是他依赖的其中一个服务出现了问题,所以现在我们就需要到了skywalking!
SkyWalking 有哪些功能?
-
多种监控手段。可以通过语言探针和 service mesh 获得监控是数据。
-
多个语言自动探针。包括 Java,.NET Core 和 Node.JS。
-
轻量高效。无需大数据平台,和大量的服务器资源。
-
模块化。UI、存储、集群管理都有多种机制可选。
-
支持告警。
-
优秀的可视化解决方案。
SkyWalking 整体架构如何?
-
探针 基于不同的来源可能是不一样的, 但作用都是收集数据, 将数据格式化为 SkyWalking 适用的格式.
-
平台后端, 支持数据聚合, 数据分析以及驱动数据流从探针到用户界面的流程。分析包括 Skywalking 原生追踪和性能指标以及第三方来源,包括 Istio 及 Envoy telemetry , Zipkin 追踪格式化等。
-
存储 通过开放的插件化的接口存放 SkyWalking 数据. 你可以选择一个既有的存储系统, 如 ElasticSearch, H2 或 MySQL 集群(Sharding-Sphere 管理),也可以选择自己实现一个存储系统. 当然, 我们非常欢迎你贡献新的存储系统实现。
-
UI 一个基于接口高度定制化的Web系统,用户可以可视化查看和管理 SkyWalking 数据。
总结 : skywalking分为主要四个部分 探针,平台后端,存储,ui,我们需要先启动探针(可以在项目启动的时候增加指令直接启动探针).然后探针会将获取到的项目数据传输给平台后端,平台后端会将这些数据储存到我们定义好的数据库中进行持久化并对这些数据进行聚合和分析,然后skywalking 客户端(UI)会读取这些数据进行展示!
SkyWalking安装部署
单机部署
skywalking9与之前的版本不太一样,之前的版本都是探针和ui还有后端也就是OAP都是在在一个包中的,9.X版本以后UI和OAP(后端)在一个包中,而探针我们需要另外下载,具体流程如下;
首先我们先下载skywalking的ui和后台以及agents 地址 : https://skywalking.apache.org/downloads/,可能需要魔法,打不开的可以去共享云盘下载本文档使用的9.3.0版本的skywalking;
我这里下载的是9.3.0 版本
探针版本都是可以,下载最新即可, 但是ui和后台版本是需要jdk支持的,在9.4.0版本的改动中我们可以看见在9.4.0版本之后会使用jdk11,所以也就是说jdk8只支持9.3.0以下版本,以下为9.4.0的版本变动日志
下载完成后将两个压缩包都上传到服务器的/usr/local/skywalking文件夹下,一个ui+oap包 一个是java探针agent包
然后进行解压ui和oap包
tar -zxvf /usr/local/skywalking/skywalking-9.3.0.tar.gz -C /usr/local/skywalking/
解压完成
然后我们先修改skywalking oap的配置文件,去指定一个数据库去存储skywalking的数据,默认是H2,我这里就使用mysql吧不过我们都推荐使用ES,如果小伙伴还不会安装ES也可以看我这一篇文章 Linux系列 CentOS7(源码)安装elasticsearch7.2.0
vim /usr/local/skywalking/skywalking-9.3.0/apache-skywalking-apm-bin/config/application.yml
然后保存即可,随后我们在修改ui的配置文件
vim /usr/local/skywalking/skywalking-9.3.0/apache-skywalking-apm-bin/webapp/application.yml
然后我们启动ui和oap
cd /usr/local/skywalking/skywalking-9.3.0/apache-skywalking-apm-bin/bin
#启动 oap
./oapService.sh
#启动ui界面
./webappService.sh
然后我们去浏览器中 访问 ip:20000 即可进去skywalking的ui界面了
剩下就是我们需要再启动java项目的时候,将探针同步启动,让探针去监听java项目并将数据传输给oap进行分析和汇总然后通过ui界面反馈给我们,
首先我们需要明白 , 一个探针只能监听一个java项目 , 比如我们微服务中会启动很多的jar包,比如有order服务有goods服务,那我们就需要很多份探针,所以我们需要将探针那个包多解压几份出来
#创建监听goods服务的探针存储文件夹
mkdir /usr/local/skywalking/skywalking-9.3.0/agent-goods
#解压
tar -zxvf apache-skywalking-java-agent-8.16.0.tgz -C /usr/local/skywalking/skywalking-9.3.0/agent-goods/
#创建监听order服务的探针存储文件夹
mkdir /usr/local/skywalking/skywalking-9.3.0/agent-order
#在解压一份
tar -zxvf apache-skywalking-java-agent-8.16.0.tgz -C /usr/local/skywalking/skywalking-9.3.0/agent-order/
然后修改监听goods服务探针的配置文件
vim /usr/local/skywalking/skywalking-9.3.0/agent-goods/skywalking-agent/config/agent.config
agent.service_name=${SW_AGENT_NAME:goods}
然后监听order那边的同理也是把这个参数改成项目名称即可,这也就是探针的名称,为了方便区分!
然后启动java项目的时候新增探针的jar路径即可,如下示例就是在启动goods服务的时候同时启动监听goods服务的探针jar包
java -jar -javaagent:/usr/local/skywalking/skywalking-9.3.0/agent-goods/skywalking-agent/skywalking-agent.jar -jar sem_goods-1.0-SNAPSHOT.jar
-javaagent:探针的jar包路径;
然后当项目启动以后 , skywalking平台就会显示出来该项目了
然后goods和order项目中的每次请求都会被skywalking监听并分析!
集群部署
敬请期待 ! 之前没部署过集群,在踩坑中....