當前位置:
首頁 > 最新 > springboot:使用Spring Boot Actuator監控應用

springboot:使用Spring Boot Actuator監控應用

微服務的特點決定了功能模塊的部署是分散式的,大部分功能模塊都是運行在不同的機器上,彼此通過服務調用進行交互,前後台的業務流會經過很多個微服務的處理和傳遞,出現了異常如何快速定位是哪個環節出現了問題?

在這種框架下,微服務的監控顯得尤為重要。本文主要結合Spring Boot Actuator,跟大家一起分享微服務Spring Boot Actuator的常見用法,方便我們在日常中對我們的微服務進行監控治理。


Spring Boot使用「習慣優於配置的理念」,採用包掃描和自動化配置的機制來載入依賴jar中的Spring bean,不需要任何Xml配置,就可以實現Spring的所有配置。雖然這樣做能讓我們的代碼變得非常簡潔,但是整個應用的實例創建和依賴關係等信息都被離散到了各個配置類的註解上,這使得我們分析整個應用中資源和實例的各種關係變得非常的困難。

Actuator是Spring Boot提供的對應用系統的自省和監控的集成功能,可以查看應用配置的詳細信息,例如自動化配置信息、創建的Spring beans以及一些環境屬性等。

Actuator監控只需要添加以下依賴就可以完成

為了保證actuator暴露的監控介面的安全性,需要添加安全控制的依賴spring-boot-start-security依賴,訪問應用監控端點時,都需要輸入驗證信息。Security依賴,可以選擇不加,不進行安全管理,但不建議這麼做。


Actuator監控分成兩類:原生端點和用戶自定義端點;自定義端點主要是指擴展性,用戶可以根據自己的實際應用,定義一些比較關心的指標,在運行期進行監控。

原生端點是在應用程序里提供眾多 Web 介面,通過它們了解應用程序運行時的內部狀況。原生端點又可以分成三類:

應用配置類:可以查看應用在運行期的靜態信息:例如自動配置信息、載入的springbean信息、yml文件配置信息、環境信息、請求映射信息;

度量指標類:主要是運行期的動態信息,例如堆棧、請求連、一些健康指標、metrics信息等;

操作控制類:主要是指shutdown,用戶可以發送一個請求將應用的監控功能關閉。

Actuator 提供了 13 個介面,具體如下表所示。


項目依賴

配置文件

配置完成之後,啟動項目就可以繼續驗證各個監控功能了。

Spring Boot的自動配置功能非常便利,但有時候也意味著出問題比較難找出具體的原因。使用 autoconfig 可以在應用運行時查看代碼了某個配置在什麼條件下生效,或者某個自動配置為什麼沒有生效。

啟動示例項目,訪問: 返回部分信息如下:


查看配置文件中設置的屬性內容,以及一些配置屬性的默認值。

啟動示例項目,訪問: 返回部分信息如下:


根據示例就可以看出,展示了bean的別名、類型、是否單例、類的地址、依賴等信息。

啟動示例項目,訪問: 返回部分信息如下:


/dump 介面會生成當前線程活動的快照。這個功能非常好,方便我們在日常定位問題的時候查看線程的情況。 主要展示了線程名、線程ID、線程的狀態、是否等待鎖資源等信息。

啟動示例項目,訪問: 返回部分信息如下:


展示了系統環境變數的配置信息,包括使用的環境變數、JVM 屬性、命令行參數、項目使用的jar包等信息。和configprops不同的是,configprops關注於配置信息,env關注運行環境信息。

啟動示例項目,訪問: 返回部分信息如下:

為了避免敏感信息暴露到 /env 里,所有名為password、secret、key(或者名字中最後一段是這些)的屬性在 /env 里都會加上「*」。舉個例子,如果有一個屬性名字是database.password,那麼它在/env中的顯示效果是這樣的:

/env/用法

就是env的擴展 可以獲取指定配置信息,比如: ,返回:


可以看到 HealthEndPoint 給我們提供默認的監控結果,包含 磁碟檢測和資料庫檢測

啟動示例項目,訪問: 返回部分信息,下面的JSON響應是由狀態、磁碟空間和db。描述了應用程序的整體健康狀態,UP 表明應用程序是健康的。磁碟空間描述總磁碟空間,剩餘的磁碟空間和最小閾值。 閾值是可配置的


info就是我們自己配置在配置文件中以Info開頭的配置信息,比如我們在示例項目中的配置是:

啟動示例項目,訪問: 返回部分信息如下:


描述全部的URI路徑,以及它們和控制器的映射關係

啟動示例項目,訪問: 返回部分信息如下:


最重要的監控內容之一,主要監控了JVM內容使用、GC情況、類載入信息等。

啟動示例項目,訪問: 返回部分信息如下:

對 介面提供的信息進行簡單分類如下表:

解釋說明:

請注意,這裡的一些度量值,比如數據源和Tomcat會話,僅在應用程序中運行特定組件時才有數據。你還可以註冊自己的度量信息。

HTTP的計數器和度量值需要做一點說明。counter.status 後的值是HTTP狀態碼,隨後是所請求的路徑。舉個例子,counter.status.200.metrics 表明/metrics端點返回 200(OK) 狀態碼的次數。

HTTP的度量信息在結構上也差不多,卻在報告另一類信息。它們全部以gauge.response 開頭,,表明這是HTTP響應的度量信息。前綴後是對應的路徑。度量值是以毫秒為單位的時間,反映了最近處理該路徑請求的耗時。

這裡還有幾個特殊的值需要注意。root路徑指向的是根路徑或/。star-star代表了那些Spring 認為是靜態資源的路徑,包括圖片、JavaScript和樣式表,其中還包含了那些找不到的資源。這就是為什麼你經常會看到 counter.status.404.star-star,這是返回了HTTP 404 (NOT FOUND) 狀態的請求數。

介面會返回所有的可用度量值,但你也可能只對某個值感興趣。要獲取單個值,請求時可以在URL後加上對應的鍵名。例如,要查看空閑內存大小,可以向 發一 個GET請求。例如訪問: ,返回: 。


開啟介面優雅關閉Spring Boot應用,要使用這個功能首先需要在配置文件中開啟:

配置完成之後,啟動示例項目,訪問: 返回部分信息如下:

此時你會發現應用已經被關閉。


/trace 介面能報告所有Web請求的詳細信息,包括請求方法、路徑、時間戳以及請求和響應的頭信息,記錄每一次請求的詳細信息。

啟動示例項目,先訪問一次: ,再到瀏覽器執行: 查看返回信息:

上述信息展示了,/hello請求的詳細信息。


根據上面表格,鑒權為false的,表示不敏感,可以隨意訪問,否則就是做了一些保護,不能隨意訪問。

這樣需要對每一個都設置,比較麻煩。敏感方法默認是需要用戶擁有ACTUATOR角色,因此,也可以設置關閉安全限制:

或者配合Spring Security做細粒度控制。


雖然Actuator的介面都很有用,但你不一定需要全部這些介面。默認情況下,所有介面(除 了/shutdown)都啟用。比如要禁用 /metrics 介面,則可以設置如下:

如果你只想打開一兩個介面,那就先禁用全部介面,然後啟用那幾個你要的,這樣更方便。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 純潔的微笑 的精彩文章:

springcloud:服務網關Zuul高級篇

TAG:純潔的微笑 |