# aiops-agent **Repository Path**: wang-guangshuooo/aiops-agent ## Basic Information - **Project Name**: aiops-agent - **Description**: 基于 LangChain + Ollama 的智能运维 Agent:服务器自动巡检、故障定位与 RAG 运维问答 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-21 - **Last Updated**: 2026-10-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AIOps Agent - 智能运维助手 [![Python](https://img.shields.io/badge/Python-3.8%2B-blue)](https://www.python.org/) [![LangChain](https://img.shields.io/badge/LangChain-Agent-green)](https://www.langchain.com/) [![Ollama](https://img.shields.io/badge/Ollama-qwen2.5--7b-orange)](https://ollama.com/) [![License](https://img.shields.io/badge/License-MIT-yellow)](LICENSE) [![CI](https://github.com/wang-guangshuooo/aiops-agent/actions/workflows/ci.yml/badge.svg)](.github/workflows/ci.yml) 基于本地大模型的智能运维助手,支持服务器自动巡检、故障定位和运维问答。 > **开发时间**:2026.03 – 2026.06 完成主体开发;2026.09 完成开源整理(补充文档、容器化与 CI)。 > 项目用于解决「服务器交付后缺少自动化巡检与故障定位手段」的问题,将运维经验沉淀为可复用的 Agent 工具链。 ## 目录 - [功能特性](#功能特性) - [已知问题](#已知问题) - [架构](#架构) - [环境要求](#环境要求) - [快速开始](#快速开始) - [使用方式](#使用方式) - [项目结构](#项目结构) - [配置说明](#配置说明) - [阈值配置](#阈值配置) - [常见问题](#常见问题) - [注意事项](#注意事项) - [更新日志](#更新日志) - [License](#license) ## 功能特性 - **自动巡检**:自动采集服务器指标,生成巡检报告 - **故障排查**:通过自然语言描述问题,Agent 自动调用工具定位 - **RAG 问答**:结合历史故障案例和运维文档进行智能问答 - **GPU 监控**:支持 NVIDIA GPU 监控(可选) ## 已知问题 > 以下三条均已在当前代码中确认(含实测),欢迎提 Issue 或 PR。完整分析见 > [docs/article-juejin-agent-security.md](docs/article-juejin-agent-security.md)。 1. **当前依赖版本下无法启动**:`agent/core.py:4` 的 `from langchain.agents import AgentExecutor, create_react_agent` 在 langchain 1.x 中已被移除 (`AgentExecutor` 迁至 `langchain_classic.agents`);`rag/indexer.py:5` 的 `langchain.text_splitter` 同样已移除。修复导入前,`run.py` 的巡检模式与问答模式都无法运行。 2. **`clean_disk(dry_run=False)` 不会真的删除文件**:函数体只做 `find` 统计, `dry_run=False` 仅把返回文本改成"已清理 N 个文件,释放 X MB"。 在运维场景里,这种"谎报成功"比直接报错更容易误导判断。 3. **危险工具未做强制确认**:`clean_disk` 已注册进 `AVAILABLE_TOOLS`,`dry_run` 由模型自己填; 且 RAG 检索到的知识库内容会原样拼进提示词(`agent/core.py:46`), 提示词层没有"数据 / 指令"的边界标记。 ## 架构 ``` ┌─────────────────────────────────────────┐ │ User Interface │ │ (CLI: inspect / chat) │ └─────────────────┬───────────────────────┘ │ ┌─────────────────▼───────────────────────┐ │ AIOps Agent │ │ ┌─────────────────────────────────┐ │ │ │ LangChain + Ollama/vLLM │ │ │ │ ReAct Agent + Function Calling│ │ │ └─────────────────────────────────┘ │ └──────┬───────────────┬─────────────────┘ │ │ ┌──────▼──────┐ ┌─────▼─────┐ │ RAG 模块 │ │ 工具模块 │ │ FAISS向量库 │ │ 监控/日志 │ └─────────────┘ └───────────┘ ``` ## 环境要求 - Linux (Ubuntu 20.04+) - Python 3.8+ - Ollama (本地部署大模型) - NVIDIA GPU (可选,GPU监控功能) ## 快速开始 ### 1. 安装 Ollama ```bash # 安装 Ollama curl -fsSL https://ollama.com/install.sh | sh # 下载模型 ollama pull qwen2.5:7b # 启动服务 ollama serve ``` ### 2. 配置 ```bash cp .env.example .env # 编辑 .env 修改配置 ``` ### 3. 安装依赖 ```bash bash scripts/start.sh ``` 或手动安装: ```bash pip install -r requirements.txt ``` ### 4. 初始化向量索引 ```bash python -c "from rag.indexer import init_vectorstore; init_vectorstore()" ``` ### 5. 运行 ```bash # 自动巡检模式 python run.py inspect # 交互问答模式 python run.py chat ``` ## 使用方式 ### 巡检模式 执行服务器健康检查,生成报告: ```bash python run.py inspect ``` 输出示例: ``` 【指标】 | 指标 | 状态 | 值 | |------|------|------| | CPU使用率 | ✅ 正常 | 45% | | 内存使用率 | ✅ 正常 | 62% | | 磁盘使用 | ⚠️ 告警 | / 使用率 88% | 【分析】 - 磁盘 / 分区使用率偏高 【建议】 1. 清理 /var/log 下7天前的日志 2. 检查是否有大文件异常增长 ``` ### 问答模式 自然语言描述问题: ``` > 服务器CPU使用率很高,怎么排查? > 磁盘快满了怎么办? > GPU训练任务失败了,显示显存不足 ``` ## 项目结构 ``` aiops-agent/ ├── agent/ # Agent 核心 │ ├── core.py # Agent 主逻辑 │ ├── prompt.py # Prompt 模板 │ └── tools.py # 运维工具封装 ├── rag/ # RAG 模块 │ ├── indexer.py # 向量索引构建 │ ├── retriever.py # 检索召回 │ └── case_store.py # 案例库管理 ├── monitor/ # 监控模块 │ ├── metrics.py # 系统指标采集 │ └── log_parser.py # 日志解析 ├── data/ │ ├── cases/ # 故障案例 │ └── docs/ # 运维文档 ├── scripts/ # 脚本 ├── config.py # 配置 ├── run.py # 入口 └── report.py # 报告生成 ``` ## 配置说明 | 配置项 | 默认值 | 说明 | |--------|--------|------| | OLLAMA_BASE_URL | http://localhost:11434 | Ollama 服务地址 | | MODEL_NAME | qwen2.5:7b | 模型名称 | | FAISS_INDEX_PATH | ./data/faiss_index | 向量索引路径 | | EMBEDDING_MODEL | BAAI/bge-small-zh-v1.5 | Embedding 模型 | ## 阈值配置 | 指标 | 默认阈值 | 说明 | |------|----------|------| | CPU | 80% | 告警阈值 | | 内存 | 85% | 告警阈值 | | 磁盘 | 85% | 告警阈值 | | GPU利用率 | 90% | 告警阈值 | | GPU显存 | 90% | 告警阈值 | ## 注意事项 1. **环境限制**:本项目主要面向 Linux 环境开发,Windows 兼容性有限 2. **GPU功能**:GPU 监控需要 NVIDIA 显卡和 nvidia-smi,无 GPU 时自动跳过 3. **安全提醒**:Agent 默认只执行只读操作,危险操作需用户确认 4. **模型依赖**:需要提前部署 Ollama 并下载模型 ## 常见问题 **Q:没有 NVIDIA GPU 能跑吗?** 能。GPU 监控是可选能力,启动时会探测 `nvidia-smi`,不存在时自动跳过 GPU 相关工具,其余功能不受影响。 **Q:Agent 会不会误执行危险命令?** 不会。工具层默认只封装只读操作(指标采集、日志检索、进程查询),涉及写操作(如磁盘清理)只输出建议命令,需人工确认后执行。Prompt 中亦通过边界约束显式限制处置范围。 **Q:为什么用本地模型而不是调云端 API?** 运维场景常处于内网隔离环境,且日志/指标属于敏感数据。本地化部署(Ollama / vLLM)可保证数据不出内网,同时避免长期调用成本。 **Q:多台服务器怎么巡检?** 当前版本面向单机。多主机批量巡检在规划中,见 [CHANGELOG](CHANGELOG.md)。 ## 更新日志 版本变更记录见 [CHANGELOG.md](CHANGELOG.md)。 ## 贡献 欢迎提交 Issue 与 PR,开发约定见 [CONTRIBUTING.md](CONTRIBUTING.md)。 ## License MIT