Spring Boot Admin 监控模块笔记-实现全链路追踪

发布于:2025-08-01 ⋅ 阅读:(18) ⋅ 点赞:(0)

一、概述

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 采集数据。

  • 依赖

    <dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-starter-client</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    
  • 配置文件application.yml):

    spring:
      application:
        name: order-service
      boot:
        admin:
          client:
            url: <http://know-monitor:9100>
    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 实现分布式链路追踪。

  • 依赖

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-zipkin</artifactId>
    </dependency>
    
  • 配置文件

    spring:
      zipkin:
        base-url: <http://zipkin-server:9411>
      sleuth:
        sampler:
          probability: 1.0
    

六、总结

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


网站公告

今日签到

点亮在社区的每一天
去签到