搭建Springboot Admin 服务端和客户端

        Spring Boot Admin 是一个网络应用程序,用于管理和监控 Spring Boot 应用程序。每个应用程序都被视为客户端,并向管理服务器注册。在幕后,Spring Boot Actuator 端点发挥着神奇的作用。

 一、搭建Springboot Admin服务端

新建一个Maven模块,在pom文件中引入父工程,有助于保持组织内多个项目的一致性

    <parent><artifactId>smart-extend</artifactId><groupId>com.jungle</groupId><version>1.0.2</version></parent>

 引入必要依赖:

        <!-- SpringWeb模块 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.7.5</version></dependency><!-- spring security 安全认证 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId><version>2.7.5</version></dependency><!-- Springboot Admin管理端依赖 --><dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-server</artifactId><version>2.7.5</version></dependency><!--  Lombok  --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency>

添加目录:src/main/resources和src/main/java,在java目录下添加包名:com.smart.monitor.admin

在com.smart.monitor.admin包下新建启动类MonitorAdminApplication :

/*** Admin 监控启动程序** @author jungle*/
@SpringBootApplication
public class MonitorAdminApplication {public static void main(String[] args) {SpringApplication.run(MonitorAdminApplication.class, args);System.out.println("Admin 监控启动成功");}}

 新建application.yml文件并添加内容:

配置端口和服务名称

server:port: 9112
spring:application:name: smart-monitor-admin

 配置服务端登录的用户名密码,以及管理服务器静态资源和api服务访问的路径前缀 /monitor。

--- # 监控中心服务端配置
spring:security:user:name: junglepassword: 123456boot:admin:ui:title: Smart-服务监控中心 #自定义服务端名称context-path: /monitor

 Actuator 监控端点的配置项

management:endpoints:web:exposure:include: '*'   #大多数端点默认不通过 http 公开,我们公开了所有端点。在生产过程中,应谨慎选择要公开的端点。endpoint:health:show-details: ALWAYS #何时显示完整的运行状况详细信息logfile:external-file: ./logs/smart-monitor-admin.log

 更多配置详情:

Production-ready Features   可ctrl+f搜索相关配置

添加监控 安全配置,启用安全性,并为管理应用程序添加登录界面。

在com.smart.monitor.admin包下添加config包并新建配置类AdminServerConfig :添加@EnableAdminServer注解使服务端可用(或者在启动类上加)


/*** springboot-admin server配置类** @author jungle*/
@Configuration
@EnableAdminServer
public class AdminServerConfig {}

新建配置类SecurityConfig:


import de.codecentric.boot.admin.server.config.AdminServerProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;/*** admin 监控 安全配置** @author jungle*/
@EnableWebSecurity
public class SecurityConfig {private final String adminContextPath;public SecurityConfig(AdminServerProperties adminServerProperties) {this.adminContextPath = adminServerProperties.getContextPath();}@Beanpublic SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception {SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();successHandler.setTargetUrlParameter("redirectTo");successHandler.setDefaultTargetUrl(adminContextPath + "/");return httpSecurity.headers().frameOptions().disable().and().authorizeRequests().antMatchers(adminContextPath + "/assets/**", adminContextPath + "/login", "/actuator", "/actuator/**").permitAll().anyRequest().authenticated().and().formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and().logout().logoutUrl(adminContextPath + "/logout").and().httpBasic().and().csrf().disable().build();}}

浏览器访问:http://localhost:9112/monitor,输入配置的用户名密码登录:

 二、搭建Springboot Admin客户端

在自己项目中添加以下依赖:

                <!--springboot admin 监控--><dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-client</artifactId></dependency>

application.yml中添加配置,也可以在其它环境中配置,入dev,prod

配置服务端的地址和用户名密码


--- # 监控中心配置
spring.boot.admin.client:# 增加客户端开关enabled: trueurl: http://127.0.0.1:9112/monitorinstance:service-host-type: IP  #选择发送服务主机时应考虑的信息IP / HOST_NAME / CANONICAL_HOST_NAMEusername: junglepassword: 123456

启动自己的后端服务,可在监控页面查看到:

 IP和HOST_NAME:

 点击已注册到服务端的应用程序:

 

自定义事件通知处理

 添加CustomNotifier 类继承AbstractEventNotifier 重写doNotify方法配置有服务上线或宕机时的通知:

@Component
public class CustomNotifier extends AbstractEventNotifier {private static final Logger LOGGER = LoggerFactory.getLogger(LoggingNotifier.class);public CustomNotifier(InstanceRepository repository) {super(repository);}@Override@SuppressWarnings("all") //关闭警告protected Mono<Void> doNotify(InstanceEvent event, Instance instance) {return Mono.fromRunnable(() -> {if (event instanceof InstanceStatusChangedEvent) {LOGGER.info("Instance {} ({}) is {}", instance.getRegistration().getName(), event.getInstance(),((InstanceStatusChangedEvent) event).getStatusInfo().getStatus());}else {LOGGER.info("Instance {} ({}) {}", instance.getRegistration().getName(), event.getInstance(),event.getType());}});}}

当有服务上线或宕机时的日志:

 参考文档:Spring Boot Admin Reference Guide

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/4473.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

短视频账号矩阵系统===4年技术源头打磨

短视频矩阵系统技术源头打磨需要从多个方面入手&#xff0c;以下是一些建议&#xff1a; 1. 基础技术研发&#xff1a;不断投入资金和人力进行基础技术研发&#xff0c;包括但不限于视频处理、人工智能、大数据等技术&#xff0c;以提高短视频矩阵系统的性能和稳定性。 2. 优化…

03-JAVA设计模式-策略模式

策略模式 什么是策略模式 策略模式&#xff08;Strategy Pattern&#xff09;是行为设计模式之一&#xff0c;它使你能在运行时改变对象的行为。在策略模式中&#xff0c;一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为模式。 在策略模式中&#xff0c;…

如何瓜分1.35亿美元的园艺市场?赛盈分销圈货活动即将开启!

庭院一直以来是欧美国家大多数家庭的重要使用场景&#xff0c;尤其在每年夏季都会进行庭院爆改。 人们通过修剪草坪、花草种植、庭院装饰、野营烧烤等形式增添户外庭院另一种更加休闲、新颖的生活方式。 Google Trends预测到2035年全球居家园艺市场达到1.35万亿美元&#xff0c…

500强企业如何打造高效的差旅供应链?

在构建差旅管理平台的过程中&#xff0c;很多企业差旅管理负责人常常面临一个关键问题&#xff1a;差旅供应链怎么搭建&#xff1f; 企业差旅供应链的建设是一个复杂的系统工程&#xff0c;涉及多个方面&#xff0c;包括但不限于供应商的选择与管理、技术平台的搭建、流程设计、…

Docker资源控制管理

目录 一.CPU 资源控制 1.定义 2.cgroups四大功能 &#xff08;1&#xff09;资源限制&#xff1a;可以对任务使用的资源总额进行限制 &#xff08;2&#xff09;优先级分配&#xff1a;通过分配的cpu时间片数量以及磁盘IO带宽大小&#xff0c;实际上相当于控制了任务运行优…

pycharm-ieda-phpstorm超级好用插件,一键解释代码

功能&#xff1a;解释你看不懂的代码 当你在写python和Java代码的时候&#xff0c;总有你看不懂的代码&#xff0c;怎么办&#xff1f;csdn搜&#xff1f;那不麻烦&#xff0c;直接插件解决。 来安装&#xff1a;文件-设置 点击插件-Marketplace-搜索通义灵码 安装完成后&…

GitHub介绍,GitHub如何订阅充值?

一、GitHub介绍 GitHub是一个面向开源及私有软件项目的托管平台&#xff0c;因为只支持git 作为唯一的版本库格式进行托管&#xff0c;故名Github。 GitHub于2008年4月10日正式上线&#xff0c;除了git代码仓库托管及基本的Web管理界面以外&#xff0c;还提供了订阅、讨论组、…

Windows系统引导重建,Windows引导损坏修复

Windows系统引导重建 引导是一个非常**「脆弱」的东西&#xff0c;对系统、分区**的操作都有可能导致其出现问题。 比如分区操作不当、不小心格式化某个分区、误删看不懂的文件&#xff0c;这与你用什么软件操作无关。 而引导只要出现问题&#xff0c;你的电脑就无法进入系统…

go语言通过TCP协议实现聊天室样例

目录 1、服务端&#xff1a; 2、客户端&#xff1a; 3、实现效果 1、服务端&#xff1a; package mainimport ("fmt""net""sync" )type ChatServer struct {clients map[string]net.ConnclientsMux sync.Mutex }func NewChatServer() *Ch…

功能测试_分类_用例_方法

总结 测试分类 按阶段分类 是否查看源代码分类 是否运行分类 是否自动化 其他分类 软件质量模型 开发模型-瀑布模型 测试过程模型 v w 测试用例八大要素 用例编号 用例标题 …

【delphi 】常用资源网站

在Delphi的日常开发中&#xff0c;经常会用到第三方资源&#xff0c;本文收集的是开源的资源&#xff0c;建议收藏&#xff0c;以备不时之需&#xff01; 目录 一、通用资源 1. JCL 2. JVCL 3. Alcinoe (mirror at GH) 4. Fundamentals Code Library 5. Spring4D 6. The…

装饰器模式【结构型模式C++】

1.概述 装饰器模式是一种结构型设计模式&#xff0c; 允许你通过将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为。 2.结构 抽象构件&#xff08;Component&#xff09;角色&#xff1a;定义一个抽象接口以规范准备接收附加责任的对象。具体构件&#xff08;Concre…

Cmake Learn

目录 1 常用命令 &#xff08;1&#xff09;configure_file &#xff08;2&#xff09;.cmake文件 &#xff08;3&#xff09; install &#xff08;4&#xff09;include_directories &#xff08;5&#xff09; add_subdirectory &#xff08;6&#xff09; find_libr…

FPGA秋招-笔记整理(3)无符号数、有符号数

参考&#xff1a;Verilog学习笔记——有符号数的乘法和加法 一、无符号数、有符号数 将输入输出全部定义为有符号数 &#xff08;1&#xff09;无符号数的读取按照原码进行&#xff0c;有符号数的读取应该按照补码读取&#xff0c;计算规则为去掉符号位后取反、加1在计算数值…

中国人工智能奠基人张钹院士:走进“无人区” 探索人工智能之路

4月23日&#xff0c;中国人工智能奠基人、清华大学计算机系教授、中国科学院院士张钹在“人文清华”讲坛作专题分享。在2小时的直播中&#xff0c;张钹以《走进“无人区” 探索人工智能之路》为主题&#xff0c;回顾人工智能的发展历程&#xff0c;为大家解读ChatGPT的意义&…

掺硼金刚石电极(BDD电极)电化学特性优异 全球市场将持续扩大

掺硼金刚石电极&#xff08;BDD电极&#xff09;电化学特性优异 全球市场将持续扩大 掺硼金刚石电极&#xff0c;简称BDD电极&#xff0c;是以掺硼金刚石&#xff08;BDD&#xff09;为材料制造而成的电极&#xff0c;即以金属或非金属材料为衬底&#xff0c;采用化学气相沉积法…

基于Springboot的web后端开发三层架构上手实操

引言 我们拿到了xml文件 我们要将将xml文件中的数据加载并解析 完成数据的处理 并且返回给前端页面(result格式) 1.将xml文件放在resources目录下 xml是我们需要解析的文件 查看xml文件 2.在springboot中引入dom4j依赖 解析xml需要在springboot中引入dom4j依赖 这边我们…

Thread类的基本用法

1.线程创建 这里介绍线程创建常用的五种方法 1.继承Thread&#xff0c;重写run class MyThread extends Thread{public void run(){//这里写的代码就是线程要完成的任务while (true){System.out.println("hello thread");try {Thread.sleep(1000);//线程会休眠一秒…

二维码门楼牌管理应用平台建设:取保候审人员管理的新模式

文章目录 前言一、取保候审人员管理的新挑战二、二维码门楼牌管理应用平台的引入三、平台的功能与应用四、优势与挑战五、结论 前言 随着科技的不断进步&#xff0c;二维码门楼牌管理应用平台已成为城市管理的创新手段。特别是在取保候审人员管理领域&#xff0c;这一技术的应…

电视盒子哪款好?实体店主盘点畅销电视盒子排名

电视盒子功能丰富&#xff0c;是升级电视机最具性价比的方案。我本人做实体数码店多年来&#xff0c;电视盒子是店内销量最好的产品之一&#xff0c;最近很多网友在讨论电视盒子哪款好&#xff0c;我整理了店内销量最好的电视盒子排名&#xff0c;想买电视盒子可以看看下面这几…