javascript
SpringBootAdmin
文章目錄
- SpringBootAdmin服務(wù)端
- SpringBootAdmin安全配置
- SpringBootAdmin客戶端接入
- 微服務(wù)離線警告
SpringBootAdmin服務(wù)端
SpringBoot之中所有的監(jiān)控操作都是基于Actuator實現(xiàn)處理的,那么在最終實現(xiàn)監(jiān)控的時候也全部都是通過監(jiān)控數(shù)據(jù)來完成操作的,只不過SpringBootAdmin除了Actautor數(shù)據(jù)之外還可以對SpringCloud之中的具體應(yīng)用進行一些管理的支持。
1、【microcloud項目】創(chuàng)建一個新的服務(wù)監(jiān)控模塊: “micocloud-admin-8000"
2、【microcloud 項目】SpringBootAdmin依然需要通過Nacos抓取所需要的配置項,同時也需要基于組件進行配置,那么修改build.gradle,引入相關(guān)的依賴。
denpendencies.gradle
ext.versions = [admin : '2.3.0', // SpringBootAdmin依賴版本 ] ext.libraries = [// 以下的配置為SpringBootAdmin服務(wù)整合'spring-boot-admin-starter-server' : "de.codecentric:spring-boot-admin-starter-server:${versions.admin}" ]build.gradle
project(":microcloud-admin-8000") { // 部門微服務(wù)dependencies {implementation("org.springframework.boot:spring-boot-starter-web")implementation(libraries.'spring-boot-admin-starter-server')implementation('com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery') {exclude group: 'com.alibaba.nacos', module: 'nacos-client' // 移除舊版本的Nacos依賴}implementation('com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config') {exclude group: 'com.alibaba.nacos', module: 'nacos-client' // 移除舊版本的Nacos依賴}implementation(libraries.'nacos-client') // 引入與當(dāng)前的Nacos匹配的依賴庫} }3、【micocloud-admin-8000子模塊】配置application.yml以及 bootstrap.yml文件
application.yml (注意:register-enabled: false # 管理端不注冊)
server: # 服務(wù)端配置port: 8000 # 8000端口 spring:application: # 配置應(yīng)用信息name: microcloud.admin # 是微服務(wù)的名稱nacos: # Nacos注冊中心配置discovery: # 發(fā)現(xiàn)服務(wù)weight: 80service: ${spring.application.name} # 使用微服務(wù)的名稱作為注冊的服務(wù)名稱server-addr: nacos-server:8848 # Nacos服務(wù)地址namespace: 96c23d77-8d08-4648-b750-1217845607ee # 命名空間IDgroup: MICROCLOUD_GROUP # 一般建議大寫cluster-name: MuyanCluster # 配置集群名稱register-enabled: false # 管理端不注冊metadata: # 根據(jù)自身的需要配置元數(shù)據(jù)version: 1.0 # 自定義元數(shù)據(jù)項 yootk:security:config:jwt:sign: muyanissuer: MuyanYootksecret: www.yootk.comexpire: 100000 # 單位:秒password:encrypt:repeat: 5salt: www.yootk.combootstrap.yml
spring: # Spring配置項cloud: # SpringCloud配置項nacos: # Nacos注冊中心的配置config: # gRPC通訊配置server-addr: nacos-server:8848 # Nacos地址namespace: 96c23d77-8d08-4648-b750-1217845607ee # 命名空間IDgroup: MICROCLOUD_GROUP # 一般建議大寫cluster-name: MuyanCluster # 配置集群名稱4、【microcloud-admin-8000子模塊】創(chuàng)建一個應(yīng)用的啟動類
package com.yootk.admin;import de.codecentric.boot.admin.server.config.EnableAdminServer; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication @EnableDiscoveryClient @EnableAdminServer // 啟用管理服務(wù)端 public class StartSpringBootAdmin8000 {public static void main(String[] args) {SpringApplication.run(StartSpringBootAdmin8000.class, args);} }5、【本地系統(tǒng)】為了便于服務(wù)調(diào)用,建議修改本地的 hosts主機配置文件:
127.0.0.1 microcloud-admin6、【微服務(wù)管理控制臺】服務(wù)啟動之后就可以直接訪問管理控制臺頁面: microcloud-admin:8000
此時就可以得到當(dāng)前自己微服務(wù)的運行狀態(tài),其他微服務(wù)還需要進行一些接入上的處理。
SpringBootAdmin安全配置
在之前已經(jīng)成功的啟動SpringBootAdmin服務(wù)端,但是這個服務(wù)端現(xiàn)在是所有的使用者都可以進行服務(wù)注冊操作,那么如果你非要考慮到這種安全機制的話,就可以通過SpringSecurity安全框架進行限制。
1、【microcloud項目】修改 build.gradle配置文件,追加SpringSecurity配置依賴。
project(":microcloud-admin-8000") { // 部門微服務(wù)dependencies {implementation('org.springframework.boot:spring-boot-starter-security')implementation("org.springframework.boot:spring-boot-starter-web")implementation(libraries.'spring-boot-admin-starter-server')implementation('com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery') {exclude group: 'com.alibaba.nacos', module: 'nacos-client' // 移除舊版本的Nacos依賴}implementation('com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config') {exclude group: 'com.alibaba.nacos', module: 'nacos-client' // 移除舊版本的Nacos依賴}implementation(libraries.'nacos-client') // 引入與當(dāng)前的Nacos匹配的依賴庫} }2、【microcloud-admin-8000子模塊】追加SpringSecurity的相關(guān)配置類
package com.yootk.admin.config;import de.codecentric.boot.admin.server.config.AdminServerProperties; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;@Configuration public class AdminSecurityConfig extends WebSecurityConfigurerAdapter {private String adminContextPath;public AdminSecurityConfig(AdminServerProperties adminServerProperties) {this.adminContextPath = adminServerProperties.getContextPath(); // 上下文的處理路徑}@Overrideprotected void configure(HttpSecurity http) throws Exception {SavedRequestAwareAuthenticationSuccessHandler successHandler =new SavedRequestAwareAuthenticationSuccessHandler();successHandler.setTargetUrlParameter("redirectTo");http.authorizeRequests().antMatchers(this.adminContextPath + "/assets/**").permitAll().antMatchers(this.adminContextPath + "/login").permitAll().anyRequest().authenticated().and().formLogin().loginPage(this.adminContextPath + "/login").successHandler(successHandler).and().logout().logoutUrl(this.adminContextPath + "/logout").and().httpBasic().and().csrf().disable();} }3、【microcloud-admin-8000子模塊】在application.yml里面追加認證信息
spring:security:user:name: muyanpassword: yootk4、【管理控制臺】配置完成之后,如果再次訪問SpringBootAdmin控制臺你會發(fā)現(xiàn)需要提供認證信息。
SpringBootAdmin客戶端接入
現(xiàn)在所有的服務(wù)端已經(jīng)開發(fā)完成了,但是此時并沒有客戶端進行接入操作,那么下面就可以考慮修改已有微服務(wù)進行服務(wù)端統(tǒng)一管理注冊,本次要修改的微服務(wù)︰部門微服務(wù)、網(wǎng)關(guān)微服務(wù)、消費端微服務(wù)、Token微服務(wù)。
1、【microcloud 項目】修改dependencies.gradle配置文件,添加新的依賴庫:
ext.versions = [admin : '2.3.0', // SpringBootAdmin依賴版本 ] ext.libraries = [// 以下的配置為SpringBootAdmin服務(wù)整合'spring-boot-admin-starter-server' : "de.codecentric:spring-boot-admin-starter-server:${versions.admin}",'spring-boot-admin-starter-client' : "de.codecentric:spring-boot-admin-starter-client:${versions.admin}", ]2、【microcloud項目】修改要接入微服務(wù)的依賴庫配置:
build.gadle
implementation(libraries.'spring-boot-admin-starter-client') implementation('org.springframework.boot:spring-boot-starter-actuator')3、【接入微服務(wù)】修改需要接入到SpringBootAdmin中的微服務(wù)application.yml配置項,配置Actuator處理
網(wǎng)關(guān)微服務(wù) (只有網(wǎng)關(guān)微服務(wù)有 management.server.port ,其他微服務(wù)沒有)
server:port: 9501 # 網(wǎng)關(guān)服務(wù)的端口 spring:boot:admin:client:username: muyanpassword: yootkurl: http://microcloud-admin:8000/management:server:port: 9090 # Actuator端口endpoints:web:exposure:include: "*" # 開啟全部的監(jiān)控終端base-path: /actuator # 訪問子路徑其它需要接入到SpringBootAdmin中的微服務(wù)
management:endpoints:web:exposure:include: "*" # 開啟全部的監(jiān)控終端base-path: /actuator # 訪問子路徑4、【接入微服務(wù)】需要注意的是,SpringBootAdmin在接入微服務(wù)的時候有些地方比較討厭,例如:有些微服務(wù)明明是存活的而且是正常的,它非認為微服務(wù)有問題,從而給出了錯誤的處理
management:health:sentinel:enabled: false # 關(guān)閉Sentinel健康檢查endpoints:web:exposure:include: "*" # 開啟全部的監(jiān)控終端base-path: /actuator # 訪問子路徑endpoint:health:show-details: always5、【管理控制臺】此時已經(jīng)開放了Actuator監(jiān)控端口,所以所有的相關(guān)的JVM信息此時是可以直接獲取到的。
微服務(wù)離線警告
SpringBootAdmin可以進行微服務(wù)狀態(tài)的監(jiān)控,但是一旦微服務(wù)狀態(tài)發(fā)生了更改(例如:實例上線或下線)則應(yīng)該立即將此狀態(tài)告訴管理員,于是可以給管理員發(fā)送一封郵件。
1、 【microcloud項目】修改build.gradle配置文件,為“microcloud-admin-8000”子模塊添加mail依賴庫
implementation group: ‘org.springframework.boot’, name: ‘spring-boot-starter-mail’, version: ‘2.5.5’
project(":microcloud-admin-8000") { // 部門微服務(wù)dependencies {implementation(libraries.'spring-boot-admin-starter-client')implementation('org.springframework.boot:spring-boot-starter-mail')implementation('org.springframework.boot:spring-boot-starter-actuator')implementation('org.springframework.boot:spring-boot-starter-security')implementation("org.springframework.boot:spring-boot-starter-web")implementation(libraries.'spring-boot-admin-starter-server')implementation('com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery') {exclude group: 'com.alibaba.nacos', module: 'nacos-client' // 移除舊版本的Nacos依賴}implementation('com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config') {exclude group: 'com.alibaba.nacos', module: 'nacos-client' // 移除舊版本的Nacos依賴}implementation(libraries.'nacos-client') // 引入與當(dāng)前的Nacos匹配的依賴庫} }2、【microcloud-admin-8000子模塊】修改application.yml配置文件,添加mail 的相關(guān)配置項。
spring:mail:host: smtp.qq.comusername: 202041555@qq.compassword: wxxgmulpexcubcihboot:admin:notify:mail:to: 202041666@qq.comfrom: 202041555@qq.com3、【microcloud-admin-8000子模塊】創(chuàng)建一個配置類,這個類主要實現(xiàn)警報的通知
package com.yootk.admin.config;import de.codecentric.boot.admin.server.domain.entities.InstanceRepository; import de.codecentric.boot.admin.server.notify.CompositeNotifier; import de.codecentric.boot.admin.server.notify.Notifier; import de.codecentric.boot.admin.server.notify.RemindingNotifier; import de.codecentric.boot.admin.server.notify.filter.FilteringNotifier; import org.springframework.beans.factory.ObjectProvider; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary;import java.beans.BeanProperty; import java.time.Duration; import java.util.Collections; import java.util.List;@Configuration public class MicroServiceNotificationConfiguration { // 定義一個警報發(fā)送配置private InstanceRepository instanceRepository; // 存儲實例private ObjectProvider<List<Notifier>> provider; // 警報策略public MicroServiceNotificationConfiguration(InstanceRepository instanceRepository,ObjectProvider<List<Notifier>> provider) {this.instanceRepository = instanceRepository;this.provider = provider;}@Beanpublic FilteringNotifier getFilterNotifier() {CompositeNotifier com = new CompositeNotifier(this.provider.getIfAvailable(Collections::emptyList));return new FilteringNotifier(com, this.instanceRepository);}@Bean@Primarypublic RemindingNotifier remindingNotifier() {RemindingNotifier notifier = new RemindingNotifier(getFilterNotifier(), this.instanceRepository);notifier.setReminderPeriod(Duration.ofMinutes(1)); // 每分鐘提醒1次notifier.setCheckReminderInverval(Duration.ofSeconds(10)); // 每10秒檢查一次return notifier;} }
所有微服務(wù)的實例的狀態(tài)現(xiàn)在都是可以直接進行警報處理的,但是需要設(shè)置好周期。
總結(jié)
以上是生活随笔為你收集整理的SpringBootAdmin的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JWT 应用
- 下一篇: 台积电9月份营收56亿美元 同比仍在下滑