一、SkyWalking 核心架构

SkyWalking有4大组件,零代码侵入监控Java微服务、链路追踪、指标监控、告警:

  1. Agent探针(Java Agent):依附你的Java进程,字节码增强,自动采集接口、SQL、MQ、RPC调用耗时、异常、TraceID,上报后端;不用改一行业务代码
  2. OAP服务端(Collector):接收探针上报数据、聚合分析、计算指标,默认端口:11800(gRPC)12800(HTTP)
  3. 存储层:默认内置H2内存库(测试临时用,重启数据丢失);生产改用Elasticsearch持久化。
  4. UI控制台:可视化查看拓扑、调用链、慢接口、SQL耗时、JVM指标、告警,默认端口8080

版本重要提醒:9.x+ 开始 APM后端包、Java Agent探针包分开下载,不能共用一个压缩包。

二、Windows 部署SkyWalking后端

包括OAP+UI

1. 下载安装包

官网下载地址:官网
1)后端包:apache-skywalking-apm-x.x.x-bin.zip
2)Java探针包:apache-skywalking-java-agent-x.x.x.tgz

解压路径绝对不能有中文、空格、括号,示例解压到:D:\soft\skywalking-apmD:\soft\skywalking-agent

2. Windows一键启动后端

进入OAP包的bin目录,双击 startup.bat

  • 会自动同时启动 OAP收集服务 + UI网页服务,弹出两个黑窗口,不要关闭。
  • 访问控制台:浏览器打开 http://localhost:8080,默认账号密码 admin/admin

3. 常用端口说明

端口 作用
11800 Agent gRPC上报数据(探针必须连这个端口)
12800 Agent HTTP上报
8080 UI控制台访问端口

4. 存储切换

测试H2够用,生产必须ES

打开 config/application.yml,修改storage:

storage:
  selector: ${SW_STORAGE:h2}
  # selector: ${SW_STORAGE:elasticsearch} # 生产打开ES注释

H2内存库重启OAP数据清空,仅本地学习使用。

三、SpringBoot/Java项目接入Agent探针

前置说明

接入只需要加JVM启动参数,pom无需引入任何依赖、业务代码零修改,自动拦截SpringMVC、MyBatis、Dubbo、Kafka、Redis等主流组件。

方式1:IDEA开发环境配置

  1. IDEA打开启动配置:Run/Debug Configurations → 选中你的SpringBoot启动类
  2. 找到 VM options,粘贴下面参数(修改探针绝对路径、服务名)
-javaagent:D:/soft/skywalking-agent/skywalking-agent.jar
-Dskywalking.agent.service_name=order-service
-Dskywalking.collector.backend_service=127.0.0.1:11800

参数解释:

  • -javaagent:指定探针jar绝对路径(Windows用正斜杠/,避免转义报错)
  • service_name:自定义服务英文名,控制台用来区分微服务
  • backend_service:OAP后端地址+gRPC端口
  1. 应用保存配置,重启SpringBoot项目,控制台日志输出SkyWalking加载日志即接入成功。

方式2:Jar包命令行启动(Windows cmd)

打包好xxx.jar后,cmd执行完整启动命令:

java -javaagent:D:/soft/skywalking-agent/skywalking-agent.jar ^
-Dskywalking.agent.service_name=goods-service ^
-Dskywalking.collector.backend_service=127.0.0.1:11800 ^
-jar goods-0.0.1-SNAPSHOT.jar

四、Agent常用配置优化(agent/config/agent.config)

# 1、服务名(也可JVM参数覆盖)
agent.service_name=user-service
# 2、OAP后端地址
collector.backend_service=127.0.0.1:11800
# 3、采样率:1=100%全采集(测试),生产0.3=30%采样减少存储压力
agent.sample_n_per_3_secs=1
# 4、忽略静态资源、健康检查接口,不生成链路
trace.ignore_path=/static/**,/actuator/**,/health

五、UI控制台五大核心功能实操

用于日常排查

1. 服务拓扑图

也叫微服务调用全景

左侧菜单 Service → Service Topology

  • 自动画出所有微服务、网关、数据库、MQ之间调用关系;
  • 圆圈大小代表QPS,红色标异常报错服务,一眼定位哪个服务雪崩。

2. 调用链路追踪

排查慢接口/报错

菜单 Traces

  1. 筛选服务、时间范围,可按响应耗时、异常状态码过滤;
  2. 点开一条Trace详情:完整展示一次请求全链路:
    Gateway → Controller → Mapper SQL → Redis → MQ
    每一段执行耗时、调用参数、异常堆栈全部展示;
  3. 经典排查场景:接口整体慢,点开发现某条SQL执行2s,直接定位慢SQL。

3. 服务指标监控

QPS、响应时间、错误率

菜单 Service → Service Dashboard

  • P95/P99响应耗时、TPS吞吐量、错误率、JVM堆内存、GC次数、线程池状态;
  • 自动生成曲线图,观察高峰期性能波动。

4. 数据库SQL监控

菜单 Database
自动捕获MyBatis/Jdbc执行的所有SQL,统计每条SQL平均耗时、执行次数、慢SQL排行,无需开启数据库慢日志。

5. 告警配置

支持自定义规则:接口错误率>5%、P99耗时>1s、服务实例下线,触发邮件/钉钉告警。

六、多微服务接入完整演示

网关、订单、库存3个服务分别配置不同service_name

  1. gateway-gateway
  2. order-service
  3. stock-service
    全部启动后调用网关接口,拓扑图自动把3个服务串联成完整调用链路,一条TraceID贯穿全链路。

七、使用避坑

  1. 启动项目提示找不到skywalking-agent.jar
    路径写反斜杠\被转义,统一改用正斜杠/;路径不要嵌套太深、不要中文。

  2. 服务启动正常,UI控制台看不到服务

  • 检查OAP的11800端口是否监听,防火墙放行;
  • VM参数里backend_service地址写错,不是127.0.0.1:11800
  • 先调用几次项目接口生成访问数据,不会主动空展示。
  1. 静态资源/健康检查接口大量无用链路
    在agent配置trace.ignore_path忽略对应路径。

  2. 重启startup.bat历史监控数据消失
    默认H2内存存储,生产务必切换Elasticsearch持久化。

Logo

一站式 AI 云服务平台

更多推荐