完整教程:Spring Boot Admin 监控模块笔记-实现全链路追踪

一、概述

Spring Boot Admin(SBA)是一个用于监控和管理 Spring Boot 应用程序的工具。它提供了一个 Web 界面,可以集中管理多个 Spring Boot 应用程序的健康状态、指标、日志、配置等信息。通过 SBA,你可以轻松地监控和管理你的微服务架构。

二、核心组件

1. SBA Server

  • 作用:作为监控中心,提供一个 Web 界面,用于展示所有被监控服务的状态。

  • 启动方式

    @SpringBootApplication
    @EnableAdminServer
    public class MonitorApplication {
    public static void main(String[] args) {
    SpringApplication.run(MonitorApplication.class, args);
    }
    }
  • 配置文件application.yml):

    server:
    port: 9100
    spring:
    application:
    name: know-monitor
    cloud:
    nacos:
    discovery:
    server-addr: ${nacos.server}
    namespace: ${spring.profiles.active}
    group: monitor
    security:
    user:
    name: admin
    password: 123456
    management:
    endpoints.web.exposure.include: "*"

2. SBA Client

  • 作用:运行在每个被监控的服务中,将自身信息注册到 SBA Server,并提供 /actuator 端点供 SBA Server 采集数据。

  • 依赖

    de.codecentric
    spring-boot-admin-starter-client
    org.springframework.boot
    spring-boot-starter-actuator
  • 配置文件application.yml):

    spring:
    application:
    name: order-service
    boot:
    admin:
    client:
    url:
    management:
    endpoints.web.exposure.include: health,info,metrics,env,loggers

三、监控功能

1. 健康状态

  • 功能:显示服务的健康状态(UP/DOWN/OFFLINE)。

  • 端点/actuator/health

  • 示例

    {
    "status": "UP",
    "components": {
    "diskSpace": {
    "status": "UP",
    "details": {
    "total": 250790436864,
    "free": 107374182400,
    "threshold": 10485760
    }
    },
    "db": {
    "status": "UP",
    "details": {
    "database": "MySQL",
    "hello": 1
    }
    }
    }
    }

2. 指标

  • 功能:显示服务的各类指标,如 JVM 内存、CPU 使用率、线程池状态等。

  • 端点/actuator/metrics

  • 示例

    {
    "names": [
    "jvm.memory.used",
    "jvm.threads.live",
    "process.cpu.usage",
    ...
    ]
    }

3. 日志

  • 功能:动态查看和修改日志级别,无需重启服务。

  • 端点/actuator/loggers

  • 示例

    {
    "levels": ["TRACE", "DEBUG", "INFO", "WARN", "ERROR", "FATAL", "OFF"],
    "configuredLevel": "INFO",
    "loggers": {
    "ROOT": {
    "configuredLevel": "INFO"
    },
    "org.springframework.web": {
    "configuredLevel": "DEBUG"
    }
    }
    }

4. 配置信息

  • 功能:查看服务的配置信息,包括环境变量、配置文件等。

  • 端点/actuator/configprops

  • 示例

    {
    "propertySources": [
    {
    "name": "applicationConfig: [classpath:/application.yml]",
    "properties": {
    "spring.application.name": {
    "value": "order-service"
    },
    ...
    }
    }
    ]
    }

5. 环境信息

  • 功能:查看服务的环境信息,如系统属性、环境变量等。

  • 端点/actuator/env

  • 示例

    {
    "activeProfiles": ["dev"],
    "propertySources": [
    {
    "name": "systemProperties",
    "properties": {
    "java.version": {
    "value": "16"
    },
    ...
    }
    }
    ]
    }

6. 线程信息

  • 功能:查看服务的线程池状态,包括线程数、活跃线程数等。

  • 端点/actuator/threaddump

  • 示例

    [
    {
    "threadName": "main",
    "threadId": 1,
    "blockedTime": -1,
    "blockedCount": 0,
    ...
    }
    ]

四、部署与使用

1. 部署 SBA Server

  1. 启动 Nacos 服务。

  2. 打包 know-monitor 项目:

    mvn clean package
  3. 启动监控中心:

    java -jar target/know-monitor.jar --spring.profiles.active=dev
  4. 浏览器访问 http://localhost:9100,使用默认账号 admin 和密码 123456 登录。

2. 部署业务服务

  1. 在业务服务项目中添加 SBA Client 和 Actuator 依赖。
  2. 配置 application.yml,指定 SBA Server 的地址。
  3. 启动业务服务,服务将自动注册到 SBA Server。

3. 使用 SBA UI

  • 登录 SBA Server 的 Web 界面。
  • 在实例列表中查看所有被监控的服务。
  • 点击具体服务,查看其健康状态、指标、日志、配置等详细信息。

五、扩展功能

1. 安全配置

  • 自定义登录页面

    @Configuration
    public class SecurityConfig {
    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
    http
    .csrf().disable()
    .authorizeHttpRequests(auth -> auth.anyRequest().authenticated())
    .formLogin(form -> form.loginPage("/login").permitAll())
    .logout(logout -> logout.permitAll());
    return http.build();
    }
    }
  • OAuth2 集成:通过 Spring Security 配置 OAuth2 客户端,实现单点登录。

2. 动态配置

  • Nacos 配置中心:通过 Nacos 动态更新配置,无需重启服务。

  • 配置文件

    spring:
    cloud:
    nacos:
    config:
    server-addr: ${nacos.server}
    namespace: ${spring.profiles.active}
    group: ${nacos.config.group}

3. 链路追踪

  • 集成 Zipkin:通过 Sleuth 和 Zipkin 实现分布式链路追踪。

  • 依赖

    org.springframework.cloud
    spring-cloud-starter-zipkin
  • 配置文件

    spring:
    zipkin:
    base-url:
    sleuth:
    sampler:
    probability: 1.0

六、总结

Spring Boot Admin 提供了一个强大的监控平台,可以集中管理多个 Spring Boot 应用程序。通过简单的配置和依赖引入,你可以轻松地实现服务的健康状态监控、指标采集、日志管理、配置管理等功能。结合 Nacos、Zipkin 等工具,可以进一步扩展监控系统的功能,满足复杂的微服务监控需求。

posted @ 2025-08-03 21:31  yfceshi  阅读(43)  评论(0)    收藏  举报