yiwai 发表于 2017-12-31 11:00:26

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 "\bd\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|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'
  

  
2.50
  

  

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

  配置项目原型:

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

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

  至此,自动发现配置完毕。
  注意点:(1)键值要对应起来(2)自动发现返回的数据为json格式
页: [1]
查看完整版本: Zabbix添加自定义监控项(一)