微服務的特點決定了功能模組的部署是分布式的,大部分功能模組都是執行在不同的機器上,彼此通過服務呼叫進行互動,前後臺的業務流會經過很多個微服務的處理和傳遞,出現了異常如何快速定位是哪個環節出現了問題?
在這種框架下,微服務的監控顯得尤為重要。本文主要結合 spring boot actuator,跟大家一起分享微服務 spring boot actuator 的常見用法,方便我們在日常中對我們的微服務進行監控治理。
spring boot 使用「習慣優於配置的理念」,採用包掃瞄和自動化配置的機制來載入依賴 jar 中的 spring bean,不需要任何 xml 配置,就可以實現 spring 的所有配置。雖然這樣做能讓我們的**變得非常簡潔,但是整個應用的例項建立和依賴關係等資訊都被離散到了各個配置類的註解上,這使得我們分析整個應用中資源和例項的各種關係變得非常的困難。
actuator 是 spring boot 提供的對應用系統的自省和監控的整合功能,可以檢視應用配置的詳細資訊,例如自動化配置資訊、建立的 spring beans 以及一些環境屬性等。
為了保證 actuator 暴露的監控介面的安全性,需要新增安全控制的依賴「spring-boot-start-security」
依賴,訪問應用監控端點時,都需要輸入驗證資訊。security 依賴,可以選擇不加,不進行安全管理,但不建議這麼做。
spring boot actuator提供了很多監控端點。可使用http://:/的形式訪問這些端點,從而了解應用程式的執行狀況。
actuator提供的端點如下:
端點
描述
http方法
是否敏感
autoconfig
顯示自動配置的資訊
get是
beans
顯示應用程式上下文所有的spring bean
get是
configprops
顯示所有@configurationproperties的配置屬性列表
get是
dump
顯示執行緒活動的快照
get是
env顯示應用的環境變數
get是
health
顯示應用程式的健康指標,這些值由healthindicator的實現類提供。當應用開啟安全保護時,對於未經使用者認證的請求,只會顯示簡單的狀態;
如已認證,則會展示健康詳情。
get否
info
顯示應用的資訊,可使用info.*屬性自定義info端點公開的資料
get否
get是
metrics
顯示應用的度量標準資訊
get是
shutdown
關閉應用(預設情況下不啟用,如需啟用,需設定end-point.shutdown.enabled=true)
post
是trace
顯示跟蹤資訊(預設情況下為最近100個http請求)
get是
專案依賴
<dependency
>
<
groupid
>org.springframework.boot
groupid
>
<
artifactid
>spring-boot-starter-actuator
artifactid
>
dependency
>
配置檔案
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
#management.endpoints.web.base-path=/monitor
management.endpoint.shutdown.enabled=true
配置完成之後,啟動專案就可以繼續驗證各個監控功能了。
在 spring boot 2.x 中為了安全期間,actuator 只開放了兩個端點/actuator/health
和/actuator/info
。可以在配置檔案中設定開啟。
可以開啟所有的監控點
management.endpoints.web.exposure.include=*
也可以選擇開啟部分
management.endpoints.web.exposure.exclude=beans,trace
actuator 預設所有的監控點路徑都在/actuator/*
,當然如果有需要這個路徑也支援定製。
management.endpoints.web.base-path=/manage
設定完重啟後,再次訪問位址就會變成/manage/*
actuator 幾乎監控了應用涉及的方方面面,我們重點講述一些經常在專案中常用的命令。
health 主要用來檢查應用的執行狀態,這是我們使用最高頻的乙個監控點。通常使用此介面提醒我們應用例項的執行狀態,以及應用不」健康「的原因,比如資料庫連線、磁碟空間不夠等。
預設情況下 health 的狀態是開放的,新增依賴後啟動專案,訪問:http://localhost:8080/actuator/health
即可看到應用的狀態。
預設情況下,最終的 spring boot 應用的狀態是由 healthaggregator 彙總而成的,彙總的演算法是:
health 通過合併幾個健康指數檢查應用的健康情況。spring boot actuator 有幾個預定義的健康指標比如datasourcehealthindicator
,diskspacehealthindicator
,mongohealthindicator
,redishealthindicator
等,它使用這些健康指標作為健康檢查的一部分。
舉個例子,如果你的應用使用 redis,redishealthindicator
將被當作檢查的一部分;如果使用 mongodb,那麼mongohealthindicator
將被當作檢查的一部分。
可以在配置檔案中關閉特定的健康檢查指標,比如關閉 redis 的健康檢查:
management.health.redise.enabled=false
預設,所有的這些健康指標被當作健康檢查的一部分。
上表中所有的端點除了shutdown都是get請求方式,那shutdown的post請求方式也無妨。
開啟介面優雅關閉 spring boot 應用,要使用這個功能首先需要在配置檔案中開啟:
management.endpoint.shutdown.enabled=true
配置完成之後,啟動示例專案,使用 curl 模擬 post 請求訪問 shutdown 介面。
shutdown 介面預設只支援 post 請求。此時你會發現應用已經被關閉。
SpringBoot 十 應用監控Actuator
actuator可能大家非常熟悉,它是springboot提供對應用自身監控,以及對應用系統配置檢視等功能。spring boot starter actuator模組的實現對於實施微服務的中小團隊來說,可以有效地減少監控系統在採集應用指標時的開發量。當然,它也並不是萬能的,有時候我們也需要對其做一...
SpringBoot應用程式監控
寫之前為springboot點讚,很貼心的幫我們把很多的功能都實現了 統一環境 springboot的版本號是2.1.3.release 1.首先去start.springboot.io springboot為我們提供了actuator 這個模組,借助此模組可以輕鬆的實現監控 記得選中圖上的兩個模組...
Spring Boot 應用視覺化監控
1 spring boot 應用暴露監控指標 版本 1.5.7.release 首先,新增依賴如下依賴 org.springframework.boot spring boot starter actuator 採集應用的指標資訊,我們使用的是prometheus,相應的我們引入包 2 promet...