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