版本号:Spring Boot Admin 2.4.1
Spring Boot Admin简介
Spring Boot Admin是一个开源社区项目,用于管理和监控SpringBoot应用程序。 应用程序作为Spring Boot Admin Client向为Spring Boot Admin Server注册(通过HTTP)或使用SpringCloud注册中心(例如Eureka,Consul,Nacos)发现。 UI是的VueJs应用程序,展示Spring Boot Admin Client的Actuator端点上的一些监控。常见的功能或者监控如下:
-
显示健康状况
-
显示详细信息,例如
-
JVM和内存指标
-
micrometer.io指标
-
数据源指标
-
缓存指标
-
-
显示构建信息编号
-
关注并下载日志文件
-
查看jvm系统和环境属性
-
查看Spring Boot配置属性
-
支持Spring Cloud的postable / env-和/ refresh-endpoint
-
轻松的日志级管理
-
与JMX-beans交互
-
查看线程转储
-
查看http跟踪
-
查看auditevents
-
查看http-endpoints
-
查看计划任务
-
查看和删除活动会话(使用spring-session)
-
查看Flyway / Liquibase数据库迁移
-
下载heapdump
-
状态变更通知(通过电子邮件,Slack,Hipchat,......)
-
状态更改的事件日志(非持久性)
快速开始
配置Admin Server
1、添加引用,这里的版本都是采用2.4.*版本
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>2.4.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.4.4</version>
</dependency>
2、在工程的启动类添加@EnableAdminServer注解,开启AdminServer的功能:
@EnableAdminServer
@SpringBootApplication
public class Spring2goMonitorApplication {
public static void main(String[] args) {
SpringApplication.run(Spring2goMonitorApplication.class, args);
}
}
3、在bootstrap.yml添加配置参数
# 端口
server:
port: 9100
spring:
application:
# 应用名称
name: spring2go-monitor
4、启动,这样Admin Server就创建好了
配置Admin Client
1、添加引用
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.4.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2、在bootstrap.yml添加配置参数
spring:
application:
name: spring2go-auth
boot:
admin:
instance:
prefer-ip: true //使用IP地址注册
client:
url: http://localhost:9100
server:
port: 5000
management:
endpoints:
web:
exposure:
include: '*'
3、启动
整合注册中心(Nacos)
在常规的微服务架构中,我们一般用Eureka、Consul或Nacos进行注册中心,实现服务发现,这里演示下使用Nacos整合Spring Boot Admin。
1、添加引用,Admin Server和Admin Client都要添加nacos依赖
<!-- SpringCloud Ailibaba Nacos,需要继承添加spring cloud alibaba父依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</exclusions>
</dependency>
2、添加配置
# 端口
server:
port: 5000
spring:
application:
# 应用名称
name: spring2go-auth
cloud:
#nacos
nacos:
discovery:
# 服务注册地址
server-addr: 127.0.0.1:8848
management:
endpoints:
web:
exposure:
include: '*'
3、启动Admin Server 和Admin Client
集成Spring Security
Spring Boot Admin可以很方便集成spring security的安全登录模块。
1、添加引用
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
2、在配置文件bootstrap.yml中配置spring security的用户名和密码
spring:
security:
user:
name: admin
password: 123456
3、添加配置类WebSecurityConfigurer继承WebSecurityConfigurerAdapter
/**
* @description: 监控权限配置
*/
@Configuration
public class WebSecurityConfigurer extends WebSecurityConfigurerAdapter {
private final String adminContextPath;
public WebSecurityConfigurer(AdminServerProperties adminServerProperties) {
this.adminContextPath = adminServerProperties.getContextPath();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
successHandler.setTargetUrlParameter("redirectTo");
successHandler.setDefaultTargetUrl(adminContextPath + "/");
http.headers().frameOptions().disable()
.and().authorizeRequests() //开启登录校验
.antMatchers(adminContextPath + "/assets/**"
, adminContextPath + "/login"
, adminContextPath + "/actuator/**"
, adminContextPath + "/instances/**"
).permitAll() //上述地址允许匿名访问
.anyRequest().authenticated() //任何请求需身份认证
.and()
.formLogin().loginPage(adminContextPath + "/login")
.successHandler(successHandler)
.and()
.logout().logoutUrl(adminContextPath + "/logout")
.and()
.httpBasic() //httpBasic认证
.and()
.csrf()
.disable(); //关闭CSRF校验
}
}
4、启动,默认进入登录页面,输入用户密码可查看服务监控信息
其他
Spring Boot Admin还提供许多自定义功能,比如UI自定义,消息通知(Mail,Chat Notofications)等,详情可参考官网教程。