aiyiyi121/sxdevops

SxDevOps 是一个面向真实运维现场的开源智能运维 Agent 平台。它把 CMDB、可观测性、事件中心、任务中心、工单审批、容器管理、RBAC 等平台能力组织成 Agent 可调用、可审计、可确认的运维工作流。

SxDevOps — 它是什么

SxDevOps 是一个将 AI 代理引入实际 IT 运维("运维")的开源平台。其座右铭是 "三思而后行,行必有据" —— 它不是一个聊天机器人,而是一个将分散的运维工具转化为受控工作流的系统:观察情况 → 寻找证据 → 询问系统 → 确认操作。

它解决的问题

在传统运维中,信息和操作是碎片化的:

  • 警报显示红点,但日志、链路追踪和最近的变更存在于其他系统中。
  • 发布、审批、任务结果和关键操作分散在各个页面,导致事后复盘成本高昂。
  • 巡检、批量命令、脚本模板和主机权限是断开的。
  • 故障排除经验存在于人的脑海中,无法复用。

SxDevOps 将这些碎片串联成一条链:用于证据的可观测性、用于审查的事件中心、用于执行的任务中心,以及用于理解、规划和结构化输出的 AIOps。

核心模块

模块 功能
CMDB 资产台账、业务资源树、同步/接入、容量等级、治理、拓扑、明确的任务-资源关联
AIOps Agent LangGraph 编排、自然语言取证、可复用技能、任务草稿、人工确认、执行审计、操作后恢复验证
可观测性 平台概览、系统状态、指标查询、日志搜索、链路追踪、Grafana 面板、数据源管理
事件中心 故障事件定位、关键操作记录、事件源集成、操作审计、按系统/环境/应用/时间过滤
任务中心 主机任务、批量命令、脚本模板、资源组、任务草稿、执行历史、定时任务
工单系统 应用发布、审批流程、SQL 审计、事务工单、变更轨迹
容器管理 Kubernetes/Docker 工作台、资源与 YAML 预检、范围授权、容量、交互式终端、历史日志
权限与审计 RBAC 统一应用于后端 API、前端路由、菜单、按钮和 WebSocket 场景

代理的工作原理

这不是“用户提问 → LLM 自由回答”,而是一个受控的流水线:

  1. 动作路由 — 对请求进行分类(警报根因、日志查询、K8s 诊断、变更关联、任务生成……)并声明风险等级、所需上下文、输出结构和确认策略。
  2. 代理模式 — 选择执行风格:Direct(单一只读或明确动作)、ReAct(推理 → 行动 → 观察)或 Plan + ReAct(多步深度故障排除)。
  3. 预检 — 在任何写入、生成或执行之前:权限检查、风险评估、依赖检查、缺失参数补全、回滚准备。如果失败,返回表单或询问缺失信息。
  4. 技能 / SOP — 领域能力包,约束证据清单、查询规则、输出格式和安全边界,防止模型随意发挥。
  5. MCP / 工具注册表 — 将平台和外部系统包装为可治理的工具。最终可用工具集 = 技能工具依赖 ∩ MCP 可用性 ∩ 用户 RBAC ∩ 动作安全策略。
  6. 结构化事实 — 日志、指标、链路、警报、事件、执行结果。
  7. 两阶段答案塑造 — 结论、证据、风险、建议操作。
  8. 待处理动作 — 任何写入/执行动作都成为待确认项;仅在用户确认后,平台 API 才会执行(带有 RBAC、参数清洗、超时控制)。
  9. 反馈循环 — 结果返回任务中心、事件中心和审计追踪。

治理原则:

  • 平台 API 是唯一的执行边界 —— 模型理解、规划并生成候选参数,但永远无法绕过后端触碰资源。
  • 只读诊断可以直接返回事实;生成/写入/执行动作必须经过预检 → 确认 → 执行。
  • 前端权限显示仅为 UX;后端 RBAC 才是真正的安全边界。
  • 一切皆可审计:会话、工具调用、预检、待处理动作、执行结果、关键事件。

典型场景

“分析生产订单中心异常” —— 传统上你需要手动在警报平台、日志中心、链路系统和发布记录之间切换。在 SxDevOps 中,代理将它们串联起来:用户用自然语言提问 → 代理选择警报/日志/链路/事件/任务工具 → 后端在 RBAC 和超时控制的白名单下执行工具调用 → 平台聚合结构化证据 → 技能输出结论、证据、风险和建议操作 → 如果需要巡检或命令执行,则生成任务草稿,仅在用户确认后进入任务中心 → 结果写回事件中心和审计追踪。

v2 亮点

  • CMDB:统一的资产/资源树/容量/同步/治理;任务中心明确关联 CMDB 资产;拓扑支持精确范围和 1-3 跳邻居。
  • AIOps/LangGraph:默认聊天使用持久化图编排;分阶段取证、工具循环、任务草稿、回复修复;独立工作进程、检查点恢复、租约接管、节点审计;操作后警报恢复验证。
  • 容器管理:统一的 Kubernetes/Docker 工作台;YAML 干运行预检;范围授权;交互式终端;基于游标分页的历史日志。
  • UX:三种主题(浅色、炭黑、深蓝灰);集中式侧边栏导航;系统设置(站点名称、图标、菜单排序)。

技术栈

  • 后端:Django REST framework, Channels, Daphne
  • 代理编排:LangGraph;检查点存储在 PostgreSQL/MySQL/SQLite;基于数据库的任务队列,带有独立工作进程
  • 前端:Vue 3, Vue Router, Pinia, Element Plus, ECharts, Vite
  • 数据库:PostgreSQL 16 默认(推荐),MySQL 8 可选,SQLite 用于本地测试
  • 缓存/实时:Redis, Channels Redis
  • 外部集成:Kubernetes API, Docker, SSH, Prometheus/Grafana, SkyWalking, Tempo, Jaeger, Zipkin, Loki/ELK/SLS

快速启动

需要 Docker (v20.10+, 带有 Compose V2)。从仓库根目录执行:

sh start.sh        # Linux/macOS
.\start.cmd       # Windows

脚本会生成并保存密钥、构建镜像、启动应用 + PostgreSQL + Redis + CMDB 调度器 + AIOps 工作进程,并运行数据库迁移。首次运行仅要求设置 admin 密码 —— 无需手动创建 .env。然后打开 http://localhost:8000/login,用户名 admin,密码为你设置的密码。没有固定的默认密码;演示数据默认关闭。重新运行同一命令会保留配置和账户。也支持通过 python3 k8s/deploy.py <image> 进行 Kubernetes 部署。

诚实的局限性

  • 处置验证仅表明观察到了警报恢复 —— 它不能证明因果关系或整体业务健康状况。
  • 完整的后端测试套件仍存在已知失败;部分测试通过不能替代完整套件的结果。
  • 该项目采用 MIT 许可:可自由使用、修改、分发和商业使用,需署名且无担保。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目