APM(Application Performance Monitoring)在 docker 使用 springboot的详细步骤

------------------------------------------------------------------------------------------------------------

apm
在IT 领域,APM 最常见的全称是 Application Performance Monitoring,即应用性能监控。它是保障系统稳定运行、提升用户体验的核心技术体系。

一、APM 的核心目标

  1. 实时监控:跟踪应用的响应时间、吞吐量、错误率、资源占用(CPU、内存、磁盘、网络)等核心指标。
  2. 问题诊断:当系统出现卡顿、报错、超时等问题时,快速定位根因(如代码瓶颈、数据库慢查询、第三方接口故障)。
  3. 性能优化:通过分析监控数据,找到系统性能短板,指导架构或代码优化。
  4. 容量规划:基于历史性能数据,预测系统未来的资源需求,提前扩容或调整配置。

二、APM 的核心监控维度

维度监控内容
应用层 接口响应时间、调用链路、异常堆栈、业务埋点数据
基础设施层 服务器 CPU / 内存 / 磁盘使用率、容器(Docker/K8s)状态、网络延迟
数据层 数据库慢查询、缓存命中率、消息队列堆积情况
用户体验层 页面加载时间、前端报错率、接口成功率

三、主流 APM 工具

  1. 开源工具
    • SkyWalking:国产开源分布式追踪系统,支持多语言、多框架,适合微服务架构。
    • Pinpoint:韩国开源项目,轻量级,支持字节码增强,无侵入式监控。
    • Zipkin:Twitter 开源的分布式追踪工具,与 Spring Cloud 生态无缝集成。
  2. 商业工具
    • New Relic:全球知名的全栈 APM 平台,支持云原生和混合架构。
    • Dynatrace:基于 AI 的智能监控平台,可自动发现应用拓扑和定位问题。
    • 阿里云 ARMS / 腾讯云 APM:国内云厂商提供的一站式性能监控服务。

四、APM 在微服务架构中的作用

在 Spring Boot 微服务场景中,APM 可以跟踪一个请求从网关到各个微服务的完整调用链路,清晰展示:
  • 每个服务的处理耗时
  • 服务间的依赖关系
  • 哪个环节出现了超时或错误
例如:用户请求下单接口,APM 可追踪到请求经过网关 → 订单服务 → 库存服务 → 支付服务的全流程,并定位到 “库存服务查询数据库耗时过长” 的问题。

其他领域的 APM 含义

  • Advanced Power Management:高级电源管理,用于硬件(如 CPU、电池)的功耗控制。
  • Asset Performance Management:资产性能管理,用于工业领域的设备运维监控。
我可以帮你整理一份Spring Boot 集成 SkyWalking 的快速部署步骤,方便你直接在项目中落地应用性能监控,需要吗?
APM 最常见的全称是 Application Performance Monitoring 结合springboot的详细步骤
你希望了解结合 Spring Boot 实现 APM(Application Performance Monitoring)的详细步骤,我以目前国内最主流、易部署的 Apache SkyWalking 为例,为你提供从环境准备到项目集成、验证的完整实操指南,确保你能快速落地应用性能监控。

一、整体架构说明

SkyWalking 采用「服务端 + 客户端」架构:
  • OAP Server:核心服务端,负责接收、分析、存储监控数据。
  • UI:可视化控制台,展示监控指标、调用链路、拓扑图等。
  • Agent:客户端探针,嵌入 Spring Boot 应用,无侵入式采集性能数据并上报给 OAP Server。

二、前置条件

  1. 已安装 JDK 8+(SkyWalking 8.x 及以上版本推荐 JDK 8/11)。
  2. 已安装 Maven/Gradle(用于构建 Spring Boot 项目)。
  3. 服务器 / 本地有足够的端口(默认:OAP Server 11800/12800,UI 8080)。

三、步骤 1:下载并启动 SkyWalking 服务端

1. 下载 SkyWalking

前往 SkyWalking 官方下载页,选择「Apache SkyWalking APM」包(推荐稳定版,如 9.7.0),下载后解压到本地 / 服务器目录(如 ~/skywalking)。

2. 启动 OAP Server 和 UI

  • Windows 系统:
    bash
     
    运行
     
     
     
     
    # 进入解压后的 bin 目录
    cd ~/skywalking/bin
    # 启动 OAP Server
    startup.bat
    # 启动 UI(若 startup.bat 未自动启动,执行)
    webappService.bat
    
     
     
  • Linux/Mac 系统:
    bash
     
    运行
     
     
     
     
    # 进入解压后的 bin 目录
    cd ~/skywalking/bin
    # 启动 OAP Server 和 UI(一键启动)
    ./startup.sh
    
     
     

3. 验证服务端启动成功

  • 访问 UI 控制台:http://localhost:8080(默认账号 / 密码:admin/admin),能看到 SkyWalking 首页即表示启动成功。
  • OAP Server 默认监听 11800(gRPC 端口,Agent 上报数据用)、12800(HTTP 端口),可通过 netstat -tlnp | grep 11800 验证端口占用。

四、步骤 2:Spring Boot 项目集成 SkyWalking Agent

1. 准备 Spring Boot 项目

若没有现成项目,可快速创建一个基础 Spring Boot 项目(包含 Web 依赖),示例 pom.xml 核心依赖:
xml
 
 
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- 可选:健康检查依赖,方便监控应用状态 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
</dependencies>
 

2. 配置 SkyWalking Agent

SkyWalking Agent 无需引入代码依赖,仅需在启动应用时通过 JVM 参数指定 Agent 路径和配置:
方式 1:本地运行(IDEA/Eclipse)
在 IDEA 中配置 Spring Boot 启动参数(Run/Debug Configurations → VM options):
java
 
运行
 
 
 
 
# 指定 Agent 路径(替换为你的 SkyWalking 解压目录)
-javaagent:D:/skywalking/agent/skywalking-agent.jar
# 指定应用名称(在 SkyWalking UI 中显示的名称)
-Dskywalking.agent.service_name=my-springboot-app
# 指定 OAP Server 地址(默认本地 11800,若服务端在远程,替换为服务器IP)
-Dskywalking.collector.backend_service=127.0.0.1:11800
 
方式 2:打包后运行(生产环境)
先打包 Spring Boot 项目为 JAR 包(mvn clean package),然后通过命令启动:
bash
 
运行
 
 
 
 
java -javaagent:/usr/local/skywalking/agent/skywalking-agent.jar \
-Dskywalking.agent.service_name=my-springboot-app \
-Dskywalking.collector.backend_service=192.168.1.100:11800 \
-jar my-springboot-app-1.0.0.jar
 

3. 关键 Agent 配置说明(可选)

若需自定义配置,可修改 skywalking/agent/config/agent.config 文件:
  • agent.service_name:应用名称(必填,区分不同服务)。
  • collector.backend_service:OAP Server 地址(默认 127.0.0.1:11800)。
  • agent.sample_n_per_3_secs:采样率(默认 -1,即全量采集;生产环境可设为 10,每 3 秒采样 10 个请求)。

五、步骤 3:验证监控效果

1. 触发应用请求

访问 Spring Boot 应用的接口(如 http://localhost:8081/hello),多次调用以产生监控数据。

2. 查看 SkyWalking UI 数据

刷新 http://localhost:8080,可看到核心监控维度:
  • 仪表盘:应用的响应时间、QPS、错误率、JVM 内存 / CPU 使用率。
  • 拓扑图:应用与其他服务(如数据库、第三方接口)的调用关系。
  • 追踪:单个请求的完整调用链路,可查看每个方法的耗时、是否有异常。
  • 日志:若集成日志采集,可查看链路关联的日志(需额外配置)。

六、进阶配置(可选,生产环境必备)

1. 持久化监控数据(默认内存存储,重启丢失)

SkyWalking 默认使用 H2 内存数据库,生产环境需改为 Elasticsearch:
  1. 安装 Elasticsearch(推荐 7.x 版本)。
  2. 修改 skywalking/config/application.yml
    yaml
     
     
    storage:
      selector: ${SW_STORAGE:elasticsearch}
      elasticsearch:
        clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:127.0.0.1:9200}
        indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:1}
        indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:1}
    
     
     
  3. 重启 OAP Server。

2. 监控数据库调用(如 MySQL)

SkyWalking Agent 可自动监控 JDBC 调用,无需修改代码,只需确保 Agent 能拦截到数据库驱动,常见配置:
java
 
运行
 
 
 
 
# VM 参数中添加,指定数据库驱动增强
-Dskywalking.plugin.jdbc.trace_sql_parameters=true  # 开启 SQL 参数追踪(生产环境谨慎开启)
 

总结

  1. 核心流程:启动 SkyWalking 服务端(OAP+UI)→ Spring Boot 启动时挂载 Agent → 上报数据到服务端 → 可视化查看监控。
  2. 关键配置:Agent 的 service_name(应用标识)和 backend_service(OAP 地址)是必配项,生产环境需替换内存存储为 Elasticsearch。
  3. 无侵入性:全程无需修改 Spring Boot 业务代码,仅通过 JVM 参数集成,对应用无性能侵入(Agent 性能损耗 < 1%)。
如果在部署过程中遇到端口冲突、数据不上报等问题,可优先检查:① OAP Server 是否启动;② Agent 配置的 OAP 地址是否正确;③ 应用和 OAP 之间的网络是否互通。

------------------------------------------------------------------------------------------------------------

APM(Application Performance Monitoring)的详细步骤 docker 使用springboot'
你想要了解如何在 Docker 环境下,为 SpringBoot 应用搭建 APM(应用性能监控)体系的详细步骤,这个需求非常明确且具有实际应用价值。
下面我将以目前业界主流的 Elastic APM(Elasticsearch + APM Server + APM Agent)为例,为你提供一套完整、可落地的 Docker 化 SpringBoot 应用 APM 监控方案。

一、整体架构说明

我们将部署以下组件:
  1. Elasticsearch:存储 APM 采集的性能数据
  2. Kibana:可视化展示 APM 数据
  3. APM Server:接收 Agent 上报的数据并转发给 Elasticsearch
  4. SpringBoot 应用:集成 APM Java Agent 运行在 Docker 中

二、详细实施步骤

步骤 1:准备环境

确保你的机器已安装:
  • Docker
  • Docker Compose
  • 基础的 Java 环境(用于本地打包 SpringBoot 应用)

步骤 2:编写 Docker Compose 文件(部署 APM 基础设施)

创建docker-compose.yml文件,一键部署 ES、Kibana、APM Server:
yaml
 
 
version: '3.8'

services:
  # Elasticsearch 服务
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.14.0
    container_name: elasticsearch
    environment:
      - discovery.type=single-node
      - ES_JAVA_OPTS=-Xms512m -Xmx512m
      - xpack.security.enabled=false  # 关闭安全认证(测试环境)
      - xpack.monitoring.enabled=true
    ports:
      - "9200:9200"
      - "9300:9300"
    volumes:
      - es-data:/usr/share/elasticsearch/data
    networks:
      - apm-network

  # Kibana 服务
  kibana:
    image: docker.elastic.co/kibana/kibana:8.14.0
    container_name: kibana
    environment:
      - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
    ports:
      - "5601:5601"
    depends_on:
      - elasticsearch
    networks:
      - apm-network

  # APM Server 服务
  apm-server:
    image: docker.elastic.co/apm/apm-server:8.14.0
    container_name: apm-server
    ports:
      - "8200:8200"
    environment:
      - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
      - KIBANA_HOST=http://kibana:5601
      - apm-server.host=0.0.0.0
      - apm-server.kibana.enabled=true
    depends_on:
      - elasticsearch
      - kibana
    networks:
      - apm-network

volumes:
  es-data:

networks:
  apm-network:
    driver: bridge
 

步骤 3:启动 APM 基础设施

执行以下命令启动 ES、Kibana、APM Server:
bash
 
运行
 
 
 
 
# 启动服务(后台运行)
docker-compose up -d

# 查看服务状态
docker-compose ps
 
验证服务是否正常:
  • Elasticsearch:访问 http://localhost:9200,能看到 ES 版本信息即正常
  • Kibana:访问 http://localhost:5601,能进入 Kibana 界面即正常
  • APM Server:访问 http://localhost:8200/healthcheck,返回 {"ok":true} 即正常

步骤 4:改造 SpringBoot 应用(集成 APM Agent)

方式 1:构建镜像时集成(推荐)

  1. 准备 SpringBoot 应用的Dockerfile
dockerfile
 
 
# 基础镜像
FROM openjdk:17-jdk-slim

# 设置工作目录
WORKDIR /app

# 复制APM Agent(先下载:https://search.maven.org/artifact/co.elastic.apm/elastic-apm-agent)
COPY elastic-apm-agent-1.48.0.jar /app/agent/

# 复制打包后的SpringBoot jar包
COPY your-app.jar /app/app.jar

# 设置JVM参数,集成APM Agent
ENV JAVA_OPTS="-javaagent:/app/agent/elastic-apm-agent-1.48.0.jar \
               -Delastic.apm.service_name=my-springboot-app \
               -Delastic.apm.application_packages=com.yourpackage \
               -Delastic.apm.server_url=http://apm-server:8200 \
               -Delastic.apm.environment=dev \
               -Delastic.apm.log_level=INFO"

# 暴露应用端口
EXPOSE 8080

# 启动应用
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar /app/app.jar"]
 
参数说明:
  • elastic.apm.service_name:你的应用名称(在 APM 中标识应用)
  • elastic.apm.application_packages:你的应用主包名(用于精准采集业务代码)
  • elastic.apm.server_url:APM Server 地址(Docker 网络内直接用容器名)
  • elastic.apm.environment:环境标识(dev/test/prod)
  1. 构建并启动 SpringBoot 应用镜像:
bash
 
运行
 
 
 
 
# 构建镜像
docker build -t my-springboot-app:1.0 .

# 启动应用(加入apm-network网络,确保能访问apm-server)
docker run -d \
  --name my-springboot-app \
  --network apm-network \
  -p 8080:8080 \
  my-springboot-app:1.0
 

方式 2:启动容器时动态指定(快速测试)

如果不想重新构建镜像,可在启动容器时直接指定 Agent 参数:
bash
 
运行
 
 
 
 
# 下载APM Agent到本地
wget https://repo1.maven.org/maven2/co/elastic/apm/elastic-apm-agent/1.48.0/elastic-apm-agent-1.48.0.jar

# 启动SpringBoot容器(挂载Agent并指定参数)
docker run -d \
  --name my-springboot-app \
  --network apm-network \
  -p 8080:8080 \
  -v $(pwd)/elastic-apm-agent-1.48.0.jar:/agent/elastic-apm-agent-1.48.0.jar \
  -e JAVA_OPTS="-javaagent:/agent/elastic-apm-agent-1.48.0.jar \
               -Delastic.apm.service_name=my-springboot-app \
               -Delastic.apm.application_packages=com.yourpackage \
               -Delastic.apm.server_url=http://apm-server:8200" \
  openjdk:17-jdk-slim java $JAVA_OPTS -jar /app/app.jar
 

步骤 5:验证 APM 监控效果

  1. 访问 Kibana:http://localhost:5601
  2. 在左侧导航栏找到 APM(或在搜索框输入 APM)
  3. 进入 APM 界面后,能看到你配置的my-springboot-app应用
  4. 访问 SpringBoot 应用的接口(如http://localhost:8080/api/test),等待 10 秒左右,就能在 APM 中看到:
    • 接口响应时间、吞吐量、错误率
    • JVM 内存、CPU 使用情况
    • 数据库调用、外部 API 调用的性能详情
    • 慢查询、异常堆栈信息

步骤 6:进阶配置(可选)

  1. 自定义采集范围:在application.yml中添加 APM 配置
yaml
 
 
elastic:
  apm:
    capture_headers: true  # 采集请求头
    capture_body: errors   # 仅在出错时采集请求体
    stack_trace_limit: 50  # 堆栈跟踪深度
    transaction_sample_rate: 1.0  # 100%采样(生产环境可设0.1)
 
  1. 生产环境优化:
    • 开启 ES 的安全认证(修改 docker-compose.yml 中的 ES 配置)
    • 调整 APM Agent 的采样率,避免性能开销
    • 配置 APM 数据的过期策略(在 ES 中设置索引生命周期)

三、常见问题排查

  1. 应用无法连接 APM Server:
    • 检查 Docker 网络是否互通:docker exec -it my-springboot-app ping apm-server
    • 检查 APM Server 地址是否正确(容器内用容器名,外部用宿主机 IP)
  2. Kibana 中看不到应用数据:
    • 查看应用日志:docker logs my-springboot-app
    • 查看 APM Server 日志:docker logs apm-server
  3. 性能开销过大:
    • 降低采样率(transaction_sample_rate设为 0.1-0.5)
    • 关闭不必要的采集项(如请求体、请求头)

总结

  1. 核心流程:部署 ES/Kibana/APM Server → SpringBoot 集成 APM Agent → 启动应用 → 可视化监控,核心是通过 Java Agent 无侵入式采集应用性能数据。
  2. 关键配置:service_name(应用标识)、server_url(APM Server 地址)、application_packages(业务包名)是必须配置的核心参数。
  3. 环境适配:Docker 环境下需确保 SpringBoot 容器与 APM Server 在同一网络,才能通过容器名通信,生产环境需注意安全配置和性能优化。
这套方案是目前最成熟的 SpringBoot+Docker APM 落地方式,你可以根据实际需求替换为 SkyWalking、Pinpoint 等其他 APM 工具,核心步骤(部署服务端、集成客户端、可视化)基本一致。
APM(Application Performance Monitoring)在 docker 使用 springboot的详细步骤
你希望获取在 Docker 环境中为 SpringBoot 应用搭建 APM(应用性能监控)的完整、可落地的详细步骤,我会以Apache SkyWalking(更轻量、对 SpringBoot 适配更友好的 APM 工具)为例,提供一套步骤清晰、开箱即用的方案。
SkyWalking 相比 Elastic APM 更适合 SpringBoot 新手,核心优势是部署简单、无侵入(支持字节码增强)、可视化更贴合 Java 应用场景。

一、整体架构(SkyWalking)

我们将部署以下组件(全部 Docker 化):
  1. SkyWalking OAP Server:核心服务,接收、分析、存储监控数据
  2. SkyWalking UI:可视化控制台,展示监控数据
  3. SpringBoot 应用:集成 SkyWalking Agent,上报性能数据

二、详细实施步骤

步骤 1:环境准备

确保你的机器已安装:
  • Docker(版本 20.10+)
  • Docker Compose(版本 2.0+)
  • Maven/Gradle(用于打包 SpringBoot 应用,可选)

步骤 2:编写 Docker Compose 部署 SkyWalking 服务端

创建docker-compose-skywalking.yml文件,一键部署 OAP Server 和 UI:
yaml
 
 
version: '3.8'

services:
  # SkyWalking OAP Server(核心服务)
  skywalking-oap:
    image: apache/skywalking-oap-server:9.7.0
    container_name: skywalking-oap
    ports:
      - "11800:11800"  # Agent上报数据的gRPC端口
      - "12800:12800"  # UI访问OAP的REST端口
    environment:
      - SW_STORAGE=h2  # 测试环境用H2内存数据库,生产可用Elasticsearch
      - SW_HEALTH_CHECKER=default
      - SW_TELEMETRY=prometheus
      - JAVA_OPTS=-Xms512m -Xmx512m
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:12800/health"]
      interval: 30s
      timeout: 10s
      retries: 3
    networks:
      - skywalking-network

  # SkyWalking UI(可视化控制台)
  skywalking-ui:
    image: apache/skywalking-ui:9.7.0
    container_name: skywalking-ui
    ports:
      - "8080:8080"  # UI访问端口
    environment:
      - SW_OAP_ADDRESS=http://skywalking-oap:12800  # 连接OAP的地址
    depends_on:
      skywalking-oap:
        condition: service_healthy  # 等待OAP健康后启动
    networks:
      - skywalking-network

networks:
  skywalking-network:
    driver: bridge
 

步骤 3:启动 SkyWalking 服务端

执行以下命令启动 OAP 和 UI:
bash
 
运行
 
 
 
 
# 启动服务(后台运行)
docker-compose -f docker-compose-skywalking.yml up -d

# 查看服务状态(确保两个容器都是Up状态)
docker-compose -f docker-compose-skywalking.yml ps
 
验证服务是否正常:
  • SkyWalking UI:访问 http://localhost:8080,能看到 SkyWalking 控制台(默认无数据)即正常
  • OAP 健康检查:访问 http://localhost:12800/health,返回 {"status":"READY"} 即正常

步骤 4:SpringBoot 应用集成 SkyWalking Agent(Docker 化)

方式 1:构建自定义镜像(推荐,生产用)

这种方式将 Agent 内置到镜像中,部署更规范。
4.1 准备 SpringBoot 应用的 Dockerfile
dockerfile
 
 
# 基础镜像(根据你的SpringBoot版本选择JDK版本)
FROM openjdk:17-jdk-slim

# 设置工作目录
WORKDIR /app

# 1. 下载SkyWalking Agent(也可本地下载后COPY,避免每次构建都下载)
RUN mkdir -p /app/agent \
    && cd /app/agent \
    && curl -O https://archive.apache.org/dist/skywalking/9.7.0/apache-skywalking-java-agent-9.7.0.tgz \
    && tar -zxvf apache-skywalking-java-agent-9.7.0.tgz \
    && rm -f apache-skywalking-java-agent-9.7.0.tgz

# 2. 复制打包好的SpringBoot jar包(替换为你的jar包名称)
COPY your-springboot-app.jar /app/app.jar

# 3. 设置SkyWalking Agent参数(核心配置)
ENV JAVA_OPTS="-javaagent:/app/agent/skywalking-agent/skywalking-agent.jar \
               -Dskywalking.agent.service_name=my-springboot-app \  # 应用名称(必填)
               -Dskywalking.collector.backend_service=skywalking-oap:11800"  # OAP地址(Docker网络内用容器名)

# 暴露应用端口(替换为你的应用端口)
EXPOSE 8081

# 启动应用
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar /app/app.jar"]
 
4.2 构建并启动 SpringBoot 应用镜像
bash
 
运行
 
 
 
 
# 构建镜像(替换为你的镜像名称)
docker build -t my-springboot-app:1.0 .

# 启动容器(加入SkyWalking网络,确保能访问OAP)
docker run -d \
  --name my-springboot-app \
  --network skywalking-network \
  -p 8081:8081 \  # 宿主机端口:容器端口
  my-springboot-app:1.0
 

方式 2:快速测试(无需构建镜像,挂载 Agent)

如果只是快速验证,可直接挂载本地 Agent 包启动容器:
bash
 
运行
 
 
 
 
# 1. 本地下载并解压Agent
mkdir -p skywalking-agent && cd skywalking-agent
curl -O https://archive.apache.org/dist/skywalking/9.7.0/apache-skywalking-java-agent-9.7.0.tgz
tar -zxvf apache-skywalking-java-agent-9.7.0.tgz
cd ..

# 2. 启动SpringBoot容器(挂载Agent+指定参数)
docker run -d \
  --name my-springboot-app \
  --network skywalking-network \
  -p 8081:8081 \
  -v $(pwd)/skywalking-agent:/app/agent \  # 挂载本地Agent到容器
  -e JAVA_OPTS="-javaagent:/app/agent/skywalking-agent/skywalking-agent.jar \
               -Dskywalking.agent.service_name=my-springboot-app \
               -Dskywalking.collector.backend_service=skywalking-oap:11800" \
  openjdk:17-jdk-slim java $JAVA_OPTS -jar /app/app.jar  # 替换为你的jar包路径
 

步骤 5:验证 APM 监控效果

  1. 访问 SkyWalking UI:http://localhost:8080(默认用户名 / 密码:admin/admin)
  2. 左侧导航栏选择「仪表盘」→ 选择你的应用 my-springboot-app
  3. 访问 SpringBoot 应用的接口(如 http://localhost:8081/api/test),等待 10 秒左右,就能看到:
    • 接口响应时间、QPS、错误率
    • JVM 内存 / CPU/GC 监控
    • 数据库 / Redis 等中间件调用链路
    • 慢查询、异常堆栈信息
    • 服务拓扑图(如果有多个服务调用)

步骤 6:进阶配置(可选,生产环境)

6.1 自定义 Agent 配置

创建agent/config/agent.config文件,挂载到容器中覆盖默认配置:
properties
 
 
# 应用名称
agent.service_name=my-springboot-app-prod
# OAP地址(生产环境可配置多个,用逗号分隔)
collector.backend_service=192.168.1.100:11800,192.168.1.101:11800
# 采样率(生产环境建议0.1,即10%)
agent.sample_n_per_3_secs=-1  # -1表示全采样,生产改10
# 日志级别
logging.level=INFO
# 开启JVM监控
plugin.jvm.active=true
# 开启数据库监控(支持MySQL/PostgreSQL等)
plugin.jdbc.active=true
 
启动容器时挂载配置文件:
bash
 
运行
 
 
 
 
docker run -d \
  --name my-springboot-app \
  --network skywalking-network \
  -p 8081:8081 \
  -v $(pwd)/agent/config/agent.config:/app/agent/skywalking-agent/config/agent.config \
  -v $(pwd)/skywalking-agent:/app/agent \
  -e JAVA_OPTS="-javaagent:/app/agent/skywalking-agent/skywalking-agent.jar" \
  my-springboot-app:1.0
 

6.2 切换存储为 Elasticsearch(生产环境)

修改docker-compose-skywalking.yml中 OAP 的配置:
yaml
 
 
skywalking-oap:
  image: apache/skywalking-oap-server:9.7.0
  container_name: skywalking-oap
  ports:
    - "11800:11800"
    - "12800:12800"
  environment:
    - SW_STORAGE=elasticsearch
    - SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200  # 指向你的ES地址
    - JAVA_OPTS=-Xms1g -Xmx1g
  depends_on:
    - elasticsearch  # 需要先部署ES
 

总结

  1. 核心步骤:部署 SkyWalking OAP+UI → SpringBoot 集成 SkyWalking Agent(通过 Java Agent 无侵入式采集)→ 启动应用 → 可视化监控,全程基于 Docker,无需修改业务代码。
  2. 关键配置:agent.service_name(应用唯一标识)和collector.backend_service(OAP 地址)是必须配置的核心参数,Docker 环境下需确保应用容器与 OAP 在同一网络。
  3. 环境适配:测试环境用 H2 存储足够,生产环境建议切换到 Elasticsearch,并调整采样率以降低性能开销。
这套方案完全基于 Docker,步骤简洁,适合 SpringBoot 新手快速落地 APM 监控,你可根据实际需求调整镜像版本、端口和配置参数。

------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------

posted @ 2026-01-16 11:20  hanease  阅读(0)  评论(0)    收藏  举报