zabbix并没有给我们提供这么一个模板来完成在Linux中磁盘IO的监控,所以我们需要自己来创建一个,在此还是在Linux OS中添加。
由于一台服务器中磁盘众多,如果只一两台可以手动添加,但服务集群达到几十那就非常麻烦,因此需要利用 自动发现 这个功能,自动发现后自动添加对服务器磁盘的监控,而且添加磁盘后也会自动添加到监控,实现自动化运维的效果,所以在这里也演示一次自动发现的配置。
打开Linux模板,添加自动发现规则上面的key值是需要在 zabbix_agent.conf 中配置的
UserParameter=disk.discovery,/usr/local/share/zabbix/alertscripts/disk_discovery.sh
自动发面的规则用shell代码实现,返回一段磁盘的json list
代码 disk_discovery.sh
#!/bin/bash diskarray=(`cat /proc/diskstats |grep -E "\bsd[abcdefg]\b|\bxvd[abcdefg]\b"|grep -i "\b$1\b"|awk '{print $3}'|sort|uniq 2>/dev/null`) length=${#diskarray[@]} printf "{\n" printf '\t'"\"data\":[" for ((i=0;i<$length;i++)) do printf '\n\t\t{' printf "\"{#DISK_NAME}\":\"${diskarray[$i]}\"}" if [ $i -lt $[$length-1] ];then printf ',' fi done printf "\n\t]\n" printf "}\n"