一个 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 能力:

  1. 对话问答:运维知识咨询
  2. 自然语言转命令:"找出占用内存最多的 5 个进程" → ps aux --sort=-%mem | head -6
  3. 监控数据分析:选中主机 → AI 读取监控历史 → 给出优化建议
  4. 故障诊断:描述问题 → 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

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐