# MonitorServer **Repository Path**: VinMoria/MonitorServer ## Basic Information - **Project Name**: MonitorServer - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-07 - **Last Updated**: 2026-08-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Ubuntu 服务器监控 Web 面板 一个轻量级的 Ubuntu 服务器状态监控页面,实时展示 **温度、CPU、内存、硬盘、网络** 使用情况。 - 后端:Python + FastAPI + psutil(后台线程每 2 秒采样一次) - 前端:单文件 HTML,无任何外部依赖,每 2 秒自动刷新,带历史曲线 ## 目录结构 ``` server-monitor/ ├── server.py # 后端:FastAPI 服务 + 指标采集 ├── requirements.txt # Python 依赖 ├── static/ │ └── index.html # 前端仪表盘(单文件,无外部依赖) └── README.md ``` ## 部署步骤(Ubuntu) ### 1. 安装依赖 ```bash # 需要 Python 3.8+(Ubuntu 20.04 及以上自带) sudo apt update sudo apt install -y python3 python3-pip python3-venv # 温度传感器支持(可选,推荐安装) sudo apt install -y lm-sensors sudo sensors-detect # 按提示一路回车,最后选择 yes 加载内核模块 # 创建虚拟环境并安装项目依赖 cd server-monitor python3 -m venv venv source venv/bin/activate pip install -r requirements.txt ``` ### 2. 启动服务 ```bash python server.py # 默认监听 0.0.0.0:8000 ``` 浏览器访问 `http://<服务器IP>:8000` 即可看到监控面板。 ### 3. 后台常驻运行(systemd 推荐) 创建服务文件 `/etc/systemd/system/server-monitor.service`: ```ini [Unit] Description=Server Monitor Dashboard After=network.target [Service] Type=simple WorkingDirectory=/opt/server-monitor ExecStart=/opt/server-monitor/venv/bin/python /opt/server-monitor/server.py Restart=always RestartSec=3 # 温度传感器需要读取 /sys/class/thermal,建议用 root 或单独授权 User=root [Install] WantedBy=multi-user.target ``` ```bash sudo systemctl daemon-reload sudo systemctl enable --now server-monitor sudo systemctl status server-monitor # 查看运行状态 ``` ### 4. 防火墙(可选) ```bash # 仅内网访问时,可限制来源网段 sudo ufw allow from 192.168.1.0/24 to any port 8000 ``` ## 注意事项 - **无鉴权**:本面板默认不设登录,任何能访问到 8000 端口的人都能看到监控数据。 建议仅在内网使用,或通过 Nginx/Caddy 反代加 Basic Auth。 - **温度读取**:`psutil` 通过 `/sys/class/thermal` 或 lm-sensors 读取温度。 若页面显示"暂无温度传感器数据",说明系统没有可读的传感器(虚拟机、部分 云服务器、某些主板无此接口),这是正常现象。 - **端口修改**:编辑 `server.py` 末尾的 `port=8000` 即可。 ## 接口 | 路径 | 说明 | |---------------|-----------------------------------| | `/` | 监控页面(static/index.html) | | `/api/stats` | 指标 JSON(温度/CPU/内存/硬盘/网络)| | `/api/health` | 健康检查 `{"status":"ok"}` | 前端每 2 秒轮询 `/api/stats`。数据字段:`cpu`(使用率/每核/负载/频率)、 `memory`/`swap`(总量/已用/百分比)、`disks`(各挂载点)、`temperature` (各传感器温度)、`network`(收发速度/累计流量)、`uptime_seconds`、 `hostname`。