Nightwatch: 一个开源、只读的 AI SRE
Nightwatch 是一个开源、本地优先的 AI SRE 层,旨在减少告警疲劳并实现根因分析自动化。它将“告警风暴”——即单个故障导致数十个分散的告警——转化为单个、统一的事件,并利用具备工具调用能力的 AI Agent 来调查实时系统并提出修复建议,这些建议必须由人工操作员审批。
设计上的只读架构
Nightwatch 是严格只读的。它进行观察、推理和建议,但绝不执行命令、确认告警或修改生产环境。每一个提出的修复方案都以可复制粘贴的形式提供,由人工进行把关并执行。这种设计确保了 AI 在调查过程中不会向实时系统中引入新的故障。
AI SRE 调查员
Nightwatch 的核心是一个 AI SRE 调查员,它使用 ReAct 循环(推理 $\rightarrow$ 行动 $\rightarrow$ 观察)从实时系统中收集证据。该 Agent 由一个类型化的只读能力白名单驱动,确保其只能执行读取操作。
调查能力
| 能力 | 只读访问权限 |
|---|---|
| Docker | 容器、日志、统计数据和检查 |
| Kubernetes | 通过集群内 RBAC 访问 Pods、日志、事件和部署 |
| AWS | 通过 IAM 只读角色访问 CloudTrail 变更事件、EC2、安全组和配额 |
| Grafana | 通过数据源代理访问 PromQL 和 LogQL |
| GitHub | 用于变更事件 RCA 的 CI 运行、发布和 PR |
| Git | 用于提交、差异对比和代码搜索的镜像仓库 |
| Host | 普通 VM 的 CPU、内存、磁盘、进程和套接字日志 |
安全与落地性
为了防止幻觉和安全风险,Nightwatch 采用了多种加固措施:
- 注入屏蔽: 对不可信的日志和差异对比进行屏蔽,以防止提示词注入。
- 密钥脱敏: 在发送给 LLM 提供商之前,对凭据和敏感数据进行单向脱敏。
- 落地性闸门: 当主张缺乏证据支持时,限制其置信度水平的机制。
- 动作分类: 每个动作都被分类为
read_only、reversible或irreversible。未知的动作默认被强制分类为irreversible。
通过 Ninox Runners 进行分布式调查
Nightwatch 采用“大脑”与“运行器”架构来调查受限环境中的系统。ninox runner 是一个轻量级的、仅限出站的 Agent,运行在 VPC、集群或本地网段内。Runner 持有本地凭据并向“大脑”发起呼叫,从而消除了对入站防火墙端口开放的需求。
告警聚类与降噪
Nightwatch 位于现有监控工具(如 Prometheus Alertmanager、Checkmk、Icinga2 和 Zabbix)之上,并将告警规范化为统一的模式。然后,它根据主机、服务、严重程度和时间窗口对告警进行聚类,将其分组为单个事件。
该系统还会识别“噪杂”的检查项——即那些频繁波动或过度敏感的检查项——并提供基于规则的调优建议,并附带证据以向人工操作员提供依据。
LLM 集成与隐私
Nightwatch 支持多种 LLM 提供商,包括 Anthropic(调查员的默认提供商)、OpenAI、Mistral,以及通过 Ollama 或 vLLM 使用的本地 LLM。它还包含一个 template 提供商,可以在无需 LLM 的情况下完全离线工作,用于执行基础的摘要和建议。
为了维护隐私,脱敏和密钥脱敏操作会在每次远程调用之前运行,将主机名、IP 和 UUID 替换为确定性的占位符。
社区与扩展
Nightwatch 在 Apache License 2.0 下授权。用户可以通过指向 MCP server、编写 Python 能力插件或使用 runner 协议来扩展 AI SRE 的能力。