1
0
Fork 0
mirror of https://github.com/munin-monitoring/contrib.git synced 2025-07-21 18:41:03 +00:00

plugin zfs_list: add "ignore_datasets_pattern" configuration

Allow to ignore certain volumes.
This commit is contained in:
Michael Grote 2021-12-12 20:59:52 +01:00 committed by GitHub
parent 87280ed7c3
commit 4612c1bc90
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,21 +1,37 @@
#!/bin/bash #!/bin/bash
#
# Plugin to monitor ZFS Filesystems
# Author: Adam Michel (elfurbe@furbism.com)
# Description:
# This is an extension of the zfs_fs plugin
# modified as a multigraph to graph all zfs
# filesystems it can find
#
# Tested on Ubuntu-14.04
#
# Parameters understood:
#
# config (required)
# autoconf (optional - used by munin-config)
#
#%# family=auto #%# family=auto
: << EOF
=head1 NAME
zfs_list - Plugin to monitor ZFS Filesystems
This is an extension of the zfs_fs plugin
modified as a multigraph to graph all zfs
filesystems it can find
=head1 CONFIGURATION
plugin config:
[zfs_list]
env.ignore_datasets_pattern <Datasets to ignore; String for grep>
=head1 AUTHOR
=over 4
=item * Adam Michel (elfurbe@furbism.com)
=back
=head1 MAGIC MARKERS
=begin comment
These magic markers are used by munin-node-configure when installing
munin-node.
=end comment
#%# family=auto
=cut
EOF
. "$MUNIN_LIBDIR/plugins/plugin.sh" . "$MUNIN_LIBDIR/plugins/plugin.sh"
need_multigraph() need_multigraph()
@ -30,8 +46,20 @@ if [ "$1" = "suggest" ]; then
exit 0 exit 0
fi fi
# set standard value
ignore_datasets_pattern=${ignore_datasets_pattern:-}
# set search term, based on if the searh pattern is set
if [ -n "$ignore_datasets_pattern" ]; then
search_term=$(zfs list -Hp -t filesystem,volume | grep -v "$ignore_datasets_pattern" | awk '{print $1}')
else
search_term=$(zfs list -Hp -t filesystem,volume | awk '{print $1}')
fi
if [ "$1" = "config" ]; then if [ "$1" = "config" ]; then
for i in `zfs list -Hp -t filesystem,volume | awk '{print $1}'`; do for i in $search_term; do
values=( $(zfs get -p usedbydataset,usedbychildren,usedbysnapshots,usedbyrefreservation,available,quota $i | awk 'BEGIN {total=0;} { if( NR==1 ) next; } !/quota/ {total=total+$3;} {print $3} END{print total;}') ) values=( $(zfs get -p usedbydataset,usedbychildren,usedbysnapshots,usedbyrefreservation,available,quota $i | awk 'BEGIN {total=0;} { if( NR==1 ) next; } !/quota/ {total=total+$3;} {print $3} END{print total;}') )
fsname=$(clean_fieldname $(echo "$i" | sed 's/\//__/g')) fsname=$(clean_fieldname $(echo "$i" | sed 's/\//__/g'))
@ -39,7 +67,7 @@ if [ "$1" = "config" ]; then
graph_title $fsname usage graph_title $fsname usage
graph_order usedbydataset usedbychildren usedbysnapshots usedbyrefreservation available total quota graph_order usedbydataset usedbychildren usedbysnapshots usedbyrefreservation available total quota
graph_args --base 1024 -r -l 0 --vertical-label Bytes --upper-limit ${values[6]} 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_info This graph shows how a zfs filesystem is used.
graph_category fs graph_category fs
graph_period second graph_period second
usedbydataset.label UsedByDataset usedbydataset.label UsedByDataset
@ -75,7 +103,7 @@ EOF
exit 0 exit 0
fi fi
for i in `zfs list -Hp -t filesystem,volume | awk '{print $1}'`; do for i in $search_term; do
values=( $(zfs get -p usedbydataset,usedbychildren,usedbysnapshots,usedbyrefreservation,available,quota $i | awk 'BEGIN {total=0;} { if( NR==1 ) next; } !/quota/ {total=total+$3;} {print $3} END{print total;}') ) values=( $(zfs get -p usedbydataset,usedbychildren,usedbysnapshots,usedbyrefreservation,available,quota $i | awk 'BEGIN {total=0;} { if( NR==1 ) next; } !/quota/ {total=total+$3;} {print $3} END{print total;}') )
fsname=$(clean_fieldname $(echo "$i" | sed 's/\//__/g')) fsname=$(clean_fieldname $(echo "$i" | sed 's/\//__/g'))