# pg_fs **Repository Path**: shenyuflying/pg_fs ## Basic Information - **Project Name**: pg_fs - **Description**: Postgresql Flight Simulator - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2025-12-17 - **Last Updated**: 2025-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PostgreSQL Flight Simulator 一个专为数据库运维人员设计的 PostgreSQL 故障演练与培训平台,帮助新员工快速掌握数据库运维技能。 ## 📋 项目概述 PostgreSQL Flight Simulator 是一个交互式的数据库运维仿真环境,通过模拟真实的数据库故障场景,让运维人员在安全的环境中练习故障诊断和恢复技能。系统提供了直观的 Web 界面、实时监控面板和模拟终端,使学习过程更加沉浸和高效。 ## ✨ 核心功能 ### 1. 故障演练场景管理 - 提供多种预设故障场景供选择 - 详细的场景背景说明和客户感知异常描述 - 支持自定义场景扩展(JSON格式定义) ### 2. 演练控制台 - 场景启动与重置功能 - 实时演练计时器和状态监控 - 基于难度自动设定的超时限制 ### 3. 智能步骤引导 - 分阶段的定位和恢复步骤提示 - 实时进度跟踪和完成状态标记 - 针对性的操作建议和提示信息 ### 4. 数据库监控面板 - 实时显示关键性能指标:CPU、内存、磁盘利用率 - 数据库运行状态:QPS、查询时延、活跃会话数 - 慢SQL数量统计(基于模拟场景动态变化) ### 5. 全功能终端模拟器 - 模拟标准Linux命令行环境 - 完整支持PostgreSQL psql命令 - 模拟真实的文件系统结构和日志内容 - 命令历史记录和方向键导航支持 ## 🛠 技术架构 - **前端**:HTML5 + JavaScript + CSS3(响应式设计) - **后端**:Python 3.x + Flask 框架 - **数据存储**:JSON文件(场景定义和模拟数据) - **界面设计**:淡蓝色主题,现代化UI设计 ## 📁 项目结构 ``` pg_flight_simulator/ ├── pg_fs.html # 前端界面文件 ├── pg_fs.py # 后端Python代码 ├── README.md # 项目说明文档 ├── Prompt.txt # 需求文档 └── cases/ # 故障场景定义目录 └── missing_index.json # 示例场景:未建索引导致慢SQL ``` ## 🚀 快速开始 ### 环境要求 - Python 3.6 或更高版本 - Flask 框架 ### 安装步骤 1. 克隆或下载项目代码到本地 2. 安装依赖包: ```bash pip install flask ``` 3. 启动后端服务: ```bash python pg_fs.py ``` 4. 打开浏览器,访问前端界面: ``` http://localhost:5000 ``` ## 🎯 使用指南 ### 开始演练 1. 从下拉列表中选择一个故障场景 2. 阅读场景背景和客户影响描述 3. 点击「启动演练」按钮开始计时 4. 在终端模拟器中按照步骤提示执行命令 ### 终端使用 - 支持标准Linux命令:`ls`, `cd`, `pwd`, `cat`, `tail`, `grep`, `du`, `top`等 - 支持PostgreSQL查询:直接输入SQL语句(以分号结尾)或使用`SQL:`前缀 - 使用上下方向键浏览命令历史 ### 监控指标说明 - **CPU/内存/磁盘**:模拟数据库服务器资源使用情况 - **QPS**:每秒查询次数 - **时延**:查询响应时间(毫秒) - **活跃会话**:当前连接数 - **慢SQL数量**:模拟检测到的慢查询数量 ## 📝 场景开发指南 要添加新的故障场景,请在`cases`目录下创建新的JSON文件,遵循以下结构: ```json { "id": "场景唯一标识符", "title": "场景标题", "difficulty": "难度级别", "duration_sec": 超时秒数, "background": { "summary": "背景描述", "system": "系统信息", "business": "业务描述" }, "customer_impact": { "summary": "影响描述", "symptom": "症状表现", "sla": "SLA影响" }, "steps": [ { "id": "步骤ID", "phase": "定位/恢复", "title": "步骤标题", "description": "步骤描述和建议", "matchers": [匹配条件定义] } ], "filesystem": { 文件系统结构定义 }, "metrics_profile": { 性能指标基线定义 } } ``` ## 🤝 贡献指南 我们欢迎社区贡献!如果您有: - 新的故障场景创意 - 功能改进建议 - 代码优化 请随时提交Pull Request或Issue。 ## 📄 许可证 本项目采用MIT许可证。详见LICENSE文件。 ## 📧 联系我们 如有任何问题或建议,请联系项目维护者。 --- *让数据库运维培训更加高效、直观、实战化!*