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的两个实例。
这里可以看到一些信息。
登录认证
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
配置完成以后,启动服务,我们就可以看到登录页面。