一.介紹
Spring Boot Admin是一個開源社區項目,用於管理和監控SpringBoot應用程序。 應用程序作爲Spring Boot Admin Client向爲Spring Boot Admin Server註冊(通過HTTP)或使用SpringCloud註冊中心(例如Eureka,Consul)發現。 UI是的AngularJs應用程序,展示Spring Boot Admin Client的Actuator端點上的一些監控。常見的功能或者監控如下:
- 顯示 name/id 和版本號
- 顯示在線狀態
- Logging 日誌級別管理
- JMX beans 管理
- Threads 會話和線程管理
- Trace 應用請求跟蹤
- 應用運行參數信息,如:
Java 系統屬性
Java 環境變量屬性
內存信息
Spring 環境屬性
二.服務端集成
- 依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<exclusions>
<exclusion>
<artifactId>guava</artifactId>
<groupId>com.google.guava</groupId>
</exclusion>
<exclusion>
<artifactId>HdrHistogram</artifactId>
<groupId>org.hdrhistogram</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>2.0.3</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
說明:
1)eureka集成是爲了以Eureka爲註冊中心,從Eureka獲取相關服務信息。
2)security集成是爲了加上Admin登錄認證。
3)admin-starter爲服務端組件。
4)安全配置適配器依賴必須。
- 關鍵配置信息
spring:
# 用戶登錄Admin賬戶
security:
user:
name: "admin"
password: "123456"
eureka:
client:
#表示eureka client間隔多久去拉取服務註冊信息,默認爲30秒
registryFetchIntervalSeconds: 5
service-url:
defaultZone: ${EUREKA_SERVICE_URL:http://localhost:8761}/eureka/
instance:
#表示eureka client發送心跳給server端的頻率,默認爲30秒
leaseRenewalIntervalInSeconds: 10
#健康檢查的地址(依賴spring-boot-starter-actuator)
health-check-url-path: /actuator/health
metadata-map:
user.name: ${spring.security.user.name}
user.password: ${spring.security.user.password}
強調:上面註釋講解部分很關鍵,上面設置我們能每5秒從Eureka服務端獲取微服務模塊信息。
Eureka 中的 metadataMap 是專門用來存放一些自定義的數據,當註冊中心或者其他服務需要此服務的某些配置時可以在 metadataMap 裏取。實際上,每個 instance 都有各自的 metadataMap,map 中存放着需要用到的屬性。例如,上面配置中的 eureka.instance.metadata-map.user.name,當這個服務成功註冊到 Eureka 上,Spring Boot Admin 就會取拿到這個 instance,進而拿到 metadataMap 裏的屬性,然後放入請求頭,向此服務發送請求,訪問此服務的 Actuator 開放的端點。
- 安全校驗設置
@Slf4j
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter
{
private final String adminContextPath;
public WebSecurityConfig(AdminServerProperties adminServerProperties)
{
this.adminContextPath = adminServerProperties.getContextPath();
}
@Override
protected void configure(HttpSecurity http) throws Exception
{
log.info("WebSecurityConfig|configure|進入頁面攔截處理部分");
// @formatter:off
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();
}
}
三.註冊中心
用之前搭建的即可 端口爲 8761
qy-eureka-server 註冊中心
微服務系列之-Eureka Server集成
四.客戶端集成
- 沒有集成Eureka
主要依賴:
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
主要配置:
spring:
security:
user:
name: "admin"
password: "123456"
boot:
admin:
client:
url: http://localhost:8086
username: "admin"
password: "123456"
instance:
metadata:
user.name: ${spring.security.user.name}
user.password: ${spring.security.user.password}
eureka:
instance:
leaseRenewalIntervalInSeconds: 10 #表示eureka client發送心跳給server端的頻率,默認爲30秒
health-check-url-path: /actuator/health #健康檢查的地址(依賴spring-boot-starter-actuator)
client:
registryFetchIntervalSeconds: 5 #表示eureka client間隔多久去拉取服務註冊信息,默認爲30秒
service-url:
defaultZone: ${EUREKA_SERVICE_URL:http://localhost:8761}/eureka/
management:
endpoints:
web:
exposure:
include: '*'
endpoint:
health:
show-details: ALWAYS
啓動類:
@Slf4j
@SpringBootApplication
@EnableDiscoveryClient
public class EurekaClientApplication
{
public static void main( String[] args )
{
ApplicationContext context = SpringApplication.run(EurekaClientApplication.class, args);
String serverPort = context.getEnvironment().getProperty("server.port");
log.info("後臺管理服務客戶端啓動成功! Swagger2: http://127.0.0.1:".concat(serverPort));
}
}
- 集成Eureka
我們可以去掉admin-starter-client依賴,因爲微服務都在配置中心註冊,可以通過註冊中心獲取註冊在Eureka的相關微服務信息。
五.結果驗證
依次啓動
qy-eureka-server
qy-admin-server
qy-eureka-client
進入登錄頁面,輸入賬戶以及密碼登錄Admin
服務正常顯示
至此我們繼承Admin服務監控模塊成功!!!
項目集成地址:謙奕爸爸-微服務集成項目