网络监控Windows的显卡使用
nvidia_gpu_exporter + prometheus + grafana

在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 测试

浏览器打开http://localhost:9090

点击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 测试

浏览器打开http://localhost:3003/

用户名 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