自動發現(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
參考文獻:無