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集成, 人工智能诊断, 人类批准门, 可解释人工智能, 审计跟踪, 根本原因分析, 网络运维, 自主代理系统, 自动化监控, 设备恢复, 逆向工具