From bffbc3d5dc629746ec3328592917c8fcc7aebb09 Mon Sep 17 00:00:00 2001 From: bAndie91 Date: Mon, 31 Dec 2012 06:13:41 -0800 Subject: [PATCH 1/3] monitor Ext2/3/4 fs e2 plugin to monitor Ext2/3/4 fs mount count, last check and lifetime writes --- plugins/disk/e2 | 137 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 plugins/disk/e2 diff --git a/plugins/disk/e2 b/plugins/disk/e2 new file mode 100644 index 00000000..701ffeb4 --- /dev/null +++ b/plugins/disk/e2 @@ -0,0 +1,137 @@ +#!/bin/bash + + +print_details() { + local myname + while read line; do + key=${line%%:*} + val=`echo ${line#*:}` + val1=${val%% *} + [ -z "$line" ] && break + + case "$key" in + "Mount count") myname=$1; mc=$val ;; + "Maximum mount count") mmc=$val ;; + "Last checked") lcts=`date +%s -d "$val" 2>/dev/null` ;; + "Check interval") ciis=$val1 ;; + "Lifetime writes") lwGB=$val1 ;; + esac + done + [ -n "$myname" ] && echo "$myname ${mc:-0} ${mmc:-0} ${lcts:-0} ${ciis:-0} ${lwGB:-0}" +} + +lse2() { + for name in {h,s}d{a..z}{1..16}; do + if [ -b /dev/$name ]; then + LANG=C dumpe2fs /dev/$name 2>/dev/null | print_details "$name" + fi + done +} + + +if [ "$1" = "autoconf" ]; then + if [ -x "`dumpe2fs`" ]; then + echo yes + exit 0 + else + echo no + exit 1 + fi +fi +if [ "$1" = "suggest" ]; then + lse2 | while read name rest; do + echo mounts_$name + echo checked_$name + echo writes_$name + done + exit 0 +fi + + +self=${0##*/} +self=${self#*_} +plugin=${self%%_*} +if [ -n "${self//[!_]/}" ]; then + blkdev=${self#*_} + blkdevAppend=" ($blkdev)" +else + blkdev= + blkdevAppend= +fi + + +if [ "$1" = "config" ]; then + + echo "graph_category disk" + case "$plugin" in + mounts) + echo "graph_vlabel times" + echo "graph_title Ext2 Filesystem mount details" + ;; + checked) + echo "graph_vlabel seconds" + echo "graph_title Ext2 Filesystem fsck interval" + ;; + writes) + echo "graph_vlabel GB" + echo "graph_title Ext2 Filesystem lifetime writes$blkdevAppend" + ;; + esac + + if [ -z "$blkdev" ]; then + lse2 + else + LANG=C dumpe2fs /dev/$blkdev 2>/dev/null | print_details "$blkdev" + fi | \ + while read name mounts maxmounts last interval writes; do + [ -z "$blkdev" ] && blkdevAppend2=" ($name)" || blkdevAppend2= + case "$plugin" in + mounts) + echo "${name}_mounts.label Mount count$blkdevAppend2" + echo "${name}_mounts.draw LINE2" + echo "${name}_maxmounts.label Max. mount count$blkdevAppend2" + echo "${name}_maxmounts.draw LINE1" + ;; + checked) + echo "${name}_last.label Seconds since checked$blkdevAppend2" + echo "${name}_last.draw LINE2" + echo "${name}_interval.label Check interval$blkdevAppend2" + echo "${name}_interval.draw LINE1" + ;; + writes) + echo "${name}_writes.label Lifetime writes$blkdevAppend2" + echo "${name}_writes.type COUNTER" + echo "${name}_writes.draw LINE2" + ;; + esac + done + + exit 0 +fi + + + +## fetch ## + +if [ -z "$blkdev" ]; then + lse2 +else + LANG=C dumpe2fs /dev/$blkdev 2>/dev/null | print_details "$blkdev" +fi | \ +while read name mounts maxmounts last interval writes; do + case "$plugin" in + mounts) + echo "${name}_mounts.value $mounts" + echo "${name}_maxmounts.value $maxmounts" + ;; + checked) + now=`date +%s` + past=$(( now - last )) + echo "${name}_last.value $past" + echo "${name}_interval.value $interval" + ;; + writes) + echo "${name}_writes.value $writes" + ;; + esac +done From 18648443f316fbd6273d6d6ba20e221c3e44d43f Mon Sep 17 00:00:00 2001 From: bAndie91 Date: Mon, 31 Dec 2012 15:46:43 +0100 Subject: [PATCH 2/3] update --- plugins/disk/e2 | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/plugins/disk/e2 b/plugins/disk/e2 index 701ffeb4..50994e3b 100644 --- a/plugins/disk/e2 +++ b/plugins/disk/e2 @@ -63,20 +63,23 @@ fi if [ "$1" = "config" ]; then echo "graph_category disk" + args="-l 0" case "$plugin" in mounts) echo "graph_vlabel times" echo "graph_title Ext2 Filesystem mount details" ;; checked) - echo "graph_vlabel seconds" + echo "graph_vlabel days" echo "graph_title Ext2 Filesystem fsck interval" ;; writes) - echo "graph_vlabel GB" + args="$args --base 1024" + echo "graph_vlabel bytes" echo "graph_title Ext2 Filesystem lifetime writes$blkdevAppend" ;; esac + echo "graph_args $args" if [ -z "$blkdev" ]; then lse2 @@ -93,15 +96,18 @@ if [ "$1" = "config" ]; then echo "${name}_maxmounts.draw LINE1" ;; checked) - echo "${name}_last.label Seconds since checked$blkdevAppend2" + echo "${name}_last.label Since checked$blkdevAppend2" echo "${name}_last.draw LINE2" + echo "${name}_last.cdef ${name}_last,86400,/" echo "${name}_interval.label Check interval$blkdevAppend2" echo "${name}_interval.draw LINE1" + echo "${name}_interval.cdef ${name}_interval,86400,/" ;; writes) echo "${name}_writes.label Lifetime writes$blkdevAppend2" - echo "${name}_writes.type COUNTER" + echo "${name}_writes.type GAUGE" echo "${name}_writes.draw LINE2" + echo "${name}_writes.cdef ${name}_writes,1073741824,*" ;; esac done @@ -135,3 +141,4 @@ while read name mounts maxmounts last interval writes; do ;; esac done + From 0e92a22bc1158c522a92c9119039fc5f758706cc Mon Sep 17 00:00:00 2001 From: bAndie91 Date: Wed, 2 Jan 2013 16:50:27 +0100 Subject: [PATCH 3/3] pod added --- plugins/disk/e2 | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/plugins/disk/e2 b/plugins/disk/e2 index 50994e3b..4eaed72e 100644 --- a/plugins/disk/e2 +++ b/plugins/disk/e2 @@ -1,5 +1,30 @@ #!/bin/bash +true << =cut + +=head1 NAME + +ext2 - Wildcard plugin shows ext2/3/4 filesystem information (mount count, last checked, lifetime writes) + +=head1 CONFIGURATION + +[ext2_*] +group disk,floppy + +=head1 AUTHOR + +Andreas Hrubak <> + +=head1 LICENSE + +GPLv2 + +=head1 MAGICK MARKERS + + #%# family=disk + #%# capabilities=autoconf + +=cut print_details() { local myname @@ -30,7 +55,7 @@ lse2() { if [ "$1" = "autoconf" ]; then - if [ -x "`dumpe2fs`" ]; then + if which dumpe2fs >/dev/null 2>&1; then echo yes exit 0 else