120 lines
4.6 KiB
Markdown
120 lines
4.6 KiB
Markdown
# 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
|