公司项目采用微服务的架构,服务不少,人工监控是不可能的,项目的访问量很大,想经过日志查找某个方法中性能的问题也是很是困难的。可是系统的性能问题是不能忽视的。系统性能检测的问题如鲠在喉,通过长时间的查找资料,功夫不负有心人,终于发现几个比较好的开源的APM(Application Performance Management)检测工具。java
项目不想侵入其余的代码,工具尽可能损耗性能低,工具的社区活越,文档完善也是考虑的必要条件,通过如下表格部分参数对比,相对来讲,SkyWalking更占优,所以团队采用SkyWalking做为APM工具。node
工具名称 | 代码入侵方式 | 性能 | ui | 使用人数 | 粒度 | 告警 | 依赖分析 | traceID查询 |
SkyWalking | 无侵入 | 高 | 丰富 | 多 | 方法级 | 有 | 有 | 有 |
Pinpoint | 无侵入 | 低 | 丰富 | 多 | 方法级 | 有 | 有 | 有 |
Zipkin | 侵入低 | 中 | 通常 | 多 | 接口级 | 无 | 有 | 有 |
Cat | 侵入高 | 中 | 丰富 | 较多 | 代码级 | 有 | 无 | 无 |
官方有两句话介绍SkyWalking:linux
SkyWalking是分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8S、Mesos)架构而设计web
SkyWalking是观察性分析平台和应用性能管理系统。提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案sql
SkyWalking 总体架构数据库
整个架构,分红上、下、左、右四部分:apache
考虑到让描述更简单,咱们舍弃掉 Metric 指标相关,而着重在 Tracing 链路相关功能。bootstrap
由于对工具可用性要求不高,工具挂掉不会影响系统,因此采用单机版。vim
1.下载elasticsearch-7.2.0,下载地址:https://www.elastic.co/cn/downloads/elasticsearch跨域
2.上传下载的压缩包到linux服务器,解压文件
tar -zxvf elasticsearch-7.2.0-linux-x86_64.tar.gz //解压压缩包 cd elasticsearch-7.2.0 //进入目录 mkdir data //建立data文件夹,保存数据
3.修改Elasticsearch配置:config/elasticsearch.yml
4.尝试启动Elasticsearch。
5.启动失败报错:经过日志能够发现,es不容许linux经过root用户启动,缘由是出于系统安全考虑设置的条件。因为Elasticsearch能够接收用户输入的脚本而且执行,为了系统安全考虑,直接使用root权限会带来很大风险,因此咱们建立一个elsearch用户
6.建立Elasticsearch启动用户,并设置权限等
7.使用elsearch用户,再次尝试启动
8.启动失败,有两个错误,是由于有两个参数的值过小
问题解决办法
9.使用elsearch用户,再次尝试启动(Elasticsearch默认内存是1G,由于个人服务器内存是足够的,没有修改配置)
10.查看是否启动成功:访问ip:9200,出现如下信息即为启动成功
1.下载SkyWalking官方包,下载地址: http://skywalking.apache.org/downloads/ ,咱们下载操做系统对应的发布版。这里,咱们选择apache-skywalking-apm-es7-8.0.0.tar.gz版本想使用 Elasticsearch 7.X 版本做为存储。
2.上传下载的压缩包到linux服务器,解压文件
1.修改 OAP 配置文件 config/application.yml
2.启动OAP
1.因为SkyWalking UI的默认地址是8080,与不少中间件有冲突,能够修改一下
2.启动 SkyWalking UI 服务
1.修改探针默认配置 agent/config/agent.config
采样率修改
agent.sample_n_per_3_secs配置说明:
在访问量较少时,链路全量收集不会对系统带来太大负担,可以完整的观测到系统的运行情况。可是在访问量较大时,全量的链路收集,对链路收集的客户端(agent探针)、服务端(SkyWalking OAP)、存储器(例如说 Elastcsearch)都会带来较大的性能开销,甚至会影响应用的正常运行。在访问量级较大的状况下,每每会选择抽样采样,只收集部分链路信息。SkyWalking Agent 在 agent/config/agent.config 配置文件中,定义了 agent.sample_n_per_3_secs 配置项,设置每 3 秒可收集的链路数据的数量。
2.放置探针:咱们须要将 agent
目录,拷贝到 Java 应用所在的服务器上。这样,Java 应用才能够配置使用该 SkyWalking Agent。经过设置启动参数的方式检测系统,没有代码侵入。
仪表盘:能够查看服务性能,接口整体耗时,数据库sql执行耗时排行等等
拓扑图:能够查看已经检测的服务及服务之间的关系
追踪:能够看到服务调用的路径
追踪:能够看到整个链路中每个步骤的耗时状况,其中能够看到方法中各个sql执行耗时及对应的sql,能够有针对的优化sql
刚接触SkyWalking还有不少的功能细节须要再深刻了解,若是发现有问题,欢迎你们指教。