亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

如何用Springboot Admin監(jiān)控你的微服務應用

 更新時間:2021年01月28日 09:39:46   作者:南瓜慢說  
這篇文章主要介紹了如何用Springboot Admin監(jiān)控你的微服務應用,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下。

1 簡介

目前,微服務大行其道,各大小公司爭相學習模仿,把單體應用拆得七零八落。服務多了,運行的實例多了,給運維人員的壓力就更大了。如果有十幾個應用,單單做Health Check就已經夠費時間的了。聰明的Springboot提供了Actuator接口,可以非常好獲得應用的內部信息,然而針對數量龐大的服務卻無能為力。

得益于開源社區(qū)的力量,我們有了Springboot Admin。它能對注冊于服務發(fā)現的所有應用監(jiān)控起來,功能包括健康檢查、JVM內存、INFO信息、獲得線程棧和堆棧信息、提醒(郵件、Slack、釘釘、自定義...)等。總之,它提供了非常豐富的監(jiān)控功能,減輕運維人員的工作任務。

目前Springboot Admin(后面簡稱SBA)的最新版本為2.2.0,本文演示將使用該版本。

2 兩種監(jiān)控模式

使用SBA監(jiān)控Client有兩種模式,一種是在Client端引入spring-boot-admin-starter-client依賴,配置好Server的地址信息就可以了。另一種模式是將所有Client端注冊到服務發(fā)現(Eureka)組件中去,同時把Server端也注冊,這樣Server端就可以監(jiān)控所有Client端了。

第二種模式是更方便的,不用對Client都添加依賴,后面的例子使用第二種模式。

服務端需要添加SBA的依賴和Eureka Client的依賴,如下:

<dependencies>
 <dependency>
 <groupId>de.codecentric</groupId>
 <artifactId>spring-boot-admin-starter-server</artifactId>
 </dependency>
 <dependency>
 <groupId>org.springframework.cloud</groupId>
 <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
 </dependency>
</dependencies>

配置文件配置信息如下:

server.port=9000
spring.application.name=admin-monitor-service
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true

啟動后就可以監(jiān)控微服務了(當然需要Eureka和其它Client也啟動并注冊),效果圖如下:

上圖顯示共有四個應用受到監(jiān)控:

有一個ADMIN-MONITOR-SERVICE,即SBA本身;

有兩個DATA-SERVICE,用于數據庫操作的服務;

有一個GATEWAY,是網關服務,即Zuul。

能看到服務的名字,還能看到其版本號。

3 保護你的SBA

3.1 保護Server

現在SBA啟動后直接輸入地址就可以訪問,不需要密碼登陸,這顯然是不安全的。SBA本質也是一個Springboot的Web應用,可以用Spring Security來做安全和權限控制。

添加Spring Security依賴如下:

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-security</artifactId>
</dependency>

配置用戶和密碼:

spring.security.user.name=admin
spring.security.user.password=admin

重啟應用后,就需要登陸密碼才能訪問了,如下:

實際上Spring Security遠比這強大,我們可以通過配置把更敏感的信息保護起來,如HeamDump文件的獲取,日志級別的修改等。

注意:即使做了上面的措施,也無法保證Server的安全。要想更安全地使用SBA,可以通過添加SSL,使它運行在https之上。

3.2 保護Client

目前我們把Client的所有Endpoints都暴露出來,這也是非常危險的,我們可以有選擇的暴露需要的信息。另外,我們還可以為Client設置賬戶密碼保護,只有擁有了正確的賬戶密碼,Server端才可以獲得監(jiān)控權限。

4 監(jiān)控功能

SBA為我們提供豐富的監(jiān)控功能,我們選擇幾項展示一下。

4.1 健康檢查與細節(jié)查看

SBA會監(jiān)控服務是否健康,包括應用及應用的組件,如數據庫連接等。

  • INFO信息

圖上還有info信息,這個是自定義配置的,非常方便,如配置代碼的版本號等。

info.author=Larry Deng
info.version=1.0.3
  • Beans

可以查看所有的beans信息。

  • Configuration Properties

查看目前應用使用的配置信息。

  • Scheduled Tasks

查看正在使用的定時調度任務。

4.2 日志Loggers

展示了當前的日志級別,更強大的是,它可以實時調整日志級別,而不用去改log4j2配置文件,也不用重啟。在有問題需要更詳細的日志的時候,非常方便。

4.3 JVM信息(線程與內存)

可以實時地查看每個線程的狀態(tài),并且能下載Thread Dump文件,方便有故障的時候分析。同樣,還能下載Heap Dump文件,在占用內存居高不下,還不能GC時,可以用來分析。

4.4 其它

Mappings能查看Endpoints的路徑和方法及返回類型等。

Caches可以查看應用所使用的緩存,并能操作,如清空緩存。

5 強大的提醒功能

雖然SBA提供了強大的監(jiān)控功能,但要人工一直盯著屏幕就太低效了。為此,SBA提供了強大的提醒功能,能夠在發(fā)生服務狀態(tài)變更的時候發(fā)出告警。支持的提醒功能有:

  • Email
  • PagerDuty
  • OpsGenie
  • Hipchat
  • Slack
  • Let's Chat
  • Telegram

等。

同時還支持自定義,這樣可以整合更豐富的提醒,如短信、電話等。

5.1 郵件提醒

為了不讓篇幅過大,下面只展示一下郵件提醒功能的使用,其它可參考用戶手冊。

添加郵件依賴:

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

配置參數:

spring.mail.host=smtp.example.com
spring.mail.username=smtp_user
spring.mail.password=smtp_password
spring.boot.admin.notify.mail.to=admin@example.com

郵件提醒其它配置項:

5.2 自定義提醒

自定義提醒很簡單,只要實現Notifier接口就行了,建議直接繼承AbstractEventNotifier 或AbstractStatusChangeNotifier這兩個類。邏輯在方法doNotify中實現。

public class CustomNotifier extends AbstractEventNotifier {
 private static final Logger LOGGER = LoggerFactory.getLogger(LoggingNotifier.class);

 public CustomNotifier(InstanceRepository repository) {
 super(repository);
 }

 @Override
 protected Mono<Void> doNotify(InstanceEvent event, Instance instance) {
 return Mono.fromRunnable(() -> {
  if (event instanceof InstanceStatusChangedEvent) {
  LOGGER.info("Instance {} ({}) is {}", instance.getRegistration().getName(), event.getInstance(),
   ((InstanceStatusChangedEvent) event).getStatusInfo().getStatus());
  }
  else {
  LOGGER.info("Instance {} ({}) {}", instance.getRegistration().getName(), event.getInstance(),
   event.getType());
  }
 });
 }
}

6 總結

SBA非常強大,一篇文章難以完備,大家可以參考用戶手冊。

另外,服務發(fā)現不一定要使用Eureka,如Nacos也是支持的。只使用SBA也是不夠的,對于監(jiān)控日志,可以使用ELK,這是題外話了,以后有空再整理吧。

以上就是如何用Springboot Admin監(jiān)控你的微服務應用的詳細內容,更多關于Springboot Admin監(jiān)控微服務應用的資料請關注腳本之家其它相關文章!

相關文章

  • 深入Parquet文件格式設計原理及實現細節(jié)

    深入Parquet文件格式設計原理及實現細節(jié)

    這篇文章主要介紹了深入Parquet文件格式設計原理及實現細節(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • DragChartPanel可拖拽曲線應用詳解

    DragChartPanel可拖拽曲線應用詳解

    這篇文章主要為大家詳細介紹了DragChartPanel可拖拽曲線的應用,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • 如何準確判斷郵件地址是否存在

    如何準確判斷郵件地址是否存在

    本文介紹了如何判斷郵件地址是否存在的方法,具有很高的使用價值,提高了工作效率
    2015-07-07
  • 如何基于ssm框架實現springmvc攔截器

    如何基于ssm框架實現springmvc攔截器

    這篇文章主要介紹了如何基于ssm框架實現springmvc攔截器,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • mybatis如何使用注解實現一對多關聯查詢

    mybatis如何使用注解實現一對多關聯查詢

    這篇文章主要介紹了mybatis如何使用注解實現一對多關聯查詢的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 學習Java之異常到底該如何捕獲和處理

    學習Java之異常到底該如何捕獲和處理

    我們知道,Java的異常處理是通過5個關鍵字來實現的,即try、catch、throw、throws和finally,try?catch語句用于捕獲并處理異常,但具體該怎么捕獲異常,怎么拋出異常,什么時候拋,什么時候捕,感興趣的小伙伴跟著小編一起來看看吧
    2023-08-08
  • 使用IDEA工具配置和運行vue項目及遇到的坑

    使用IDEA工具配置和運行vue項目及遇到的坑

    這篇文章主要介紹了使用IDEA工具配置和運行vue項目及遇到的坑,需要的朋友可以參考下
    2018-09-09
  • Java Calendar類常用示例_動力節(jié)點Java學院整理

    Java Calendar類常用示例_動力節(jié)點Java學院整理

    從JDK1.1版本開始,在處理日期和時間時,系統推薦使用Calendar類進行實現。接下來通過實例代碼給大家詳細介紹Java Calendar類相關知識,需要的朋友參考下吧
    2017-04-04
  • org.hibernate.QueryTimeoutException查詢超時的解決方法

    org.hibernate.QueryTimeoutException查詢超時的解決方法

    本文主要介紹了org.hibernate.QueryTimeoutException查詢超時的解決方法,這通常發(fā)生在數據庫響應緩慢、查詢設計不合理或系統資源緊張等情況下,感興趣的可以了解一下
    2024-05-05
  • 解決Spring Security的權限配置不生效問題

    解決Spring Security的權限配置不生效問題

    這篇文章主要介紹了解決Spring Security的權限配置不生效問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評論