Spring Boot Admin應用監控
阿新 • • 發佈:2019-02-18
SpringBoot -Admin-demo
- Spring Boot Admin 是一個管理和監控Spring Boot 應用程式的開源軟體。每個應用都認為是一個客戶端,通過HTTP或者使用 Eureka註冊到admin server中進行展示,Spring Boot Admin UI部分使用AngularJs將資料展示在前端。
- Spring Boot Admin 是一個針對spring-boot的actuator介面進行UI美化封裝的監控工具。他可以:在列表中瀏覽所有被監控spring-boot專案的基本資訊,詳細的Health資訊、記憶體資訊、JVM資訊、垃圾回收資訊、各種配置資訊(比如資料來源、快取列表和命中率)等,還可以直接修改logger的level。
設定Spring Boot Admin Server
- 新建一個springBoot2.x工程,將Spring Boot Admin Server啟動器新增到pom.xml
- 使用ide新建工程可以直接選擇引入Spring Boot Admin
<dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-server-ui</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
啟動類新增如下註解
@SpringBootApplication
@EnableAdminServer
public class SpringbootAdminApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootAdminApplication.class, args);
}
}
新增身份驗證和授權
@Configuration public class SecuritySecureConfig extends WebSecurityConfigurerAdapter { private final String adminContextPath; public SecuritySecureConfig(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").permitAll() //必須對每個其他請求進行身份驗證 .anyRequest().authenticated() .and() // 配置登入和登出。 .formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and() .logout().logoutUrl(adminContextPath + "/logout").and() //啟用HTTP-Basic支援。這是Spring Boot Admin Client註冊所必需的 .httpBasic().and() .csrf() //使用Cookie啟用CSRF保護 .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()) .ignoringAntMatchers( adminContextPath + "/instances", //禁用CRSF-Protection Spring Boot Admin Client用於註冊的端點。 adminContextPath + "/actuator/**" // ); // @formatter:on } }
application.properties配置檔案
server.port=8088
server.tomcat.uri-encoding=UTF-8
server.tomcat.max-threads=1000
server.tomcat.min-spare-threads=30
#賬戶密碼
spring.security.user.name=gzpflm
spring.security.user.password=gzpflm
#專案訪問名
spring.boot.admin.context-path=/szq-monitoring
#UI介面標題
spring.boot.admin.ui.title=szq-Monitpring
Spring Boot客戶端配置監控
- 客戶端需要配置賬戶密碼 不然無法註冊到springBoot Admin
- 每個要註冊的應用程式都必須包含Spring Boot Admin Client 配置如下
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>
application.properties配置檔案
server.port=8081
spring.application.name=Spring Boot Client
spring.boot.admin.client.url=http://localhost:8088/szq-monitoring
management.endpoints.web.exposure.include=*
spring.boot.admin.client.username=gzpflm
spring.boot.admin.client.password=gzpflm
spring.boot.admin.client.enabled=true
#啟用ip顯示
spring.boot.admin.client.instance.prefer-ip=true
啟動後:監控的服務端就會收到通知 重新整理頁面就可以看到監控的服務
Spring Boot Admin Client配置選項
spring.boot.admin.client.enabled #啟用Spring Boot Admin Client,預設值true
spring.boot.admin.client.url #逗號分隔Spring Boot Admin伺服器的有序URL列表以進行註冊
spring.boot.admin.client.api-path #管理伺服器上的註冊端點的Http路徑 預設值"instances"
#SBA Server api受HTTP基本身份驗證保護時的使用者名稱和密碼。
spring.boot.admin.client.username
spring.boot.admin.client.password
spring.boot.admin.client.period #重複註冊的間隔(以ms為單位)預設自10,000
spring.boot.admin.client.connect-timeout #連線超時進行註冊(以ms為單位 #預設5,000