使用Skywalking监控你的服务-简单部署

商业转载请联系作者获得授权,非商业转载请注明出处。 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解压到当前目录下
具体文件目录结构如下
使用Skywalking监控你的服务-简单部署_第1张图片
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 

可以看到我们已经启动成功了
使用Skywalking监控你的服务-简单部署_第2张图片

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

2.1Docker部署

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

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

使用Skywalking监控你的服务-简单部署_第3张图片

2.修改Dockerfile文件
使用Skywalking监控你的服务-简单部署_第4张图片

添加了两行代码

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一下

使用Skywalking监控你的服务-简单部署_第5张图片

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

使用Skywalking监控你的服务-简单部署_第6张图片

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

使用Skywalking监控你的服务-简单部署_第7张图片

把项目rz到服务器上
使用Skywalking监控你的服务-简单部署_第8张图片

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

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

使用Skywalking监控你的服务-简单部署_第9张图片

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

启动Skywalking

我们进入到skywalking的bin目录下

使用Skywalking监控你的服务-简单部署_第10张图片

执行startup.sh命令

sky11

可以看到启动成功了

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

首页可以看到我们配置的halo服务 以及服务调用的接口情况
使用Skywalking监控你的服务-简单部署_第11张图片

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

页面

下边就是skywalking页面内容了
拓扑图中可以看到服务之间的调用情况 当然我们这里只部署了一个服务~~
使用Skywalking监控你的服务-简单部署_第12张图片

追踪页面中可以看到服务内的每一个接口的请求链路情况
使用Skywalking监控你的服务-简单部署_第13张图片

仪表盘的instance中可以观察到服务的各种指标 jvm参数之类的
使用Skywalking监控你的服务-简单部署_第14张图片

总结

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)]

你可能感兴趣的:(Java,Linux,Spring,java,docker,大数据,skywalking)