自动发现规则
创建模板
老生常谈,创建模版,模板名为“NVidia Gpu Sensors Discovery” ,
然后创建应用集,自动发现规则;
- 名称:自定义,我们设置 discover gpu
- 类型:zabbix 客户端(主动式),PS:“became not supported: Timeout while executing a shell script.”此报错怀疑是服务端主动采集造成
- 键值:gpu.discovery,该值要和下面服务器上配置的自动发现脚本的键值相同
- 更新间隔:根据实际需求来,因为 GPU 的变化非常小,我们可以选择 1h 这样的间隔
创建监控项原形:
重复上述操作,根据实际情况添加 GPU 指标参数
触发器创建
GPU 服务器配置
创建自动发现脚本
代码语言:javascript复制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 'ntt{'
printf ""{#GPU_ID}":"${GPUS[$i]}"}"
if [ $i -lt $[$LENGTH-1] ];then
printf ','
fi
done
printf "nt]n"
printf "}n"
脚本执行输出如下:
代码语言:javascript复制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"}
]
}
配置自动发现以及采集项
代码语言:javascript复制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://cloud.tencent.com/developer/article/2345699