前言:由于Zabbix提供的项目和模板有限,有时我们需要自定义监控项,下面以监控磁盘I/O使用率为例,创建自动发现规则,并配置图形。

 

(1)Zabbix_agentd端自动发现脚本,zabbix要求返回的数据为json格式。

自动发现磁盘,这里有sd和md开头的,根据需求修改脚本去过滤出磁盘:

运行:/usr/local/etc/disk_io_check.sh disk_count

脚本摘自网络,可自行修改,或用其他语言编写也可以。

# vim /usr/local/etc/disk_io_check.sh
#!/bin/sh
#disk_io monitor
disk=$2
function disk_count {
diskarray=(`cat /proc/diskstats | grep -E "\b[s|m]d[a-z|0]\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|md" | awk '{if(NR==2)print $NF}')
echo $qps
}
$1

exit 0

 

(2)采集数据脚本:

也是上面的脚本/usr/local/etc/disk_io_check.sh qps

(3)配置zabbix_agentd.conf

# cat /etc/zabbix/zabbix_agentd.d/disk_io.conf

UserParameter=iostat.count,/usr/local/etc/disk_io_check.sh disk_count

UserParameter=iostat.util[*],/usr/local/etc/disk_io_check.sh qps $1

(4)重启zabbix_agentd

killall zabbix_agentd;./zabbix_agentd

 

(5)Zabbix_server端测试:返回预知的数据,则脚本和配置OK

# /usr/local/zabbix-2.2.2/bin/zabbix_get -s XXX.XXX.XXX.XXX -p 10050 -k 'iostat.count'

{

       "data":[

              {"{#DISK_NAME}":"md0"},

              {"{#DISK_NAME}":"sda"},

              {"{#DISK_NAME}":"sdb"},

              {"{#DISK_NAME}":"sdc"},

              {"{#DISK_NAME}":"sdd"}

       ]

}

 

# /usr/local/zabbix-2.2.2/bin/zabbix_get -s xxx.xxx.xxx.xxx -p 10050 -k 'iostat.util[sdc]'

2.50

(6)在模板中配置自动发现:

配置项目原型:

(7)在主机或模板中配置图形:

 

下面是数据采集一段时间后的图形:

 

至此,自动发现配置完毕。

注意点:(1)键值要对应起来(2)自动发现返回的数据为json格式

 

posted on 2017-02-27 14:59  浮沉一梦  阅读(5604)  评论(0编辑  收藏  举报