当前位置: 首页 > news >正文

Spring Boot Admin 环境搭建与基本使用

Spring Boot Admin 环境搭建与基本使用

  • 一、Spring Boot Admin是什么
  • 二、提供了那些功能
  • 三、 使用Spring Boot Admin
    • 3.1搭建Spring Boot Admin服务
      • pom文件
      • yml配置文件
      • 启动类
      • 启动admin服务效果
    • 3.2 common-api
        • pom文件
          • feign
          • hystrix
    • 3.3服务消费者
      • pom文件
      • yml配置文件
      • 启动类
      • controller
    • 3.4服务提供者
      • pom文件
      • yml配置文件
      • 项目启动类
      • controller
    • 服务整体启动之后的效果
  • 四、 总结

一、Spring Boot Admin是什么

它是用于监控和管理Spring Boot应用程序的开源工具。它为开发人员或者是运维人员提供了友好的Web界面。可以实时监控管理部署在不同环境中的Spring Boot应用。

二、提供了那些功能

  1. 应用程序监控:可以显示程序的基本信息:内存使用情况、线程信息。
  2. 应用程序管理:可以管理监控的应用:动态配置日志的级别。
  3. 通知和报警:可以配置通知和警报,当应用程序出现问题或者叨叨预定的阈值时及时通知相关人员。
  4. 微服务支持:可以适用微服务架构,一次性监控和管理多个微服务应用。
  5. 安全性:可以与Spring Security集成,实现对监控和管理界面的访问控制。

三、 使用Spring Boot Admin

示例项目整体结构:
这里为什么要使用Eureka,主要是想体现复用的思想。所有服务都注册到了Eureka之后,而Spring Boot Admin只要集成了Eureka之后就能够获取到所有的服务信息注册信息。能够对所有注册到Eureka中的服务进行监控和管理。
在这里插入图片描述
Eureka的搭建可以参考这篇博客:【Spring Cloud 三】Eureka服务注册与服务发现

3.1搭建Spring Boot Admin服务

pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.12.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.wangwei</groupId><artifactId>admin-server-05</artifactId><version>0.0.1-SNAPSHOT</version><name>05-admin-server</name><description>05-admin-server</description><properties><java.version>8</java.version><spring-boot-admin.version>2.3.0</spring-boot-admin.version><spring-cloud.version>Hoxton.SR12</spring-cloud.version></properties><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-server</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-dependencies</artifactId><version>${spring-boot-admin.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

yml配置文件

##???
server:port: 10086  #端口号 0-65535spring:application:name: admin-servereureka:client:service-url:defaultZone: http://localhost:8761/eurekaregister-with-eureka: true #设置为fasle 不往eureka-server注册,默认为truefetch-registry: true #应用是否拉取服务列表到本地registry-fetch-interval-seconds: 10 #为了缓解服务列表的脏读问题,时间越短脏读越少 性能相应的消耗回答instance: #实例的配置instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port}hostname: localhost #主机名称或者服务ipprefer-ip-address: true #以ip的形式显示具体的服务信息lease-renewal-interval-in-seconds: 10 #服务实例的续约时间间隔management:endpoints:web:exposure:include:  '*' #暴露所有的监控端点 #如果一个服务需要被监控,那么就要将自身的一些清苦(一些信息接口)暴露出去

启动类

@SpringBootApplication
@EnableEurekaClient
@EnableAdminServer //#开启admin服务端
public class AdminServerApplication {public static void main(String[] args) {SpringApplication.run(AdminServerApplication.class, args);}}

启动admin服务效果

在这里插入图片描述

3.2 common-api

这个模块是抽离出来的提供接口用于两个服务之间的跨服务调用。之后由服务消费者集成。

pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>feign-project</artifactId><groupId>com.wangwei</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>common-api</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><dependency><groupId>com.wangwei</groupId><artifactId>project-domain</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix</artifactId></dependency></dependencies></project>
feign
@FeignClient(value = "order-service",fallback = UserOrderFeignHystrix.class)
public interface UserOrderFeign {@GetMapping("order/getOrderByUserId/{id}")Order getOrderByUserId (@PathVariable("id")Integer id);}
hystrix
@Component
public class UserOrderFeignHystrix implements UserOrderFeign {/*** 一般远程调用的熔断可以直接返回null* @param id* @return*/@Overridepublic Order getOrderByUserId(Integer id) {return null;}
}

3.3服务消费者

pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>feign-project</artifactId><groupId>com.wangwei</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>user-center</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><!--用于在应用程序中添加各种监控和管理功能--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>com.wangwei</groupId><artifactId>common-api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency></dependencies></project>

yml配置文件

server:port: 8081spring:application:name: user-serviceeureka:client:service-url: #??????defaultZone: http://localhost:8761/eurekaregister-with-eureka: true #设置为fasle 不往eureka-server注册fetch-registry: true #应用是否拉取服务列表到本地registry-fetch-interval-seconds: 10 #为了缓解服务列表的脏读问题,时间越短脏读越少 性能相应的消耗回答instance: #实例的配置instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port}hostname: localhost #主机名称或者服务ipprefer-ip-address: true #以ip的形式显示具体的服务信息lease-renewal-interval-in-seconds: 10 #服务实例的续约时间间隔
feign:hystrix:enabled: true #开启熔断
management:endpoints:web:exposure:include: '*'

启动类

@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
public class UserServiceApplication {public static void main(String[] args) {SpringApplication.run(UserServiceApplication.class,args);}
}

controller

@RestController
public class UserController {@Autowiredprivate UserOrderFeign userOrderFeign;@GetMapping("findOrder")public Order findOrder(){return userOrderFeign.getOrderByUserId(1);}}

3.4服务提供者

服务提供者与服务消费者的主要区别是没有依赖actuator以及对应的暴露端点的配置。所以在admin的Web页面中是不为看到服务提供者的详细信息。

 <!--用于在应用程序中添加各种监控和管理功能--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>

pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>feign-project</artifactId><groupId>com.wangwei</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>order-center</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><dependency><groupId>com.wangwei</groupId><artifactId>common-api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

yml配置文件

server:port: 8080spring:application:name: order-serviceeureka:client:service-url: #??????defaultZone: http://localhost:8761/eurekaregister-with-eureka: true #设置为fasle 不往eureka-server注册fetch-registry: true #应用是否拉取服务列表到本地registry-fetch-interval-seconds: 10 #为了缓解服务列表的脏读问题,时间越短脏读越少 性能相应的消耗回答instance: #实例的配置instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port}hostname: localhost #主机名称或者服务ipprefer-ip-address: true #以ip的形式显示具体的服务信息lease-renewal-interval-in-seconds: 10 #服务实例的续约时间间隔

项目启动类

@SpringBootApplication
@EnableEurekaClient
public class OrderServiceApplication {public static void main(String[] args) {SpringApplication.run(OrderServiceApplication.class,args);}
}

controller

@RestController
public class OrderController  {@GetMapping("order/getOrderByUserId/{id}")Order getOrderByUserId (@PathVariable("id")Integer id){System.out.println(id);Order order=Order.builder().name("青椒肉丝盖饭").price(15D).orderId(1).build();return order;}}

服务整体启动之后的效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
由于Eureka服务没有依赖actuator所以不能看到详细信息。
在这里插入图片描述

四、 总结

  1. 本篇博客主要是对于Spring Boot Admin的基本认识和基本运用,通过本篇博客能够对Spring Boot Admin有一个宏观认知和能够快速上手。
  2. Spring Boot Admin还可以设置通知可报警,本篇博客并没有涉及到。

相关文章:

Spring Boot Admin 环境搭建与基本使用

Spring Boot Admin 环境搭建与基本使用 一、Spring Boot Admin是什么二、提供了那些功能三、 使用Spring Boot Admin3.1搭建Spring Boot Admin服务pom文件yml配置文件启动类启动admin服务效果 3.2 common-apipom文件feignhystrix 3.3服务消费者pom文件yml配置文件启动类control…...

JVM之内存模型

1. Java内存模型 很多人将Java 内存结构与java 内存模型傻傻分不清&#xff0c;java 内存模型是 Java Memory Model&#xff08;JMM&#xff09;的意思。 简单的说&#xff0c;JMM 定义了一套在多线程读写共享数据时&#xff08;成员变量、数组&#xff09;时&#xff0c;对数据…...

音视频 vs2017配置FFmpeg

vs2017 ffmpeg4.2.1 一、首先我把FFmpeg整理了一下&#xff0c;放在C盘 二、新建空项目 三、添加main.cpp&#xff0c;将bin文件夹下dll文件拷贝到cpp目录下 #include<stdio.h> #include<iostream>extern "C" { #include "libavcodec/avcodec.h&…...

【项目管理】PMP备考宝典-第二章《环境》

第一节&#xff1a;概述 1.项目所处的组织环境 &#xff08;1&#xff09;事业环境因素&#xff08;EEFs&#xff09; 组织内部的事业环境因素&#xff1a; 企业都会有愿景、使命、价值观&#xff0c;这些决定了企业的发展方向。不忘初心&#xff0c;坚定地走自己的路&#…...

ELK 将数据流转换回常规索引

ELK 将数据流转换回常规索引 现象&#xff1a;创建索引模板是打开了数据流&#xff0c;导致不能创建常规索引&#xff0c;并且手动修改、删除索引模板失败 "reason" : "composable template [logs_template] with index patterns [new-pattern*], priority [2…...

jackson库收发json格式数据和ajax发送json格式的数据

一、jackson库收发json格式数据 jackson库是maven仓库中用来实现组织json数据功能的库。 json格式  json格式一个组织数据的字符文本格式&#xff0c;它用键值对的方式存贮数据&#xff0c;json数据都是有一对对键值对组成的&#xff0c;键只能是字符串&#xff0c;用双引号包…...

ubuntu安装和卸载CLion

安装 在https://www.jetbrains.com/clion/download/#sectionlinux下载相应版本的安装包&#xff0c;解压之后&#xff0c;找到解压文件夹中的bin文件夹运行./clion.sh 卸载 使用sudo rm -rf删除以下内容&#xff1b;并把刚刚解压的文件删掉 ~/.config/JetBrains ~/.local/s…...

Petrel解释二维浅地层数据

Petrel是斯伦贝谢开发的一款地质解释和建模软件&#xff0c;有点像地理信息系统的ArcGIS&#xff0c;主要用于数据分析和展示。它不是用来处理原始数据的&#xff0c;而是集成各种处理后的结果数据进行特征分析和目标拾取。当然&#xff0c;它也能读取原始数据&#xff0c;比如…...

分布式任务调度平台XXL-JOB使用

说明&#xff1a;分布式任务调度平台XXL-JOB&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线&#xff0c;开箱即用&#xff08;官方语&#xff09;。 本文介绍使用XXL-JOB实现定时执行代码&#xff0c;可用于项目中…...

自考本科汉语言文学专业真的太难了吗

自考本科汉语言文学专业的难度和就业前景都需要综合考虑。目前&#xff0c;自考汉语言文学专业通过率是比较高的&#xff0c;与其他专业比较&#xff0c;难度会低一些&#xff0c;主要考验考生的记忆能力。 自学考试汉语言文学难度怎么样 本科自学考试汉语言文学难度还是比较简…...

STM32CubeMX之freeRTOS信号量

队列可以传输数据&#xff0c;任务之间和任务和中断之间&#xff0c;消息队列用来传数据&#xff0c;占用时间也长 但哦我们有时候只需要传递状态&#xff0c;只需要一个数值表示 如果我们屏幕按固定刷新&#xff0c;就会很消耗资源&#xff0c;如果我们数据变化了&#xff0…...

react-spring,一个react的动画库的使用

介绍 React Spring 是一个 spring physics based animation library 用于 React。它可以轻松地在 React 中实现弹性、渐变等动画效果。 使用 安装依赖&#xff1a; 使用npm&#xff1a; npm install react-spring 使用yarn&#xff1a; yarn add react-spring 导入和使用&a…...

Python中的lambda函数

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! Python中的lambda函数 在Python中&#xff0c;我们使用lambda关键字来声明一个匿名函数&#xff0c; 这就是为什么我们将它们称为“lambda函数”。 匿名函数是指没有声明函数名称的函数。 尽管它们在语法上看起来不同&a…...

Ajax入门

文章目录 axios体验axios-查询参数常用请求方法数据提交 axios错误处理 axios体验 引入axios库 使用axios语法 axios({url: 目标资源地址 }).then((result)>{// 对服务器返回的数据做后续处理 })完整实例 <!DOCTYPE html> <html lang"en"><head&g…...

MapReduce基础原理、MR与MPP区别

MapReduce概述 MapReduce&#xff08;MR&#xff09;本质上是一种用于数据处理的编程模型&#xff1b;MapReduce用于海量数据的计算&#xff0c;HDFS用于海量数据的存储&#xff08;Hadoop Distributed File System&#xff0c;Hadoop分布式文件系统&#xff09;。Hadoop MapR…...

位运算符让人反胃

A60 B13 二进制下 A00111100 B00001101 &&#xff08;同1为1&#xff09; A00111100 & B00001101 X00001100 X12 |&#xff08;有1为1&#xff09; A00111100 | B00001101 X00111101 X61 ^&#xff08;不同为1&#xff09; A00111100 ^ B00001101 X00110001 X49 ~&…...

selenium环境搭建

文章目录 1、下载谷歌浏览器2、下载谷歌驱动 1、下载谷歌浏览器 浏览器下载完成后&#xff0c;在任务管理器中禁止浏览器的自动更新。因为驱动版本必须和浏览器一致&#xff0c;如果浏览器更新了&#xff0c;驱动就用不起了。 2、下载谷歌驱动 谷歌驱动需要和谷歌浏览器版本…...

Python-OpenCV中的图像处理-霍夫变换

Python-OpenCV中的图像处理-霍夫变换 霍夫变换霍夫直线变换霍夫圆环变换 霍夫变换 霍夫(Hough)变换在检测各种形状的技术中非常流行&#xff0c;如果要检测的形状可以用数学表达式描述&#xff0c;就可以是使用霍夫变换检测它。即使要检测的形状存在一点破坏或者扭曲也是可以使…...

最强自动化测试框架Playwright(10)- 截图

截图 捕获屏幕截图并将其保存到文件中&#xff1a; page.screenshot(path"screenshot.png")可将页面截图保存为screen.png import osfrom playwright.sync_api import Playwright, expect, sync_playwrightdef run(playwright: Playwright) -> None:browser p…...

SQL常见命令语句

1.连接数据库 mysql (-h IP) -u root -p 密码2.查看数据库 show databases3.使用数据库 use db_name4.查看表 show tables [from db_name]5.查看表结构 desc tb_name6.创建、删除、选择数据库 create database db_namedrop database db_nameuse db_name7.数据类型 参考链…...

量子热态制备:变分算法与MPS技术解析

1. 量子热态制备的核心原理与技术路线量子热态制备的核心目标是构建一个能够描述量子多体系统在特定温度下统计行为的量子态——Gibbs态。Gibbs态的数学形式为ρ_β e^(-βH)/Z&#xff0c;其中β1/(k_B T)是逆温度参数&#xff0c;H为系统哈密顿量&#xff0c;ZTr[e^(-βH)]是…...

中文医疗对话数据集:如何用79万真实医患对话构建你的智能问诊助手?

中文医疗对话数据集&#xff1a;如何用79万真实医患对话构建你的智能问诊助手&#xff1f; 【免费下载链接】Chinese-medical-dialogue-data Chinese medical dialogue data 中文医疗对话数据集 项目地址: https://gitcode.com/gh_mirrors/ch/Chinese-medical-dialogue-data …...

Voxtral-4B-TTS-2603开源镜像教程:免编译、免依赖、免环境配置的一键部署

Voxtral-4B-TTS-2603开源镜像教程&#xff1a;免编译、免依赖、免环境配置的一键部署 1. 平台介绍 Voxtral-4B-TTS-2603是Mistral发布的开源语音合成模型&#xff0c;专为语音助手等生产环境设计。这个镜像将其封装为即开即用的Web工具&#xff0c;无需任何技术背景就能轻松生…...

智慧工地要素识别数据集 塔吊挂钩识别数据集 吊物识别数据集 工地人员识别数据集 目标检测识别 工地识别数据集

计算机视觉数据集简介 数据集核心信息表信息类别具体内容数据集类别计算机视觉领域 - 目标检测数据集&#xff0c;包含挂钩&#xff08;hook&#xff09;、升降台&#xff08;mic&#xff09;、mic_frame&#xff09;吊物、人物&#xff08;people&#xff09;4 个类别数据数量…...

一文讲清,6S精益管理是什么意思?6S精益管理的核心步骤有哪些?

在工厂车间、办公室、仓库甚至医院&#xff0c;你可能会看到这样的场景&#xff1a;工具随手乱放&#xff0c;下次用时要翻半天&#xff1b;地面有油污、杂物&#xff0c;走路都要小心翼翼&#xff1b;文件资料堆积如山&#xff0c;找个合同像大海捞针。这些看似不起眼的小问题…...

设计叉杆零件的专用夹具课程设计

在机械加工领域&#xff0c;叉杆零件因结构特殊、加工面多&#xff0c;对定位精度和装夹稳定性要求极高。传统通用夹具难以满足其加工需求&#xff0c;易导致零件变形、尺寸超差等问题&#xff0c;影响加工质量与效率。专用夹具的设计&#xff0c;正是针对这一痛点&#xff0c;…...

如何用CoolProp在7天内掌握免费热力学物性计算?

如何用CoolProp在7天内掌握免费热力学物性计算&#xff1f; 【免费下载链接】CoolProp Thermophysical properties for the masses 项目地址: https://gitcode.com/gh_mirrors/co/CoolProp 还在为热力学计算中的物性数据发愁吗&#xff1f;面对昂贵的商业软件许可费&…...

【优化求解】基于matlab粒子群算法PSO优化GaN-HEMT小信号模型的内在参数提取【含Matlab源码 15367期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到海神之光博客之家&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49…...

从“全链路刹车”到“精准限速”:图解PFC与ECN如何重塑数据中心网络流量

从“全链路刹车”到“精准限速”&#xff1a;图解PFC与ECN如何重塑数据中心网络流量 现代数据中心网络如同繁忙的都市交通系统&#xff0c;当海量数据包在光纤"高速公路"上奔涌时&#xff0c;如何避免"交通瘫痪"成为架构师的核心挑战。传统方案如同粗暴的交…...

量子计算化学模拟:QSCI方法突破尺寸一致性挑战

1. 量子计算化学模拟的现状与挑战量子计算在化学模拟领域正展现出前所未有的潜力&#xff0c;但同时也面临着诸多技术挑战。作为一名长期从事量子化学计算的研究者&#xff0c;我见证了传统计算方法在复杂分子系统模拟中的局限性&#xff0c;以及量子计算带来的新机遇。1.1 传统…...