reew 发表于 2016-4-15 10:14:21

zabbix自动发现硬盘并监控其IO

在使用zabbix监控Linux主机的时候,我们希望zabbix能够自动发现Linux主机上有多少块硬盘,而不是我们手动去添加。实验目的:
让zabbix能够自动发现Linux服务器的磁盘,并能够监控磁盘IO且绘出图形
实验设备:
zabbix-server: 172.17.5.230
zabbix-client:182.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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/bin/sh
#disk_io monitor
disk=$2
function disk_count {
diskarray=(`cat /proc/diskstats | grep -E "\bsd\b| \
\bxvd\b|cciss/cd\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

1
sh /usr/local/zabbix/bin/disk_io_check.sh disk_count




输出如下:

1
2
3
4
5
6
7
8
{
"data":[
    {"{#DISK_NAME}":"sda"},
    {"{#DISK_NAME}":"sdb"},
    {"{#DISK_NAME}":"sdc"},
    {"{#DISK_NAME}":"sdd"}
    ]
}




脚本执行验证通过,我们还需要修改zabbix-client端,修改zabbix_agentd.conf配置文件

1
vim /usr/local/zabbix/etc/zabbix_agentd.conf




添加(没有注销的是新增的,把注销的也写出来主要是为了方便查看在什么位置添加)如下所示

1
2
3
4
# 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 编辑文件

1
2
cd /usr/local/zabbix/etc/zabbix_agentd.conf.d/
vim zabbixd.conf




在文件中添加zabbix监控项目的key值,文件内容如下

1
2
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

1
/etc/init.d/zabbix_agentd




到此在服务器端配置完成,接下来需要打开zabbix服务器端web页面进行配置在浏览器中打开点configuration--->templates----->create tempalte如果有现有的模版也可以直接编辑现有的模版,这里我们直接编辑一个现有的模版如下图所示:

然后再点击右上角的create item prototype

这个key值写iostat.count,填写完这个后保存,然后点击item prototypes 如下图所示

然后再点击右上角的create item prototype


zhangk188 发表于 2016-4-23 15:28:26

过来学习一下
页: [1]
查看完整版本: zabbix自动发现硬盘并监控其IO