前言
年末项目基本完事了,有了一些空闲时间,准备把SpringBoot各类常用插件的集成方法总结一下,希望能对你有所帮助。
看标题今天是要集成SpringBootAdmin,那么SpringBootAdmin是干什么用的?简单来说,它是一个监控工具,这时候就有比较聪明的同学发出疑问了,既然可以通过jdk自带的jconsole和jvisualvm进行监控,问什么还要用这个。答案就是这个界面更好看。
SpringBootAdmin 简洁好看
jvisualvm 浓烈的年代感
停停停!当然不是只是界面好看才选择了SpringBootAdmin,SpringBootAdmin可以在列表中浏览所有被监控spring-boot项目的基本信息,详细的Health信息、内存信息、JVM信息、垃圾回收信息、各种配置信息(比如数据源、缓存列表和命中率)等,还可以直接修改logger的level。
详细介绍,可以去Github上查阅。github.com/codecentric…
啰嗦半天,现在开始正题吧。
一、服务端搭建
配置pom.xml
创建一个新的springboot项目,pom文件里添加
<dependencies>
<!-- SpringWeb模块 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- spring security 安全认证 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
</dependency>
</dependencies>
配置启动类
@SpringBootApplication
@EnableAdminServer
public class MonitorAdminApplication {
public static void main(String[] args) {
SpringApplication.run(MonitorAdminApplication.class, args);
System.out.println("Admin 监控启动成功" );
}
}
配置 security
修改application
server:
port: 10005
spring:
security:
user:
name: admin
password: admin123
boot:
admin:
context-path: /admin
创建一个 SecurityConfig 类 继承 WebSecurityConfigurerAdapter 重写configure(HttpSecurity http) 方法
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true, proxyTargetClass = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
private final String adminContextPath;
public SecurityConfig(AdminServerProperties adminServerProperties) {
this.adminContextPath = adminServerProperties.getContextPath();
}
@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {
SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
successHandler.setTargetUrlParameter("redirectTo");
successHandler.setDefaultTargetUrl(adminContextPath + "/");
httpSecurity.authorizeRequests()
//授予对所有静态资产和登录页面的公共访问权限。
.antMatchers(adminContextPath + "/assets/**").permitAll()
.antMatchers(adminContextPath + "/login").permitAll()
//必须对每个其他请求进行身份验证
.anyRequest().authenticated().and()
//配置登录和注销
.formLogin().loginPage(adminContextPath + "/login")
.successHandler(successHandler).and()
.logout().logoutUrl(adminContextPath + "/logout").and()
//启用HTTP-Basic支持。这是Spring Boot Admin Client注册所必需的
.httpBasic().and().csrf().disable()
.headers().frameOptions().disable();
}
}
现在可以启动项目看看效果了,localhost:10005/admin
已经可以看到登录界面了,登录进去看看
可以看到并没有项目连接,下面淦客户端的配置。
二、客户端配置
配置 pom.xml
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.2.4</version>
</dependency>
配置 application
在application.yml文件中添加
spring:
# Spring Boot Admin Client 客户端的相关配置
boot:
admin:
client:
# 增加客户端开关
enabled: true
# 设置 Spring Boot Admin Server 地址
url: http://localhost:10005/admin
instance:
prefer-ip: false # 注册实例时,优先使用 IP
username: admin
password: admin123
application:
name: SpringBootAdamin-test
management:
endpoints:
web:
# Actuator 提供的 API 接口的根目录。默认为 /actuator
base-path: /actuator
exposure:
# 需要开放的端点,设置 * ,可以开放所有端点。生产环境不建议放开所有 根据项目需求放开即可.
include: '*'
endpoint:
logfile:
external-file: ./logs/sys-console.log
然后启动客户端项目,看看效果。
发现已经有了应用实例了,然后看看其他的。
这样就完成了整个SpringBootAdmin监控系统的集成了。