Skip to content
 
 

Repository files navigation

AIops - 智能运维平台

智能运维(AIOps)平台,集成多智能体架构、知识图谱、时间序列预测和根因分析能力。

📁 项目结构

AIops/
├── aiops-platform/          # 智能诊断平台(主项目)
│   ├── backend/             # FastAPI 后端
│   ├── frontend/            # React 前端
│   ├── k8s/                 # Kubernetes 部署配置
│   └── docker/              # Docker 配置
├── knowledge_graph/         # 知识图谱构建与查询
└── time_sequence_prediction/ # 时间序列预测与异常检测
    ├── cpu_anomaly_detection/    # CPU 异常检测
    ├── cost_analysis/            # 成本分析与预测
    ├── microservice_rca/         # 微服务根因分析
    └── security_audit/           # 安全审计

🚀 核心功能

1. aiops-platform - 智能诊断平台

基于多智能体架构的智能运维诊断平台:

  • 多智能体协作:Master、Orchestrator、Intent Parser、Skill Manager 等智能体协同工作
  • 技能系统:支持 MySQL 死锁、Redis 异常、Kubernetes Pod、SLB 负载均衡等诊断技能
  • GNN 根因分析:使用图神经网络进行微服务根因定位
  • Web 界面:React + Vite 构建的现代化前端界面

技术栈

  • 后端:FastAPI + SQLite + Neo4j
  • 前端:React + TypeScript + Vite
  • AI:OpenAI API / 通义千问
  • 部署:Docker + Kubernetes

2. knowledge_graph - 知识图谱

运维知识图谱构建与查询系统:

  • 基础设施图谱:服务器、网络、应用拓扑关系
  • Text2Cypher:自然语言转 Cypher 查询
  • 医疗知识图谱:示例知识图谱构建

技术栈

  • Neo4j 图数据库
  • Python + OpenAI API

3. time_sequence_prediction - 时间序列预测

运维场景下的时间序列分析与预测:

  • CPU 异常检测:多服务器 CPU 使用率异常检测
  • 成本分析:云资源成本预测与异常检测
  • 微服务根因分析:基于 GNN 的微服务故障根因定位
  • 安全审计:SSH、认证、云 API 调用异常检测

技术栈

  • Prophet 时间序列预测
  • PyTorch + PyTorch Geometric
  • 图神经网络(GCN、GAT、GraphSAGE)

🛠️ 快速开始

环境要求

  • Docker Engine 24+ 与 Docker Compose
  • Neo4j 4.4+/5.x(可选)
  • RAG 服务(可选)

使用 Docker Compose 部署前后端

# 在仓库根目录执行
docker compose up --build -d
docker compose logs -f

默认访问地址:

可选环境变量

如需启用真实外部依赖,请先在宿主机导出环境变量再启动:

export OPENAI_API_KEY=your_api_key
export NEO4J_URI=bolt://localhost:7687
export NEO4J_USER=neo4j
export NEO4J_PASSWORD=your_password
export RAG_SERVICE_URL=http://localhost:8001

未设置时,系统仍可启动,但知识图谱、RAG 和部分智能诊断能力会降级。

本地源码开发

# 后端
cd aiops-platform/backend
pip install -r requirements.txt
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload

# 前端(新终端)
cd aiops-platform/frontend
npm install
npm run dev

前端开发模式默认访问 http://localhost:3000,并通过 Vite 代理 /api 到本地后端。

📚 详细文档

🔧 核心技术

Multi-Agent 协同工作机制

架构总览

┌─────────────────────────────────────────────────────────────────────────────┐
│                           Multi-Agent 协同架构                               │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  ┌─────────────┐                                                            │
│  │   用户请求   │                                                            │
│  └──────┬──────┘                                                            │
│         ▼                                                                   │
│  ┌─────────────────────────────────────────────────────────────────────┐   │
│  │                    MultiAgentOrchestrator (编排器)                   │   │
│  │  ┌─────────────────────────────────────────────────────────────┐   │   │
│  │  │                    MasterAgent (大脑中枢)                    │   │   │
│  │  │  • 动态规划诊断流程                                          │   │   │
│  │  │  • ReAct 循环控制                                           │   │   │
│  │  │  • Function Calling 调用工具                                │   │   │
│  │  └─────────────────────────────────────────────────────────────┘   │   │
│  │         │              │              │              │              │   │
│  │         ▼              ▼              ▼              ▼              │   │
│  │  ┌──────────┐   ┌──────────┐   ┌──────────┐   ┌──────────┐        │   │
│  │  │ Intent   │   │ Knowledge│   │Observability│ │ Action   │        │   │
│  │  │ Parse    │   │ Expert   │   │ Analyst    │ │ Execute  │        │   │
│  │  │ Agent    │   │ Agent    │   │ Agent      │ │ Agent    │        │   │
│  │  │ (入口)   │   │ (知识)   │   │ (感知)     │ │ (执行)   │        │   │
│  │  └──────────┘   └──────────┘   └──────────┘   └──────────┘        │   │
│  └─────────────────────────────────────────────────────────────────────┘   │
│         │                                                                   │
│         ▼                                                                   │
│  ┌─────────────────────────────────────────────────────────────────────┐   │
│  │                    ToolRegistry + SkillManager                       │   │
│  │  • 工具注册与执行                                                    │   │
│  │  • Skill 动态加载                                                    │   │
│  │  • 安全检查与审批                                                    │   │
│  └─────────────────────────────────────────────────────────────────────┘   │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

Agent 角色分工

Agent 角色 核心职责 输入 输出
IntentParseAgent 入口网关 NER 实体识别、意图分类 用户自然语言 IntentResult + EntitiesResult
KnowledgeExpertAgent 知识专家 查询知识图谱、RAG 检索 服务名 + 症状 KnowledgeResult (拓扑 + RAG 上下文)
ObservabilityAnalystAgent 感知分析师 收集指标/日志/链路、分析异常 服务 + 实体 ObservabilityResult (分析报告)
MasterAgent 大脑中枢 动态规划、ReAct 循环、决策 所有上下文 DiagnosisDecision
ActionExecuteAgent 执行者 生成安全执行指令 修复方案 ActionResult (含风险评估)

ReAct 循环 (Reasoning + Acting)

┌─────────────────────────────────────────────────────────────────┐
│                    ReAct 循环 (Reasoning + Acting)               │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌──────────┐    ┌──────────┐    ┌──────────┐    ┌──────────┐ │
│  │ Thought  │ ──▶│  Action  │ ──▶│Observation│ ──▶│ Decision │ │
│  │  (思考)  │    │  (行动)  │    │  (观察)   │    │  (决策)  │ │
│  └──────────┘    └──────────┘    └──────────┘    └──────────┘ │
│       ▲                                                │       │
│       └────────────────────────────────────────────────┘       │
│                         (循环直到终止)                          │
│                                                                 │
│  终止条件:                                                      │
│  1. 调用 submit_diagnosis_result 提交结果                       │
│  2. 调用 ask_user_confirmation 需要用户确认                     │
│  3. 达到最大迭代次数 (40)                                       │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

数据流向

用户输入
    │
    ▼
┌──────────────────┐
│ IntentParseAgent │
│ parse()          │───────▶ IntentResult
└──────────────────┘              │
                                  ▼
┌──────────────────┐       ┌──────────────────┐
│ KnowledgeExpert  │◀──────│ MasterAgent      │
│ query()          │───────▶ KnowledgeResult  │
└──────────────────┘       └──────────────────┘
                                  │
                                  ▼
┌──────────────────┐       ┌──────────────────┐
│ Observability    │◀──────│ ToolRegistry     │
│ analyze()        │───────▶ ObservabilityRes │
└──────────────────┘       └──────────────────┘
                                  │
                                  ▼
                           ┌──────────────────┐
                           │ ActionExecute    │
                           │ execute()        │───────▶ ActionResult
                           └──────────────────┘

完整执行示例

用户输入: "order-service 连接池耗尽,帮我排查"

┌─────────────────────────────────────────────────────────────────────────────┐
│ Step 1: IntentParseAgent                                                    │
├─────────────────────────────────────────────────────────────────────────────┤
│ Input:  "order-service 连接池耗尽,帮我排查"                                 │
│ Output: IntentResult(                                                       │
│   intent = "DIAGNOSE",                                                      │
│   entities = {                                                              │
│     "services": [{"type": "SERVICE", "value": "order-service"}],            │
│     "symptoms": [{"type": "SYMPTOM", "value": "连接池耗尽"}]                 │
│   },                                                                        │
│   confidence = "HIGH"                                                       │
│ )                                                                           │
└─────────────────────────────────────────────────────────────────────────────┘
                                    ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ Step 2: Skill 匹配                                                          │
├─────────────────────────────────────────────────────────────────────────────┤
│ Matched Skills: ["debug_skill", "mysql_deadlock_skill"]                     │
│ Content Length: ~15,000 chars                                               │
└─────────────────────────────────────────────────────────────────────────────┘
                                    ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ Step 3: ReAct 循环 (MasterAgent)                                            │
├─────────────────────────────────────────────────────────────────────────────┤
│ Iteration 1:                                                                │
│   Thought: 需要先了解 order-service 的拓扑依赖                              │
│   Action:   query_knowledge_graph(service="order-service")                  │
│   Result:   {upstream: ["payment-service"], downstream: ["user-service"]}   │
│                                                                             │
│ Iteration 2:                                                                │
│   Thought: 需要检查数据库连接状态                                            │
│   Action:   execute_command("SHOW STATUS LIKE 'Threads_connected'")         │
│   Result:   {Threads_connected: 148, max_connections: 150}                  │
│                                                                             │
│ Iteration 3:                                                                │
│   Thought: 连接数接近上限,需要检查慢查询                                    │
│   Action:   execute_command("SELECT * FROM mysql.slow_log ...")             │
│   Result:   {slow_queries: [...], longest_query: "SELECT * FROM orders..."} │
│                                                                             │
│ Iteration 4:                                                                │
│   Thought: 已定位根因,提交诊断结果                                          │
│   Action:   submit_diagnosis_result(                                        │
│               problem_type="connection_pool_exhaustion",                    │
│               root_cause="慢查询导致连接池阻塞",                              │
│               recommendation="优化慢查询 + 增加连接池大小"                   │
│             )                                                               │
│   Result:   {status: "completed"}                                           │
└─────────────────────────────────────────────────────────────────────────────┘
                                    ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ Step 4: 返回结果                                                            │
├─────────────────────────────────────────────────────────────────────────────┤
│ {                                                                           │
│   "final_decision": {                                                       │
│     "problem_type": "connection_pool_exhaustion",                           │
│     "root_cause": "慢查询导致连接池阻塞",                                    │
│     "recommendation": "优化慢查询 + 增加连接池大小",                         │
│     "risk_level": "MEDIUM",                                                 │
│     "confidence": "HIGH"                                                    │
│   },                                                                        │
│   "execution_history": [...],                                               │
│   "duration_seconds": 12.5                                                  │
│ }                                                                           │
└─────────────────────────────────────────────────────────────────────────────┘

关键设计亮点

设计点 实现方式 优势
动态规划 LLM 根据 Skill 内容实时决策 灵活应对各种场景,无需硬编码流程
ReAct 循环 Thought → Action → Observation → Decision 可解释性强,每步都有推理过程
Schema 契约 Pydantic 强类型模型 类型安全,接口清晰
Skill 驱动 关键词匹配 + 渐进式披露 可扩展,易维护
安全防护栏 命令注入检测 + 审批流控 防止误操作,保障生产安全
工具注册制 ToolRegistry 统一管理 解耦工具实现与调用

多智能体架构(简化版)

用户请求 → Master Agent
              ↓
         Intent Parser(意图识别)
              ↓
         Skill Manager(技能匹配)
              ↓
         Orchestrator(任务编排)
              ↓
         Action Executor(执行诊断)
              ↓
         知识库 / 工具 / LLM

GNN 根因分析

使用图神经网络分析微服务调用图,定位故障根因:

  • GCN:图卷积网络
  • GAT:图注意力网络
  • GraphSAGE:大规模图采样

时间序列预测

使用 Prophet 进行时间序列预测和异常检测:

  • 自动检测趋势和季节性
  • 异常点识别
  • 置信区间预测

🎯 应用场景

  1. 故障诊断:自动诊断 MySQL 死锁、Redis 异常、Kubernetes Pod 故障
  2. 根因分析:微服务故障根因定位
  3. 容量规划:CPU、内存、存储容量预测
  4. 成本优化:云资源成本分析与预测
  5. 安全审计:异常登录、API 调用检测

🤝 贡献

欢迎提交 Issue 和 Pull Request!

📄 许可证

MIT License

📧 联系方式

Skill 关键词匹配优化

关键词权重系统

为提高 Skill 匹配准确率,实现了带权重的关键词匹配系统:

WEIGHTED_KEYWORDS = {
    "kafka_skill": {
        "core": {"kafka": 10, "kafka故障": 10, "消息队列故障": 9},      # 核心关键词
        "symptom": {"消息堆积": 10, "consumer lag": 10, "消费延迟": 8}, # 症状关键词
        "component": {"broker": 5, "partition": 5, "topic": 5},          # 组件关键词
        "alias": {"mq": 7}                                                # 别名/缩写
    },
    # ... 34 个 skills
}

权重设计原则

类别 权重范围 说明
core 8-10 核心标识词,如组件名、故障类型
symptom 5-10 症状描述词,如"堆积"、"死锁"
component 3-5 相关组件词,如"broker"、"partition"
alias 6-8 常用别名/缩写,如"mq"、"es"

同义词扩展系统

支持同义词自动扩展,提高匹配召回率:

SYNONYM_MAP = {
    "故障": ["问题", "异常", "错误", "报错", "失败"],
    "慢": ["缓慢", "卡顿", "延迟", "耗时", "响应慢"],
    "不通": ["无法连接", "连不上", "连接失败", "网络不通"],
    # ... 更多同义词
}

SYNONYM_GROUPS = {
    "消息堆积": ["消息积压", "消费延迟", "consumer lag", "队列堆积"],
    "慢查询": ["sql慢", "查询慢", "慢sql", "sql执行慢"],
    "内存溢出": ["oom", "out of memory", "内存不足", "内存泄漏"],
    # ... 更多同义词组
}

匹配流程

用户查询
    ↓
┌─────────────────────────────────────┐
│  1. 文本预处理                       │
│     - 转小写                         │
│     - 合并 symptoms/entities         │
└─────────────────────────────────────┘
    ↓
┌─────────────────────────────────────┐
│  2. 同义词扩展                       │
│     - SYNONYM_MAP 基础同义词         │
│     - SYNONYM_GROUPS 场景同义词      │
└─────────────────────────────────────┘
    ↓
┌─────────────────────────────────────┐
│  3. 加权关键词匹配                   │
│     - WEIGHTED_KEYWORDS 权重匹配     │
│     - SKILL_REGISTRY 关键词补充      │
└─────────────────────────────────────┘
    ↓
┌─────────────────────────────────────┐
│  4. 组件优先级加分                   │
│     - java/jvm → jvm_skill +15       │
│     - kafka → kafka_skill +10        │
│     - nginx → nginx_skill +10        │
└─────────────────────────────────────┘
    ↓
┌─────────────────────────────────────┐
│  5. 排序返回 Top-5                   │
│     - 得分 >= 5 或 Top-3 返回        │
└─────────────────────────────────────┘

匹配效果对比

查询 优化前 优化后
kafka消息积压严重 kafka_skill (43) kafka_skill (53) ✓
数据库查询很慢 mysql_slow_query_skill (8) mysql_slow_query_skill (24) ✓
mysql锁死了 debug_skill (9) mysql_deadlock_skill (9) ✓
java内存溢出 debug_skill (18) jvm_skill (27) ✓
java oom debug_skill (43) jvm_skill (43) ✓
pod起不来 k8s_pod_skill (18) k8s_pod_skill (18) ✓

如有问题或建议,请提交 Issue。

About

Intelligent AIOps platform with multi-agent architecture, knowledge graph, and time series prediction

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages