在使用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 monitordisk=$2function 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++));doprintf '\n\t\t{'printf "\"{#DISK_NAME}\":\"${diskarray[$i]}\"}"if [ $i -lt $[$length-1] ];thenprintf ','fidoneprintf "\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/*.confInclude=/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 $1UserParameter=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