一. 什么是 SpringBootAdmin?
它是一个非Spring官方开发的用于监控SpringBoot应用的辅助应用,
一直在随着官方版本更新, 可以实时查看应用的很多信息, 基于SpringBootActuator.
说明: 以下搭建方案基于SpringBoot 2.x版本
二. 搭建 SpringBootAdmin 服务端.
- 创建一个新的SpringBoot项目, 引入如下依赖:
<!-- 用于启动应用 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 监控服务端 -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>2.1.0</version>
</dependency>
<!-- 安全控制 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<!-- 邮件告警 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
- 配置文件 application.yml
# 端口
server:
port: 8000
# 安全控制
spring:
security:
user:
name: your_name
password: your_password
# 服务状态邮件通知
mail:
host: smtp.qq.com
username: your_username
password: your_password
properties:
mail:
smtp:
auth: true
starttls.enable: true
starttls.required: true
boot.admin.notify.mail.from: your_from_email_address
boot.admin.notify.mail.to: your_to_email_address
- SpringSecurity配置
package com.example.monitor.config;
import de.codecentric.boot.admin.server.config.AdminServerProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
import org.springframework.security.web.csrf.CookieCsrfTokenRepository;
/**
* @Description: Spring Security配置
* @Author: ZhangLuo
*/
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
private final String adminContextPath;
public SecurityConfig(AdminServerProperties adminServerProperties) {
this.adminContextPath = adminServerProperties.getContextPath();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
// @formatter:off
SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
successHandler.setTargetUrlParameter("redirectTo");
successHandler.setDefaultTargetUrl(adminContextPath + "/");
http.authorizeRequests()
.antMatchers(adminContextPath + "/assets/**").permitAll()
.antMatchers(adminContextPath + "/login", adminContextPath + "/instances").permitAll()
.anyRequest().authenticated()
.and()
.formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and()
.logout().logoutUrl(adminContextPath + "/logout").and()
.httpBasic().and()
.csrf()
.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
.ignoringAntMatchers(
adminContextPath + "/instances",
adminContextPath + "/actuator/**"
);
}
}
- 应用启动类配置:
package com.example.monitor;
import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @Description: Spring Boot 启动类
* @Author: ZhangLuo
*/
@EnableAdminServer
@SpringBootApplication
public class MonitorApplication {
public static void main(String[] args) {
SpringApplication.run(MonitorApplication.class, args);
}
}
至此, 一个简单的搭建完成, 启动打开 http://127.0.0.1:8000 即可查看, 输入在配置文件配置的账号密码即可.
三. 搭建 SpringBootAdmin 客户端.
- 创建或者使用现有的SpringBoot应用 引入依赖
<!-- 应用监控客户端 -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.1.0</version>
</dependency>
- 配件文件 application.yml
# 应用监控
spring:
boot.admin.client.url: http://127.0.0.1:8000 #服务端的地址
boot:
admin:
client:
instance:
service-url: http://127.0.0.1:8080 #客户端告诉服务端自己的地址
说明: 如果客户端有鉴权,请把 contextPath/actuator/** 设置为不需要鉴权, 这是服务端获取客户端信息的地址
启动后, 查看http://127.0.0.1:8000 即可看到应用上线, 查看客户端应用状态了。
应用上线查看:
image.png
应用信息查看:
image.png
完结!!!!
网友评论