Projet

Général

Profil

Paste
Télécharger au format
Statistiques
| Branche: | Révision:

root / plugins / disk / e2 @ 17f78427

Historique | Voir | Annoter | Télécharger (3,26 ko)

1 bffbc3d5 bAndie91
#!/bin/bash
2
3 0e92a22b bAndie91
true << =cut
4
5
=head1 NAME
6
7
ext2 - Wildcard plugin shows ext2/3/4 filesystem information (mount count, last checked, lifetime writes)
8
9
=head1 CONFIGURATION
10
11
[ext2_*]
12
group disk,floppy
13
14
=head1 AUTHOR
15
16
Andreas Hrubak <>
17
18
=head1 LICENSE
19
20
GPLv2
21
22
=head1 MAGICK MARKERS
23
24
 #%# family=disk
25
 #%# capabilities=autoconf
26
27
=cut
28 bffbc3d5 bAndie91
29
print_details() {
30
	local myname
31
	while read line; do
32
		key=${line%%:*}
33
		val=`echo ${line#*:}`
34
		val1=${val%% *}
35
		[ -z "$line" ] && break
36 17f78427 Lars Kruse
37 bffbc3d5 bAndie91
		case "$key" in
38
		"Mount count")		myname=$1; mc=$val ;;
39
		"Maximum mount count")	mmc=$val ;;
40
		"Last checked")		lcts=`date +%s -d "$val" 2>/dev/null` ;;
41
		"Check interval")	ciis=$val1 ;;
42
		"Lifetime writes")	lwGB=$val1 ;;
43
		esac
44
	done
45
	[ -n "$myname" ] && echo "$myname ${mc:-0} ${mmc:-0} ${lcts:-0} ${ciis:-0} ${lwGB:-0}"
46
}
47
48
lse2() {
49
	for name in {h,s}d{a..z}{1..16}; do
50
		if [ -b /dev/$name ]; then
51
			LANG=C dumpe2fs /dev/$name 2>/dev/null | print_details "$name"
52
		fi
53
	done
54
}
55
56
57
if [ "$1" = "autoconf" ]; then
58 0e92a22b bAndie91
	if which dumpe2fs >/dev/null 2>&1; then
59 bffbc3d5 bAndie91
		echo yes
60
		exit 0
61
	else
62
		echo no
63
		exit 1
64
	fi
65
fi
66
if [ "$1" = "suggest" ]; then
67
	lse2 | while read name rest; do
68
		echo mounts_$name
69
		echo checked_$name
70
		echo writes_$name
71
	done
72
	exit 0
73
fi
74
75
76
self=${0##*/}
77
self=${self#*_}
78
plugin=${self%%_*}
79
if [ -n "${self//[!_]/}" ]; then
80
	blkdev=${self#*_}
81
	blkdevAppend=" ($blkdev)"
82
else
83
	blkdev=
84
	blkdevAppend=
85
fi
86
87
88
if [ "$1" = "config" ]; then
89
90
	echo "graph_category disk"
91 18648443 bAndie91
	args="-l 0"
92 bffbc3d5 bAndie91
	case "$plugin" in
93 17f78427 Lars Kruse
	mounts)
94 bffbc3d5 bAndie91
		echo "graph_vlabel times"
95
		echo "graph_title Ext2 Filesystem mount details"
96
		;;
97
	checked)
98 18648443 bAndie91
		echo "graph_vlabel days"
99 bffbc3d5 bAndie91
		echo "graph_title Ext2 Filesystem fsck interval"
100
		;;
101 17f78427 Lars Kruse
	writes)
102 18648443 bAndie91
		args="$args --base 1024"
103
		echo "graph_vlabel bytes"
104 bffbc3d5 bAndie91
		echo "graph_title Ext2 Filesystem lifetime writes$blkdevAppend"
105
		;;
106
	esac
107 18648443 bAndie91
	echo "graph_args $args"
108 17f78427 Lars Kruse
109 bffbc3d5 bAndie91
	if [ -z "$blkdev" ]; then
110
		lse2
111
	else
112
		LANG=C dumpe2fs /dev/$blkdev 2>/dev/null | print_details "$blkdev"
113
	fi | \
114
	while read name mounts maxmounts last interval writes; do
115
		[ -z "$blkdev" ] && blkdevAppend2=" ($name)" || blkdevAppend2=
116
		case "$plugin" in
117
		mounts)
118
			echo "${name}_mounts.label Mount count$blkdevAppend2"
119
			echo "${name}_mounts.draw LINE2"
120
			echo "${name}_maxmounts.label Max. mount count$blkdevAppend2"
121
			echo "${name}_maxmounts.draw LINE1"
122
			;;
123
		checked)
124 18648443 bAndie91
			echo "${name}_last.label Since checked$blkdevAppend2"
125 bffbc3d5 bAndie91
			echo "${name}_last.draw LINE2"
126 18648443 bAndie91
			echo "${name}_last.cdef ${name}_last,86400,/"
127 bffbc3d5 bAndie91
			echo "${name}_interval.label Check interval$blkdevAppend2"
128
			echo "${name}_interval.draw LINE1"
129 18648443 bAndie91
			echo "${name}_interval.cdef ${name}_interval,86400,/"
130 bffbc3d5 bAndie91
			;;
131
		writes)
132
			echo "${name}_writes.label Lifetime writes$blkdevAppend2"
133 18648443 bAndie91
			echo "${name}_writes.type GAUGE"
134 bffbc3d5 bAndie91
			echo "${name}_writes.draw LINE2"
135 18648443 bAndie91
			echo "${name}_writes.cdef ${name}_writes,1073741824,*"
136 bffbc3d5 bAndie91
			;;
137
		esac
138
	done
139
140
	exit 0
141
fi
142
143
144
145
## fetch ##
146
147
if [ -z "$blkdev" ]; then
148
	lse2
149
else
150
	LANG=C dumpe2fs /dev/$blkdev 2>/dev/null | print_details "$blkdev"
151
fi | \
152
while read name mounts maxmounts last interval writes; do
153
	case "$plugin" in
154
	mounts)
155
		echo "${name}_mounts.value $mounts"
156
		echo "${name}_maxmounts.value $maxmounts"
157
		;;
158
	checked)
159
		now=`date +%s`
160
		past=$(( now - last ))
161
		echo "${name}_last.value $past"
162
		echo "${name}_interval.value $interval"
163
		;;
164
	writes)
165
		echo "${name}_writes.value $writes"
166
		;;
167
	esac
168
done