sasankkumarjakkamreddy-ai/noc-agent
GitHub: sasankkumarjakkamreddy-ai/noc-agent
这是一个基于AI的自主网络运维系统,通过可审计的推理和人工审批,解决IT主管对AI自动化变更的信任问题。
Stars: 0 | Forks: 0
# NOC Agent — 基于 ServiceNow 的智能事件响应系统
一个自主网络运维系统,能够监控设备、创建 ServiceNow 事件、使用 Claude 诊断根本原因、提出修复方案,并智能验证恢复状态 — 不会盲目自动关闭工单。
基于 **Claude (Anthropic) + LangGraph + FastAPI + React** 构建。
## 问题所在
71% 的 IT 主管不信任 AI 进行自主网络变更。障碍不在于准确性,而在于**可审计性**。大多数 AI 工具只给出答案,却不提供其背后的推理过程。
本系统在每个步骤都展示其工作过程,直接与 ServiceNow 集成,并让智能体自主判断事件何时真正解决。
## 真实工作流程
```
Device degrades / goes offline
↓
monitor.py detects outage (ping threshold breach)
↓
ServiceNow INC created automatically via REST API
↓
Business Rule fires → POST /alerts/servicenow
↓
NOC Agent pipeline: OBSERVE → HYPOTHESIZE → REMEDIATE
↓
4 work notes posted to SN ticket (one per pipeline step)
↓
Human approves remediation in dashboard
↓
Device recovers → monitor detects it
↓
Monitor posts recovery telemetry to SN work notes
↓
Agent re-analyzes: resolved / unstable / different_issue
↓
If resolved → SN ticket closed with resolution summary
If unstable → ticket stays open, work note posted
```
## 管线步骤
| 步骤 | 具体操作 |
|------|----------|
| **观察** | 解析事件 — 提取设备类型、IP、信号、时间线 |
| **假设** | Claude 识别根本原因、证据、置信度百分比 — 具备设备感知能力(家用路由器、企业设备、Meraki、防火墙、Linux、云) |
| **修复** | 生成适合设备类型的修复步骤 + 回滚计划,并评估风险 |
| **人工审批** | 中/高风险操作需人工批准后才能执行 — 绝不会自动执行高风险变更 |
| **审计跟踪** | 每个事件、假设、操作和审批均记录到 SQLite |
| **恢复验证** | 设备恢复后,Claude 重新分析 — 返回“已解决”、“不稳定”或“新问题”的判断 |
## 设备感知修复方案
智能体从事件描述中检测设备类型,并相应调整输出:
| 设备类型 | 修复方案风格 |
|----------|-------------|
| 家用路由器 (192.168.x.x, TP-Link, ASUS) | 浏览器界面操作步骤 + 重启电源说明 |
| Cisco Meraki | Meraki 控制台界面操作 — 无 CLI |
| Cisco IOS XR / ASR / NCS | IOS XR CLI 命令 |
| Juniper JunOS | JunOS CLI 命令 |
| Arista EOS | EOS CLI 命令 |
| Linux / Ubuntu 服务器 | bash/shell 命令 |
| Windows | PowerShell / 图形界面步骤 |
| AWS / Azure / GCP | 云控制台 / CLI 步骤 |
## ServiceNow 集成
智能体在每个管线步骤发布工作笔记,使 SN 工单能完整记录整个流程:
```
[NOC Agent] Received alert — starting automated analysis
[NOC Agent] Observation complete — device, signals, peer IP
[NOC Agent] Root cause identified — cause, confidence %, evidence
[NOC Agent] Remediation plan ready — commands, risk, awaiting approval
[Monitor] Device back online — latency Xms, loss 0%
[NOC Agent] Recovery verified — RESOLVED / UNSTABLE
```
## 项目结构
```
noc-agent/
├── backend/
│ ├── main.py # FastAPI app, all REST endpoints
│ ├── graph.py # LangGraph agent pipeline + SN work notes
│ ├── models.py # Pydantic models incl. ServiceNowWebhookPayload
│ ├── db.py # SQLite audit log
│ ├── servicenow.py # ServiceNow Table API REST client
│ ├── nodes/
│ │ ├── observe.py # Step 1: parse incident (file or webhook dict)
│ │ ├── hypothesize.py # Step 2: Claude root cause analysis
│ │ ├── remediate.py # Step 3: device-aware remediation plan
│ │ └── verify_recovery.py # Step 4: Claude recovery verification
│ └── incidents/
│ └── bgp_down.json # Sample BGP incident for local testing
├── frontend/
│ ├── src/
│ │ ├── App.jsx # Audit dashboard UI
│ │ └── main.jsx
│ └── package.json
├── monitor.py # Device monitor — ping → SN incident → recovery
├── .env.example # Required environment variables
└── requirements.txt
```
## API 端点
| 方法 | 端点 | 描述 |
|------|------|------|
| `GET` | `/` | 健康检查 |
| `POST` | `/alerts/servicenow` | 接收来自 ServiceNow 业务规则的入站 Webhook |
| `POST` | `/alerts/recovery` | 设备恢复后,监控器触发智能体重新分析 |
| `POST` | `/incidents/trigger-async` | 从本地 JSON 文件手动触发(开发/测试) |
| `GET` | `/incidents` | 从审计日志列出所有事件 |
| `GET` | `/incidents/{id}` | 获取单个事件详情 |
| `POST` | `/incidents/{id}/approve` | 批准或拒绝修复方案 |
## 技术栈
| 层级 | 技术 |
|------|------|
| LLM | Claude Sonnet (Anthropic) |
| 智能体编排 | LangGraph |
| 后端 API | FastAPI + Uvicorn |
| 数据库 | SQLite(审计日志) |
| 前端 | React + Vite + Tailwind CSS |
| ITSM | ServiceNow Table API |
| 隧道(开发) | Cloudflare Tunnel |
## 快速入门
### 前置条件
- Python 3.11+
- Node.js 18+
- Anthropic API 密钥
- ServiceNow 实例(可在 developer.servicenow.com 免费申请开发者实例)
### 1. 环境设置
```
cp .env.example .env
# 填写 ANTHROPIC_API_KEY 和 SNOW_* 变量
```
### 2. 后端
```
cd backend
pip install -r requirements.txt
uvicorn main:app --reload --port 8080
```
### 3. 前端
```
cd frontend
npm install
npm run dev
```
### 4. 将后端暴露给 ServiceNow(开发环境)
```
~/bin/cloudflared tunnel --url http://localhost:8080 --no-autoupdate
```
将 `https://*.trycloudflare.com` 网址复制到 ServiceNow 业务规则脚本中。
### 5. ServiceNow 业务规则
在 `incident` 表上创建业务规则:
- **触发时机:** 之后 / 插入
- **脚本:** 调用 `POST {tunnel_url}/alerts/servicenow` 并传入事件字段
### 6. 设备监控器
```
python3 monitor.py --ip 192.168.1.180 --interval 15 --latency-threshold 300 --loss-threshold 20
```
监控目标 IP。中断时 — 创建 SN 事件。恢复时 — 触发智能体重新分析。
## 未来规划
- [ ] 人工批准后通过 NAPALM 执行命令
- [ ] 推送命令前使用 Batfish 进行预验证
- [ ] Kafka 消费者用于高容量告警接入
- [ ] 多供应商 CMDB 数据丰富
- [ ] 审批请求时发送 Slack/Teams 通知
- [ ] Docker Compose 实现一键部署
## 作者
构建 AI 原生的网络运维工具。
[领英](https://www.linkedin.com/in/sasanka-kumar-jakkamreddy-64b00559/) · [GitHub](https://github.com/sasankkumarjakkamreddy-ai/)
## 许可证
MIT
标签:AIOps, BGP监控, Docker 部署, FastAPI框架, IT服务管理, LangGraph工作流, React前端, ServiceNow集成, 人工智能诊断, 人类批准门, 可解释人工智能, 审计跟踪, 根本原因分析, 网络运维, 自主代理系统, 自动化监控, 设备恢复, 逆向工具