# 云运维PY接口 **Repository Path**: quickn/ops-py ## Basic Information - **Project Name**: 云运维PY接口 - **Description**: 数据同步 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-11-16 - **Last Updated**: 2026-09-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ops-py > 一站式云运维平台后端 API — MySQL 数据库管理、Nacos 配置中心、XXL-JOB 调度、SSH 终端、日志智能分析、MCP Server 全覆盖。 [![Python](https://img.shields.io/badge/Python-3.11+-blue.svg)](https://www.python.org/) [![Flask](https://img.shields.io/badge/Flask-2.x-green.svg)](https://flask.palletsprojects.com/) [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md) --- ## ✨ 项目简介 `ops-py` 是基于 Flask 框架开发的轻量级运维工具集合,面向中小团队的日常运维场景。它把运维过程中高频、零散的工具需求(数据库对比、配置中心管理、远程终端、调度任务、日志分析等)整合到一个统一的后端服务中,前端 `ops-web` 通过 RESTful + WebSocket 接入。 ### 核心能力 | 模块 | 能力 | |------|------| | **MySQL 管理** | 数据库/表/列/索引 CRUD、SQL 在线执行、表结构对比与同步、数据同步 | | **Nacos 管理** | 配置增删改查、服务注册/注销/上下线、命名空间 | | **XXL-JOB 管理** | 执行器管理、任务 CRUD、启动/停止、触发、日志查询 | | **SSH 终端** | 基于 WebSocket + xterm.js 的远程终端代理,支持 rz/sz 类文件传输 | | **账户配置** | 统一管理所有外部连接(MySQL/Nacos/XXL-JOB/SSH),按类型自动路由 Provider | | **日志分析** | 基于 drain3 的日志模板自动提取与异常聚类 | | **MCP Server** | 标准 Model Context Protocol,对接 AI Agent(Qoder / Claude 等) | | **Skills** | 可被前端动态加载的"技能说明"机制,AI Agent 可读取执行 | ### 适用场景 - 跨环境数据库结构同步(开发 → 测试 → 生产) - Nacos 配置可视化操作 - 远程服务器 Web 终端 - 海量业务日志模板提取与异常诊断 - 给 AI Agent 暴露运维工具(MCP) --- ## 🚀 快速开始 ### 环境要求 - Python 3.11+ - MySQL 5.7+ / 8.0+(账号配置需存储在 `account_config` 表中) ### 安装 ```bash # 克隆仓库 git clone git@gitee.com:quickn/ops-py.git cd ops-py # 创建虚拟环境 python -m venv venv source venv/bin/activate # Linux/macOS # venv\Scripts\activate # Windows # 安装依赖 pip install -r requirements.txt ``` ### 配置环境变量 复制并按需修改: ```bash cp .env.example .env ``` 主要变量说明: | 变量 | 说明 | 默认值 | |------|------|--------| | `FLASK_ENV` | 运行环境:`dev` / `test` / `prod` | `prod` | | `MONITOR_SERVER_URL` | ops-server 认证地址 | 见 `.env.example` | | `AUTH_ENABLED` | 是否启用接口鉴权 | `true` | | `AUTH_VERIFY_MODE` | `remote` 远端校验 / `local` 本地校验 | `remote` | | `AUTH_SECRET_KEY` | 本地校验密钥(仅 local 模式) | - | | `AUTH_TIMEOUT` | 鉴权超时(秒) | `5` | | `AUTH_CACHE_TTL` | 鉴权结果缓存(秒) | `60` | ### 启动 ```bash python runApp.py ``` 服务监听在 `http://0.0.0.0:18080`,所有接口前缀 `/pyApi/`。 ### Docker 部署 ```bash # 构建镜像(基于龙蜥 OS) docker build -t ops-py:latest -f config/docker/Dockerfile . # 运行容器 docker run -d \ --name py-agent \ -p 18080:18080 \ -v $(pwd)/logs:/home/park/ops-py/logs \ ops-py:latest ``` 详细部署见 [docs/DEPLOYMENT.md](docs/DEPLOYMENT.md)。 --- ## 📚 文档导航 - [API 接口文档](docs/API.md) — 所有 HTTP/WebSocket 接口清单与示例 - [架构设计](docs/ARCHITECTURE.md) — 模块划分、Provider 模式、连接池实现 - [鉴权机制](docs/AUTH.md) — JWT 校验、白名单、CORS 策略 - [配置管理](docs/CONFIG_MANAGEMENT.md) — account_config 表与 Provider 路由 - [MCP Server](docs/MCP.md) — AI Agent 接入指南 - [Skills 技能](docs/SKILLS.md) — Skills 机制与扩展 - [部署指南](docs/DEPLOYMENT.md) — 容器化、同步脚本、CI/CD - [安全策略](SECURITY.md) - [更新日志](CHANGELOG.md) --- ## 🛠 技术栈 | 类别 | 组件 | |------|------| | Web 框架 | Flask 2.x、flask-cors、flask-sock | | ORM / DB | SQLAlchemy、pymysql | | 数据处理 | pandas、deepdiff、simplejson | | 日志分析 | drain3 | | AI 协议 | flask-mcp-plus(Model Context Protocol) | | 远程终端 | paramiko(SSH) | | 部署 | Docker(龙蜥 OS)、PowerShell 同步脚本 | --- ## 🧪 示例:调用日志分析接口 ```bash curl -X POST -F "file=@/path/to/app.log" http://localhost:18080/pyApi/log/analyzer ``` 返回示例: ```json { "templates": [ {"template_id": 1, "cluster_size": 1024, "template": "User <*> logged in from <*>"}, {"template_id": 2, "cluster_size": 64, "template": "ERROR connection refused <*>:<*>"} ], "total_lines": 1088 } ``` --- ## 🤝 贡献 欢迎贡献!请先阅读 [CONTRIBUTING.md](CONTRIBUTING.md)。提交 PR 前请: 1. Fork 仓库并新建分支 2. 遵循 PEP 8,新增模块请附 README 3. 确保 `python -m py_compile` 无语法错误 4. 在 PR 中说明变更动机与影响面 --- ## 📄 开源协议 本项目基于 [MIT License](LICENSE) 开源。 --- ## 🙏 致谢 - [Flask](https://flask.palletsprojects.com/) - [drain3](https://github.com/logpai/logparser/tree/main/logparser/drain3) - [DeepDiff](https://github.com/seperman/deepdiff) - [Model Context Protocol](https://modelcontextprotocol.io/)