在開發和管理微服務架構中,監控和診斷一直是一項非常重要的任務。為了幫助開發人員更好地管理和監控微服務,Spring Boot提供了Spring Actuator。Spring Actuator實際上是Spring Boot的一個擴展模塊,可提供REST方式的實時監控。本文將從多個方面詳細闡述Spring Actuator的原理。
一、簡介
Spring Actuator是Spring Boot的擴展模塊,提供REST方式的實時監控。Spring Boot Actuator模塊的目的在於為開發者提供了生產環境下對應用進行監控和管理的功能,這些功能可以通過 HTTP 端點來實現。
Spring Boot Actuator 模塊提供了 HTTP 介面,開發者可以通過訪問這些介面對應用的運行狀況、配置情況、日誌等進行查看和管理。Spring Boot Actuator 可以直接集成到已有的 Spring Boot 應用中,而不需要其他複雜的依賴關係。
二、使用Spring Actuator
為了使用 Spring Actuator,需要在項目的依賴中添加 spring-boot-starter-actuator。這樣,Spring Boot 就會自動為應用添加一組 Spring Actuator 端點,只需在application.properties文件中添加相應的配置信息即可。
# 開啟healthcheck功能
management.endpoint.health.enabled=true
# 只提供UP狀態作為返回結果
management.health.status.http-mapping.UP=200
# 只要有一個Endpoint不健康就標識服務不可用(down)
management.health.status.order=DOWN, OUT_OF_SERVICE, UNKNOWN, UP
配置完成後即可通過以下URL來訪問健康檢查的結果信息:
GET http://localhost:8080/actuator/health
Spring Boot默認提供的端點除了/health之外,還包括/beans、/config、/metrics、/trace、/dump、/env、/info等端點。
三、實現原理
1. 端點實現方式
Spring Boot Actuator通過Endpoint和EndpointMBean來實現。
- Endpoint通過介面來實現,提供了一個invoke方法用於操作。
- EndpointMBean與普通的MBean沒有什麼不同,是一個標準的MBean類型。
Endpoint類型的實現對象是一個單例對象,用於在運行時暴露一些運行時信息。不同類型的Endpoint提供不同的信息。
2. 端點提供方式
Spring Boot Actuator默認提供基於HTTP的REST API來訪問端點信息,同時也可以添加其他的提供方式在運行時提供端點信息。
Spring Boot Actuator還可以通過配置security來實現endpoint的認證和授權,默認情況下,需要進行身份驗證才能訪問所有的endpoint。如果想為某個endpoint添加訪問許可權,需要在application.properties中進行如下配置:
#開啟全局認證
management.security.enabled=true
#基於http basic的認證,用戶名密碼分別是admin和123456
spring.security.user.name=admin
spring.security.user.password=123456
#定義只有admin有訪問env許可權
management.endpoint.env.access=admin
四、使用案例
Spring Boot Actuator 具有非常廣泛的使用場景,可以在生產環境下快速檢查應用的運行狀態和監控信息。
1. 查看應用健康狀況
通過訪問http://localhost:8080/actuator/health可以查看Spring Boot應用的健康狀況,該狀況由spring-boot-starter-actuator提供。
該介面返回結果中的details包括當前時間、檢查日誌和檢查資料庫等信息。
2. 查看配置信息
通過訪問http://localhost:8080/actuator/configprops可以查看Spring Boot應用的配置信息,該介面由spring-boot-starter-actuator提供。
該介面返回結果中的spring.cloud等信息表示當前應用的所有配置信息。
3. 查看請求追蹤信息
通過訪問http://localhost:8080/actuator/httptrace可以查看Spring Boot應用的請求追蹤信息,該介面由spring-boot-starter-actuator提供。
該介面返回結果中的traces表示順序排列的所有請求,每個請求報告如下所示:
{
"traceId": "b844d02bb4cb7a47",
"parentSpanId": "b844d02bb4cb7a47",
"spanId": "bddca8b9b1d6dab6",
"method": "GET",
"uri": "/test",
"timeTaken": 2475,
"principal": "pschmidt"
}
五、總結
Spring Boot Actuator提供了一系列的用於監控和管理應用的介面,能夠幫助開發者更好的管理和監控微服務,可以快速查看應用的健康狀況、配置信息和請求追蹤等信息。需要注意的是,在使用該擴展模塊時需要進行相應的角色認證和授權配置。
原創文章,作者:VAFWJ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/332369.html