在使用zabbix监控Linux主机的时候,我们希望zabbix能够自动发现Linux主机上有多少块硬盘,而不是我们手动去添加。
实验目的:
让zabbix能够自动发现Linux服务器的磁盘,并能够监控磁盘IO且绘出图形
实验设备:
zabbix-server: 172.17.5.230
zabbix-client: 172.17.5.219
实验环境:
linux centos 6.6
zabbix-2.4.6
实验步骤
1. 在zabbix客户端的安装目录,如/usr/local/zabbix/bin/目录下添加名为diskiocheck.sh的脚本
2. 进入/usr/local/zabbix/bin/目录
3. 创建新文件touch diskiocheck.sh
4. 编写vim diskiocheck.sh
#!/bin/sh #disk_io monitor disk=$2 function disk_count { diskarray=(`cat /proc/diskstats | grep -E "\bsd[a-z]\b| \ \bxvd[a-z]\b|cciss/c[0-9]d[0-9]\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" } function qps { qps=$(iostat $disk -x 1 2 | grep -E "^sd|^cciss" | awk '{if(NR==2)print $NF}') echo $qps } $1
为了zabbix能够读取执行结果,需要把它输出为json格式。如下所示执行脚本里函数disk_count
sh /usr/local/zabbix/bin/disk_io_check.sh disk_count
输出如下:
{ "data":[ {"{#DISK_NAME}":"sda"}, {"{#DISK_NAME}":"sdb"}, {"{#DISK_NAME}":"sdc"}, {"{#DISK_NAME}":"sdd"} ] }
脚本执行验证通过,我们还需要修改zabbix-client端,修改zabbix_agentd.conf配置文件
vim /usr/local/zabbix/etc/zabbix_agentd.conf
添加(没有注销的是新增的,把注销的也写出来主要是为了方便查看在什么位置添加)如下所示
# Include=/usr/local/etc/zabbix_agentd.userparams.conf # Include=/usr/local/etc/zabbix_agentd.conf.d/ # Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
然后在/usr/local/zabbix/etc/zabbix_agentd.conf.d/目录底下创建文件,名字可以随便起个,在这里文件名为:zabbixd.conf 编辑文件
cd /usr/local/zabbix/etc/zabbix_agentd.conf.d/ vim zabbixd.conf
在文件中添加zabbix监控项目的key值,文件内容如下
UserParameter=iostat.count[*],/usr/local/zabbix/bin/disk_io_check.sh disk_count $1 UserParameter=iostat.util[*],/usr/local/zabbix/bin/disk_io_check.sh qps $1
添加完毕后重启 zabbix_agentd
/etc/init.d/zabbix_agentd
到此在服务器端配置完成,接下来需要打开zabbix服务器端web页面进行配置在浏览器中打开点configuration--->templates----->create tempalte如果有现有的模版也可以直接编辑现有的模版,这里我们直接编辑一个现有的模版如下图所示:
然后再点击右上角的create item prototype
这个key值写iostat.count,填写完这个后保存,然后点击item prototypes 如下图所示
然后再点击右上角的create item prototype
转载于:https://blog.51cto.com/duyunlong/1763863