# PromdataPanel 多源 Prometheus 服务器监控展示大屏。支持对接多个 Prometheus 实例,实时聚合展示所有服务器的 CPU、内存、磁盘、带宽等关键指标,并提供可视化节点分布图。 ## 功能特性 - 🔌 **多数据源管理** - 支持对接多个 Prometheus 实例(Node_Exporter / BlackboxExporter) - 📊 **指标自动聚合** - 自动汇总所有数据源的 NodeExporter 指标,实时计算全网负载 - 🌐 **网络流量统计** - 24 小时流量趋势图,实时带宽(Rx/Tx)求和显示 - 🗺️ **节点分布可视化** - 自动识别服务器地理位置,并在全球地图上展示实时连接状态与延迟 - ⚡ **毫秒级实时性** - 深度优化查询逻辑,支持 5s 采集频率的实时动态展示 - 📱 **响应式与美学设计** - 现代 UI/UX 体验,支持暗色模式,极致性能优化 ## 快速安装 ### 方式一:一键脚本安装 (推荐) 在 Linux 服务器上,您可以使用以下脚本一键完成下载、环境检测、依赖安装并将其注册为 Systemd 系统服务: ```bash # 下载安装最新版本 (默认 v0.1.0) VERSION=v0.1.0 curl -sSL https://git.littlediary.cn/CN-JS-HuiBai/PromdataPanel/raw/branch/main/install.sh | bash ``` ### 方式二:手动安装 #### 1. 环境要求 - **Node.js** >= 18 - **MySQL** >= 8.0 - **Valkey** >= 7.0 (或 Redis >= 6.0) #### 2. 配置与启动 1. 克隆代码库:`git clone https://git.littlediary.cn/CN-JS-HuiBai/PromdataPanel.git` 2. 复制配置文件:`cp .env.example .env` 3. 安装依赖:`npm install --production` 4. 启动服务:`npm start` ### 方式三:更新现有版本 如果您已经安装了本系统,可以使用随附的 `update.sh` 脚本一键升级到最新代码: ```bash # 进入程序目录 curl -sSL https://git.littlediary.cn/CN-JS-HuiBai/PromdataPanel/raw/branch/main/update.sh | bash ``` #### 3. 系统初始化 首次运行后,访问 `http://your-ip:3000/init.html`,按照引导完成 MySQL 数据库和 Valkey 缓存的连接。 ## 使用指引 ### 1. 添加 Prometheus 数据源 点击页面右上角的 ⚙️ 按钮进入设置,添加并测试您的 Prometheus HTTP 地址。 ### 2. Prometheus 采集配置 建议在 `prometheus.yml` 中设置采集周期为 `5s` 以实现平滑的实时动态效果: ```yaml global: scrape_interval: 5s scrape_configs: - job_name: 'nodes' static_configs: - targets: ['your-server-ip:9100'] ``` ## 技术栈 - **Runtime**: Node.js - **Framework**: Express.js - **Database**: MySQL 8.0+ - **Caching**: Valkey / Redis - **Visualization**: ECharts / Canvas - **Frontend**: Vanilla JS / CSS3 ## API 接口文档 本项提供了完整的 RESTful API,用于数据采集、系统配置和状态监控。 ### 1. 认证接口 (`/api/auth`) - `POST /api/auth/login`: 用户登录 - `POST /api/auth/logout`: 退出登录 - `POST /api/auth/change-password`: 修改密码 (需登录) - `GET /api/auth/status`: 获取当前登录状态 ### 2. 数据源管理 (`/api/sources`) - `GET /api/sources`: 获取所有 Prometheus 数据源及其状态 - `POST /api/sources`: 添加新数据源 (需登录) - `PUT /api/sources/:id`: 修改数据源信息 (需登录) - `DELETE /api/sources/:id`: 删除数据源 (需登录) - `POST /api/sources/test`: 测试数据源连接性 (需登录) ### 3. 指标数据获取 (`/api/metrics`) - `GET /api/metrics/overview`: 获取所有服务器的聚合实时指标 (CPU, 内存, 磁盘, 网络) - `GET /api/metrics/network-history`: 获取全网 24 小时流量历史趋势 - `GET /api/metrics/cpu-history`: 获取全网 CPU 使用率历史记录 - `GET /api/metrics/server-details`: 获取特定服务器的详细实时指标 - `GET /api/metrics/server-history`: 获取特定服务器的历史指标数据 - `GET /api/metrics/latency`: 获取节点间的实时延迟数据 ### 4. 系统配置与监控 - `GET /api/settings`: 获取站点全局配置 - `POST /api/settings`: 修改站点全局配置 (需登录) - `GET /health`: 获取系统健康检查报告 (数据库、缓存、内存等状态) ### 5. 延迟链路管理 (`/api/latency-routes`) - `GET /api/latency-routes`: 获取配置的所有延迟检测链路 - `POST /api/latency-routes`: 添加延迟检测链路 (需登录) - `PUT /api/latency-routes/:id`: 修改延迟检测链路 (需登录) - `DELETE /api/latency-routes/:id`: 删除延迟检测链路 (需登录) ### 6. 实时通信 (WebSocket) 系统支持通过 WebSocket 接收实时推送,默认端口与 HTTP 服务一致: - **消息类型 `overview`**: 包含聚合指标、服务器在线状态以及地理分布后的延迟链路数据。 ## LICENSE MIT License