SpringBoot实战(十三)集成 Admin

news/2024/11/20 17:32:17/

目录

    • 一、简介
    • 二、搭建 springboot-admin 管理服务
      • 1.Maven 依赖
      • 2.application.yml
      • 3.添加 @EnableAdminServer
      • 4.启动服务,查看页面
    • 三、搭建 springboot-admin-client 客户端服务
      • 1.Maven 依赖
      • 2.application.yml
      • 3.启动服务,查看页面
    • 四、搭配 Eureka 使用
      • 1.搭建 springboot-eureka 服务
        • 1.1)Maven 依赖:
        • 1.2)application.yml:
        • 1.3)添加 @EnableEurekaServer 注解
        • 1.4)启动服务
      • 2.调整 `springboot-admin` 管理服务
        • 1.1)Maven依赖:
        • 1.2)application.yml
        • 1.3)启动服务
      • 3.调整 `springboot-admin-client` 客户端服务
        • 1.1)Maven依赖:
        • 1.2)application.yml
        • 1.3)启动服务

上一章 SpringBoot实战(十二)我们集成了 Spring Actuator,我们拿到了应用服务的健康状态指标以及其他参数。这一章,我们就来看一下基于 Spring Actuator 数据进行图形化界面展示的 Spring Boot Admin 框架。

一、简介

Spring Boot Admin: Spring Boot Admin 是一个开源项目,提供了一个基于 web 的界面来管理和监控 Spring Boot 的应用程序。它可以实时监控您的 Spring Boot 应用程序,包括健康状况、指标和其他有用信息。

GitHub: https://github.com/codecentric/spring-boot-admin

官方文档: https://codecentric.github.io/spring-boot-admin/2.5.1/#getting-started

通过 Spring Boot Admin,我们可以轻松地从一个仪表板管理多个 Spring Boot 应用程序。我们可以查看每个应用程序的详细信息,包括内存使用情况、CPU 使用情况、线程等等。您还可以查看每个应用程序的配置属性,并在运行时进行编辑。

Spring Boot Admin 还提供了一个集中查看 Spring Boot 应用程序日志的地方。您可以按日期、日志级别和文本搜索过滤日志。这可以帮助我们快速排查应用程序中的问题。

此外,Spring Boot Admin 还具有发送通知的内置支持,当发生某些事件时,例如应用程序关闭或堆使用超过某个阈值时,您可以接收到通知。

总体而言,Spring Boot Admin 是一个有用的工具,用于管理和监控您的 Spring Boot 应用程序。它可以帮助您快速识别和排查问题,同时为您的应用程序的健康和性能提供有价值的参考。

这里,我们会一起创建一个 Spring Boot Admin 的管理服务客户端服务

二、搭建 springboot-admin 管理服务

1.Maven 依赖

<properties><java.version>1.8</java.version><spring.boot.version>2.4.5</spring.boot.version><spring.cloud.version>2020.0.3</spring.cloud.version><admin.starter.server.version>2.3.1</admin.starter.server.version>
</properties>
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!-- spring-boot-admin --><dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-server</artifactId><version>${admin.starter.server.version}</version></dependency><!-- Eureka --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring.boot.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring.cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>

2.application.yml

server:port: 8000spring:application:name: springboot-adminmanagement:endpoint:health:show-details: always

3.添加 @EnableAdminServer

在启动类添加 @EnableAdminServer 注解:

import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@EnableAdminServer
@SpringBootApplication
public class SpringbootDemoApplication {public static void main(String[] args) {SpringApplication.run(SpringbootDemoApplication.class, args);}
}

4.启动服务,查看页面

启动 springboot-admin 服务,访问地址:http://localhost:8000

在这里插入图片描述

三、搭建 springboot-admin-client 客户端服务

1.Maven 依赖

<properties><java.version>1.8</java.version><spring.boot.version>2.4.5</spring.boot.version><spring.cloud.version>2020.0.3</spring.cloud.version><admin.starter.client.version>2.3.1</admin.starter.client.version>
</properties>
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!-- spring-boot-actuator --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!-- spring-boot-admin-client --><dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-client</artifactId><version>${admin.starter.client.version}</version></dependency>
</dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring.boot.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring.cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>

2.application.yml

server:port: 8001spring:application:name: springboot-admin-clientboot:admin:client:api-path: /instancesurl: http://127.0.0.1:8100instance:prefer-ip: true # 使用ip注册进来management:endpoint:health:show-details: alwaysendpoints:enabled-by-default: trueweb:base-path: /actuatorexposure:include: "*"

3.启动服务,查看页面

启动 springboot-admin-client 服务,再次访问地址:http://localhost:8000

在这里插入图片描述

点击 应用墙,我们可以看到目前是只有一个客户端服务。

在这里插入图片描述

点击这个服务,我们可以看到当前服务的元数据、进程和线程的状态等信息。

在这里插入图片描述

以上就是 Spring Boot Admin 框架的原始集成方式。

四、搭配 Eureka 使用

其实 Spring Boot Admin 可以搭配 Eureka 注册中心,实现自动扫描注册到注册中心上的所有服务,只要服务中集成了 Spring Actuator

1.搭建 springboot-eureka 服务

1.1)Maven 依赖:

<properties><java.version>1.8</java.version><spring.boot.version>2.4.5</spring.boot.version><spring.cloud.version>2020.0.3</spring.cloud.version>
</properties>
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- eureka --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency>
</dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring.boot.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring.cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>

1.2)application.yml:

server:port: 1001spring:application:name: springboot-eurekasecurity:user:name: demopassword: Demo2023eureka:instance:hostname: localhostclient:# eureka.client.registerWithEureka :表示是否将自己注册到Eureka Server,默认为true。# 由于当前这个应用就是Eureka Server,故而设为falseregister-with-eureka: false# eureka.client.fetchRegistry :表示是否从Eureka Server获取注册信息,默认为true。# 因为这是一个单点的Eureka Server,不需要同步其他的Eureka Server节点的数据,故而设为false。fetch-registry: falseserver:# 配置属性,但由于 Eureka 自我保护模式以及心跳周期长的原因,经常会遇到 Eureka Server 不剔除已关停的节点的问题enable-self-preservation: false# 清理间隔(单位毫秒,默认是60*1000),开发环境设置如下可快速移除不可用的服务eviction-interval-timer-in-ms: 5000

1.3)添加 @EnableEurekaServer 注解

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@EnableEurekaServer
@SpringBootApplication
public class SpringbootDemoApplication {public static void main(String[] args) {SpringApplication.run(SpringbootDemoApplication.class, args);}
}

1.4)启动服务

启动服务,访问地址:http://localhost:1001

在这里插入图片描述

2.调整 springboot-admin 管理服务

1.1)Maven依赖:

<properties><java.version>1.8</java.version><spring.boot.version>2.4.5</spring.boot.version><spring.cloud.version>2020.0.3</spring.cloud.version><admin.starter.server.version>2.3.1</admin.starter.server.version>
</properties>
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- spring-boot-admin --><dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-server</artifactId><version>${admin.starter.server.version}</version></dependency><!-- Eureka --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring.boot.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring.cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>

1.2)application.yml

server:port: 8000spring:application:name: springboot-adminmanagement:endpoint:health:show-details: always#eureka client
eureka:client:service-url:defaultZone: http://demo:Demo2023@localhost:1001/eureka/instance:hostname: localhostprefer-ip-address: true # 是否使用 ip 地址注册instance-id: ${spring.cloud.client.ip-address}:${server.port} # ip:portlease-renewal-interval-in-seconds: 5 # 实例续期心跳间隔(默认30s),设置之后启动服务不需要等很久就可以访问到服务的内容lease-expiration-duration-in-seconds: 15 # 实例续期持续多久后失效(默认90s)

1.3)启动服务

访问 Eureka 地址:http://localhost:1001

在这里插入图片描述

访问管理页面地址:http://localhost:8000/wallboard

在这里插入图片描述

3.调整 springboot-admin-client 客户端服务

1.1)Maven依赖:

<properties><java.version>1.8</java.version><spring.boot.version>2.3.6.RELEASE</spring.boot.version><spring.cloud.version>Hoxton.SR8</spring.cloud.version><admin.starter.client.version>2.3.1</admin.starter.client.version>
</properties>
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- spring-boot-actuator --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!-- spring-boot-admin-client --><dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-client</artifactId><version>${admin.starter.client.version}</version></dependency><!-- Eureka --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>
</dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring.boot.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring.cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>

1.2)application.yml

server:port: 8001spring:application:name: springboot-admin-client
#  boot:
#    admin:
#      client:
#        api-path: /instances
#        url: http://127.0.0.1:8000
#        instance:
#          prefer-ip: true # 使用ip注册进来management:endpoint:health:show-details: alwaysendpoints:enabled-by-default: trueweb:base-path: /actuatorexposure:include: "*"#eureka client
eureka:client:service-url:defaultZone: http://demo:Demo2023@localhost:1001/eureka/instance:hostname: localhostprefer-ip-address: true # 是否使用 ip 地址注册instance-id: ${spring.cloud.client.ip-address}:${server.port} # ip:portlease-renewal-interval-in-seconds: 5 # 实例续期心跳间隔(默认30s),设置之后启动服务不需要等很久就可以访问到服务的内容lease-expiration-duration-in-seconds: 15 # 实例续期持续多久后失效(默认90s)

1.3)启动服务

访问 Eureka 地址:http://localhost:1001

在这里插入图片描述

访问管理页面地址:http://localhost:8000/wallboard

在这里插入图片描述

整理完毕,完结撒花~ 🌻





参考地址:

1.Spring Boot Admin 介绍及使用,https://blog.csdn.net/zouliping123456/article/details/121977792


http://www.ppmy.cn/news/34788.html

相关文章

代码误写到master分支(或其他分支),此时代码还未提交,如何转移到新建分支?

问题背景 有时候&#xff0c;我们拿到需求&#xff0c;没仔细看当前分支是什么&#xff0c;就开始撸代码了。完成了需求或者写到一半发现开发错分支了。 比如此时新需求代码都在master分支上&#xff0c;提交必然是不可能的&#xff0c;所有修改还是要在新建分支上进行&#x…

Vue初入,了解Vue的发展与优缺点

作者简介&#xff1a;一名计算机萌新、前来进行学习VUE,让我们一起进步吧。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;我叫于豆豆吖的主页 前言 从本章开始进行Vue前端的学习&#xff0c;了解Vue的发展&#xff0c;以及背后的故事。 一.vue介…

机试练习Day6-有深度的题目--真题

目录矩阵快速幂快速幂算法代码部分复数的集合优先队列运算符重载结构体构造函数代码部分矩阵快速幂 快速幂算法 这个道理和转二进制很像&#xff1a; 例如&#xff1a;现在要求3的9次方&#xff0c;最关键的是如何表示9&#xff0c;我们可以选择让3乘9次&#xff0c;也就是3 *…

第十四届蓝桥杯三月真题刷题训练——第 20 天

目录 第 1 题&#xff1a;纸张尺寸 问题描述 输入格式 输出格式 样例输入1 样例输出1 样例输入 2 样例输出 2 运行限制 代码&#xff1a; 解析&#xff1a; 第 2 题&#xff1a;最大数字 第 3 题&#xff1a;全排列的价值_递推公式 问题描述 输入格式 输出格式…

MD5加密竟然不安全,应届生表示无法理解?

前言 近日公司的一个应届生问我&#xff0c;他做的一个毕业设计密码是MD5加密存储的&#xff0c;为什么密码我帮他调试的时候&#xff0c;我能猜出来明文是什么&#xff1f; 第六感&#xff0c;是后端研发的第六感&#xff01; 正文 示例&#xff0c;有个系统&#xff0c;前…

电路设计的一些概念

锁存器的产生 论述1 (转)时序电路&#xff0c;生成触发器&#xff0c;触发器是有使能端的&#xff0c;使能端无效时数据不变&#xff0c;这是触发器的特性。 组合逻辑&#xff0c;由于数据要保持不变&#xff0c;只能通过锁存器来保存。 第一个代码&#xff0c;由于是时序逻…

第二十一天 数据库开发-MySQL

目录 数据库开发-MySQL 前言 1. MySQL概述 1.1 安装 1.2 数据模型 1.3 SQL介绍 1.4 项目开发流程 2. 数据库设计-DDL 2.1 数据库操作 2.2 图形化工具 2.3 表操作 3. 数据库操作-DML 3.1 增加(insert) 3.2 修改(update) 3.3 删除(delete) 数据库开发-MySQL 前言 …

C语言之按位取反~(七十一)

计算机存储数据基本知识计算机中二进制数包括&#xff08;正数和负数&#xff09;是以补码形式存储。符号位&#xff1a;补码的最左侧首位是符号位&#xff0c;0表示正数&#xff0c;1表示负数。二进制有三种形式&#xff1a;原码、反码、补码。正数的补码和反码&#xff1a;是…