Zabbix添加自定义监控项(一)

前言:由于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 "[s|m]d[a-z|0]| 
xvd[a-z]|cciss/c[0-9]d[0-9]" | grep -i "$1" 
|awk '{print $3}' | sort|uniq 2>/dev/null`)
length=${#diskarray[@]}
printf "{
"
printf '	'""data":["
for ((i=0;i<$length;i++));do
printf '
		{'
printf ""{#DISK_NAME}":"${diskarray[$i]}"}"
if [ $i -lt $[$length-1] ];then
printf ','
fi
done
printf "
	]
"
printf "}
"
}
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格式

原文地址:https://www.cnblogs.com/jjzd/p/6474193.html