从零构建轻量级云平台自动化运维系统 — 16 个模块全栈实战
一个 Python + Flask 全栈项目,覆盖资产管理、批量作业、工单协同、3D 拓扑、AI 助手、Agent 探针等企业级运维场景。
Cloud Auto-Ops
为什么做这个项目?
在云计算普及的今天,企业服务器数量动辄成百上千台。传统的"SSH 上去敲命令"运维方式早已捉襟见肘——效率低、容易出错、操作无法追溯。市面上的商业运维平台(如 SaltStack、Ansible Tower、蓝鲸)功能强大但部署复杂、资源占用高,对于中小团队来说"杀鸡用牛刀"。
于是我想:能不能用 Python 快速搭建一个轻量级但功能齐全的自动化运维面板?
答案是:可以。 仅需 Python 3.6+、Flask 和 Paramiko 三个核心组件,就能构建一个覆盖日常运维全场景的管理平台。
技术选型与架构设计
为什么选这些技术?
| 组件 | 选型理由 |
|---|---|
| Python | 运维领域事实标准,Paramiko/Psutil 等生态成熟 |
| Flask | 轻量 Web 框架,单文件即可启动,适合中小项目 |
| SQLite | 零配置零依赖,本地数据存储最佳选择 |
| Paramiko | Python SSH 库,远程执行命令/传输文件的核心 |
| Bootstrap 5 | 响应式 UI,CDN 引入无构建步骤 |
| Chart.js / Three.js | 监控图表 + 3D 拓扑,同样 CDN 零配置 |
| DeepSeek API | 国产大模型,中文理解能力强,成本低 |
架构设计哲学
整个系统遵循"管理端在本地,执行端在远程"的架构:
┌─────────────────┐ SSH ┌──────────────────┐
│ Windows 管理端 │ ←──────────────────→ │ Linux 服务器集群 │
│ │ Paramiko 执行命令 │ │
│ Flask + SQLite │ ←──────────────────→ │ Agent :18500 │
│ localhost:5000 │ HTTP 拉取监控数据 │ 采集 + 面板 │
└─────────────────┘ └──────────────────┘
为什么管理端在 Windows? 因为运维工程师日常使用 Windows 笔记本,不需要额外搭建 Linux 服务器来跑面板。SQLite 本地存储让部署变成"双击即用"。
远程执行怎么实现? 通过 Paramiko 建立 SSH 连接,在目标 Linux 上执行命令并回传结果。Agent 探针是可选增强——对于需要持续监控的主机,部署一个 200 行的 Python 脚本即可获得独立 Web 面板。
16 大功能模块详解
一、仪表盘 — 运维全局视图
打开 http://localhost:5000,第一眼看到的是运维大屏:
- 8 个统计卡片:服务器总数、在线/离线、容器/服务数、告警/部署统计
- 故障速览:今日告警、异常主机列表、停止容器数、证书过期、失败操作数
- 健康评分:综合各维度计算 0-100 分,绿/黄/红三色直观判断
- 一键巡检:对所有在线主机执行 5 项健康检查(磁盘、内存、负载、僵尸进程、运行时间)
- 快捷入口:批量执行、新建发布、新增主机、AI 助手一键跳转
数据 15 秒自动刷新,后台每分钟采集资源数据存入 SQLite,趋势图数据源持续积累。
二、主机管理 — 服务器台账
支持主机的增删改查、SSH 连通性检测、分组管理。每台主机存储:
- 连接信息:IP、端口、用户名、密码(加密存储于本地 SQLite)
- 资产信息:OS 版本、内核、CPU 型号/核数、内存/磁盘、运行时长
- 标签体系:环境(开发/测试/生产)+ 自定义标签
添加主机后,所有其他模块(监控、部署、终端、批量作业)均可直接选择主机自动填充连接信息。
三、资产管理 — 自动探测纳管
点击"自动探测"按钮,系统通过 SSH 自动采集:
- 硬件信息:OS 版本、内核版本、CPU 型号、CPU 核数、内存大小、磁盘容量
- 软件台账:Docker、Python、Java、Nginx、MySQL、Node.js、GCC、Git 的安装版本
- 系统统计:已安装 RPM 包总数
采集结果自动更新数据库,支持按环境/分组/标签筛选查看。
四、资源监控 — 实时 + 趋势
实时监控:选择主机后,Chart.js 渲染环形仪表盘,每 5 秒自动刷新 CPU/内存/磁盘使用率。颜色随数值自动变化——绿色正常、黄色警告(>70%)、红色危险(>85%)。
资源大盘:后台每分钟采集数据存入 resource_history 表,大盘页渲染折线图展示过去 1 小时趋势。四条曲线:
- CPU 使用率
- 内存使用率
- 磁盘使用率
- 网络流量(RX/TX Mbps)
底部统计摘要显示均值、峰值。
五、批量作业 — Ansible 核心能力
这是运维自动化最高频的功能:选中多台主机,输入一条命令,同时执行。
- 多选主机(checkbox 列表)
- 命令模板(系统状态、重启 Nginx、更新系统)
- 每台主机实时回显执行结果(成功 ✅ / 失败 ❌ + 完整输出)
- 自动记录操作日志
脚本库:保存常用 Shell/Python 脚本,支持参数传入、版本编辑,点击一键加载到批量执行区。
定时任务:类似 Crontab 但可视化配置。选择主机、输入 Cron 表达式、填写命令,统一管理所有定时任务。支持启用/禁用开关。
六、自动部署 — 文件 + 命令 + Agent
选择目标主机后,自动填充连接信息,无需每次手动输入密码:
- 远程命令:一行命令即时执行,终端风格黑色输出框
- 文件上传:选文件 → 填远程路径 → 上传(智能处理目录路径,自动拼接文件名)
- Agent 一键部署:点击按钮自动完成 SFTP 上传 agent.py、安装 systemd 服务、启动、开机自启、端口验证
七、Web 终端 — 网页版 SSH
不需要安装 Putty/Xshell,直接在浏览器里操作远程 Linux:
- 选主机 → 输入命令 → 回车执行
- 支持 ↑↓ 键盘历史记录
- 快捷命令:ls、df、free、ps、ports、docker、sshd
- 黑色终端风格,白字输出
八、进程服务管控
进程管理:实时显示 Top 进程(CPU 排序),支持过滤搜索、单个/批量 KILL。
系统服务:列出所有 systemd 服务及状态,支持启动/停止/重启/自启。
端口检测:netstat -tulnp 扫描所有 TCP/UDP 监听端口,显示占用进程。每个端口自动检测防火墙状态(已开放/未开放),点击即可开放或关闭防火墙端口。
守护进程:为自定义业务程序创建守护脚本,崩溃自动重启,限制最大重试次数。
九、工单协同管理
看板式四列布局,拖拽式工作流:
| 待审批 | 处理中 | 已审批 | 已关闭 |
|---|
工单类型:发布申请、变更申请、故障报修、主机申请、数据库变更。
每张工单包含:
- 标题、类型、优先级(低/中/高/紧急)
- 风险等级 + 变更方案 + 回滚预案
- 维护窗口 + 审批人 + 负责人
- 处理过程 + 复盘总结
支持审批流转:pending → approved → in_progress → closed。
十、3D 网络拓扑可视化
基于 Three.js 构建交互式 3D 地球:
- 服务器节点根据 IP 映射到地理位置
- 在线节点绿色标记,离线红色标记
- 脉动虚线连接管理端与各节点,光点沿弧线流动
- 鼠标拖拽旋转、滚轮缩放、悬停显示标签
- 实时数据包日志模拟(SYN/ACK/HTTP/MySQL/Redis)
- 统计面板:节点数、在线数、流量、延迟
十一、资源大盘
选择主机和时间范围(30/60/120 分钟),Chart.js 渲染四条趋势折线图:
- CPU 使用率变化
- 内存使用率变化
- 磁盘使用率变化
- 网络流量 RX/TX 双线
底部统计摘要:CPU 均值/峰值、内存均值/峰值、磁盘均值/峰值、网络 RX 均值/TX 峰值。
十二、日志审计
所有操作自动记录:谁、何时、操作了哪台机器、执行了什么命令。
- 按类型筛选(操作/告警/部署)
- 按 IP 筛选
- 日志分类统计
- 过期日志自动清理
十三、AI 运维助手
集成 DeepSeek 大模型,四大 AI 能力:
- 对话问答:运维知识咨询
- 自然语言转命令:"找出占用内存最多的 5 个进程" →
ps aux --sort=-%mem | head -6 - 监控数据分析:选中主机 → AI 读取监控历史 → 给出优化建议
- 故障诊断:描述问题 → AI 结合系统状态给出排查步骤
十四、系统设置
- AI 配置:DeepSeek API Key 设置
- 监控阈值:CPU/内存/磁盘告警阈值调整
- 邮件配置:SMTP 服务器、收发邮箱、授权码
- SQL 执行器:查看表列表、执行 SQL 查询、快速查表数据
- 系统信息:Flask 版本、Python 版本、数据库大小
十五、远程 Agent 探针
对于需要独立监控面板的服务器,可一键部署 Agent:
- 单个
agent.py文件(200 行),仅依赖 Python 3 标准库 - 启动后监听 18500 端口,提供:
- 实时 CPU/内存/磁盘 仪表盘
- Top 进程列表
- Docker 容器状态
- 运行服务列表
- 3 秒自动刷新,深色主题 UI
- systemd 托管,异常退出自动重启
设计考量:Agent 代码刻意使用 ES5 JavaScript(function 而非 =>、var 而非 let/const),确保在 CentOS 7 的 Python 3.6 环境下无兼容性问题。
十六、深色模式与响应式布局
完整的设计系统:
- CSS 变量体系:5 色主色(蓝/绿/橙/红/灰)+ 5 级灰阶
- 深色模式:一键切换,偏好存储 localStorage
- 侧边栏折叠:小屏自动收起
- 统一组件:卡片、表格、按钮、表单、徽章风格全局一致
- 轻量动画:hover 上浮、淡入过渡、骨架屏加载
技术亮点
1. 零依赖启动(管理端)
双击 start.bat
→ 检测 Python
→ pip install flask paramiko pymysql
→ python init_db.py
→ python web_app.py
→ 浏览器打开 http://localhost:5000
无需 MySQL、Nginx、Redis,SQLite 一个文件搞定所有数据存储。
2. 零依赖 Agent(远程端)
远程 Linux 仅需 Python 3(CentOS 7 自带),无需 pip 安装任何包。200 行纯标准库代码即可运行完整监控面板。
3. Sudo 管道化
CentOS 7 的 sudo 默认要求 TTY,Paramiko 远程执行会报 no tty present。解决方案是将密码通过管道注入:
sudo_cmd = f"echo '{password}' | sudo -S {command} 2>&1"
这样无需修改远程服务器的 sudoers 配置即可执行特权操作。
4. SQLite 兼容层
所有 SQL 使用 ? 占位符(而非 MySQL 的 %s),确保同一套代码兼容 SQLite 和 MySQL。
5. 模板自渲染
Agent 的 Web 面板完全内嵌在 Python 代码中(HTML = r"""..."""),上传单个文件即可运行,无需模板目录。
部署场景
场景一:个人运维工具箱
在 Windows 笔记本上双击 start.bat,浏览器打开即用。管理 3-5 台个人服务器/VPS,日常巡检、批量更新、日志查看一站搞定。
场景二:小团队协作
部署在公司内网一台 Windows 机器上,团队成员浏览器访问。工单管理审批流、操作全审计日志、多主机批量执行,覆盖日常运维 80% 场景。
场景三:教学演示
完整展示运维自动化的核心概念:SSH 远程管理、批量执行、监控采集、告警通知、工单流程。14 个页面模板、40+ REST API、3D 可视化,适合作为 Python 全栈项目案例。
项目统计
| 指标 | 数值 |
|---|---|
| Python 源文件 | 14 个 |
| HTML 模板 | 15 个 |
| REST API | 41 个 |
| 数据库表 | 8 张 |
| 总代码行数 | ~4000+ |
| 第三方依赖 | 3 个(flask/paramiko/pymysql) |
写在最后
这个项目证明了一件事:不需要微服务、不需要消息队列、不需要 Kubernetes,用最朴素的技术栈也能构建出实用的运维平台。
Python + Flask + SQLite + Bootstrap — 这四个工具的组合足以覆盖绝大多数中小团队的运维需求。当你需要更高可用性时,可以平滑升级到 MySQL + Gunicorn + Nginx;当你需要更大规模时,可以把批量执行模块替换为 Ansible API。
但核心思想不变:简单、实用、可控。
Gitee: [已发布]
技术栈: Python 3.6+ / Flask 2.0 / SQLite / Paramiko / Bootstrap 5 / Chart.js / Three.js / DeepSeek API
许可: MIT
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)