SpringCloud——Skywalking+ES实现链路跟踪(Windows版)
一、介绍
SkyWalking 是一个可观察性分析平台和应用程序性能管理系统。
跟踪、指标和记录一体化解决方案。
支持 Java、.Net Core、PHP、NodeJS、Golang、LUA、C++、Python 代理
支持 Istio + Envoy 服务网格
功能涵盖了:
- 一致的可观察性:追踪、指标、日志记录、浏览监控;
- 多语言代理:Java、.Net Core、PHP、NodeJS、Golang、LUA、C++、Python;
- 轻量化:没有大数据栈、采用不同的规模;
- 模块化:存储可插拔、集群协调器可插拔、支持拉/推传输;
- 支持报警:告警 HTTP/gRPC 转发、钉钉通知、微信通知、原始指标数据导出等;
- 花式可视化:可定制仪表盘、拓扑图、跟踪和配置文件浏览、命令行仪表盘、IntelliJ IDE 插件,指标与代码并排;
二、ES 搭建
参考 SpringCloud——ELK搭建(Windows版) 中第二部分。
三、Skywalking搭建
- 下载
- 解压
- 配置
修改config
目录下的application.yml
文件
Skywalking 原本默认使用的数据存储是 h2,这里我们改成使用 elasticsearchstorage: selector: ${SW_STORAGE:elasticsearch7} elasticsearch7: nameSpace: ${SW_NAMESPACE:"skywalking-es"} clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9201}
- 启动
双击bin
目录下的startup.bat
也可以分别单独运行oapService.bat
和webappService.bat
,其实startup.bat
文件里也是运行了这2个指令,oapService.bat
运行的是 Skywalking 的 OAP,webappService.bat
运行的是 Skywalking 的 UI。
启动完成后,我们可以访问:http://localhost:8080/
- agent 使用
由于笔主这里已经有了一套云原生项目,基于Spring Cloud
+Spring Cloud Alibaba
进行架构实现的,使用的相关组件基本有:nacos
、gateway
、SpringBoot Admin
、sentinel
、XXL-JOB
、OpenFeign
等,关于这一块,笔主后期在出相关系列博客。- 在 IDEA 中使用
在 VM options 中加入如下:-javaagent:你的Skywalking解压路径\agent\skywalking-agent.jar -Dskywalking.agent.service_name=项目名称(spring.application.name) -Dskywalking.collector.backend_service=localhost:11800
- 在命令行中用
java
命令启动java -javaagent:项目中skywalking-agent.jar的路径 -Dskywalking.agent.service_name=项目名称(spring.application.name) -Dskywalking.collector.backend_service=localhost:11800 -jar yourApp.jar
- 在 IDEA 中使用
【注意】
- 启动完成后,可能会发现拓扑链路不太正确,如下图:
我们发现,用户的请求链路直接请求到了各个业务服务上,而不是通过gateway
,在到各个业务服务上。
这时候我们需要把agent\optional-plugins
目录下的apm-spring-cloud-gateway-3.x-plugin-8.7.0.jar
和apm-spring-webflux-5.x-plugin-8.7.0.jar
复制到agent\plugins
目录下
重启gateway
服务即可