SkyWalking是一个开源的监控平台,用于从服务和云原生等基础设施中收集、分析、聚合以及可视化数据。SkyWalking 提供了一种简便的方式来清晰地观测分布式系统,甚至可以观测横跨不同云的系统。SkyWalking 更像是一种现代的应用程序性能监控(Application Performance Monitoring,即APM)工具,专为云原生,基于容器以及分布式系统而设计.

下载

既然是简单部署,那我们就不多讲废话.

官网下载tar包
下载之后连接服务器,rz上传>
使用tar -zxvf apache-skywalking-apm-es7-8.4.0.tar.gz解压到当前目录下
具体文件目录结构如下
sky1
agent目录将来要拷贝到各服务所在机器上用作探针
bin目录是服务启动脚本
config目录是配置文件
oap-libs目录是oap服务运行所需的jar包
webapp目录是web服务运行所需的jar包

部署

1.配置持久化方案

Skywalking支持H2\ES\MYSQL...

简单部署我们直接使用默认的H2即可,生产环境尽量使用ES哦
既然使用H2,那我们就可以跳过这一步了~

2.安装Agent

探针的作用就是非侵入式的更改代码生成class文件

如果要监控的服务和skywalking在一台机器上,那这步也可以省略
如果不在一个机器,那么你可以使用scp -r ./agent username@ip:~/命令把agent目录cp到另一个机器上,也可以sz下载到本地再rz上传~
需要注意 username是账号,ip是机器地址 具体可以百度linux的scp命令

2.1传统部署

探针埋点就两种方式,对于传统部署java -jar启动的话可以使用以下命令启动

java -javaagent:/path/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=AppName -jar yourApp.jar

可以看到是在启动的时候加入了-javaagent的参数 和设置了app的Name
我们使用上边命令启动一下

java -javaagent:/opt/app/apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar -Dskywalking.agent.service_name=halo -jar halo-1.4.7.jar 

可以看到我们已经启动成功了
sky9

如果非Docker部署的项目可以直接跳到启动Skywalking部分

2.1Docker部署

由于我是docker部署的项目,那么我们需要把agent打进镜像中

1.把skywalking项目中的agent目录cp到项目根目录下

sky2

2.修改Dockerfile文件
sky3

添加了两行代码

COPY agent /usr/local/agent

上一步我们把agent目录cp到了项目根路径下
所以这行命令是在打包的时候把根目录下的agent目录cp到容器内部

-javaagent:/usr/local/agent/skywalking-agent.jar -Dskywalking.agent.service_name=halo -Dskywalking.collector.backend_service=127.0.0.1:11800

注意上边的

这行代码是在容器run起来的时候做两个事情
第一个埋点并指定appName
第二个指定skywalking后端ops服务的地址
如果是在同一台机器部署那默认就127.0.0.1:11800即可

3.打包构建镜像

在本地先build一下

sky6

可以看到生成了jar包
(我手动删除了halo-1.4.8-plain.jar,因为我只需要用到halo-1.4.8.jar即可)
这个是要在构建镜像时用到的

sky7

上传的时候我本机没有装xftp...
突然发现 win10自带的powerShell竟然支持tar命令

sk4

把项目rz到服务器上
sky5

在根目录下执行以下命令打镜像

docker build -t halo-sky:v1.0 .

sky8

当你看到出现successfully 就代表镜像打成功了
使用docker images 命令即可看到打出的镜像
过程踩了不少坑~~
到这里基本算是把skywalkng的agent和docker镜像整合在一起了.
然后docker run起来就好了,相当于在执行命令的之后埋进去了探针.
接下来就是启动skywalking了

启动Skywalking

我们进入到skywalking的bin目录下

sky10

执行startup.sh命令

sky11

可以看到启动成功了

我们这时候可以访问一下8080端口(需要服务器开通8080端口防火墙)
可以看到我们通过IP加端口进来了~

首页可以看到我们配置的halo服务 以及服务调用的接口情况
sky12

到这里,我们skywalking简单部署就完成了!

页面

下边就是skywalking页面内容了
拓扑图中可以看到服务之间的调用情况 当然我们这里只部署了一个服务~~
sky13

追踪页面中可以看到服务内的每一个接口的请求链路情况
sky14

仪表盘的instance中可以观察到服务的各种指标 jvm参数之类的
sky15

总结

skywalking可以全链路追踪微服务中的各个接口的调用关系,也可以监控每个服务的健康度,也可以进行配置达到告警的效果~作为一个apm项目可以说skywalking做到了无孔不入!

生产环境一定要进行持久化配置 官方推荐使用ES来持久化 毕竟ES是很厉害的时序数据库 存储海量的链路数据再合适不过了~

放几张生产环境的skylking拓扑图
sky18

sky19

Q.E.D.


今天也要加油鸭~