为什么要做链路追踪?当微服务的数量庞大、微服务之间相互调用复杂的时候,就需要做链路追踪,这样就能够理清服务调用关系、快速定位问题。对于微服务数量较少(<10个),则可以不做链路追踪。本文将介绍基于 Spring Cloud Alibaba 2.2 集成 Skywalking 实现微服务链路追踪。
Skywalking 官网: https://skywalking.apache.org
- JDK 8+
- MySQL/Elasticsearch (如果需要持久化的话)
- 服务器内存 2G +
下载地址: https://skywalking.apache.org/downloads
Skywalking 包含两个服务,一个是 OAP 服务,提供后台数据处理,还有一个是 UI 服务,提供管理后台界面
启动脚本路径:
${skywalkingPath}/bin/
Skywalking OAP 服务配置:
${skywalkingPath}/config/application.yml
storage:
selector: ${SW_STORAGE:h2}
这里可选择存储类型,支持 h2/MySQL/Elasticsearch
为快速搭建环境,这里暂时先使用默认的 h2 作为存储方式
OAP 服务使用的端口为 11800 和 12800
web UI 服务配置:
${skywalkingPath}/webapp/webapp.yml
server:
port: 8080
UI 服务的端口为 8080,可根据需要调整
执行启动脚本即可启动服务
在 Springboot 启动脚本中指定 Skywalking Agent 参数
简易启动脚本示例:
startup.sh
# !/bin/sh
# Springboot 启动脚本
## 路径
TARGET_PAR_PATH=/opt/springboot/springboot-skywalking-demo.jar
SKYWALKING_JAR_PATH=/usr/skywalking/agent/skywalking-agent.jar
## JVM
JAVA_OPT="-server -Xms256m -Xmx256m -Xmn512m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=256m"
JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow"
## SkyWalking Agent配置
export SW_AGENT_NAME=springboot-skywalking-demo
export SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800
export SW_AGENT_SPAN_LIMIT=2000
export JAVA_AGENT=-javaagent:${SKYWALKING_JAR_PATH}
## 启动命令
nohup java ${JAVA_OPT} ${JAVA_AGENT} -jar ${TARGET_PAR_PATH} >/dev/null 2>&1 &
IDEA 开发工具中集成:
配置 Springboot application 启动参数 VM options:
-javaagent:D:\develop\software\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar
-DSW_AGENT_NAME=springboot-skywalking-demo
-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800
启动 Skywalking 项目之后,即可从浏览器中打开控制台界面
Skywalking 控制台地址:
http://127.0.0.1:8080
Skywalking 控制台主界面:
注意事项:
当发生微服务请求之后,才能够在控制台显示监控信息
右上角需要手动设置自动刷新
右下角可选择显示的时间维度
控制台其他界面
至此,Spring Cloud 简易集成 Skywalking 已经实现