javascript
Spring Boot Admin的使用
文章目錄
- 配置Admin Server
- 配置admin client
- 配置安全主鍵
- Hazelcast集群
Spring Boot Admin的使用
前面的文章我們講了Spring Boot的Actuator。但是Spring Boot Actuator只是提供了一個個的接口,需要我們自行集成到監控程序中。今天我們將會講解一個優秀的監控工具Spring Boot Admin。 它采用圖形化的界面,讓我們的Spring Boot管理更加簡單。
先上圖給大家看一下Spring Boot Admin的界面:
從界面上面我們可以看到Spring Boot Admin提供了眾多強大的監控功能。那么開始我們的學習吧。
配置Admin Server
既然是管理程序,肯定有一個server,配置server很簡單,我們添加這個依賴即可:
<dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-server</artifactId><version>2.2.2</version> </dependency>同時我們需要在main程序中添加@EnableAdminServer來啟動admin server。
@EnableAdminServer @SpringBootApplication public class SpringBootAdminServerApplication {public static void main(String[] args) {SpringApplication.run(SpringBootAdminServerApplication.class, args);} }配置admin client
有了server,我們接下來配置需要監控的client應用程序,在本文中,我們自己監控自己,添加client依賴如下:
<dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-client</artifactId><version>2.2.2</version> </dependency>我們需要為client指定要注冊到的admin server:
spring.boot.admin.client.url=http://localhost:8080因為Spring Boot Admin依賴于 Spring Boot Actuator, 從Spring Boot2 之后,我們需要主動開啟暴露的主鍵,如下:
management.endpoints.web.exposure.include=* management.endpoint.health.show-details=always配置安全主鍵
通常來說,我們需要一個登陸界面,以防止未經授權的人訪問。spring boot admin提供了一個UI供我們使用,同時我們添加Spring Security依賴:
<dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-server-ui-login</artifactId><version>1.5.7</version> </dependency> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId> </dependency>添加了Spring Security,我們需要自定義一些配置:
@Configuration public class WebSecurityConfig extends WebSecurityConfigurerAdapter {private final AdminServerProperties adminServer;public WebSecurityConfig(AdminServerProperties adminServer) {this.adminServer = adminServer;}@Overrideprotected void configure(HttpSecurity http) throws Exception {SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();successHandler.setTargetUrlParameter("redirectTo");successHandler.setDefaultTargetUrl(this.adminServer.getContextPath() + "/");http.authorizeRequests().antMatchers(this.adminServer.getContextPath() + "/assets/**").permitAll().antMatchers(this.adminServer.getContextPath() + "/login").permitAll().anyRequest().authenticated().and().formLogin().loginPage(this.adminServer.getContextPath() + "/login").successHandler(successHandler).and().logout().logoutUrl(this.adminServer.getContextPath() + "/logout").and().httpBasic().and().csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()).ignoringRequestMatchers(new AntPathRequestMatcher(this.adminServer.getContextPath() + "/instances", HttpMethod.POST.toString()), new AntPathRequestMatcher(this.adminServer.getContextPath() + "/instances/*", HttpMethod.DELETE.toString()),new AntPathRequestMatcher(this.adminServer.getContextPath() + "/actuator/**")).and().rememberMe().key(UUID.randomUUID().toString()).tokenValiditySeconds(1209600);} }接下來,我們在配置文件中指定服務器的用戶名和密碼:
spring.boot.admin.client.username=admin spring.boot.admin.client.password=admin作為一個客戶端,連接服務器的時候,我們也需要提供相應的認證信息如下:
spring.boot.admin.client.instance.metadata.user.name=admin spring.boot.admin.client.instance.metadata.user.password=adminspring.boot.admin.client.username=admin spring.boot.admin.client.password=admin好了,登錄頁面和權限認證也完成了。
Hazelcast集群
Spring Boot Admin 支持Hazelcast的集群,我們先添加依賴如下:
<dependency><groupId>com.hazelcast</groupId><artifactId>hazelcast</artifactId><version>3.12.2</version> </dependency>然后添加Hazelcast的配置:
@Configuration public class HazelcastConfig {@Beanpublic Config hazelcast() {MapConfig eventStoreMap = new MapConfig("spring-boot-admin-event-store").setInMemoryFormat(InMemoryFormat.OBJECT).setBackupCount(1).setEvictionPolicy(EvictionPolicy.NONE).setMergePolicyConfig(new MergePolicyConfig(PutIfAbsentMapMergePolicy.class.getName(), 100));MapConfig sentNotificationsMap = new MapConfig("spring-boot-admin-application-store").setInMemoryFormat(InMemoryFormat.OBJECT).setBackupCount(1).setEvictionPolicy(EvictionPolicy.LRU).setMergePolicyConfig(new MergePolicyConfig(PutIfAbsentMapMergePolicy.class.getName(), 100));Config config = new Config();config.addMapConfig(eventStoreMap);config.addMapConfig(sentNotificationsMap);config.setProperty("hazelcast.jmx", "true");config.getNetworkConfig().getJoin().getMulticastConfig().setEnabled(false);TcpIpConfig tcpIpConfig = config.getNetworkConfig().getJoin().getTcpIpConfig();tcpIpConfig.setEnabled(true);tcpIpConfig.setMembers(Collections.singletonList("127.0.0.1"));return config;} }本文的例子可以參考https://github.com/ddean2009/learn-springboot2/tree/master/springboot-admin
更多精彩內容且看:
- 區塊鏈從入門到放棄系列教程-涵蓋密碼學,超級賬本,以太坊,Libra,比特幣等持續更新
- Spring Boot 2.X系列教程:七天從無到有掌握Spring Boot-持續更新
- Spring 5.X系列教程:滿足你對Spring5的一切想象-持續更新
- java程序員從小工到專家成神之路(2020版)-持續更新中,附詳細文章教程
更多教程請參考 flydean的博客
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的Spring Boot Admin的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Boot devtool的
- 下一篇: Spring Boot 之Spring