在Windows使用任务管理器,查看GPU的占用、显存使用、显卡温度等数据非常方便,但是需要在本机的桌面进行直接操作才能查看。
当Windows GPU作为服务器在提供LLM服务后,就需要在局域网内远程进行GPU的监控,而且可以接入一些监控平台如zabbix、grafana等。
本文就介绍在Windows主机上部署监控软件,可以远程进行显卡性能监控。
这里使用nvidia_gpu_exporter和windows_exporter采集监控数据,Prometheus数据整合监控,Grafana图形化显示。
关系如下:
graph LR A(Grafana\n3003) A --> B(Prometheus\n9090) B --> C(nvidia_gpu_exporter\n9835) B --> D(windows_exporter\n9172)
1. 安装NVidia监控
1.1 修改安全协议
修改安全协议为TLS,开始按钮右键 - 终端 非管理员启动Powershell命令行
查看当前协议:
[Net.ServicepointManager]::SecurityProtocol
SystemDefault
当前为SystemDefault
修改为Tls12:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
再次查看当前协议:
[Net.ServicepointManager]::SecurityProtocol
Tls12
1.2 安装scoop
重新管理员启动Powershell:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression
iex "& {$(irm get.scoop.sh)} -RunAsAdmin"
1.3 安装nvidia_gpu_exporter
scoop install git
scoop install nssm --global
scoop bucket add nvidia_gpu_exporter https://github.com/utkuozdemir/scoop_nvidia_gpu_exporter.git
scoop install nvidia_gpu_exporter/nvidia_gpu_exporter --global
1.4 开通防火墙
New-NetFirewallRule -DisplayName "Nvidia GPU Exporter" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 9835
1.5 设为系统服务
nssm install nvidia_gpu_exporter "C:\ProgramData\scoop\apps\nvidia_gpu_exporter\current\nvidia_gpu_exporter.exe"
Start-Service nvidia_gpu_exporter
1.6 测试
浏览器打开 http://localhost:9835/metrics,返回的内容里应该可以搜索到显卡型号。
2. 安装Windows监控
除了显卡的监控,随便也监控Windows自身的CPU、Memory、DIsk等信息,也把windows_exporter一起装上。
2.1 下载安装windows_exporter
从官方Github下载windows_exporter-0.25.1-amd64.msi安装文件,运行安装。安装完成后会自动添加到系统服务启动。
2.2 测试
浏览器打开http://localhost:9182/metrics
3. 安装Prometheus
3.1 下载解压
从官网下载Windows版本压缩包 prometheus-2.51.0.windows-amd64.zip
解压到到C:\Program Files\prometheus\prometheus.exe
3.2 修改配置
打开prometheus.yml
配置文件
修改读取间隔时间为5秒:
scrape_interval: 5s
在文件末尾添加数据来源:
- job_name: "Windows"
static_configs:
- targets: ["localhost:9182"]
- job_name: "Windows-GPU"
static_configs:
- targets: ["localhost:9835"]
3.3 运行
双击prometheus.exe
运行
3.4 测试
点击Status
- Target
可以看到2个Endpointd的State都是UP状态。
3.5 设为系统服务
管理员身份打开powershell
nssm install prometheus "C:\Program Files\prometheus\prometheus.exe"
Start-Service prometheus
4. 安装Grafana
4.1 下载安装
从官网下载Windows Installer版本的grafana-enterprise-10.4.0.windows-amd64.msi
文件,运行安装。
4.2 修改配置
打开C:\Program Files\GrafanaLabs\grafana\conf\defaults.ini
把端口修改成3003,因为我的3000端口给了FastGPT的Web使用。
http_port = 3003
保存退出。 如果无法保存,右键ini文件属性 - 安全,把当前用户的修改权限勾上。
4.3 启动/重启
双击C:\Program Files\GrafanaLabs\grafana\bin\grafana-server.exe
或者 开始 - 右键 - 计算机管理 - 服务和程序 - 服务, 右键找到Grafana,重启服务。
4.4 测试
用户名 admin
,密码 admin
登录。
4.5 配置数据源
Configuration - Add data source - Prometheus,填入URL http://localhost:9090/
4.6 配置大屏
New Dashboard - Import ,URL or ID输入: 14694
,这个是一个社区里的主题ID,可以找一个自己喜欢的。
4.7 添加显卡监控
Add - Visualization
左侧Metric选择nvidia_smi_utilization_gpu_ratio
右侧Title: GPU占用
Unit选Percent(0-1)
,Max填1
,表示100%
Add - Visualization
左侧Metric选择nvidia_smi_memory_used_bytes
右侧Title:GPU显存占用
Unit选byte
,Max填12884901888
,表示12GB
Add - Visualization
左侧Metric选择nvidia_smi_temperature_gpu
右侧Title:GPU温度
Unit选Celsius
,Max填100
,表示100摄氏度
4.8 添加系统监控
Add - Visualization
左侧Metrics browser:(avg without (cpu) (sum(irate(windows_cpu_time_total{instance="$server",mode!="idle"}[5m])) by (mode)) / 16)* 100
右侧Title:CPU使用
Add - Visualization
左侧添加多个Metrics browser:
windows_cs_physical_memory_bytes{instance=~"$server"}
windows_os_virtual_memory_free_bytes{instance=~"$server"}
右侧Title:内存使用
Last modified on 2024-03-21