96 lines
3.9 KiB
Markdown
96 lines
3.9 KiB
Markdown
# Monitor
|
||
|
||
Monitor 是一个自托管的网络线路质量观测工具。它在 Probe 与多个 Agent 之间执行主动网络测量,记录逐包和逐事件结果;Backend 保存原始数据并生成可查询的线路指标,Web 界面用于查看、比较和管理节点。
|
||
|
||
它面向需要比较不同网络出口、评估线路稳定性,或观察特定网络服务体验的场景。Agent 与 Probe 专注于测量和上报;它们不提供远程终端、命令执行或文件管理能力。
|
||
|
||
## 能力概览
|
||
|
||
- **主动测量**:组合 TCP、UDP 等测量模块,采集延迟、丢包、抖动、吞吐和连接事件。
|
||
- **线路分析**:从原始测量数据生成时间序列指标,并比较线路在不同服务模型下的体验。
|
||
- **节点管理**:通过 Fleet 节点框架处理身份、注册、连接、任务同步和数据上报。
|
||
- **实时面板**:展示端查看线路状态和历史趋势;管理端负责节点、任务和系统配置。
|
||
- **自托管**:Backend 使用段文件和 SQLite 保存数据;提供 Linux、systemd 和 OpenWrt 相关部署文件。
|
||
|
||
## 架构
|
||
|
||
```text
|
||
Probe <──测量会话──> Agent ──长连接与数据上报──> Backend <──REST / SSE──> Web 展示端与管理端
|
||
├── 段文件:原始数据
|
||
└── SQLite:索引、指标与配置
|
||
```
|
||
|
||
## 快速开始
|
||
|
||
### 环境要求
|
||
- .NET SDK 10;项目使用 `backend/global.json` 指定 SDK 版本和滚动策略。
|
||
- Node.js 与 npm,用于构建 Web 前端。
|
||
|
||
### 构建
|
||
|
||
从仓库根目录构建后端:
|
||
|
||
```sh
|
||
cd backend
|
||
dotnet build Monitor.slnx -c Release
|
||
```
|
||
|
||
安装前端依赖并构建展示端和管理端(在仓库根目录运行):
|
||
|
||
```sh
|
||
npm ci --prefix web
|
||
npm run build --prefix web
|
||
```
|
||
|
||
前端产物位于 `web/display/dist/` 和 `web/admin/dist/`。NativeAOT 发布还需要对应平台的 C/C++ 工具链;Linux 发布脚本和 RID 说明见 [`docs/deployment.md`](docs/deployment.md)。
|
||
|
||
Backend 以 OCI 镜像发布,支持 Linux/amd64 与 Linux/arm64;Agent 和 Probe 以 Windows/Linux 的 amd64/arm64 二进制包发布。容器部署配置见 [`compose.yaml`](compose.yaml),发布说明见 [`docs/deployment.md`](docs/deployment.md)。
|
||
|
||
### 本地运行
|
||
|
||
1. **启动 Backend。** 在仓库根目录运行:
|
||
|
||
```sh
|
||
cd backend
|
||
dotnet run --project src/Monitor.Backend -- --urls http://localhost:5000
|
||
```
|
||
|
||
2. **启动前端。** 保持 Backend 运行,在另一个终端的仓库根目录运行:
|
||
|
||
```sh
|
||
npm ci --prefix web
|
||
npm run dev --prefix web
|
||
```
|
||
|
||
打开 <http://localhost:5173/> 使用展示端,或访问 <http://localhost:5174/admin/> 进入管理端。依赖安装和前端配置见 [`web/README.md`](web/README.md);Backend 的首次启动与配置见 [`backend/README.md`](backend/README.md)。
|
||
|
||
## 项目布局
|
||
|
||
| 路径 | 说明 |
|
||
| --- | --- |
|
||
| [`backend/`](backend/README.md) | Backend 服务、Fleet 框架、共享测量代码与 .NET 测试 |
|
||
| [`backend/agent/`](backend/agent/README.md) | Agent 节点:注册到 Backend,接受 Probe 测量并上报数据 |
|
||
| [`backend/probe/`](backend/probe/README.md) | Probe 节点:发起线路测量并将采集数据交给 Agent |
|
||
| `backend/fleet/` | 可复用的节点身份、注册和连接框架 |
|
||
| `backend/shared/` | 测量引擎、协议和原始数据格式 |
|
||
| `web/display/`、`web/admin/` | 展示端和管理端 |
|
||
| `web/shared/` | 前端 API、图表、组件与主题 |
|
||
| `packaging/`、`scripts/` | 部署、构建与维护脚本 |
|
||
| `docs/` | [架构](docs/architecture.md)、[测量模型](docs/measurement.md)、[API](docs/api.md)、[部署](docs/deployment.md)等文档 |
|
||
|
||
## 测试
|
||
|
||
```sh
|
||
cd backend
|
||
dotnet test --solution Monitor.slnx
|
||
```
|
||
|
||
```sh
|
||
# 前端样式检查(仓库根目录)
|
||
npm run lint:css --prefix web
|
||
```
|
||
|
||
## 许可证
|
||
|
||
本项目采用 [Apache License 2.0](LICENSE)。
|