<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
用於對 Spring Boot 應用的管理和監控。
可以用來監控服務是否健康、是否線上、以及一些jvm資料等等。
Spring Boot Admin 分為伺服器端(spring-boot-admin-server)和使用者端(spring-boot-admin-client),伺服器端和使用者端之間採用 http 通訊方式實現資料互動;單體專案中需要整合 spring-boot-admin-client 才能讓應用被監控。
在 SpringCloud 專案中,spring-boot-admin-server 是直接從註冊中心抓取應用資訊,不需要每個微服務應用整合 spring-boot-admin-client 就可以實現應用的管理和監控。
主要的功能點有:
需先搭建伺服器端,監控服務,被監控的服務連線過來即可,開箱即用。
1、新建一個專案做為伺服器端
2、引入spring-boot-admin伺服器端依賴
<!--用於檢查系統的監控情況--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!--Spring Boot Admin Server監控伺服器端--> <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-server</artifactId> <version>2.3.1</version> </dependency> <!--增加安全防護,防止別人隨便進--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
3、啟動類上開啟admin@EnableAdminServer
4、security安全防護設定
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; import org.springframework.security.web.csrf.CookieCsrfTokenRepository; @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 { // 登入成功處理類 SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler(); successHandler.setTargetUrlParameter("redirectTo"); successHandler.setDefaultTargetUrl(adminContextPath + "/"); http.authorizeRequests() //靜態檔案允許存取 .antMatchers(adminContextPath + "/assets/**").permitAll() //登入頁面允許存取 .antMatchers(adminContextPath + "/login", "/css/**", "/js/**", "/image/*").permitAll() //其他所有請求需要登入 .anyRequest().authenticated() .and() //登入頁面設定,用於替換security預設頁面 .formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and() //登出頁面設定,用於替換security預設頁面 .logout().logoutUrl(adminContextPath + "/logout").and() .httpBasic().and() .csrf() .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()) .ignoringAntMatchers( "/instances", "/actuator/**" ); } }
5、yml設定
server: port: 9111 spring: boot: admin: ui: title: HMB服務監控中心 client: instance: metadata: tags: environment: local #要獲取的client的端點資訊 probed-endpoints: health,env,metrics,httptrace:trace,threaddump:dump,jolokia,info,logfile,refresh,flyway,liquibase,heapdump,loggers,auditevents monitor: # 監控傳送請求的超時時間 default-timeout: 20000 security: # 設定賬號密碼 user: name: admin password: admin # 伺服器端點詳細監控資訊 management: trace: http: enabled: true endpoints: web: exposure: include: "*" endpoint: health: show-details: always
6、啟動專案
存取 http://ip:埠
,
如我的http://localhost:9111,賬號密碼都是admin(上面的security配的)
7、自定義服務狀態變化後,提醒功能
import de.codecentric.boot.admin.server.domain.entities.Instance; import de.codecentric.boot.admin.server.domain.entities.InstanceRepository; import de.codecentric.boot.admin.server.domain.events.InstanceEvent; import de.codecentric.boot.admin.server.notify.AbstractStatusChangeNotifier; import org.springframework.stereotype.Component; import reactor.core.publisher.Mono; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; @Component public class WarnNotifier extends AbstractStatusChangeNotifier { public WarnNotifier(InstanceRepository repository) { super(repository); } @Override protected Mono<Void> doNotify(InstanceEvent event, Instance instance) { // 服務名 String serviceName = instance.getRegistration().getName(); // 服務url String serviceUrl = instance.getRegistration().getServiceUrl(); // 服務狀態 String status = instance.getStatusInfo().getStatus(); // 詳情 Map<String, Object> details = instance.getStatusInfo().getDetails(); // 當前服務掉線時間 Date date = new Date(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String format = simpleDateFormat.format(date); // 拼接簡訊內容 StringBuilder str = new StringBuilder(); str.append("服務名:【" + serviceName + "】 rn"); str.append("服務狀態:【"+ status +"】 rn"); str.append("地址:【" + serviceUrl + "】rn"); str.append("時間:" + format +"rn"); return Mono.fromRunnable(()->{ // 這裡寫你服務發生改變時,要提醒的方法 // 如服務掉線了,就傳送簡訊告知 }); } }
8、伺服器端設定
設定 | 預設引數 | 解釋 |
---|---|---|
spring.boot.admin.context-path | / | server端的存取路徑 |
spring.boot.admin.monitor.status-interval | 10,000ms | 檢查範例狀態的時間間隔。 |
被監控的服務,需要連線伺服器端
1、依賴
<dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-client</artifactId> <version>2.3.1</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
2、yml設定
server: port: 9222 spring: application: name: client boot: admin: client: # spring-boot-admin 使用者端設定 url: http://localhost:9111 #伺服器端連線地址 username: admin # 伺服器端賬號 password: admin # 伺服器端密碼 instance: prefer-ip: true # 使用ip註冊 # 伺服器端點詳細監控資訊 management: trace: http: enabled: true endpoints: web: exposure: include: "*" endpoint: health: show-details: always logfile: # 紀錄檔(想線上看紀錄檔才配) external-file: ./logs/client-info.log # 紀錄檔所在路徑
此時使用者端就已經註冊進來了。
點選可檢視更多資訊:
點選紀錄檔也可線上檢視紀錄檔:
此時,如果我們服務掉線了,就會觸發伺服器端的預警功能,告知我們。
除特別說明外,都是在上面的基礎上新增
1、新增依賴
<!-- nacos註冊中心設定--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.2.5.RELEASE</version> </dependency>
2、yml新增設定
spring: cloud: nacos: discovery: server-addr: localhost:8848 # namespace: # 要和你的服務同一名稱空間
使用者端不用引spring-boot-admin-starter-clien依賴,springbootadmin會去服務列表裡找
如果服務有設定context-path路徑,則需新增yml設定
spring: cloud: nacos: discovery: metadata: # minitor監控的context-path設定 management: context-path: ${server.servlet.context-path}/actuator
問題:由於該元件重寫狀態發生變化時的介面,沒有提供其他服務的狀態資訊,只有本服務,但是如果是叢集、多範例,我又想知道,該服務其他範例或者其他的服務狀態資訊,是否存活。
結果展示:如我的預警內容,傳送當前服務狀態、當前服務剩餘健康範例、其他健康服務數等等
到此這篇關於Spring boot admin 服務監控利器詳解的文章就介紹到這了,更多相關Spring boot admin 內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45