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

一、概述

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

二、核心组件

1. SBA Server

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

  • 启动方式

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

    XML 复制代码
    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 采集数据。

  • 依赖

    XML 复制代码
    <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):

    XML 复制代码
    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

  • 示例

    XML 复制代码
    {
      "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

  • 示例

    XML 复制代码
    {
      "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 项目:

    bash 复制代码
    mvn clean package
  3. 启动监控中心:

    bash 复制代码
    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. 安全配置

  • 自定义登录页面

    java 复制代码
    @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 动态更新配置,无需重启服务。

  • 配置文件

    XML 复制代码
    spring:
      cloud:
        nacos:
          config:
            server-addr: ${nacos.server}
            namespace: ${spring.profiles.active}
            group: ${nacos.config.group}

3. 链路追踪

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

  • 依赖

    XML 复制代码
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-zipkin</artifactId>
    </dependency>
  • 配置文件

    XML 复制代码
    spring:
      zipkin:
        base-url: <http://zipkin-server:9411>
      sleuth:
        sampler:
          probability: 1.0

六、总结

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

相关推荐
王德博客18 分钟前
【从基础到实战】STL string 学习笔记(上)
c++·笔记·学习
Resean022339 分钟前
SpringMVC 6+源码分析(二)DispatcherServlet实例化流程 1
java·spring boot·spring·servlet·springmvc
Always_away42 分钟前
26考研|数学分析:重积分
笔记·学习·考研·数学
泉城老铁1 小时前
Spring Boot 对接阿里云 OSS 的详细步骤和流程
java·后端·程序员
陈平安安2 小时前
Maven学习
java·maven
-$_$-2 小时前
【笔试真题】2024秋招京东后端开发岗位-第一批笔试
java·开发语言
ATaylorSu2 小时前
经典算法之美:冒泡排序的优雅实现
开发语言·笔记·学习·算法
YuforiaCode3 小时前
24黑马SpringCloud的Docker本地目录挂载出现相关问题解决
spring cloud·docker·eureka