自动发现(LLD)提供了一种在为不一样实体自动建立监控项,触发器和图形的方法。例如,Zabbix能够在你的机器上自动监控磁盘或网卡,而无需为每一个磁盘或网卡手动建立监控项。(LLD)html
此外,能够配置Zabbix根据按期执行发现后的获得实际结果,来移除不须要的监控项。(根据正则过滤)linux
在Zabbix中,支持六种类型的发现项目:ios
发现过程的流程以下。git
首先,用户在“配置”→“模板”→“自动发现”列中建立一个发现规则。发现规则包括(1)发现必要实体(例如,磁盘或网卡)的项目和(2)应该根据该项目的值建立的监控项,触发器和图形的原型。github
其次,用户也能够本身定义发现类型,只要它们遵循特定的JSON协议。flask
须要说的是:{#FSNAME}为宏变量,宏变量,咱们以前已经说过,请参考:http://www.cnblogs.com/skyflask/p/7523535.htmlbash
流程:(好比采集linux机器上全部磁盘IO)网络
UserParameter=custom.vfs.dev.discovery,/bin/sh /etc/zabbix/externalscripts/disk.shspa
cat /etc/zabbix/externalscripts/disk.sh3d
#!/bin/bash diskarray=(`cat /proc/diskstats |grep -E "\bvd[a-z]\b|\bhd[a-z]\b|\bsd[a-z]\b|\bc0d0p[0-9]\b"|grep -i "\b$1\b"|awk '{print $3}'|sort|uniq 2>/dev/null`) length2=${#diskarray[@]} printf "{\n" printf '\t'"\"data\":[" for ((i=0;i<$length2;i++)) do printf '\n\t\t{' printf "\"{#DISK}\":\"${diskarray[$i]}\"}" if [ $i -lt $[$length2-1] ];then printf ',' fi done printf "\n\t]\n" printf "}\n"
# reads completed successfully UserParameter=custom.vfs.dev.read.ops[*],cat /proc/diskstats | egrep $1 | head -1 | awk '{print $$4}' # sectors read UserParameter=custom.vfs.dev.read.sectors[*],cat /proc/diskstats | egrep $1 | head -1 | awk '{print $$6}' # time spent reading (ms) UserParameter=custom.vfs.dev.read.ms[*],cat /proc/diskstats | egrep $1 | head -1 | awk '{print $$7}' # writes completed UserParameter=custom.vfs.dev.write.ops[*],cat /proc/diskstats | egrep $1 | head -1 | awk '{print $$8}' # sectors written UserParameter=custom.vfs.dev.write.sectors[*],cat /proc/diskstats | egrep $1 | head -1 | awk '{print $$10}' # time spent writing (ms) UserParameter=custom.vfs.dev.write.ms[*],cat /proc/diskstats | egrep $1 | head -1 | awk '{print $$11}' # I/Os currently in progress UserParameter=custom.vfs.dev.io.active[*],cat /proc/diskstats | egrep $1 | head -1 | awk '{print $$12}' # time spent doing I/Os (ms) UserParameter=custom.vfs.dev.io.ms[*],cat /proc/diskstats | egrep $1 | head -1 | awk '{print $$13}'
#IOPS
UserParameter=custom.vfs.dev.util[*],iostat -x -d -c 1 1|egrep $1|awk '{print $NF}'
上面忘记说了,咱们还能够对发现的磁盘经过正则进行过滤,正则详情参考:http://www.cnblogs.com/skyflask/p/7520829.html
最后,选定一台主机,将模板绑到他上面,就能够看到效果了:
脚本地址:https://github.com/loveqx/zabbix-doc/blob/master/zabbix-scripts/zabbix-template-disk/disk.sh
模板地址:https://github.com/loveqx/zabbix-doc/tree/master/zabbix-scripts/zabbix-template-disk
参考文献:无