Zabbix 官方中没有监控GPU模板。在GitHub上有大神制作了关于GPU状态的模板,其原理为监控NVidia-smi的状态。通过自动发现规则发现服务器中的显卡,并通过监控NVidia-smi的状态后输出至zabbix中。
环境:
1)Centos9安装zabbix 7.0;
2)GPU服务器为8*4090显卡,系统ubuntu 22.0,已安装CAUD及显卡驱动;
GPU服务器中的配置
安装zabbix-agent
此处下载的是Ubuntu 22版本的zabbix7.0版本的zabbix agent
root@yorick:~#wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-1+ubuntu22.04_all.deb
root@yorick:~#sudo dpkg -i zabbix-release_7.0-1+ubuntu22.04_all.deb
root@yorick:~#sudo apt update -y
root@yorick:~#sudo apt install -y zabbix-agent
在GPU服务器中安装jd
root@yorick:~#apt install -y jq
修改zabbix_agentd.conf配置文件
root@yorick:~#vim /etc/zabbix/zabbix_agentd.conf
将下列复制在zabbix_agentd.conf最末端即可
/*获取GPU数量*/
UserParameter=gpu.number,nvidia-smi -L | wc -l
/*自动发现GPU(生成类似 {"data": [{"{#GPUINDEX}":"0"}, {"{#GPUINDEX}":"1"}, ...]} 的JSON)*/
UserParameter=gpu.discovery,nvidia-smi -L | awk '{print "{ \"{#GPUINDEX}\":" NR-1 "}"}' | jq -s '{ "data": . }'
/*方法一:使用 -i 参数直接指定GPU设备ID(推荐,更直接,避免行号问题)*/
UserParameter=gpu.memfree[*],nvidia-smi -i $1 --query-gpu=memory.free --format=csv,noheader,nounits
UserParameter=gpu.memtotal[*],nvidia-smi -i $1 --query-gpu=memory.total --format=csv,noheader,nounits
UserParameter=gpu.memused[*],nvidia-smi -i $1 --query-gpu=memory.used --format=csv,noheader,nounits
UserParameter=gpu.temp[*],nvidia-smi -i $1 --query-gpu=temperature.gpu --format=csv,noheader,nounits
UserParameter=gpu.utilization[*],nvidia-smi -i $1 --query-gpu=utilization.gpu --format=csv,noheader,nounits
重启zabbix-agent.service并设置为开机启动
root@yorick:~#systemctl restart zabbix-agent.service
root@yorick:~#systemctl enable zabbix-agent.service
Github模板下载
如Zabbix版本为7.0或以上,下载【zbx_nvidia-smi-multi-gpu.yaml】;zabbix 7.0以下,下载【zbx_nvidia-smi-multi-gpu.xml】
模板下载地址:zabbix-nvidia-smi-multi-gpu
将下载模板导入zabbix中
Zabbix 页面中,【数据采集】->【模板】->【导入】->将下载好的【zbx_nvidia-smi-multi-gpu.yaml】导入
创建主机并将模板绑定在该主机上;
PS:【Number of GPUs】一定要通,如出现【Unsupported item key】则要修改【zabbix_agentd.conf】新添加的配置文件;
此时出现数值8,为该服务器有8块显卡;
等待一段时间,当自动发现规则完成后,将出现以下信息:
此时测试【GPU [0] Memory Used】,即第一块显卡显存使用率,出现数值:
与服务器上的NVidia-smi中的数值一致,至此结束。(除使用率外,还可检测GPU温度,GPU空闲显存及GPU在线状态等信息)
本文由 yorickbao 创作,采用 知识共享署名4.0 国际许可协议进行许可。
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。