247 lines
5.6 KiB
Markdown
247 lines
5.6 KiB
Markdown
# 系统监控平台
|
||
|
||
一个基于Go语言开发的跨平台系统监控工具,支持Linux和Windows操作系统,提供实时的系统性能监控和数据可视化功能。
|
||
|
||
## 功能特性
|
||
|
||
### 监控代理(Agent)
|
||
- **跨平台支持**:Linux和Windows操作系统
|
||
- **系统资源监控**:
|
||
- CPU使用率和负载
|
||
- 内存使用情况
|
||
- 磁盘空间和I/O
|
||
- 网络流量和连接
|
||
- **进程管理**:实时进程列表和资源消耗
|
||
- **硬件信息**:CPU型号、内存大小、磁盘详情、网络接口
|
||
- **操作系统信息**:版本、架构、完整名称
|
||
- **HTTP API**:提供本地数据查询接口
|
||
|
||
### 服务端(Backend)
|
||
- **数据收集**:接收Agent上报的监控数据
|
||
- **数据存储**:将设备token、账号密码(正式版实现)等关键数据记录到MySQL,监控时序数据存储到InfluxDB
|
||
- **Web界面**:实时监控仪表盘
|
||
- **图表可视化**:系统资源趋势图
|
||
- **设备管理**:多设备监控和管理
|
||
- **API接口**:提供数据查询和管理接口
|
||
|
||
## 系统架构
|
||
|
||
```mermaid
|
||
flowchart LR
|
||
subgraph 代理层
|
||
style 代理层 stroke:#333,stroke-width:2px,shape:rectangle,labelPos:top
|
||
LinuxAgent["Linux 代理程序"]
|
||
WindowsAgent["Windows 代理程序"]
|
||
end
|
||
|
||
BackendServer["服务端"]
|
||
style BackendServer stroke:#333,stroke-width:2px,shape:rectangle
|
||
|
||
subgraph 存储层
|
||
style 存储层 stroke:#333,stroke-width:2px,shape:rectangle
|
||
MySQL["MySQL"]
|
||
InfluxDB["InfluxDB"]
|
||
end
|
||
|
||
WebConsole["Web 控制台<br/>(数据可视化与管理界面)"]
|
||
style WebConsole stroke:#333,stroke-width:2px,shape:rectangle
|
||
|
||
LinuxAgent --> BackendServer
|
||
WindowsAgent --> BackendServer
|
||
BackendServer --> MySQL
|
||
BackendServer --> InfluxDB
|
||
InfluxDB --> WebConsole
|
||
```
|
||
|
||
## 安装部署
|
||
|
||
### 环境要求
|
||
- Go 1.24+(用于编译)
|
||
- InfluxDB 2.x(用于时序数据存储)
|
||
- MySQL 8.x(用于设备和配置存储)
|
||
|
||
### 编译Agent
|
||
|
||
#### Linux Agent
|
||
```bash
|
||
cd /root/monitor/agent
|
||
go build -o agent main.go
|
||
```
|
||
|
||
#### Windows Agent
|
||
```bash
|
||
cd /root/monitor/agent-windows
|
||
go build -o agent-windows.exe main.go
|
||
# 或使用交叉编译
|
||
GOOS=windows GOARCH=amd64 go build -o agent-windows.exe main.go
|
||
```
|
||
|
||
### 编译Backend
|
||
```bash
|
||
cd /root/monitor/backend
|
||
go build -o monitor-server main.go
|
||
```
|
||
|
||
### 运行
|
||
|
||
#### Agent运行
|
||
|
||
**Linux**:
|
||
```bash
|
||
./agent -server=http://your-backend-server:8080 -interval=10s
|
||
```
|
||
|
||
**Windows**:
|
||
```bash
|
||
agent-windows.exe -server=http://your-backend-server:8080 -interval=10s
|
||
```
|
||
|
||
#### Backend运行
|
||
```bash
|
||
./monitor-server -config=config.json
|
||
```
|
||
|
||
## 使用说明
|
||
|
||
### Web界面访问
|
||
访问 `http://your-backend-server:8080` 即可进入监控系统Web界面。
|
||
|
||
### Agent API接口
|
||
|
||
#### 获取系统指标
|
||
```bash
|
||
curl http://agent-host:8081/metrics
|
||
```
|
||
|
||
#### 获取设备信息
|
||
```bash
|
||
curl http://agent-host:8081/info
|
||
```
|
||
|
||
#### 获取进程列表
|
||
```bash
|
||
curl http://agent-host:8081/processes
|
||
```
|
||
|
||
## 配置说明
|
||
|
||
### Agent配置
|
||
|
||
Agent支持通过命令行参数配置:
|
||
|
||
```
|
||
-server # 服务端地址
|
||
-interval # 数据上报间隔
|
||
-port # 本地API服务端口(默认8081)
|
||
-log-level # 日志级别(debug, info, warn, error)
|
||
```
|
||
|
||
### Backend配置
|
||
|
||
Backend使用config.json配置文件:
|
||
|
||
```json
|
||
{
|
||
"server": {
|
||
"port": 8080,
|
||
"host": "0.0.0.0"
|
||
},
|
||
"influxdb": {
|
||
"url": "http://localhost:8086",
|
||
"token": "your-token",
|
||
"org": "monitor",
|
||
"bucket": "metrics"
|
||
},
|
||
"mysql": {
|
||
"host": "localhost",
|
||
"port": 3306,
|
||
"user": "root",
|
||
"password": "password",
|
||
"database": "monitor"
|
||
}
|
||
}
|
||
```
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
monitor/
|
||
├── agent/ # Linux监控代理
|
||
│ ├── main.go # 主程序
|
||
│ ├── go.mod # 依赖管理
|
||
│ └── agent # 编译后的可执行文件
|
||
├── agent-windows/ # Windows监控代理
|
||
│ ├── main.go # 主程序
|
||
│ ├── go.mod # 依赖管理
|
||
│ └── agent-windows.exe # 编译后的可执行文件
|
||
└── backend/ # 服务端
|
||
├── main.go # 主程序
|
||
├── config/ # 配置模块
|
||
├── internal/ # 内部模块
|
||
├── static/ # Web静态文件
|
||
└── monitor-server # 编译后的可执行文件
|
||
```
|
||
|
||
## API文档
|
||
|
||
### Agent API
|
||
|
||
#### GET /metrics
|
||
返回系统监控指标,包括CPU、内存、磁盘、网络等信息。
|
||
|
||
#### GET /info
|
||
返回设备硬件和操作系统信息。
|
||
|
||
#### GET /processes
|
||
返回当前运行的进程列表。
|
||
|
||
### Backend API
|
||
|
||
#### POST /api/v1/metrics
|
||
接收Agent上报的监控数据。
|
||
|
||
#### GET /api/v1/metrics/:device_id
|
||
获取指定设备的历史监控数据。
|
||
|
||
#### GET /api/v1/devices
|
||
获取所有注册设备列表。
|
||
|
||
## 开发计划
|
||
|
||
### 已实现功能
|
||
- ✅ 跨平台Agent(Linux/Windows)
|
||
- ✅ 系统资源监控
|
||
- ✅ 硬件信息采集
|
||
- ✅ 进程监控
|
||
- ✅ HTTP API接口
|
||
- ✅ Web界面可视化
|
||
- ✅ 数据持久化存储
|
||
|
||
### 后期实现
|
||
- [ ] **告警系统**:基于阈值的系统告警
|
||
- CPU/内存/磁盘使用率告警
|
||
- 网络流量异常告警
|
||
- 进程异常告警
|
||
- 告警通知(邮件、短信、Webhook)
|
||
- [ ] 历史数据查询和分析
|
||
- [ ] 多用户权限管理
|
||
- [ ] 集群监控支持
|
||
- [ ] 容器监控集成
|
||
- [ ] 数据导出和报表功能
|
||
|
||
## 技术栈
|
||
|
||
- **语言**:Go 1.24+
|
||
- **Web框架**:原生http包
|
||
- **数据库**:InfluxDB 2.x, MySQL 8.x
|
||
- **前端**:HTML, CSS, JavaScript, Chart.js
|
||
- **依赖管理**:Go Modules
|
||
|
||
## 贡献
|
||
|
||
欢迎提交Issue和Pull Request!
|
||
|
||
## 许可证
|
||
|
||
MIT License
|