【Spring实战】24 使用 Spring Boot Admin 管理和监控应用

文章目录

    • [1. 定义](#1. 定义)
    • [2. 使用场景](#2. 使用场景)
    • [3. 主要功能](#3. 主要功能)
    • [4. 示例](#4. 示例)
      • [1)服务端 添加依赖](#1)[服务端] 添加依赖)
      • [2)服务端 相关配置](#2)[服务端] 相关配置)
      • [3)服务端 启动类](#3)[服务端] 启动类)
      • [4)服务端 启动服务](#4)[服务端] 启动服务)
      • [5)服务端 浏览器访问](#5)[服务端] 浏览器访问)
      • [6)客户端 添加依赖](#6)[客户端] 添加依赖)
      • [7)客户端 相关配置](#7)[客户端] 相关配置)
      • [8)客户端 启动类](#8)[客户端] 启动类)
      • [9)客户端 启动服务](#9)[客户端] 启动服务)
      • 验证
    • 总结

Spring Boot Admin 是一个强大的工具,为开发人员和运维人员提供了在生产环境中监控和管理 Spring Boot 应用程序的便捷方式。通过集成 Spring Boot Admin,你可以很轻松的监视应用程序状态、查看健康状况、管理日志、获取性能指标等,从而更好地了解和维护应用程序。本文将介绍 Spring Boot Admin 的定义、使用场景以及如何通过 Maven 集成和配置它。

1. 定义

Spring Boot Admin 是一个基于 Web 的用户界面,用于管理和监控 Spring Boot 应用程序。它为开发人员和运维人员提供了一个集中式的仪表板,展示了注册的 Spring Boot 应用程序的关键信息。通过这个仪表板,可以方便的查看应用程序状态、健康状况、日志、指标等,从而更好地了解应用程序的运行情况。

2. 使用场景

  • 集中式监控

    它提供了一个集中式的监控平台,使您能够在一个地方查看所有注册的 Spring Boot 应用程序的状态。这简化了监控和管理的流程

  • 实时日志查看

    通过它可以实时查看和管理应用程序的日志,帮助您及时发现和解决问题

  • 健康状况监测

    它提供了健康检查,让您能够迅速了解应用程序的健康状况,包括是否存活、是否响应请求等

  • 性能指标展示

    显示有关应用程序的各种指标和性能统计,如内存使用、垃圾回收、线程利用率等。这有助于性能调优和资源管理

  • 通知和警报

    支持配置通知,以便在应用程序状态发生变化或健康状况下降时接收警报。这有助于及时响应问题并采取纠正措施

3. 主要功能

Spring Boot Admin 提供了多种功能,下面仅是是常用的功能:

  • 应用程序概览
  • 应用程序详细信息
  • 日志查看与管理
  • 健康状况检查
  • 指标监控
  • 通知和警报
  • 与 Spring Cloud 集成

4. 示例

接下来,让我们使用一个示例,看看实际开发中是如何集成 Spring Boot Admin 并做一些简单的配置

1)服务端 添加依赖

在项目的 pom.xml 文件中添加 Spring Boot Admin 依赖,此处使用了最新版本 3.2.0

pom.xml

xml 复制代码
<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-server</artifactId>
    <version>3.2.0</version>
</dependency>

2)服务端 相关配置

application.properties 文件中配置 Spring Boot Admin 服务器的端口和上下文路径

application.properties

properties 复制代码
server.port=8090
spring.boot.admin.context-path=/admin

3)服务端 启动类

编写一个 Spring Boot Admin 的启动类,就是在一个普通的 boot 启动类上追加了 @EnableAdminServer 注解而已

AdminApplication.java

java 复制代码
package com.cheney.admin;

import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@EnableAdminServer
@SpringBootApplication
public class AdminApplication {

    public static void main(String[] args) {
        SpringApplication.run(AdminApplication.class, args);
    }
}

4)服务端 启动服务

运行刚刚这个的 Spring Boot 程序,就可以启动 Spring Boot Admin 服务器

5)服务端 浏览器访问

访问一下下面的 URL 看看此时这个服务长什么样

http://localhost:8090/admin

此时,Admin 服务端的服务还只是一个光杆司令,没有任何 客户端服务注册上来呢

6)客户端 添加依赖

在你要监控的每个 Spring Boot 应用程序中,添加 Spring Boot Admin 客户端依赖

xml 复制代码
<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
    <version>3.2.0</version>
</dependency>

7)客户端 相关配置

application.properties 文件中配置 指定 Spring Boot Admin 服务器的地址

application.properties

properties 复制代码
spring.application.name=cheney-demo
spring.boot.admin.client.url=http://localhost:8090/admin
spring.boot.admin.client.instance.management-base-url= http://localhost:8090

8)客户端 启动类

编写一个最普通的 Spring Boot 的启动器,仅注释 @SpringBootApplication 即可

DemoApplication.java

java 复制代码
package com.cheney.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

9)客户端 启动服务

启动这个 Demo 服务

Application registered itself as 1a257d42f2b7

看到这个说明,你启动的客户端服务,已经注册到 Admin 服务端了

验证

再次访问访问服务端下面的 URL(Spring Boot Admin 控制台) 地址

http://localhost:8090/admin

应用选项卡

此时,便可以在 Admin 控制台上看到我们的 cheney-demo 服务了,并且状态是 UP(正常启动)

💥注意:如果,此时一直显示 《离线实例》 (如果没出现,则忽略,继续往下看)

如下错误信息:

Failed to resolve 'X.mshome.net' A(1) after 2 queries

此时可以参考 【Spring实战】错误 向Spring Boot Admin总显示离线实例 文章,查看解决办法

应用墙选项卡

再切换到 应用墙 上看看,可以发现整理也可以看到注册上来的服务

日志报表选项卡

再来看看 日志报表

注意:此时我们只是向 Admin 服务器,注册了一个 cheney-demo 服务,你还可以注册其他的。当注册完成一个之后就会控制台上看到啦。

总结

通过这个简单的示例,可以快速集成和配置 Spring Boot Admin,实现对应用程序的集中监控和管理。请注意,具体的配置和使用可能会根据项目的需求和环境而有所调整,建议查阅 Spring Boot Admin 的官方文档以获取更详细的信息和配置选项。

相关推荐
头发还在的女程序员3 小时前
医院陪诊管理系统怎么选择?——2026 年选型避坑与架构参考
java·开发语言·陪诊系统·陪诊app·医院陪诊陪护
CodeStats3 小时前
【Spring事务】Spring事务注解 @Transactional 完整体系:从 MySQL 隔离级别到 MyBatis 原理详解
java·spring·mybatis·事务·transactional
我命由我123454 小时前
Android 开发问题:为 PDFView 设置一个带有黑色边框的背景 drawable,但边框没有生效
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
都叫我大帅哥6 小时前
从Python到Java:为什么企业级Agent最终会选择Java?
java·ai编程
wanderist.6 小时前
Lambda表达式在算法竞赛中的应用
java·开发语言·算法
腻害兔8 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:IM 即时通讯模块,一个被低估的「全功能聊天系统」
java·前端·vue.js·产品经理·ai编程
心念枕惊8 小时前
.NET CORE 授权进阶-角色、策略与动态权限实现
java·前端·.netcore
景同学10 小时前
把 AI 用到线上运维:可行、有效,前提是喂足信息——一次 Full GC 排障实录
java·人工智能·后端
C++、Java和Python的菜鸟10 小时前
第7章 后端Web实战(Tlias系统)
java
憧憬成为java架构高手的小白11 小时前
黑马八股--spring框架学习
java·学习·spring