小窺微服務架構Spring Boot的監控與管理

      學過馬克思主義哲學的碼友們都知道:事物具有兩面性。那麼微服務架構帶給我們開發便利的同時,也會帶來許多複雜的工作,比如對於運維人員來說,隨着應用的不斷增多,系統集羣中出現故障的頻率也會越來越高,雖然在高可用機制的保護下,個別故障不會影響系統的對外服務,但是這些頻繁出現的故障需要被及時發現和處理才能保證系統處於健康可用的狀態。爲了能對這些成倍增長的應用做到高效運維,需要實現一套自動化的監控運維機制,而這套機制的運行基礎就是要不斷的收集各個微服務應用的各項指標情況,並根據這些基礎指標信息來制定監控和預警規則。例如最近新冠肺炎的疫情監控,就是能直觀的掌握疫情,並指定相應的方案來應對。

而我們使用Spring Boot來作爲微服務框架時,除了它強大的快速開發功能之外,它還提供了一個特殊的依賴模塊spring-boot-starter-actuator,這個模塊能夠自動爲Spring Boot構建的應用提供一系列用於監控的端點,這些基礎的監控,可以大大的減少監控系統在採集應用指標的開發量。

廢話不多說,先來寫一個Spring Boot的小demo,在pom.xml中加入spring-boot-starter-actuator模塊的依賴,然後寫一個簡單的hello world:

啓動應用,會在日誌中,看到這些監控的URL的映射:

我們來訪問http://localhost:8086/health來看一下返回的信息:

這些指標是模塊spring-boot-starter-actuator中自帶的,這個模塊已經實現了一些原生端點,從作用上來講,原生端點可以分爲三大類:

1、應用配置類:獲取應用程序中加載的應用配置、環境變量、自動化配置報告等與Spring Boot應用密切相關的配置類信息。

2、度量指標類:應用程序在運行過程中,用於監控的度量指標,比如內存信息、線程池信息和HTTP請求統計等

3、控制操作類:提供了操作應用的功能,例如對應用的關閉

首先來說一說應用配置類,由於Spring Boot是約定大於配置,也就是Spring Boot爲了改善傳統Spring應用繁雜的配置內容,採用了包掃描和自動化配置的機制來加載原本集中與XML文件中的各項內容。也就是我們不需要在配置這些繁重但重複的配置工作,Spring Boot已經有了默認的配置,要想掌握和清楚這些配置,就需要藉助於端點的應用配置類,這類端點可以幫助我們輕鬆獲取一系列關於Spring應用配置內容的詳細報告,比如自動化配置的報告、環境屬性的報告等。

----/autoconfig:獲取應用的自動化配置報告,該端點可以幫助我們方便的找到一些自動化配置爲什麼沒有生效:

其中positiveMatches返回的是條件匹配成功的自動化配置,negativeMatches返回的條件匹配不成功的自動化配置。

----/beans:獲取應用上下文中創建的所有Bean

----/configprops:用來獲取應用中配置的屬性信息報告

----/env:用來獲取應用所有可用的環境屬性報告,包括環境變量、JVM屬性、應用的配置屬性、命令行中的參數。

----/mappings:返回所有Spring MVC的控制器映射關係報告。

----/info:返回一些應用自定義的信息。

當我們在應用中的application.properties中自定義一些配置,再次訪問就會顯示有信息:

然後說一下這個度量指標類,度量指標類端點提供的報告內容是動態變化的,這些端點提供了應用程序在運行過程中的一些快照信息,這些端點對於我們構建微服務架構中的監控系統非常有幫助。

----/metrics:該端點返回當前應用的各類重要度量指標,比如內存信息、線程信息、垃圾回收信息等。

----/health:用來獲取應用的各類健康指標信息。可以根據需求來實現私人定製的採集健康信息的檢測器。

----/dump:用來暴露程序運行過程中的線程信息。

----/trace:返回基本的HTTP跟蹤信息。

最後說一下操作控制類,對於控制端點,我們來演示一下用來關閉應用的端點:/shutdown,開啓該端點需要在應用的配置文件中開啓:

由於/shutdown的請求是post請求,我們就用postman來測試:

應用就這樣通過控制類的端點,被我們關閉了。以上都是我們引入依賴模塊後,原生的一些端點應用,在我們進行Spring Boot結合Spring Cloud開發時,會加入更多的端點和監控指標,今天就小窺一下Spring Boot的監控與管理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章