mirror of
https://github.com/munin-monitoring/contrib.git
synced 2025-07-21 18:41:03 +00:00
monitor Ext2/3/4 fs
e2 plugin to monitor Ext2/3/4 fs mount count, last check and lifetime writes
This commit is contained in:
parent
2ac27fb961
commit
bffbc3d5dc
1 changed files with 137 additions and 0 deletions
137
plugins/disk/e2
Normal file
137
plugins/disk/e2
Normal file
|
@ -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
|
Loading…
Add table
Add a link
Reference in a new issue