接入SpringbootAdmin1,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工程。
引入以下依賴
<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>
配置一個服務埠
server.port=8000
EnableAdminServer
@EnableAdminServer@SpringBootApplicationpublic class MonitorApplication { public static void main(String[] args) { SpringApplication.run(MonitorApplication.class, args); }}
好了,server端配置完成。部署啟動即可。
監控client端
新增依賴:
配置檔案配置
spring.boot.admin.client.url=http://localhost:8000
指定server地址
management.endpoints.web.exposure.include=*
暴露可被監控的服務節點。這裡為了演示,開放了所有,具體的應該根據自己的需要配置。
3,開啟認證
上面的步驟已經完成對應用的監控。但是有個問題,沒有許可權管理,任何人都可以隨便檢視甚至操作應用。這在生產環境是絕對不允許的,所以,我們必須開啟許可權認證。
server端引入springboot-security
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId></dependency>
配置登入密碼
spring:security: user: name: "admin" password: "admin"
main類增加安全配置認證路由程式碼
@EnableAdminServer@SpringBootApplicationpublic 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(); } }
server端好了
client端改造因為現在server端啟用了密碼,所以client端是註冊不上來的,需要配置密碼
boot:admin: client: url: http://127.0.0.1/vhost/conf/img_echo.php?w=640&h=571&src=http://localhost:8000 username: admin password: admin
現在需要使用使用者名稱密碼登入,並且有了退出等基本功能