Files
monitor/README.md
2025-12-07 10:36:34 +00:00

244 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 系统监控平台
一个基于Go语言开发的跨平台系统监控工具支持Linux和Windows操作系统提供实时的系统性能监控和数据可视化功能。
## 功能特性
### 监控代理Agent
- **跨平台支持**Linux和Windows操作系统
- **系统资源监控**
- CPU使用率和负载
- 内存使用情况
- 磁盘空间和I/O
- 网络流量和连接
- **进程管理**:实时进程列表和资源消耗
- **硬件信息**CPU型号、内存大小、磁盘详情、网络接口
- **操作系统信息**:版本、架构、完整名称
- **HTTP API**:提供本地数据查询接口
### 后端服务Backend
- **数据收集**接收Agent上报的监控数据
- **数据存储**将设备token、账号密码(正式版实现)等关键数据记录到MySQL监控时序数据存储到InfluxDB
- **Web界面**:实时监控仪表盘
- **图表可视化**:系统资源趋势图
- **设备管理**:多设备监控和管理
- **API接口**:提供数据查询和管理接口
## 系统架构
```mermaid
flowchart LR
subgraph 代理层
LinuxAgent["Linux 代理"]
WindowsAgent["Windows 代理"]
end
BackendServer["Backend Server"]
subgraph 数据存储层
MySQL["MySQL"]
InfluxDB["InfluxDB"]
end
WebConsole["Web Console<br/>(数据可视化与管理界面)"]
%% 链路连接
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
获取所有注册设备列表。
## 开发计划
### 已实现功能
- ✅ 跨平台AgentLinux/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