# DCU 多机监控平台需求文档 ## 1. 项目概述 - **项目名称**: DCU Multi-Machine Monitor - **项目描述**: 基于 DCGM 的多台 GPU 服务器实时监控可视化平台 - **技术栈**: Python + Gradio + Plotly + SQLite --- ## 2. 功能需求 ### 2.1 多机监控 - [x] 支持同时监控多台机器 - [x] 批量添加 URL(每行一个地址) - [x] 单个添加 URL - [x] 添加 URL 后自动开始监控 - [x] 支持移除已添加的目标 - [x] 监控数据保存到数据库 ### 2.2 监控指标 从 API `http://:16081/CollectDeviceMetrics` 获取以下数据: | 字段 | 说明 | 显示方式 | |------|------|----------| | PowerUsage | 功率 (W) | 折线图 | | MemoryCap | 内存容量 | - | | MemoryUsed | 内存使用量 | 计算利用率 | | UtilizationRate | 利用率 (%) | 折线图 | | Temperature | 温度 (°C) | 折线图 | **内存利用率计算**: ``` Mem Utilization (%) = ceil(MemoryUsed / MemoryCap * 100) ``` - 精度:整数(向上取整,不四舍五入) ### 2.3 数据存储 - **数据库**: SQLite (`/public/wkx/dcgm/mon/monitor.db`) - **保留时间**: 最近 24 小时 - **自动清理**: 每次更新数据时删除超过 24 小时的数据 - **数据表**: - `monitor_targets`: 监控目标 URL 列表 - `monitor_data`: 监控数据(包含 timestamp 字段) ### 2.4 图表展示 - [x] 4 个独立 Tab 页:Power、Memory、Utilization、Temperature - [x] 每个设备单独的颜色曲线 - [x] 鼠标悬停显示详细数值 - [] 必须是折线图 ### 2.5 时间轴功能 - **默认显示**: 最近 30 分钟 - **可调范围**: 5 分钟 ~ 24 小时(1440 分钟) - [] 期望在2.4的每一个图表底部增加选中后,鼠标滚轮滑动缩放时间轴的功能 - [] 滑动鼠标滚轮:5 ~ 1440 分钟 ### 2.6 UI 布局 - 图表尺寸:高度 800px(比原来增加 1 倍) - 目标选择:下拉框切换不同机器 - 目标列表:滚动显示所有已添加的目标 --- ## 3. 页面交互 ### 3.1 添加监控目标 **方式一:单个添加** ``` 输入框: http://10.20.100.12:16081/CollectDeviceMetrics 按钮: Add Single URL ``` **方式二:批量添加** ``` 输入框: 每行一个URL http://10.20.100.12:16081/CollectDeviceMetrics http://10.20.100.13:16081/CollectDeviceMetrics ... 按钮: Batch Add URLs ``` ### 3.2 监控控制 - **Start Monitoring**: 启动监控(每5秒采集一次) - **Refresh Charts**: 刷新图表数据 - [] 增加监控失败的提示,如果失败,出现按钮,删除指定机器的监控任务; ### 3.3 多个监控目标的显示 - [] 多个监控目标的话,在监控栏,以每个机器为一个矩形区,从上向下,每台机器增加1个监控目标的监控折线图展示 - [] 每个机器的矩形区的右侧,增加停机并监控目标的按钮 --- ## 4. 配置文件 ## 5. API 数据格式 ### 5.1 输入数据 ```json [ { "MinorNumber": 0, "PciBusNumber": "0000:00:08.0", "DeviceId": "TPXS320016070601", "SubSystemName": "K100 AI", "Temperature": 57, "PowerUsage": 113, "PowerCap": 400, "MemoryCap": 68702699520, "MemoryUsed": 2142208, "UtilizationRate": 0, "PcieBwMb": 0, "Clk": 600, "Socclk": 309, "PerfLevel": "AUTO" } ] ``` ### 5.2 输出图表 - **Power**: 功率监控 (W) - **Memory**: 内存利用率 (%), 范围 0-100 - **Utilization**: 利用率 (%), 范围 0-100 - **Temperature**: 温度 (°C)