Sentinel API v1

從第一個 API 呼叫到正式環境

Health & observability

分開看存活、就緒與工作負載

/healthz 只回答程序事件迴圈是否存活;/readyz 回答資料庫與啟動協調是否可用。單一選配攝影機離線不應讓整個 Runtime 失去 readiness。

GET /healthz

Liveness

不需驗證。只用於判斷程序是否需要被重啟。

GET /readyz

Readiness

不需驗證、不洩漏密鑰。資料庫不可讀寫或協調未完成時失敗。

已驗證的系統狀態

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。