oselo3/infraagent

GitHub: oselo3/infraagent

InfraAgent 是一套气隙环境下的自主 AI 事件响应系统,通过本地 LLM 驱动故障诊断与 Ansible 自动修复,解决无互联网连接的关键基础设施运维难题。

Stars: 0 | Forks: 0

# InfraAgent **针对气隙基础设施的自主 AI 事件响应。** InfraAgent 监控生产系统,检测故障,使用本地托管的 LLM 诊断根本原因,并执行修复 —— **完全离线,无云依赖。** 低风险故障可自主恢复;高风险操作需操作员批准方可执行。它专为全国规模的计算机化测试 (CBT) 基础设施而构建,并在此类实际环境中进行了测试。 ![Python](https://img.shields.io/badge/python-3.11-blue) ![LLM](https://img.shields.io/badge/LLM-Mistral%207B%20(local)-orange) ![Deployment](https://img.shields.io/badge/deployment-air--gapped-red) ![Status](https://img.shields.io/badge/status-production%20tested-green) ## 问题所在 主流的 AIOps —— Datadog、PagerDuty、事件 copilot —— 都基于两个假设,而 InfraAgent 的环境并不具备:**可靠的互联网连接和可调用的 SaaS 后端。** 目标环境是一个全国规模的 CBT 部署:跨越 **70 多台服务器**和 **约 70 个物理地点**,每个考试周期最多容纳 **60,000 名考生**,在**不稳定的电网供电**下**气隙(无互联网出口)**运行。当服务在考试期间中断时,每一分钟都是考生的时间损失,而在大规模下,这就是一场后勤和声誉危机。不可能每个地点都常驻一名工程师,且任何设备都不允许连接外部网络。 因此,限制条件非常苛刻:**在普通服务器硬件上,完全在气隙网络内进行自主检测和恢复。** 这排除了市面上所有基于云的 AIOps 产品 —— 而这正是 InfraAgent 填补的空白。 ## 它的功能 ``` observe → detect → diagnose (LLM) → remediate → verify ``` InfraAgent 持续收集系统指标,根据告警规则检测异常,将告警上下文传递给**能够推理根本原因的本地 LLM**,将诊断映射到** Ansible 修复 playbook**,执行该 playbook 并确认恢复 —— 所有过程均不离开气隙网络。 ## 架构 一个五层的边缘 AIOps pipeline。遥测数据向上流动;决策和操作向下流动。 ``` flowchart TD subgraph L1["Layer 1 · Metrics Collection"] A[Node Exporter :9100
CPU · RAM · disk I/O · network · processes] A2[CBT Exporter
cbt_container_running · cbt_http_up :80] end subgraph L2["Layer 2 · Monitoring & Alert Correlation"] B[Prometheus
scrape every 15s · evaluate alert rules] B2[Alertmanager
deduplicate · group · route] end subgraph L3["Layer 3 · AI Reasoning & Decision"] C[LangChain agent + Ollama / Mistral 7B
classify failure & severity · select playbook · risk-gate] end subgraph L4["Layer 4 · Remediation & Execution"] D1[Low-risk → autonomous] D2[High-risk → operator approval] D[Ansible via Docker socket] end subgraph L5["Layer 5 · Audit & Notification"] E[Structured local audit log
Telegram summary after exam] end A --> B A2 --> B B --> B2 B2 -->|structured alert payload| C C -->|low risk| D1 C -->|high risk| D2 D1 --> D D2 -->|on approval| D D -->|apply fix| F[(Examination server)] F -->|metrics confirm recovery| A C --> E D --> E style C fill:#f97316,stroke:#c2410c,color:#fff ``` Layer 3 中的所有推理均在**设备端(on-device)**运行 —— 在考试期间的任何时刻都不需要互联网。由于服务器在考试进行时处于气隙环境中,因此通知是**延迟发送的**:事件会实时写入本地审计日志,待考试结束且网络连接恢复后,再通过 Telegram 发送。 ## 已测试的故障模式 InfraAgent 已在**生产环境中的 HP ProLiant 服务器(Ubuntu 24.04 LTS)上进行了端到端验证**,涵盖四种真实故障模式。每种模式都经过了触发、检测、分类,并在安全允许的情况下进行了自主修复。指标遵循标准的 **MTTD**(平均检测时间)和 **MTTR**(平均恢复时间)定义。 | 故障模式 | 描述 | MTTD | MTTR | 分类与操作 | 结果 | |--------------|-------------|------|------|-------------------------|--------| | **FM-01** | CBT 应用崩溃 | ~15秒 | ~30秒 | 正确 — `restart_cbt_service` | ✅ 通过 | | **FM-02** | CPU 使用率过高 | ~75秒 | ~90秒 | 正确 — `kill_rogue_process` | ✅ 通过 | | **FM-03** | 网络不可达 | ~150秒 | 取决于操作员 | 正确 — `flag_network_unreachable` | ✅ 通过 | | **FM-04** | 应用层错误 | ~15秒 | ~45秒 | 正确 — `restart_app_capture_log` | ✅ 通过 | **核心结果:** InfraAgent 检测并**正确分类了所有四种故障模式**,在 **≤90 秒**内自主恢复了所有可修复的案例。唯一的高风险模式 —— 可能需要人工物理干预的网络不可达 —— 被正确地**暂停并等待操作员批准**,而不是盲目执行,这完全符合风险控制设计的初衷。 ## 技术栈 | 层级 | 技术 | |-------|-----------| | 指标收集 | Node Exporter + 自定义 CBT Exporter | | 监控与告警关联 | Prometheus, Alertmanager | | AI 推理与决策 | LangChain, Ollama, Mistral 7B (本地推理) | | 修复与执行 | Ansible (通过 Docker socket) | | 审计与通知 | 结构化本地日志, Telegram (延迟发送) | | 运行环境 | Docker Compose | | 主机 | HP ProLiant · Ubuntu 24.04 LTS | | 语言 | Python 3.11 | 每个组件都在**本地且离线运行** —— 无外部 API,无云端 LLM,无网络出口。 ## 工作原理 1. **收集。** Node Exporter (`:9100`) 暴露系统指标,而自定义的 **CBT Exporter** 补充了应用层面的健康状态 —— 包括 CBT 容器是否正在运行,以及它是否在 `:80` 端口上响应 HTTP。Prometheus 每 15 秒抓取一次这两者的数据。 2. **检测与关联。** Prometheus 评估告警规则;Alertmanager 对相关告警进行去重和分组,使得服务崩溃及其引发的下游 HTTP 故障合并为**一个**事件,而不是引发一场告警风暴,然后再将结构化的 payload 转发出去。 3. **推理与决策。** LangChain agent 将 payload 传递给本地的 Mistral 7B 模型(通过 Ollama 实现,完全离线),该模型根据故障类型和严重程度进行分类,选择匹配的 Ansible playbook,并分配风险等级。 4. **修复。** 低风险故障(服务崩溃、CPU 过高、应用错误)通过 Docker socket 由 Ansible 自主修复。高风险故障(例如可能需要物理干预的网络不可达)在执行任何操作之前会暂停以等待**操作员批准** —— 系统绝不会在无人值守的情况下采取不可逆的操作。 5. **审计与通知。** 在考试期间,每一个操作都会被写入结构化的本地审计日志;一旦考试结束且网络连接恢复,完整的事件与解决总结将通过 Telegram 发送。 ## 挑战所在(及其重要性) 在**完全没有互联网**且服务器硬件配置有限的情况下,运行 LLM 推理循环,且速度要快到足以在考试期间发挥实质性作用,这是核心的工程挑战。InfraAgent 证明了自主的、基于 LLM 的事件响应在边缘环境是可行的,尤其是在那些基于云的 AIOps 无法触及的、受限且高风险的环境中。 ## 局限性与路线图 - **固定的修复目录。** Agent 从预定义的 Ansible playbook 集中进行选择;没有匹配 playbook 的故障将被升级给操作员,而不是自主解决。扩大覆盖范围的工作正在进行中。 - **单节点验证。** 目前已在一台考试服务器上进行了端到端测试。跨越所有约 70 个地点的全网协调是未来的工作。 - **离散的故障模式。** 分类已在四种不同的模式下进行了验证;尚未对复合或级联故障进行评估。 - **检测延迟受间隔限制。** MTTD 在一定程度上受制于 15 秒的抓取和规则评估周期;缩短该周期会增加告警噪音。 ## 关于 由 **Ebenezer Olumeyan** 构建,作为信息技术专业硕士(人工智能方向)的毕业设计。这项工作源于运营全国规模 CBT 基础设施的实践:涉及 70 多台服务器、约 70 个地点、每个周期数以万计的考生,在这些场景中,云工具并不可行,且宕机是完全无法接受的。 📫 oselo3@gmail.com
标签:AIOps, AI风险缓解, Ansible, DLL 劫持, 大语言模型, 智能运维, 版权保护, 离线部署, 系统提示词, 自动化响应, 自定义请求头, 逆向工具