You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从WMI返回列表中提取Nvidia显卡编码、解码器使用率指标

解决方案

一、指标提取方法

方法1:解析info方法输出(快速实现)

PowerShell中可以用Select-String实现类似Linux grep的过滤功能,直接从原有脚本的输出中匹配提取数值:

$gpus = Get-WmiObject -namespace "root\cimv2\nv" -class gpu
foreach($object in $gpus) {
    $gpuInfoOutput = $object.invokeMethod("info",$null)
    # 提取编码器使用率
    $encoderUsage = $gpuInfoOutput | Select-String "VideoEngine Encoder usage: (\d+)%" | ForEach-Object {$_.Matches.Groups[1].Value}
    # 提取解码器使用率
    $decoderUsage = $gpuInfoOutput | Select-String "VideoEngine Decoder usage: (\d+)%" | ForEach-Object {$_.Matches.Groups[1].Value}

    Write-Host "编码器使用率:$encoderUsage%"
    Write-Host "解码器使用率:$decoderUsage%"
}

方法2:直接读取videoCodec子类属性(更稳定,推荐)

无需解析文本输出,直接读取WMI对象属性,兼容性和稳定性更好:

  1. 先确认videoCodec子类的属性名,执行以下命令查看所有字段:
$gpu = Get-WmiObject -Namespace "root\cimv2\nv" -Class Gpu | Select-Object -First 1
$gpu.videoCodec | Select-Object *
  1. 确认字段名后直接读取数值,示例代码:
$gpuList = Get-WmiObject -Namespace "root\cimv2\nv" -Class Gpu
foreach($gpu in $gpuList) {
    $codecData = $gpu.videoCodec
    # 以下字段名根据上一步查询结果调整
    $encoderUsage = $codecData.encoderUsage
    $decoderUsage = $codecData.decoderUsage

    Write-Output $encoderUsage
    Write-Output $decoderUsage
}

二、接入Zabbix监控步骤

1. 编写Zabbix专用采集脚本

将以下内容保存为C:\zabbix\scripts\get_nv_codec_usage.ps1,支持传入参数返回对应指标:

param(
    [Parameter(Mandatory=$true)]
    [ValidateSet("encoder","decoder")]
    [string]$MetricType,
    [int]$GpuId = 0
)
# 获取指定ID的显卡对象
$gpu = Get-WmiObject -Namespace "root\cimv2\nv" -Class Gpu | Select-Object -Index $GpuId
$codecData = $gpu.videoCodec

if($MetricType -eq "encoder") {
    Write-Output $codecData.encoderUsage
} else {
    Write-Output $codecData.decoderUsage
}

2. 修改Zabbix Agent配置

打开Zabbix Agent配置文件zabbix_agentd.conf,添加以下自定义监控项:

# 单卡场景直接使用以下配置
UserParameter=gpu.encoder.usage,powershell -ExecutionPolicy Bypass -File "C:\zabbix\scripts\get_nv_codec_usage.ps1" -MetricType encoder
UserParameter=gpu.decoder.usage,powershell -ExecutionPolicy Bypass -File "C:\zabbix\scripts\get_nv_codec_usage.ps1" -MetricType decoder

# 多卡场景可使用带参数的配置,示例为获取第2张卡(ID=1)的编码器使用率:UserParameter=gpu.encoder.usage[*],powershell -ExecutionPolicy Bypass -File "C:\zabbix\scripts\get_nv_codec_usage.ps1" -MetricType encoder -GpuId $1

3. 验证配置

  1. 重启Zabbix Agent服务使配置生效
  2. 在Zabbix服务端使用zabbix_get工具测试是否能正常获取数值:
zabbix_get -s 目标主机IP -k gpu.encoder.usage
  1. 测试正常后,即可在Zabbix后台为对应主机添加对应监控项,配置触发器、图表等可视化规则。

内容的提问来源于stack exchange,提问作者j4ck1nth3b0x

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 23:18:05