配置 mpHealth-1.0 特性,並實作 HealthCheck 應用程式設計介面
(API),以便在微服務中提供性能檢查。
關於這項作業
性能檢查是微服務提供的一項
MicroProfile 性能 API 實作。利用性能檢查,可評量服務的性能。這些檢查基本上屬於儲存器化環境中的機器對機器機制,例如
Kubernetes 中的生動度檢查。
mpHealth-1.0 特性提供一個
/health 端點,它代表已安裝之微服務的二進位狀態
UP 或
DOWN。微服務可以提供零或多項性能檢查,伺服器的整體性能會是來自各項性能檢查的狀態總結。只有在所有性能檢查都報告正面結果時,整體結果才會是正面。
程序
- 配置特性。更新 server.xml 檔,以新增特性:
<featureManager>
<feature>mpHealth-1.0</feature>
</featureManager>
- 使用 API 來提供您想執行的性能檢查:
@FunctionalInterface
public interface HealthCheck {
HealthCheckResponse call();
}
下列範例顯示如何使用 API 來進行性能檢查:
@Health
@ApplicationScoped
public class MyCheck implements HealthCheck {
@Override
public HealthCheckResponse call() {
return HealthCheckResponse.named("MyCheck")
.withData("key1", "val1")
.withData("key2", "val2")
.up()
.build();
}
}
對 /health 端點發出 HTTP 要求後,會傳回具有下列其中一個狀態碼的回應:- 代碼 200 表示具有正面輸出結果的性能檢查。
- 代碼 503 表示整體輸出結果是負面。
- 代碼 500 表示系統無法處理性能檢查要求。此代碼可能表示程序中發生錯誤。
回應也會包含 JavaScript Object
Notation (JSON) 有效負載,其中提供性能檢查的詳細資料。下列程式碼顯示正面結果的範例:{
"outcome": "UP",
"checks": [
{
"name": "MyCheck",
"state": "UP",
"data: {
"key": "value",
"key1": "val1",
"key2": "val2"
}
}
]
}
下列程式碼顯示負面結果的範例:{
"outcome": "DOWN",
"checks": [
{
"name": "check1",
"state": "UP"
},
{
"name": "check2",
"state": "DOWN"
}
]
}
如果您配置特性,但未提供任何性能檢查,系統會以代碼 200 回應。有效負載會包含 UP 正面輸出結果以及空白的一組檢查。