Projet

Général

Profil

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

root / plugins / disk / e2 @ 6c7ad652

Historique | Voir | Annoter | Télécharger (3,57 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 09b88141 Lars Kruse
 [ext2_*]
12
 group disk,floppy
13 0e92a22b bAndie91
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 3cd15a82 root
       while read -r line ; do
50
               value=( $line );
51 14e5261e rantal
               LANG=C dumpe2fs -h "${value[0]}" 2>/dev/null | print_details "$(basename ${value[0]})"	       
52
       done <<< "$(lsblk -p -o NAME,FSTYPE -r | grep ext[2-4] | uniq )"
53 bffbc3d5 bAndie91
}
54
55
56
if [ "$1" = "autoconf" ]; then
57 0e92a22b bAndie91
	if which dumpe2fs >/dev/null 2>&1; then
58 bffbc3d5 bAndie91
		echo yes
59
	else
60
		echo no
61
	fi
62 e4cd049b Lars Kruse
	exit 0
63 bffbc3d5 bAndie91
fi
64
if [ "$1" = "suggest" ]; then
65
	lse2 | while read name rest; do
66
		echo mounts_$name
67
		echo checked_$name
68
		echo writes_$name
69
	done
70
	exit 0
71
fi
72
73
74
self=${0##*/}
75
self=${self#*_}
76
plugin=${self%%_*}
77
if [ -n "${self//[!_]/}" ]; then
78
	blkdev=${self#*_}
79
	blkdevAppend=" ($blkdev)"
80 14e5261e rantal
	blkdevpath=$(lsblk -p -o NAME -r | grep "$blkdev" | uniq | cut -d' ' -f1)
81 bffbc3d5 bAndie91
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 3cd15a82 root
		LANG=C dumpe2fs -h "$blkdevpath" 2>/dev/null | print_details "$blkdev"
112 bffbc3d5 bAndie91
	fi | \
113
	while read name mounts maxmounts last interval writes; do
114
		[ -z "$blkdev" ] && blkdevAppend2=" ($name)" || blkdevAppend2=
115 3cd15a82 root
		name_esc=${name//-/_}
116 bffbc3d5 bAndie91
		case "$plugin" in
117
		mounts)
118 3cd15a82 root
			echo "${name_esc}_mounts.label Mount count$blkdevAppend2"
119
			echo "${name_esc}_mounts.draw LINE2"
120
			echo "${name_esc}_maxmounts.label Max. mount count$blkdevAppend2"
121
			echo "${name_esc}_maxmounts.draw LINE1"
122 bffbc3d5 bAndie91
			;;
123
		checked)
124 3cd15a82 root
			echo "${name_esc}_last.label Since checked$blkdevAppend2"
125
			echo "${name_esc}_last.draw LINE2"
126
			echo "${name_esc}_last.cdef ${name_esc}_last,86400,/"
127
			echo "${name_esc}_interval.label Check interval$blkdevAppend2"
128
			echo "${name_esc}_interval.draw LINE1"
129
			echo "${name_esc}_interval.cdef ${name_esc}_interval,86400,/"
130 bffbc3d5 bAndie91
			;;
131
		writes)
132 3cd15a82 root
			echo "${name_esc}_writes.label Lifetime writes$blkdevAppend2"
133
			echo "${name_esc}_writes.type GAUGE"
134
			echo "${name_esc}_writes.draw LINE2"
135
			echo "${name_esc}_writes.cdef ${name_esc}_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 3cd15a82 root
	LANG=C dumpe2fs -h "$blkdevpath" 2>/dev/null | print_details "$blkdev"
151 bffbc3d5 bAndie91
fi | \
152
while read name mounts maxmounts last interval writes; do
153 3cd15a82 root
	name_esc=${name//-/_}
154 bffbc3d5 bAndie91
	case "$plugin" in
155
	mounts)
156 3cd15a82 root
		echo "${name_esc}_mounts.value $mounts"
157
		echo "${name_esc}_maxmounts.value $maxmounts"
158 bffbc3d5 bAndie91
		;;
159
	checked)
160
		now=`date +%s`
161
		past=$(( now - last ))
162 3cd15a82 root
		echo "${name_esc}_last.value $past"
163
		echo "${name_esc}_interval.value $interval"
164 bffbc3d5 bAndie91
		;;
165
	writes)
166 3cd15a82 root
		echo "${name_esc}_writes.value $writes"
167 bffbc3d5 bAndie91
		;;
168
	esac
169
done