这是一个C/S架构的服务器状态监控系统,用于收集和展示多台Linux服务器的系统状态信息。
- 客户端定时采集并发送系统状态信息(CPU、GPU、内存、磁盘)
- 服务器端接收数据并以JSON格式存储
- 提供Web界面展示服务器状态:
- 所有服务器的最新状态概览
- 各服务器的历史状态记录
- 使用颜色编码(绿色、黄色、红色)标记服务器状态级别
- 使用纯Python标准库实现,无第三方依赖
- 通过HTTP协议发送数据到服务器
- 采集以下系统信息:
- CPU使用率
- GPU使用率(如果有NVIDIA GPU)
- 内存使用情况
- 磁盘使用情况
- 使用FastAPI框架构建
- 使用Jinja2模板引擎生成HTML页面
- 数据以JSON格式存储在
data/<hostname>/<datetime>.json - 通过
watch.py在终端查看当前状态
- 克隆或下载代码
- 安装依赖:
pip install fastapi uvicorn jinja2- 启动服务器:
uvicorn main:app --host 0.0.0.0 --port 8000- [可选] 终端查看状态:
# 1. TUI
python3 watch.py
# 2. Web
lynx "http://localhost:8000"- 复制
client.py到需要监控的服务器 - 启动客户端:
python client.py "your_server_url"服务器端提供以下页面:
/- 主页,显示所有服务器的最新状态概览/history- 显示所有被监控服务器的列表/server/{hostname}- 显示特定服务器的历史状态记录
.
├── client.py # 客户端脚本
├── server.py # 服务器端脚本
├── data/ # 数据存储目录
│ └── hostname/ # 按主机名分类的数据
│ ├── latest.json # 最新状态数据
│ └── yyyy-mm-dd_HH-MM-SS.json # 历史数据
└── templates/ # HTML模板
├── base.html
├── index.html
├── history.html
└── server_detail.html
要在客户端添加新的指标:
- 在
SystemStatsCollector类中添加新的采集方法 - 在
collect_stats方法中包含新指标 - 更新服务器端模板以显示新指标