老生常谈,创建模版,模板名为“NVidia Gpu Sensors Discovery” ,
然后创建应用集,自动发现规则;
创建监控项原形:
重复上述操作,根据实际情况添加 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 用户允许启动,脚本执行需要此权限;
模板可以参考这里: