diff --git a/plugins/other/zpool_iostat b/plugins/other/zpool_iostat new file mode 100755 index 00000000..2c830bbc --- /dev/null +++ b/plugins/other/zpool_iostat @@ -0,0 +1,43 @@ +#!/bin/sh + +zlines=`/sbin/zpool iostat -v| wc -l|sed 's/ //g'` +ztail=`echo "-"$zlines` +ztmp=/var/run/munin/zpool_iostat +zdata=`/sbin/zpool iostat -v 1 2| tail $ztail > $ztmp` +zlist=`cat $ztmp|awk '/avail/ {next}; /raid/ {next}; /mirror/ {next}; { if ( $4 >=0 ) print $1}'` +zname=`cat $ztmp|awk '/avail/ {next}; /raid/ {next}; /mirror/ {next}; { if ( $4 >=0 ) print $1}'|awk '{gsub("[^a-zA-Z0-9_]", "_", $1); print}'` +zorder=`for o in $zname; do echo $o'_read '; echo $o'_write '; done` + +if [ "$1" = "config" ]; then + echo 'graph_title zpool iostat' + echo 'graph_args --base 1000 -l 0' + echo 'graph_vlabel write - read KBytes/s' + echo 'graph_category zfs' + echo 'graph_scale no' + echo 'graph_info This graph shows zpool iostat' + echo 'graph_order '$zorder + echo $zlist | tr ' ' '\n' | while read i; do + case $i in + *) name=`echo $i | awk '{ gsub("[^a-zA-Z0-9_]", "_", $1); print }'` ;; + esac + echo $name'_read.label '$i + echo $name'_read.type GAUGE' + echo $name'_read.graph no' + echo $name'_write.label '$i + echo $name'_write.type GAUGE' + echo $name'_write.negative '$name'_read' + done + exit 0 +fi +echo $zlist | tr ' ' '\n' | while read iz; do + zlabel=`echo $iz|awk '{print $1}'` + case $iz in + *) name=`echo $iz | awk '{ gsub("[^a-zA-Z0-9_]", "_", $1); print $1 }'` ;; + esac + echo -n $name'_read.value ' + grep $zlabel $ztmp|awk '{print $6}'|awk '/M/ {print $1*1000}; /K/ {print int($1)}; /^0/ {print $1}' + echo -n $name'_write.value ' + grep $zlabel $ztmp|awk '{print $7}'|awk '/M/ {print $1*1000}; /K/ {print int($1)}; /^0/ {print $1}' +done + +rm $ztmp; touch $ztmp