操作环境

Centos 7.2

 

zabbix 4.0

 

操作步骤

1.在zabbix agent获取硬盘信息,可通过下述脚本获取信息disk_scan.sh

#!/bin/bash

diskarray=(`cat /proc/diskstats |grep -E "\bsd[abcdefg]\b|\bvd[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 "\"{#DISKNAME}\":\"${diskarray[$i]}\"}"

if [ $i -lt $[$length-1] ];then

printf ','

fi

done

printf "\n\t]\n"

printf "}\n"

 

在zabbix agent端通过zabbix用户运行该脚本结果如下:

[root@user ~]# su -s /bin/bash zabbix

bash-4.2$ /etc/zabbix/zabbix_agentd.d/disk_scan.sh

{

"data":[

{"{#DISKNAME}":"sda"}

]

}

 

 

2.在zabbix agent通过iostat获取硬盘性能信息,并将该信息写入文本中

# nohup iostat -m -x -d 30 >> /tmp/iostat_output &

为了以后方便使用,可将该命令写入到自动启动中。

我们查看下iostat的性能参数[

root@user ~]# iostat -mx -d 30

Linux 3.10.0-327.36.2.el7.x86_64 (ovirt-host-227) 11/30/2016 _x86_64_ (16 CPU)

Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util

sda 0.00 0.17 1.80 6.99 0.06 0.06 27.62 0.06 7.12 5.38 7.57 4.39 3.85

dm-0 0.00 0.00 0.01 0.00 0.00 0.00 16.30 0.00 24.89 24.89 0.00 24.13 0.01

dm-1 0.00 0.00 0.20 0.14 0.01 0.00 90.54 0.01 17.26 23.12 9.06 5.32 0.18

dm-2 0.00 0.00 1.57 6.32 0.04 0.06 26.50 0.08 10.11 2.90 11.90 4.68 3.69

 

3.在了解硬盘的基本信息以及性能信息后,我们来设置zabbix-agent,添加下述内容至zabbix agent配置文件中

UserParameter=io.scandisk[*],/etc/zabbix/zabbix_agentd.d/disk_scan.sh $1

UserParameter=io.rps[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b"|tail -1|awk '{print $$4}'

UserParameter=io.wps[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$5}'

UserParameter=io.rMBps[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$6}'

UserParameter=io.wMBps[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$7}'

UserParameter=io.avgrq-sz[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$8}'

UserParameter=io.avgqu-sz[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$9}'

UserParameter=io.await[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$10}'

UserParameter=io.r_await[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$11}'

UserParameter=io.w_await[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$12}'

UserParameter=io.svctm[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$13}'

UserParameter=io.util[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$14}'

重启 zabbix-agent

[root@user ~]# systemctl restart zabbix-agent
bash-4.2$ zabbix_get -s 10.10.200.227 -p 10050 -k io.scandisk

{

"data":[

{"{#DISKNAME}":"sda"}

]

}

bash-4.2$ zabbix_get -s 10.10.200.227 -p 10050 -k io.util[sda]

4.05

bash-4.2$ zabbix_get -s 10.10.200.227 -p 10050 -k io.rps[sda]

0.00

bash-4.2$ zabbix_get -s 10.10.200.227 -p 10050 -k io.wps[sda]

6.77

通过以上zabbix_get的测试,可以确定zabbix-agent与zabbix-server之前获取数值没有问题,下面我们在zabbix web console来创建Template

zabbix4.0   自动发现监控磁盘IO-LMLPHP

 

 

 

创建discovery rule,注意在key中填写io.scandisk为zabbix-agent中设置的参数

zabbix4.0   自动发现监控磁盘IO-LMLPHP

创建item prototype,注意这里是在discovery rule下面的item prototype

zabbix4.0   自动发现监控磁盘IO-LMLPHP

下面我们来创建item prototype,以io.util为例,注意“#DISKNAME”参数,为zabbix-agent的disk_scan.sh脚本中的参数,io.util为zabbix-agent配置文件中的参数,在这里设置

数据类型为Numeric(float)

zabbix4.0   自动发现监控磁盘IO-LMLPHP

创建完成所有item prototype,如下图所示

zabbix4.0   自动发现监控磁盘IO-LMLPHP

我们将该template添加至zabbix-agent 被监控机器中,在添加完成以后,我们查看被监控机器的item列表中,可以查看到自动发现的硬盘以及上面所创建的监控参数

zabbix4.0   自动发现监控磁盘IO-LMLPHP

我们创建graphs来显示这些内容

显示硬盘各种利用率(多块磁盘可以同时添加进来)

zabbix4.0   自动发现监控磁盘IO-LMLPHP

 

创建完成后点击preview可以查看该graph

zabbix4.0   自动发现监控磁盘IO-LMLPHP

 

 

11-10 19:59