mirror of
https://mirror.suhoan.cn/https://github.com/EasyTier/EasyTier.git
synced 2025-12-12 12:47:25 +08:00
272 lines
5.8 KiB
Markdown
272 lines
5.8 KiB
Markdown
# EasyTier Uptime Monitor
|
|
|
|
一个用于监控 EasyTier 实例健康状态和运行时间的系统。
|
|
|
|
## 功能特性
|
|
|
|
- 🏥 **健康监控**: 实时监控 EasyTier 节点的健康状态
|
|
- 📊 **数据统计**: 提供详细的运行时间和响应时间统计
|
|
- 🔧 **实例管理**: 管理多个 EasyTier 实例
|
|
- 🌐 **Web界面**: 直观的 Web 管理界面
|
|
- 🚨 **告警系统**: 支持健康状态异常告警
|
|
- 📈 **图表展示**: 可视化展示监控数据
|
|
|
|
## 系统架构
|
|
|
|
```
|
|
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
|
│ Frontend │ │ Backend │ │ Database │
|
|
│ (Vue.js) │◄──►│ (Rust/Axum) │◄──►│ (SQLite) │
|
|
│ │ │ │ │ │
|
|
│ ┌─────────────┐ │ │ ┌─────────────┐ │ │ ┌─────────────┐ │
|
|
│ │ Dashboard │ │ │ │ API Routes │ │ │ │ Nodes │ │
|
|
│ │ Health View │ │ │ │ Health │ │ │ │ Health │ │
|
|
│ │ Node Mgmt │ │ │ │ Instances │ │ │ │ Instances │ │
|
|
│ │ Charts │ │ │ │ Scheduler │ │ │ │ Stats │ │
|
|
│ └─────────────┘ │ │ └─────────────┘ │ │ └─────────────┘ │
|
|
└─────────────────┘ └─────────────────┘ └─────────────────┘
|
|
```
|
|
|
|
## 快速开始
|
|
|
|
### 环境要求
|
|
|
|
- **Rust**: 1.70+
|
|
- **Node.js**: 16+
|
|
- **npm**: 8+
|
|
|
|
### 开发环境
|
|
|
|
1. **克隆项目**
|
|
```bash
|
|
git clone <repository-url>
|
|
cd easytier-uptime
|
|
```
|
|
|
|
2. **启动开发环境**
|
|
```bash
|
|
./start-dev.sh
|
|
```
|
|
|
|
3. **访问应用**
|
|
- 前端界面: http://localhost:3000
|
|
- 后端API: http://localhost:8080
|
|
- 健康检查: http://localhost:8080/health
|
|
|
|
### 生产环境
|
|
|
|
1. **启动生产环境**
|
|
```bash
|
|
./start-prod.sh
|
|
```
|
|
|
|
2. **停止生产环境**
|
|
```bash
|
|
./stop-prod.sh
|
|
```
|
|
|
|
## 配置说明
|
|
|
|
### 环境变量
|
|
|
|
#### 后端配置 (.env)
|
|
|
|
| 变量名 | 默认值 | 说明 |
|
|
|--------|--------|------|
|
|
| `SERVER_HOST` | `127.0.0.1` | 服务器监听地址 |
|
|
| `SERVER_PORT` | `8080` | 服务器端口 |
|
|
| `DATABASE_PATH` | `uptime.db` | 数据库文件路径 |
|
|
| `DATABASE_MAX_CONNECTIONS` | `10` | 数据库最大连接数 |
|
|
| `HEALTH_CHECK_INTERVAL` | `30` | 健康检查间隔(秒) |
|
|
| `HEALTH_CHECK_TIMEOUT` | `10` | 健康检查超时(秒) |
|
|
| `HEALTH_CHECK_RETRIES` | `3` | 健康检查重试次数 |
|
|
| `RUST_LOG` | `info` | 日志级别 |
|
|
| `CORS_ALLOWED_ORIGINS` | `http://localhost:3000` | 允许的跨域来源 |
|
|
| `ENABLE_CORS` | `true` | 是否启用CORS |
|
|
| `ENABLE_COMPRESSION` | `true` | 是否启用压缩 |
|
|
|
|
#### 前端配置 (frontend/.env)
|
|
|
|
| 变量名 | 默认值 | 说明 |
|
|
|--------|--------|------|
|
|
| `VITE_APP_TITLE` | `EasyTier Uptime Monitor` | 应用标题 |
|
|
| `VITE_API_BASE_URL` | `/api` | API基础URL |
|
|
| `VITE_APP_ENV` | `development` | 应用环境 |
|
|
| `VITE_ENABLE_DEV_TOOLS` | `true` | 是否启用开发工具 |
|
|
| `VITE_API_TIMEOUT` | `10000` | API超时时间(毫秒) |
|
|
|
|
## API 文档
|
|
|
|
### 健康检查
|
|
|
|
```http
|
|
GET /health
|
|
```
|
|
|
|
### 节点管理
|
|
|
|
```http
|
|
# 获取节点列表
|
|
GET /api/nodes
|
|
|
|
# 创建节点
|
|
POST /api/nodes
|
|
|
|
# 获取节点详情
|
|
GET /api/nodes/{id}
|
|
|
|
# 更新节点
|
|
PUT /api/nodes/{id}
|
|
|
|
# 删除节点
|
|
DELETE /api/nodes/{id}
|
|
```
|
|
|
|
### 健康记录
|
|
|
|
```http
|
|
# 获取节点健康历史
|
|
GET /api/nodes/{id}/health
|
|
|
|
# 获取节点健康统计
|
|
GET /api/nodes/{id}/health/stats
|
|
```
|
|
|
|
### 实例管理
|
|
|
|
```http
|
|
# 获取实例列表
|
|
GET /api/instances
|
|
|
|
# 创建实例
|
|
POST /api/instances
|
|
|
|
# 停止实例
|
|
DELETE /api/instances/{id}
|
|
```
|
|
|
|
## 测试
|
|
|
|
### 运行集成测试
|
|
|
|
```bash
|
|
./test-integration.sh
|
|
```
|
|
|
|
### 运行单元测试
|
|
|
|
```bash
|
|
cargo test
|
|
```
|
|
|
|
### 测试覆盖率
|
|
|
|
```bash
|
|
cargo tarpaulin
|
|
```
|
|
|
|
## 部署
|
|
|
|
### Docker 部署
|
|
|
|
```bash
|
|
# 构建镜像
|
|
docker build -t easytier-uptime .
|
|
|
|
# 运行容器
|
|
docker run -d -p 8080:8080 easytier-uptime
|
|
```
|
|
|
|
### 手动部署
|
|
|
|
1. **构建后端**
|
|
```bash
|
|
cargo build --release
|
|
```
|
|
|
|
2. **构建前端**
|
|
```bash
|
|
cd frontend
|
|
npm install
|
|
npm run build
|
|
cd ..
|
|
```
|
|
|
|
3. **配置环境**
|
|
```bash
|
|
cp .env.production .env
|
|
# 编辑 .env 文件
|
|
```
|
|
|
|
4. **启动服务**
|
|
```bash
|
|
./start-prod.sh
|
|
```
|
|
|
|
## 监控和日志
|
|
|
|
### 日志文件
|
|
|
|
- **后端日志**: `logs/backend.log`
|
|
- **前端日志**: `logs/frontend.log`
|
|
- **测试日志**: `test-results/`
|
|
|
|
### 健康检查
|
|
|
|
系统提供以下健康检查端点:
|
|
|
|
- `/health` - 基本健康检查
|
|
- `/api/health/stats` - 健康统计信息
|
|
- `/api/health/scheduler/status` - 调度器状态
|
|
|
|
## 故障排除
|
|
|
|
### 常见问题
|
|
|
|
1. **后端启动失败**
|
|
- 检查端口是否被占用
|
|
- 确认数据库文件权限
|
|
- 查看日志文件 `logs/backend.log`
|
|
|
|
2. **前端连接失败**
|
|
- 检查后端服务是否运行
|
|
- 确认API地址配置
|
|
- 检查CORS配置
|
|
|
|
3. **健康检查失败**
|
|
- 确认目标节点可访问
|
|
- 检查防火墙设置
|
|
- 验证健康检查配置
|
|
|
|
### 性能优化
|
|
|
|
1. **数据库优化**
|
|
- 定期清理过期数据
|
|
- 配置适当的连接池大小
|
|
- 使用索引优化查询
|
|
|
|
2. **前端优化**
|
|
- 启用代码分割
|
|
- 配置缓存策略
|
|
- 优化图片和资源
|
|
|
|
3. **网络优化**
|
|
- 启用压缩
|
|
- 配置CDN
|
|
- 优化API响应时间
|
|
|
|
## 贡献指南
|
|
|
|
1. Fork 项目
|
|
2. 创建特性分支
|
|
3. 提交更改
|
|
4. 推送到分支
|
|
5. 创建 Pull Request
|
|
|
|
## 许可证
|
|
|
|
MIT License
|
|
|
|
## 支持
|
|
|
|
如有问题或建议,请提交 Issue 或联系开发团队。 |