Spring Cloud Actuator 是 Spring Boot Admin 與 Spring Cloud 項目的重要組件之一,提供了豐富的針對運行中的 Spring Boot 應用程序進行監控和管理的構件。
一、Actuator 的主要功能
1. Health Checks
Actuator 提供了 HealthCheckEndpoint 接口,以及默認的實現類 HealthIndicator,可以通過 SpringBoot 的自動配置功能自動對應上。健康檢查是應用程序最基本的部分之一,檢查應用程序是否正常啟動。Actuator 提供了兩種健康檢查的接口:
public interface HealthIndicator { Health health(); }
HealthIndicator 會輸出一個 Health 狀態,代表應用程序是否處於健康態。為了方便使用,Spring Boot 還提供了類似於 Unix 系統下的“ping”的 Actuator 自動化檢測功能。
2. Metrics
Metrics 的實現非常簡單,只需要將 MetricsEndpoint 和 MetricsProperties 注入容器中即可。Metrics 可以用於對基礎架構進行監控。包括了應用程序的響應時間、流量、吞吐量、並發量等,這些信息能夠幫助我們了解應用程序的健康度,還能夠為防禦性編程提供有價值的數據。
3. Tracing
在微服務架構下,很多時候會出現鏈式調用,而且每個請求可能會涉及到多個服務。當一個請求出現問題時,需要跟蹤整個請求所涉及到的服務,以便可以更快地定位問題。Actuator 提供了 TraceEndpoints 接口,並且在 Spring Boot 1.3 及以上版本的時候,提供了 HTTP Trace 功能。該功能允許我們詳細跟蹤 Spring Boot 應用程序在 HTTP 層面的所有調用細節,包括請求參數、響應狀態碼、響應內容等。
4. Environment
Actuator 提供了 EnvironmentalEndpoints 接口,並且默認實現類 EnvironmentEndpoint,用於對應用程序的運行環境進行監視和管理。在生產環境中,我們通常會將應用程序部署到不同的環境。通過環境變量和屬性文件設置不同的值。這樣可以讓不同的環境使用不同的配置文件,從而更好地適應不同的生產環境。
二、使用 Actuator
1. 依賴項
在使用 Spring Cloud Actuator 前,需要先在 pom 文件中添加相關的依賴:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
2. 配置 Actuator
在配置 Actuator 之前,需要先在 application 配置文件中添加以下內容:
management: endpoints: web: exposure: include: "*" endpoint: health: show-details: ALWAYS
這樣 Actuator 會將所有的 Endpoint 暴露出來,並且將所有的 health 細節都添加到健康端點之中。通過訪問 http://localhost:8080/actuator 可以獲取所有暴露出來的服務端點。
3. 常用 Endpoint
接下來是一些常用的 Actuator Endpoint,他們在進行接口調用時,需要對的訪問地址為 http://ip:port/actuator/endpoint
3.1、 /health
訪問 /health 端點可以讓應用程序報告本身的應用程序狀態。該端點可用於運行基本健康檢查,並檢測應用程序的配置和所有的應用程序組件是否都在正確的狀態下運行。如需了解更詳細的信息,可以使用 Show Details 標誌訪問端點。示例代碼如下:
$ curl -i localhost:8080/actuator/health HTTP/1.1 200 Content-Type: application/json;charset=UTF-8 status: UP details: {其他的檢查項、、、、}
3.2、 /info
訪問 /info 端點可以掌握有關應用程序狀態的更多信息,該端點可用於公開應用程序的相關元數據,比如:應用程序版本,構建信息等。
$ curl -i localhost:8080/actuator/info HTTP/1.1 200 Content-Type: application/json;charset=UTF-8 { "app": { "description": "AngularJS frontend for Sparklr Album Service", "name": "Sparklr", "version": "1.0.0" } }
3.3、 /metrics
訪問 /metrics 端點可以從運行中的 Spring Boot 應用程序中提取有關吞吐量,錯誤率,平均響應時間和其他類似指標的度量數據。
$ curl -s localhost:8080/actuator/metrics | python3 -m json.tool { "mem": 65664, "mem.free": 13143, "processors": 2, "uptime": 2476 }
三、總結
作為 Spring Cloud 項目的重要組件之一,Actuator 提供了很多豐富的功能和接口,使得我們能夠更快且更準確地定位問題,更好地了解應用程序的健康度,進一步加強了對微服務治理的支持。在使用 Actuator 時,請保持所有的 Endpoint 對外都是不可見的。由於 Actuator 的大部分功能都是依賴於 HTTP 端點實現的,因此我們需要格外小心,特別是對暴露出來的端點。這亦是本文作者提出的一個小建議。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/282832.html