一. 什么是 SpringBootAdmin?
它是一個(gè)非Spring官方開發(fā)的用于監(jiān)控SpringBoot應(yīng)用的輔助應(yīng)用,
一直在隨著官方版本更新, 可以實(shí)時(shí)查看應(yīng)用的很多信息, 基于SpringBootActuator.
說明: 以下搭建方案基于SpringBoot 2.x版本
二. 搭建 SpringBootAdmin 服務(wù)端.
- 創(chuàng)建一個(gè)新的SpringBoot項(xiàng)目, 引入如下依賴:
<!-- 用于啟動應(yīng)用 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 監(jiān)控服務(wù)端 -->
<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
# 服務(wù)狀態(tài)郵件通知
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/**"
);
}
}
- 應(yīng)用啟動類配置:
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);
}
}
至此, 一個(gè)簡單的搭建完成, 啟動打開 http://127.0.0.1:8000 即可查看, 輸入在配置文件配置的賬號密碼即可.
三. 搭建 SpringBootAdmin 客戶端.
- 創(chuàng)建或者使用現(xiàn)有的SpringBoot應(yīng)用 引入依賴
<!-- 應(yīng)用監(jiān)控客戶端 -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.1.0</version>
</dependency>
- 配件文件 application.yml
# 應(yīng)用監(jiān)控
spring:
boot.admin.client.url: http://127.0.0.1:8000 #服務(wù)端的地址
boot:
admin:
client:
instance:
service-url: http://127.0.0.1:8080 #客戶端告訴服務(wù)端自己的地址
說明: 如果客戶端有鑒權(quán),請把 contextPath/actuator/** 設(shè)置為不需要鑒權(quán), 這是服務(wù)端獲取客戶端信息的地址
啟動后, 查看http://127.0.0.1:8000 即可看到應(yīng)用上線, 查看客戶端應(yīng)用狀態(tài)了。
應(yīng)用上線查看:

image.png
應(yīng)用信息查看:

image.png
完結(jié)!!!!