Projet

Général

Profil

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

root / plugins / disk / e2 @ a420c4eb

Historique | Voir | Annoter | Télécharger (3,25 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
	else
61
		echo no
62
	fi
63 e4cd049b Lars Kruse
	exit 0
64 bffbc3d5 bAndie91
fi
65
if [ "$1" = "suggest" ]; then
66
	lse2 | while read name rest; do
67
		echo mounts_$name
68
		echo checked_$name
69
		echo writes_$name
70
	done
71
	exit 0
72
fi
73
74
75
self=${0##*/}
76
self=${self#*_}
77
plugin=${self%%_*}
78
if [ -n "${self//[!_]/}" ]; then
79
	blkdev=${self#*_}
80
	blkdevAppend=" ($blkdev)"
81
else
82
	blkdev=
83
	blkdevAppend=
84
fi
85
86
87
if [ "$1" = "config" ]; then
88
89
	echo "graph_category disk"
90 18648443 bAndie91
	args="-l 0"
91 bffbc3d5 bAndie91
	case "$plugin" in
92 17f78427 Lars Kruse
	mounts)
93 bffbc3d5 bAndie91
		echo "graph_vlabel times"
94
		echo "graph_title Ext2 Filesystem mount details"
95
		;;
96
	checked)
97 18648443 bAndie91
		echo "graph_vlabel days"
98 bffbc3d5 bAndie91
		echo "graph_title Ext2 Filesystem fsck interval"
99
		;;
100 17f78427 Lars Kruse
	writes)
101 18648443 bAndie91
		args="$args --base 1024"
102
		echo "graph_vlabel bytes"
103 bffbc3d5 bAndie91
		echo "graph_title Ext2 Filesystem lifetime writes$blkdevAppend"
104
		;;
105
	esac
106 18648443 bAndie91
	echo "graph_args $args"
107 17f78427 Lars Kruse
108 bffbc3d5 bAndie91
	if [ -z "$blkdev" ]; then
109
		lse2
110
	else
111
		LANG=C dumpe2fs /dev/$blkdev 2>/dev/null | print_details "$blkdev"
112
	fi | \
113
	while read name mounts maxmounts last interval writes; do
114
		[ -z "$blkdev" ] && blkdevAppend2=" ($name)" || blkdevAppend2=
115
		case "$plugin" in
116
		mounts)
117
			echo "${name}_mounts.label Mount count$blkdevAppend2"
118
			echo "${name}_mounts.draw LINE2"
119
			echo "${name}_maxmounts.label Max. mount count$blkdevAppend2"
120
			echo "${name}_maxmounts.draw LINE1"
121
			;;
122
		checked)
123 18648443 bAndie91
			echo "${name}_last.label Since checked$blkdevAppend2"
124 bffbc3d5 bAndie91
			echo "${name}_last.draw LINE2"
125 18648443 bAndie91
			echo "${name}_last.cdef ${name}_last,86400,/"
126 bffbc3d5 bAndie91
			echo "${name}_interval.label Check interval$blkdevAppend2"
127
			echo "${name}_interval.draw LINE1"
128 18648443 bAndie91
			echo "${name}_interval.cdef ${name}_interval,86400,/"
129 bffbc3d5 bAndie91
			;;
130
		writes)
131
			echo "${name}_writes.label Lifetime writes$blkdevAppend2"
132 18648443 bAndie91
			echo "${name}_writes.type GAUGE"
133 bffbc3d5 bAndie91
			echo "${name}_writes.draw LINE2"
134 18648443 bAndie91
			echo "${name}_writes.cdef ${name}_writes,1073741824,*"
135 bffbc3d5 bAndie91
			;;
136
		esac
137
	done
138
139
	exit 0
140
fi
141
142
143
144
## fetch ##
145
146
if [ -z "$blkdev" ]; then
147
	lse2
148
else
149
	LANG=C dumpe2fs /dev/$blkdev 2>/dev/null | print_details "$blkdev"
150
fi | \
151
while read name mounts maxmounts last interval writes; do
152
	case "$plugin" in
153
	mounts)
154
		echo "${name}_mounts.value $mounts"
155
		echo "${name}_maxmounts.value $maxmounts"
156
		;;
157
	checked)
158
		now=`date +%s`
159
		past=$(( now - last ))
160
		echo "${name}_last.value $past"
161
		echo "${name}_interval.value $interval"
162
		;;
163
	writes)
164
		echo "${name}_writes.value $writes"
165
		;;
166
	esac
167
done