Zabbix For Nvidia Gpu Discovery

Updated on with 0 views and 0 comments

自动发现规则

创建模板

老生常谈,创建模版,模板名为“NVidia Gpu Sensors Discovery” ,

image.png

然后创建应用集,自动发现规则;

  • 名称:自定义,我们设置 discover gpu
  • 类型:zabbix 客户端(主动式),PS:“became not supported: Timeout while executing a shell script.”此报错怀疑是服务端主动采集造成
  • 键值:gpu.discovery,该值要和下面服务器上配置的自动发现脚本的键值相同
  • 更新间隔:根据实际需求来,因为 GPU 的变化非常小,我们可以选择 1h 这样的间隔

image.png

image.png

创建监控项原形:

image.png

重复上述操作,根据实际情况添加 GPU 指标参数

image.png

触发器创建

image.png

GPU 服务器配置

创建自动发现脚本

root@ucloud-wlcb-gpu-022:~# cat /etc/zabbix/externalscripts/gpu_discovery.sh 
#!/bin/bash
GPUS=(`nvidia-smi -L | awk -F ' |:' '{print $2}'`)
LENGTH=${#GPUS[*]}

printf "{\n"
printf  '\t'"\"data\":["
for ((i=0;i<$LENGTH;i++))
do
        printf '\n\t\t{'
        printf "\"{#GPU_ID}\":\"${GPUS[$i]}\"}"
        if [ $i -lt $[$LENGTH-1] ];then
                printf ','
        fi
done
printf  "\n\t]\n"
printf "}\n"

脚本执行输出如下:

root@ucloud-wlcb-gpu-022:~# bash /etc/zabbix/externalscripts/gpu_discovery.sh
{
	"data":[
		{"{#GPU_ID}":"0"},
		{"{#GPU_ID}":"1"},
		{"{#GPU_ID}":"2"},
		{"{#GPU_ID}":"3"},
		{"{#GPU_ID}":"4"},
		{"{#GPU_ID}":"5"},
		{"{#GPU_ID}":"6"},
		{"{#GPU_ID}":"7"}
	]
}

配置自动发现以及采集项

root@ucloud-wlcb-gpu-022:~# cat /etc/zabbix/zabbix_agentd.conf.d/userparameter_gpus.conf 
UserParameter=gpu.discovery,/etc/zabbix/externalscripts/gpu_discovery.sh
UserParameter=gpu.name[*],nvidia-smi -i $1 --query-gpu=name --format=csv,noheader,nounits
UserParameter=gpu.temp[*],nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader,nounits -i $1
UserParameter=gpu.memtotal[*],nvidia-smi --query-gpu=memory.total --format=csv,noheader,nounits -i $1
UserParameter=gpu.used[*],nvidia-smi --query-gpu=memory.used --format=csv,noheader,nounits -i $1
UserParameter=gpu.free[*],nvidia-smi --query-gpu=memory.free --format=csv,noheader,nounits -i $1
UserParameter=gpu.fanspeed[*],nvidia-smi --query-gpu=fan.speed --format=csv,noheader,nounits -i $1
UserParameter=gpu.utilisation[*],nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader,nounits -i $1
UserParameter=gpu.power[*],nvidia-smi --query-gpu=power.draw --format=csv,noheader,nounits -i $1
UserParameter=gpu.Volatile_SRAM_ECC[*],nvidia-smi -q -d ECC -i $1 | grep Uncorrectable | awk 'NR==1{print $$4}'
UserParameter=gpu.Volatile_DRAM_ECC[*],nvidia-smi -q -d ECC -i $1 | grep Uncorrectable | awk 'NR==2{print $$4}'
UserParameter=gpu.Aggregate_SRAM_ECC[*],nvidia-smi -q -d ECC -i $1 | grep Uncorrectable | awk 'NR==3{print $$4}'
UserParameter=gpu.Aggregate_DRAM_ECC[*],nvidia-smi -q -d ECC -i $1 | grep Uncorrectable | awk 'NR==4{print $$4}'
UserParameter=gpu.Remapping[*],nvidia-smi -q -i $1 | grep Remapping | awk {'print $$5'}

zabbix-agent 必须是 root 用户允许启动,脚本执行需要此权限;

模板可以参考这里:

community-templates/Server_Hardware/Other/template_nvidia-smi_integration/5.0 at main · zabbix/community-templates · GitHub


标题:Zabbix For Nvidia Gpu Discovery
作者:cuijianzhe
地址:https://solo.cjzshilong.cn/articles/2023/07/25/1690297009683.html