# 萌芽监控面板 - 后端服务

## 概述
Linux 服务器监控后端服务，使用 Go 原生 net/http 库实现。

## 功能
- CPU 使用率和负载监控
- 内存使用情况
- 磁盘存储监控
- GPU 监控（支持 NVIDIA）
- 操作系统信息
- 系统运行时间

## API 端点

### `GET /api/health`
健康检查端点
```json
{
  "status": "ok",
  "timestamp": "2025-12-10T10:00:00Z"
}
```

### `GET /api/metrics`
获取系统监控指标
```json
{
  "data": {
    "hostname": "server1",
    "timestamp": "2025-12-10T10:00:00Z",
    "cpu": {
      "model": "Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz",
      "cores": 8,
      "usagePercent": 23.45,
      "loadAverages": [1.2, 1.5, 1.8]
    },
    "memory": {
      "totalBytes": 16777216000,
      "usedBytes": 8388608000,
      "freeBytes": 8388608000,
      "usedPercent": 50.0
    },
    "storage": [{
      "mount": "/",
      "totalBytes": 107374182400,
      "usedBytes": 53687091200,
      "freeBytes": 53687091200,
      "usedPercent": 50.0
    }],
    "gpu": [{
      "name": "Tesla T4",
      "memoryTotalMB": 15360,
      "memoryUsedMB": 512,
      "utilizationPercent": 15.0,
      "status": "ok"
    }],
    "os": {
      "kernel": "Linux version 5.15.0",
      "distro": "Ubuntu 22.04 LTS",
      "architecture": "amd64"
    },
    "uptimeSeconds": 864000.5
  }
}
```

## 运行方式

### 开发环境
```bash
go run .
```

### 生产环境

#### 标准编译
```bash
# 编译
go build -o mengyamonitor-backend

# 运行
./mengyamonitor-backend
```

#### 兼容旧版本系统编译（推荐）

如果需要在 Debian 11 或其他旧版本系统上运行，使用静态链接编译：

```bash
# 禁用 CGO，静态链接（不依赖系统 GLIBC 版本）
export CGO_ENABLED=0
go build -ldflags="-s -w" -o mengyamonitor-backend .

# 或使用提供的脚本
chmod +x build.sh
./build.sh
```

这样可以避免 GLIBC 版本兼容性问题。详细说明请参考 [BUILD.md](./BUILD.md)。

### 环境变量
- `HOST`: 监听地址，默认 `0.0.0.0`
- `PORT`: 监听端口，默认 `9292`

示例：
```bash
PORT=8080 ./mengyamonitor-backend
```

## 部署到服务器

1. 将编译好的二进制文件上传到目标服务器
2. 赋予执行权限：`chmod +x mengyamonitor-backend`
3. 运行服务：`./mengyamonitor-backend`
4. 可选：使用 systemd 或 supervisor 管理服务进程

## 注意事项
- 仅支持 Linux 系统
- GPU 监控需要安装 nvidia-smi 工具
- 需要读取 /proc 文件系统的权限
