Spring Boot Admin 监控中心

2023-09-12 14:51:37

https://codecentric.github.io/spring-boot-admin/current/

Spring Boot Admin 是什么?

官方介绍:

用于管理和监控SpringBoot应用程序的一个社区项目。SpringBoot应用程序会注册在我们的Spring Boot Admin 客户端,或者使用Eureka进行发现。Spring Boot Admin UI是Spring Boot 客户端点上的一个Vue.js应用程序。

简介

Spring Boot Admin 是一个管理和监控Spring Boot 应用程序的开源软件。每个应用都认为是一个客户端,通过HTTP或者使用 Eureka注册到admin server中进行展示,Spring Boot Admin UI部分使用AngularJs将数据展示在前端。

Spring Boot Admin提供了很多服务治理方面的功能

显示健康状态及详细信息,如JVM和内存指标、数据源指标、缓存指标 跟踪并下载日志文件
查看jvm系统-和环境属性
查看Spring启动配置属性
方便loglevel管理
查看线程转储
视图http-traces
查看http端点
查看计划任务
查看和删除活动会话(使用spring-session)
状态更改通知(通过电子邮件、Slack、Hipchat…)
状态变化的事件日志(非持久性)

需要引入的pom依赖
<!--好像是spring-boot-admin核心依赖--><dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-server</artifactId><version>2.5.0</version></dependency><!--好像是spring-boot-admin UI页面的依赖--><dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-server-ui</artifactId><version>2.5.0</version></dependency>

进行配置

server:port:7788spring:application:name: admin-server
在启动类上配置注解@EnableAdminServer

@EnableAdminServer:开启Spring Boot Admin service 监控配置

packagecom.xue.bootadmin;importde.codecentric.boot.admin.server.config.EnableAdminServer;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication@EnableAdminServer//开启Spring Boot Admin service 监控配置publicclassBootadminApplication{publicstaticvoidmain(String[] args){SpringApplication.run(BootadminApplication.class, args);}}

这里补充一点其他的东西

https://blog.csdn.net/weixin_45012575/article/details/100548828

@EnableDiscoveryClient注解和@EnableEurekaClient注解

启动类上添加注解@EnableDiscoveryClient@EnableEurekaClient并且加上相关依赖,并进行相应配置,即可将微服务注册到服务发现组件上。

添加pom依赖

<!-- eureka --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>

进行相关配置

server:port:8083spring:application:name: search-serviceeureka:client:service-url:defaultZone: http://127.0.0.1:10086/eurekaregistry-fetch-interval-seconds:5instance:prefer-ip-address:true#当你获取host时,返回的不是主机名,而是ipip-address: 127.0.0.1lease-expiration-duration-in-seconds:10#10秒不发送就过期lease-renewal-interval-in-seconds:5#每隔5秒发一次心跳

@EnableDiscoveryClient@EnableEurekaClient都是将微服务注册到服务发现组件上。

两者的区别在于:
@EnableDiscoveryClient可以是任意的注册中心。而@EnableEurekaClient只适用于Eureka作为注册中心。

补充结束

Spring Boot Admin 是用来管理和监控SpringBoot应用程序的,再写两个SpringBoot应用程序。让SpringBootAdmin 服务端进行监控。

两个简单Client服务

第一个

导入需要的客户端的依赖

<!--好像是spring-boot-admin客户端的依赖--><dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-client</artifactId><version>2.5.0</version></dependency>

进行相关的配置

server:port:7799spring:application:name: admin-clientboot:admin:client:#监控服务的地址url: http://127.0.0.1:7788management:endpoints:web:exposure:include:'*'endpoint:health:show-details: ALWAYS
第二个

导入需要的客户端的依赖

<!--好像是spring-boot-admin客户端的依赖--><dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-client</artifactId><version>2.5.0</version></dependency>

进行相关的配置

server:port:7700spring:application:name: admin-clientboot:admin:client:#监控服务的地址url: http://127.0.0.1:7788management:endpoints:web:exposure:include:'*'endpoint:health:show-details: ALWAYS

**注意:**这里使用的是yml文件。当我们使用的是properties配置文件配置暴露断点的时候,是不需要加单引号的。management.endpoints.web.exposure.include=*

同时启动这三个程序,访问 http://127.0.0.1:7788
在这里插入图片描述
这里我们监控了端口为7799和7700的两个实例。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qwGM2VL5-1629985881924)(E:\笔记\image-20210822192409184.png)]
这里可以看到一些信息。

登录认证

SpringBootAdmin 的认证系统由 SpringSecurity 管理。

导入依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId><version>2.5.4</version></dependency>

编写SpringSecurity相关配置类

packagecom.xue.bootadmin.config;importde.codecentric.boot.admin.server.config.AdminServerProperties;importorg.springframework.context.annotation.Configuration;importorg.springframework.security.config.annotation.web.builders.HttpSecurity;importorg.springframework.security.config.annotation.web.builders.WebSecurity;importorg.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;importorg.springframework.security.web.csrf.CookieCsrfTokenRepository;@ConfigurationpublicclassSpringSecurityConfigextendsWebSecurityConfigurerAdapter{privatefinalString contextPath;publicSpringSecurityConfig(AdminServerProperties adminServerProperties){this.contextPath= adminServerProperties.getContextPath();}@Overridepublicvoidconfigure(WebSecurity web)throwsException{super.configure(web);}@Overrideprotectedvoidconfigure(HttpSecurity http)throwsException{// 跨域设置,SpringBootAdmin客户端通过instances注册,见InstancesController
        http.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()).ignoringAntMatchers(contextPath+"/instances");// 静态资源
        http.authorizeRequests().antMatchers(contextPath+"/assets/**").permitAll(); 
        http.authorizeRequests().anyRequest().authenticated();// 所有请求必须通过认证// 整合spring-boot-admin-server-ui
        http.formLogin().loginPage("/login").permitAll();
        http.logout().logoutUrl("/logout").logoutSuccessUrl("/login");// 启用basic认证,SpringBootAdmin客户端使用的是basic认证
        http.httpBasic();}}

SpringSecurity 配置

spring:application:name: admin-serversecurity:user:#账号name: admin#密码password: admin123456

配置完成以后,启动服务,我们就可以看到登录页面。
在这里插入图片描述

  • 作者:海星码
  • 原文链接:https://blog.csdn.net/Mr_97xu/article/details/119941192
    更新时间:2023-09-12 14:51:37