2026年6月8日 2 分钟阅读

深夜告警风暴不再可怕:用 Nightwatch 开源 AI SRE 自动锁定根因

tinyash 0 条评论

当 50 条告警指向同一次故障

凌晨 3 点,你被 PagerDuty 的连续推送吵醒。Kubernetes 升级出了岔子,Prometheus 爆了 47 条告警、Checkmk 报了 23 条、Icinga2 又追了 12 条。你被淹没在 80 多条告警中,花了 40 分钟才发现——所有这些告警的根因是同一个:kubelet 证书过期导致的节点 NotReady。

这不是个例。几乎所有 SRE 团队都面临同一个问题:告警系统每一条告警都正确,但它不会帮你归纳总结。你在搜日志、查指标、翻变更记录之间疲于奔命,而每次故障中最耗时的环节不是修复,而是定界——搞清楚到底哪里出了问题。

Nightwatch 正是为了这个场景而生。它是一个开源的、只读的 AI SRE 层,把告警风暴聚合成单个事件,用 AI Agent 自动调查根因,然后给出分类后的修复方案——全程只读,永不触碰生产环境。

传统值班 vs Nightwatch

维度传统告警处理使用 Nightwatch
告警数量一次故障触发 50+ 条告警自动聚类为 1 个事件
定界时间手动排查 30-60 分钟AI Agent 数分钟给出根因假设
修复方案凭经验猜测修复步骤按风险等级给出修复建议
噪声处理长期忍受重复告警自动标记 flapping 和误报
架构侵入需要修改监控配置只读适配器,零侵入接入

60 秒快速部署

Nightwatch 不需要复杂的 K8s 集群部署。一条命令即可启动所有组件:

git clone https://github.com/ninoxAI/nightwatch.git
cd nightwatch
cp .env.example .env
docker compose up --build

启动后访问 http://127.0.0.1:8765,你就获得了一个完整的 AI SRE 控制台。如果想在无监控环境尝鲜,可以生成模拟数据:

docker compose exec ninoxai ninoxai generate-mocks
docker compose exec ninoxai ninoxai import data/mock_alerts.json
docker compose exec ninoxai ninoxai reprocess

核心功能一:告警风暴 → 事件聚类

Nightwatch 的核心流程是:ingest → normalize → cluster → score noise → recommend → investigate

它从 Prometheus Alertmanager、Checkmk、Icinga2、Zabbix、K8s、AWS 等源拉取告警(只读适配器,不做写操作),然后做三层归一化:

  1. 消息指纹:将不同源的告警按内容做标准化——同一台机器的磁盘写满,Prometheus 叫 DiskSpaceCritical,Checkmk 叫 fs_root_full,Nightwatch 把它们归为同一组
  2. 主机/服务/时间窗口聚类:在同一时间窗口内、同一主机上触发的一组告警,自动合并为一个事件
  3. 跨工具关联:真正优秀的聚类在于跨工具——一个 kubelet 证书过期,会在 Prometheus、K8s 事件、容器日志三个源头同时报错。Nightwatch 的 Incidents 视图会标注 confirmed by N tools,让你一眼就知道这不是偶发

核心功能二:噪声评分(Noise Scoring)

每个 SRE 都曾被「假告警」折磨过。一个频繁自动恢复的 flapping 检查、一个阈值设得太低永远触发的告警——这些噪声会在 PagerDuty 上留下无数废页面。

Nightwatch 用 5 个维度给每条告警管线打噪声分:

  • 触发频率(per hour)
  • 人工确认率(平均有多少告警被人为确认)
  • 提单率(平均有多少告警被转为工单)
  • 短恢复次数(告警后 5 分钟内自动恢复的比例)
  • Flapping 程度(同一条件短时间内进入退出的次数)

每个维度归一化为 0-1 分,最终给出一条「噪声指数」。得分高的检查会被标记为 noisy,并附带调整建议——比如延长评估周期、提高阈值或降低严重级别。

核心功能三:AI SRE 根因调查(只读 Agents)

这是 Nightwatch 最亮眼的特性。传统的 AI Ops 只能做模式识别,而 Nightwatch 用一个工具调用(tool-calling)LLM 在你的生产系统上做只读调查

Agent 的能力覆盖面相当全面:

调查能力读取的内容(全部只读)
🐳 Docker容器状态、日志、stats、inspect
☸️ KubernetesPods、日志、events、Deployments
☁️ AWSCloudTrail 变更事件、EC2、安全组、配额
📈 GrafanaPromQL + LogQL 查询(通过 datasource 代理)
🐙 GitHubCI 运行、发布、PR
🌿 Git提交历史、差异、代码搜索
🖥️ 主机CPU/内存/磁盘/进程/日志

Agent 的每个动作都被分类为 read_only(安全)、reversible(可逆)、irreversible(不可逆),任何未知动作默认为最高风险等级。你永远不用担心 Agent 误操作——它只有眼睛,没有手。

运行模式有两种:

  • 控制台模式:在 http://localhost:8765/agent 里实时观察 Agent 思考→取证→推理的过程
  • CLI 模式:在终端直接发起调查

Agent 调查完成后会输出一个结构化的根因假设,包含:

Root Cause Hypothesis (confidence: 0.87)
├── Primary: kubelet certificate expired at Jun 8 03:15 UTC
│   ├── Evidence: kubelet.log shows "x509 certificate has expired"
│   └── Impact: Node node-03 NotReady → 47 workloads pending
├── Fix Proposal (risk: read-only)
│   └── Run: kubeadm certs renew all; systemctl restart kubelet
└── Fix Proposal (risk: reversible)
    └── Drain + cordon + reboot node-03 in maintenance window

每个修复建议都附有可复制的命令、风险等级和影响范围——由人类审批后再执行。

分布式部署:ninox 远程探测器

Nightwatch 支持在大规模环境下通过 ninox runner 实现分布式监控。每个 ninox 是一个纯出站的瘦进程,部署在被监控环境(K8s 集群、VPC、on-prem 网段)内部,仅从内部向外发起连接——不给生产环境开任何入站防火墙端口

每个 ninox 保留所在环境的凭证本地,只暴露只读能力给 Nightwatch 大脑。所有 agent 调用看起来像本地调用,但实际是在远程 ninox 上执行的。这种方式让你可以在内网段、DMZ、多云环境间部署统一的 AI SRE,而不破坏网络隔离策略。

横向对比

在当前的开源生态中,Nightwatch 的定位非常独特:

工具定位读写模式AI 能力部署方式
NightwatchAI SRE 告警根因分析只读GPT-4/Claude Agent 调查Docker / Python
Prometheus + Grafana监控 + 可视化读(采集)+ 写(告警)集群部署
BigPanda商业 AIOps 事件管理只读集成专有 ML 模型SaaS
PagerDuty事件响应平台集成多源基础 AIOpsSaaS
Moogsoft商业 AIOps只读集成专有算法SaaS / 自托管

Nightwatch 的核心差异化在于:

  1. 开源 + 本地优先:数据不离开你的网络
  2. AI Agent 是真正的调查者:不是模式匹配,而是像人一样读日志、查指标、搜变更
  3. 只读架构:从设计上杜绝了 AI 误操作的可能

注意事项

  • Nightwatch 的 AI Agent 需要一个工具调用型 LLM(支持 Anthropic、OpenAI 或本地 Ollama)。如果只做告警聚类和噪声评分,可以完全离线运行
  • 当前版本(0.1.0)主要面向 Python 3.11+,Docker 部署是官方推荐方式
  • 项目非常新(2026 年 6 月 4 日创建),社区和文档仍在快速迭代中。issue tracker 响应很及时
  • 如果被监控环境是纯 Windows,目前 ninox runner 的支持有限——优先考虑 Linux/macOS 环境
  • 许可证:Apache 2.0,可自由商用

总结

Nightwatch 解决了一个每个 SRE 团队都会遇到的真实问题:告警数量远超过人脑的处理能力。它不引入新的监控系统,而是在现有体系之上加了一个 AI 驱动的「归纳层」——用 AI Agent 替你回答「现在到底出了什么问题?」和「我应该先做什么?」这两个关键问题。

对于中小型团队(没有专职 SRE 的 DevOps 团队)、以及 K8s 环境复杂的团队,Nightwatch 的价值尤其明显。它把告警从「噪音」变成了「信息」,把值班工程师的精力从「会诊定界」解放到「决策修复」上。

链接GitHub 仓库 | 官方文档 | 许可证:Apache 2.0

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。