2
0
mirror of https://github.com/munin-monitoring/contrib.git synced 2018-11-08 00:59:34 +01:00
contrib-munin/plugins/zfs/zfs-filesystem-graph

88 lines
2.4 KiB
Plaintext
Raw Normal View History

2010-12-04 19:05:12 +01:00
#!/usr/local/bin/bash
2010-12-01 15:23:50 +01:00
#
# Plugin to monitor a ZFS Filesystem
#
# Wildcard-plugin to monitor a zfs filesystems.
2010-12-30 09:33:43 +01:00
#
2010-12-01 15:23:50 +01:00
# To monitor a filesystem, link zfs_fs_<zpool>_<filesystem> to this file. E.g.
#
# ln -s /usr/share/munin/node/plugins-auto/zfs_fs_ /etc/munin/node.d/zfs_fs_tank_foo
#
# ...will monitor tank/foo fs.
#
# You can monitor zpool as well by a link on zfs_fs_<zpool>
#
# Parameters understood:
#
# config (required)
# autoconf (optional - used by munin-config)
2010-12-30 09:33:43 +01:00
#
# ** WARNING **
# For now this plugin does not allow "_" in the name of a zpool or filesystems
2010-12-01 15:23:50 +01:00
#
2010-12-03 22:54:42 +01:00
myname=`basename $0 | sed 's/^zfs_fs_//g' | sed -e 's/_/\//g'`
2010-12-01 15:23:50 +01:00
if [ "$1" = "autoconf" ]; then
# Makes little sense to autoconf if you can't suggest
echo no
exit 0
fi
if [ "$1" = "suggest" ]; then
exit 0
fi
2010-12-04 19:05:12 +01:00
values=( $(zfs get -p usedbydataset,usedbychildren,usedbysnapshots,usedbyrefreservation,available,quota $myname | awk 'BEGIN {total=0;} { if( NR==1 ) next; } !/quota/ {total=total+$3;} {print $3} END{print total;}') )
2010-12-01 15:23:50 +01:00
if [ "$1" = "config" ]; then
2010-12-30 09:33:43 +01:00
echo <<EOF "graph_title zfs $myname
graph_order usedbydataset usedbychildren usedbysnapshots usedbyrefreservation available total quota
graph_args --base 1024 -r -l 0 --vertical-label Bytes --upper-limit ${values[6]}
graph_info This graph shows how is used a zfs filesystems.
graph_category Zfs
graph_period second
usedbydataset.label UsedByDataset
usedbydataset.draw AREA
usedbydataset.info Used space by Dataset
usedbydataset.colour FF0000
usedbychildren.label UsedByChildren
usedbychildren.draw STACK
usedbychildren.info Used space by children
usedbychildren.colour FFCC33
usedbysnapshots.label UsedBySnapshots
usedbysnapshots.draw STACK
usedbysnapshots.info Used space by snapshot
usedbysnapshots.colour 0000FF
usedbyrefreservation.label Usedbyrefreservation
usedbyrefreservation.draw STACK
usedbyrefreservation.info Used space by Ref Reservation
usedbyrefreservation.colour 33CCFF
available.label Available
available.draw STACK
available.info Free space
available.colour 00FF00
total.label Total
total.draw LINE1
total.info Total
total.colour 000000
quota.label Quota
quota.draw LINE1
quota.info Quota
quota.colour 555555"
EOF
2010-12-01 15:23:50 +01:00
exit 0
fi
2010-12-30 09:33:43 +01:00
echo <<EOF "usedbydataset.value ${values[0]}
usedbysnapshots.value ${values[2]}
usedbychildren.value ${values[1]}
usedbyrefreservation.value ${values[3]}
available.value ${values[4]}
total.value ${values[6]}
quota.value ${values[5]}"
EOF
2010-12-01 15:23:50 +01:00
exit 0