diff --git a/plugins/other/xfs_frag b/plugins/other/xfs_frag new file mode 100755 index 00000000..7218934a --- /dev/null +++ b/plugins/other/xfs_frag @@ -0,0 +1,67 @@ +#!/bin/bash + +: <<=cut +=head1 NAME + +xfs_frag - Munin plugin to monitor the fragmentation level on your XFS filesystems + +=head1 APPLICABLE SYSTEMS + +Any machine with an XFS file system. + +=head1 CONFIGURATION + +None, generally, but you may want to run as root and set a timeout. + + [xfs_frag] + user root + timeout 90 + +=head1 MAGIC MARKERS + + #%# family=auto contrib + #%# capabilities= + +=head1 VERSION + +1 + +=head1 AUTHOR + +Paul Saunders L + +=cut + +declare -a ARRY +shopt -s nocasematch + +case $1 in + config) + cat <<'EOF' +graph_title XFS fragmentation +graph_vlabel Percent +graph_category disk +EOF + cat /etc/mtab | awk '{print $2 " " $3}' | while read LINE + do + ARRY=($LINE) + if [[ ${ARRY[1]} =~ xfs ]]; then + FIELDNAME=$(echo ${ARRY[0]} | sed 's/^[^A-Za-z_]/_/; s/[^A-Za-z0-9_]/_/g') + echo "$FIELDNAME.label ${ARRY[0]}" + echo "$FIELDNAME.type GAUGE" + fi + done + exit 0 + ;; +esac + +cat /etc/mtab | awk '{print $2 " " $3 " " $1}' | while read LINE +do + ARRY=($LINE) + if [[ ${ARRY[1]} =~ xfs ]]; then + FIELDNAME=$(echo ${ARRY[0]} | sed 's/^[^A-Za-z_]/_/; s/[^A-Za-z0-9_]/_/g') + FRAG=$(xfs_db -c frag -r ${ARRY[2]} | sed 's/.*fragmentation factor \(.*\)%.*/\1/') + echo $FIELDNAME.value $FRAG + fi +done +