Health & observability
分開看存活、就緒與工作負載
/healthz 只回答程序事件迴圈是否存活;/readyz 回答資料庫與啟動協調是否可用。單一選配攝影機離線不應讓整個 Runtime 失去 readiness。
GET /healthzLiveness
不需驗證。只用於判斷程序是否需要被重啟。
GET /readyzReadiness
不需驗證、不洩漏密鑰。資料庫不可讀寫或協調未完成時失敗。
已驗證的系統狀態
GET /v1/system
GET /v1/system/resources
GET /v1/system/models使用 GET /v1/system/resources 查詢目前的主機、推理、Webhook、資料庫、SSE、RTSP 與 evidence 容量;這是一次性的 JSON snapshot,不是 Prometheus metrics。
System 摘要包含應用程式與公開契約版本、開機時間、資料庫狀態,以及期望/執行/失敗的 Monitor 數量。Resources 回報主機容量與工作負載;Models 回報推理資料邊界與 readiness。
最小監控欄位
- 每個 Source 的 runtime_state、last_frame_at 與已淨化 status。
- Provider 類型、已淨化 target、資料邊界與 ready。
- CPU load、RAM、程序記憶體與磁碟容量。
- 可用時的 GPU provider 與裝置;無法量測的 VRAM 是 null。
- 推理 queue depth 與執行中工作;目前未量測的 latency percentiles 是 null。
- 待送/重試與 dead-letter Webhook delivery 數。
Container 探針
healthcheck:
test: ["CMD", "python", "/opt/sentinel/healthcheck.py"]
interval: 10s
timeout: 5s
retries: 12
start_period: 45s目前公開契約是上述 JSON endpoint,不包含 Prometheus metrics。若某項資源指標在平台上不可量測,應回傳 unavailable/null,而不是假的 0。