Nightwatch: 一款開源、唯讀的 AI SRE

Nightwatch 是一個開源、優先本地化的 AI SRE 層,旨在減少警報疲勞並自動化根因分析。它將「警報風暴」——即單一故障導致數十個分散的警報——轉化為單一、整合的事件,並利用具備工具調用能力的 AI Agent 來調查實時系統並提出修復建議,這些建議必須經由人類操作員核准。

唯讀架構設計

Nightwatch 嚴格遵循唯讀原則。它進行觀察、推理與建議,但絕不執行命令、確認警報或修改生產環境。每一個提出的修復方案都會以可供複製貼上的產物形式提供,由人類進行把關與執行。

這種設計確保了 AI 在調查過程中不會在實時系統中引入新的故障。

AI SRE 調查員

Nightwatch 的核心是一個 AI SRE 調查員,它使用 ReAct 迴圈(推理 $ ightarrow$ 行動 $ ightarrow$ 觀察)從實時系統中收集證據。該 Agent 被一組具備類型的唯讀能力白名單所驅動,確保其只能執行讀取操作。

調查能力

能力 唯讀存取權限
Docker 容器、日誌、統計數據與檢查
Kubernetes 透過集群內 RBAC 存取 Pods、日誌、事件與部署
AWS 透過 IAM 唯讀角色存取 CloudTrail 變更事件、EC2、安全組與配額
Grafana 透過數據源代理存取 PromQL 與 LogQL
GitHub 針對變更事件 RCA 的 CI 執行紀錄、發佈版本與 PR
Git 用於提交、差異比對與代碼搜尋的鏡像倉庫
Host 一般虛擬機的 CPU、記憶體、磁碟、進程與 Socket 日誌

安全與落地實證 (Grounding)

為了防止幻覺與安全風險,Nightwatch 採用了多項強化措施:

  • 注入屏蔽 (Injection Shielding): 對不可信的日誌與差異比對進行屏蔽,以防止提示詞注入 (Prompt Injection)。
  • Secret Scrubbing: 在發送至 LLM 提供商之前,對憑證與敏感數據進行單向脫敏處理。
  • Grounding Gate: 一種當主張缺乏證據支持時,會限制置信度等級的機制。
  • Action Classification: 每一項行動都會被分類為 read_onlyreversibleirreversible。未知的行動預設會被強制歸類為 irreversible

透過 Ninox Runners 進行分散式調查

Nightwatch 使用「大腦 (brain)」與「執行器 (runner)」架構來調查受限環境中的系統。ninox runner 是一個輕量級、僅限出站的 Agent,運行於 VPC、集群或本地部署 (on-prem) 區段內。Runner 持有本地憑證並向大腦發起請求,從而消除了對入站防火牆孔洞的需求。

警報叢集化與雜訊減少

Nightwatch 位元於現有的監控工具(如 Prometheus Alertmanager、Checkmk、Icinga2 與 Zabbix)之上,並將警報正規化為單一架構。接著,它會根據主機、服務、嚴重程度與時間窗口來對警報進行叢集化,將其歸類為單一事件。

該系統也會識別「雜訊」檢查項目——即那些頻繁跳動 (flapping) 或過於敏感的檢查——並提供基於規則的調優建議,並附帶證據以向人類操作員提供理據。

LLM 整合與隱私

Nightwatch is 支援多個 LLM 提供商,包括 Anthropic (調查員的預設值)、OpenAI、Mistral,以及透過 Ollama 或 vLLM 運行的本地 LLM。它還包含一個 template 提供商,可在無需 LLM 的情況下,完全離線地進行基礎摘要與建議。

為了維護隱私,在每次遠端調用之前,都會進行脫敏與敏感數據清理,將主機名稱、IP 與 UUID 替換為確定性的佔位符。

社群與擴展

Nightwatch 採用 Apache License 2.0 授權。用戶可以透過指向 MCP server、編寫 Python 能力插件,或使用 runner 協議來擴展 AI SRE 的能力。

Sources