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 等工具,可以进一步扩展监控系统的功能,满足复杂的微服务监控需求。

相关推荐
历程里程碑1 分钟前
滑动窗口---- 无重复字符的最长子串
java·数据结构·c++·python·算法·leetcode·django
qq_2290580121 分钟前
docker中检测进程的内存使用量
java·docker·容器
我真的是大笨蛋35 分钟前
InnoDB行级锁解析
java·数据库·sql·mysql·性能优化·数据库开发
钦拆大仁37 分钟前
Java设计模式-单例模式
java·单例模式·设计模式
云边散步43 分钟前
godot2D游戏教程系列二(4)
笔记·学习·游戏开发
BORN(^-^)1 小时前
《产品经理方法论》阅读笔记
笔记·产品经理
小手cool1 小时前
在保持数组中对应元素(包括负数和正数)各自组内顺序不变的情况下,交换数组中对应的负数和正数元素
java
笨手笨脚の1 小时前
深入理解 Java 虚拟机-04 垃圾收集器
java·jvm·垃圾收集器·垃圾回收
skywalker_111 小时前
Java中异常
java·开发语言·异常
jrlong1 小时前
DataWhale大模型基础与量化微调task4学习笔记(第 2 章:高级微调技术_RLHF 技术详解)
笔记·学习