Skywalking是一个适用于分布式系统的性能监控工具
文档地址:https://skyapm.github.io/document-cn-translation-of-skywalking/
功能:
建议使用和我一致的版本,目前Skywalking还在处于比较活跃的开发状态中,不同的版本它的表现是不一样的,所以最好和我保持一致,避免踩到不必要的坑。
可以使用如下命令查询端口是否被占用
#Linux/macOs netstat -an|grep 8080 #对于使用windows的同学,可以使用 netstat -ano|findstr 8080
如果没有结果,就说明8080端口没有被占用,其他端口也是一样。
安装Skywaling比较简单,解压,然后根据操作系统的不同,执行对应命令即可。
执行:
cd apache-skywalking-apm-bin/bin
sh startup.sh
执行:
cd apache-skywalking-apm-bin/bin
startup.bat
我们启动后,看到这段信息就说明启动成功了。
如果你没有启动成功,可以切换到logs目录,查看日志详情。
启动成功后,我们访问localhost:8080
:
Skywalking已经搭建完成了,那么我们如何使用呢?
关于如何使用,我也专门写了一番手记,一起看看:
该文档基于Skywalking6.6.0编写,理论支持Skywaling6.0+所有版本
本文探讨如何使用Skywalking监控应用。
Skywalking有多种使用方式,目前最流行(也是最强大)的使用方式是基于Java agent的。
agent
目录agent
目录拷贝到任意位置config/agent.config
agent.service_name
修改成你的微服务名称:127.0.0.1:11800
,按需修改即可。当然agent.config
文件里面有很多配置,具体配置可以去官方文档查阅。我们将agent目录拷贝到了桌面,然后修改agent.service_name改为自己服务的名称:
java -jar
启动应用
例如,有一个Spring Boot应用,则修改完agent
目录后:
# 注意-javaagent必须在-jar之前
java -javaagent:/Users/weichenglong/Desktop/agent/skywalking-agent.jar -jar aym-api.jar
我们启动项目后,调用项目的一写Rest API就可以进行一些测试了,这里我用了IDEA的一个插件,RestfulTool:
然后,我们再进入页面,点击右上角的刷新,然后我们就能看到以下信息:
页面上展示了项目的cpm,cpm在一定程度上可以体现出当前应用的吞吐量或者并发数
同时也可以展示出最慢的几个端点。
第二,是数据库视图:
它可以展示出数据库的一些统计信息,比如数据库的平均响应时间、吞吐量、服务质量、响应时间等。
一般来讲我们会更多关注数据库响应时间、吞吐量以及响应时间的统计值,还有最关注的是项目里最慢的几个API。
点击拓扑图
这里可以看到用户请求的去向。
这个图还是很有意义的,对于开发人员,可以查看每个服务的位置,对于架构师也可以很好的帮他检测当前项目的实现和他的规划是否一致。
点击服务,还可以展示出一些详情,列出一些性能指标,比如响应时间、cpm等等。
点击追踪:
这是整个Skywalking里面最重要的一个导航,在这个页面可以详细的展示指定应用有哪些API被访问了,总共花费了多久,每个API在每个阶段花费了多久。
比如:
/products这个API一共花费了8871毫秒。
点击我们查看详情:
我们可以看到访问的数据库信息,以及执行的sql,这里是mysql重复性校验的一个sql。
再看下面:
这是真正执行业务的sql。
这里每个阶段花费了多久,都能一目了然。
一旦发现我们的应用性能达不到要求,就可以通过追踪页面最左边,查看哪些API耗时过长。
通过右边,可以分析是这些API的哪个环节耗时过长,是API执行的慢,还是数据库访问慢,都可以迅速分析出来。
这样我们定位性能瓶颈的时候,就可以有的放矢了。
不难发现,Skylking的功能还是非常强大。