springboot應用接入SpringbootAdmin監控

接入SpringbootAdmin

1,SpringbootAdmin是什麼

Spring Boot Admin 是一個管理和監控 Spring Boot 應用程序的開源軟件,它是在 Spring Boot Actuator 的基礎上提供簡潔的可視化 WEB UI。個人認為Spring Boot Actuator 是Springboot體系中非常好用且強大的監控能力節點,極大的方便了我們對springboot應用進行業務監控。但是,Spring Boot Actuator 監控接口返回的都是json數據,需要我們進一步開發自己的監控系統。Spring Boot Admin 就是這樣一個系統。

Spring Boot Admin並不是 Spring Boot 官方出品的開源軟件,但是其軟件質量和使用廣泛度都非常的高,並且 Spring Boot Admin 會及時隨著 Spring Boot 的更新而更新,當 Spring Boot 推出 2.X 版本時 Spring Boot Admin 也及時進行了更新。

它可以在列表中瀏覽所有被監控 spring-boot 項目的基本信息、詳細的 Health 信息、內存信息、JVM 信息、垃圾回收信息、各種配置信息(比如數據源、緩存列表和命中率)等,還可以直接修改 logger 的 level。

2,接入步驟

Spring Boot Admin 分為兩部分。server端和client端。我們要做的就是部署server端,再我們的應用中集成client端。整個接入過程不算複雜,看完這篇文章,你一定會。

部署Server端

新建一個普通的springboot工程。

引入以下依賴

<code><dependency> 

<groupid>de.codecentric/<groupid>
<artifactid>spring-boot-admin-starter-server/<artifactid>
<version>2.2.2/<version>
/<dependency>

<dependency>
<groupid>org.springframework.boot/<groupid>
<artifactid>spring-boot-starter-web/<artifactid>
/<dependency>
/<code>

配置一個服務端口

<code>server.port=8000
/<code>

EnableAdminServer

<code>@EnableAdminServer
@SpringBootApplication
public class MonitorApplication {

public static void main(String[] args) {
SpringApplication.run(MonitorApplication.class, args);
}

}
/<code>

好了,server端配置完成。部署啟動即可。

springboot應用接入SpringbootAdmin監控


監控client端

添加依賴:

配置文件配置

spring.boot.admin.client.url=http://localhost:8000

指定server地址

management.endpoints.web.exposure.include=*

暴露可被監控的服務節點。這裡為了演示,開放了所有,具體的應該根據自己的需要配置。

springboot應用接入SpringbootAdmin監控


springboot應用接入SpringbootAdmin監控


3,開啟認證

上面的步驟已經完成對應用的監控。但是有個問題,沒有權限管理,任何人都可以隨便查看甚至操作應用。這在生產環境是絕對不允許的,所以,我們必須開啟權限認證。

server端

引入springboot-security

<code><dependency>
<groupid>org.springframework.boot/<groupid>
<artifactid>spring-boot-starter-security/<artifactid>
/<dependency>
/<code>

配置登錄密碼

<code>spring:
security:
user:
name: "admin"
password: "admin"
/<code>

main類增加安全配置認證路由代碼

<code>@EnableAdminServer
@SpringBootApplication
public class MonitorApplication {

public static void main(String[] args) {
SpringApplication.run(MonitorApplication.class, args);
}

@Configuration
public static class SecuritySecureConfig extends WebSecurityConfigurerAdapter {
private final String adminContextPath;

public SecuritySecureConfig(AdminServerProperties adminServerProperties) {
this.adminContextPath = adminServerProperties.getContextPath();
}

@Override
protected void configure(HttpSecurity http) throws Exception {
SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
successHandler.setTargetUrlParameter("redirectTo");

http.authorizeRequests()
.antMatchers(adminContextPath + "/assets/**").permitAll()
.antMatchers(adminContextPath + "/login").permitAll()
.anyRequest().authenticated()
.and()
.formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and()
.logout().logoutUrl(adminContextPath + "/logout").and()

.httpBasic().and()
.csrf().disable();
}
}
/<code>

server端好了

client端改造

因為現在server端啟用了密碼,所以client端是註冊不上來的,需要配置密碼

<code>boot:
admin:
client:
url: http://localhost:8000
username: admin
password: admin
/<code>
springboot應用接入SpringbootAdmin監控


現在需要使用用戶名密碼登錄,並且有了退出等基本功能

springboot應用接入SpringbootAdmin監控


springboot應用接入SpringbootAdmin監控


分享到:


相關文章: