商业转载请联系作者获得授权,非商业转载请注明出处。 For commercial use, please contact the
author for authorization. For non-commercial use, please indicate the
source. 协议(License):署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
作者(Author):程序员不秃头 链接(URL):https://ddddddddd.top/archives/12
来源(Source):程序员不秃头
SkyWalking是一个开源的监控平台,用于从服务和云原生等基础设施中收集、分析、聚合以及可视化数据。SkyWalking 提供了一种简便的方式来清晰地观测分布式系统,甚至可以观测横跨不同云的系统。SkyWalking 更像是一种现代的应用程序性能监控(Application Performance Monitoring,即APM)工具,专为云原生,基于容器以及分布式系统而设计.
既然是简单部署,那我们就不多讲废话.
官网下载tar包
下载之后连接服务器,rz上传>
使用tar -zxvf apache-skywalking-apm-es7-8.4.0.tar.gz
解压到当前目录下
具体文件目录结构如下
agent目录将来要拷贝到各服务所在机器上用作探针
bin目录是服务启动脚本
config目录是配置文件
oap-libs目录是oap服务运行所需的jar包
webapp目录是web服务运行所需的jar包
Skywalking支持H2\ES\MYSQL…
简单部署我们直接使用默认的H2即可,生产环境尽量使用ES哦
既然使用H2,那我们就可以跳过这一步了~
探针的作用就是非侵入式的更改代码生成class文件
如果要监控的服务和skywalking在一台机器上,那这步也可以省略
如果不在一个机器,那么你可以使用scp -r ./agent username@ip:~/
命令把agent目录cp到另一个机器上,也可以sz下载到本地再rz上传~
需要注意 username是账号,ip是机器地址 具体可以百度linux的scp命令
探针埋点就两种方式,对于传统部署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
如果非Docker部署的项目可以直接跳到启动Skywalking部分
由于我是docker部署的项目,那么我们需要把agent打进镜像中
1.把skywalking项目中的agent目录cp到项目根目录下
添加了两行代码
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一下
可以看到生成了jar包
(我手动删除了halo-1.4.8-plain.jar,因为我只需要用到halo-1.4.8.jar即可)
这个是要在构建镜像时用到的
上传的时候我本机没有装xftp…
突然发现 win10自带的powerShell竟然支持tar命令
在根目录下执行以下命令打镜像
docker build -t halo-sky:v1.0 .
当你看到出现successfully 就代表镜像打成功了
使用docker images
命令即可看到打出的镜像
过程踩了不少坑~~
到这里基本算是把skywalkng的agent和docker镜像整合在一起了.
然后docker run
起来就好了,相当于在执行命令的之后埋进去了探针.
接下来就是启动skywalking了
我们进入到skywalking的bin目录下
执行startup.sh
命令
可以看到启动成功了
我们这时候可以访问一下8080端口(需要服务器开通8080端口防火墙)
可以看到我们通过IP加端口进来了~
到这里,我们skywalking简单部署就完成了!
下边就是skywalking页面内容了
在拓扑图中可以看到服务之间的调用情况 当然我们这里只部署了一个服务~~
在仪表盘的instance中可以观察到服务的各种指标 jvm参数之类的
skywalking可以全链路追踪微服务中的各个接口的调用关系,也可以监控每个服务的健康度,也可以进行配置达到告警的效果~作为一个apm项目可以说skywalking做到了无孔不入!
生产环境一定要进行持久化配置 官方推荐使用ES来持久化 毕竟ES是很厉害的时序数据库 存储海量的链路数据再合适不过了~
放几张生产环境的skylking拓扑图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SuS5vH8y-1622447667675)(https://ddddddddd.top/upload/2021/04/sky18-439a26e3269c44dbb072729f934cc4b0.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5mQqfD5w-1622447667676)(https://ddddddddd.top/upload/2021/04/sky19-6bb0577e3dc2452d97c97e03c9e8a609.png)]