XHealth 定期執行一個檢查任務,驗證應用程式是否滿足你定義的條件。它獨立於容器執行狀態;設定和修改需要 Operator 或 Admin。
立即執行
Operator 或 Admin 可以在 XHealth 頁面點選 立即執行,呼叫不帶請求本文的 POST /api/apps/{name}/xhealth/run,或使用 MCP/Agent 工具 xhealth_run 並傳入 app。檢查必須已啟用,使用已儲存的設定對目前應用程式執行。等待啟動或執行中再次觸發會回傳 409;下次定時間隔從新一輪開始時起算。Guardian 的候選檢查獨立執行。
API 接受請求後回傳 202 和 {"ok":true},不等待檢查結果。重新整理頁面、呼叫 xhealth_get 或查看 XHealth 日誌以瞭解目前檢查。逾時或回應遺失不代表提交失敗,應先查詢狀態,再決定是否重新執行。請求不會去重,一輪結束後再次呼叫會啟動新一輪。
建立檢查
- 打開應用程式的 XHealth 頁面。
- 選擇 Hurl 檔案或自訂指令。
- 選擇檢查目標,填寫執行間隔;間隔至少為 1 分鐘。
- 初次設定時先保持 Guardian 關閉,確認檢查本身能夠穩定通過。
- 儲存後觀察狀態與檢查日誌。
目標可以來自應用程式已設定的網域、發佈連接埠,或直接指定容器內部連接埠。網域及發佈連接埠最終用於定位應用程式的目標連接埠,規則必須能夠唯一確定它。
Hurl 示例
為 Nginx 入門應用程式建立一個文字檔案:
GET {{TARGET_URL}}/
HTTP 200上傳該檔案,選擇可用的 Hurl 版本,將目標設定為內部連接埠 80,間隔設為 1 分鐘。檔案格式見 Hurl 請求文件。
CDelivery 通過 HURL_VARIABLE_TARGET_URL 提供 TARGET_URL。預設值使用內部 HTTP 地址和所選目標連接埠,因此這個示例檢查應用程式回應,不等同於檢查公網 DNS、外部 HTTPS 憑證或完整用戶端連線路徑。
檔案必須非空,大小不超過 1,023,999 位元組。之後只調整間隔等設定時,可保留已使用的檔案。
自訂指令
自訂檢查使用應用程式映像檔執行,映像檔必須包含所需工具。平台提供:
| 環境變數 | 含義 |
|---|---|
TARGET_HOST |
本輪檢查應存取的應用程式主機 |
TARGET_PORT |
已解析的目標連接埠 |
指令應以結束代碼 0 表示成功,非 0 表示失敗。需要變數替換或管道時,顯式使用映像檔內存在的 shell;不要把檢查任務中的 localhost 當作正在執行的業務容器。
例如映像檔確實包含 curl 和 sh 時:
sh -c 'curl --fail --silent --show-error "http://$TARGET_HOST:$TARGET_PORT/health"'檢查應盡量唯讀,避免週期性檢查重複建立訂單或修改業務資料。
與 Guardian 的關係
驗證檢查穩定可靠後,可以在同一頁面開啟 Guardian,讓相關設定更新先通過候選驗證。本地資料應用程式不支援 Guardian。完整流程見發佈驗證。
刪除檢查會停止後續週期性驗證,並影響依賴它的發佈保護。修改目標、網域或連接埠時,應同時核對檢查仍能解析到正確目標。