root / plugins / apache / apache_cache_disk_count @ 8589c6df
Historique | Voir | Annoter | Télécharger (2,73 ko)
| 1 |
#!/bin/bash |
|---|---|
| 2 |
|
| 3 |
: << =cut |
| 4 |
|
| 5 |
=head1 NAME |
| 6 |
|
| 7 |
Munin plugin to monitor apache mod_cache_disk usage. |
| 8 |
|
| 9 |
=head1 CONFIGURATION |
| 10 |
|
| 11 |
[apache_cache_disk_count] |
| 12 |
user www-data |
| 13 |
env.cache_path /var/cache/apache2/mod_cache_disk |
| 14 |
env.strings css js |
| 15 |
env.label_cs CSS |
| 16 |
env.colour_css FFFF00 |
| 17 |
env.label_js JS |
| 18 |
env.colour_js FF0000 |
| 19 |
|
| 20 |
=head1 AUTHOR |
| 21 |
|
| 22 |
Raphaël Droz <raphael.droz+floss@gmail.com> |
| 23 |
|
| 24 |
=head1 LICENSE |
| 25 |
|
| 26 |
GPLv2 |
| 27 |
|
| 28 |
=head1 MAGICK MARKERS |
| 29 |
|
| 30 |
#%# family=auto |
| 31 |
#%# capabilities=autoconf |
| 32 |
|
| 33 |
=cut |
| 34 |
|
| 35 |
. $MUNIN_LIBDIR/plugins/plugin.sh |
| 36 |
|
| 37 |
my_cache_path="${cache_path:-/var/cache/apache2/mod_cache_disk}"
|
| 38 |
declare -a fieldnames labels colours |
| 39 |
|
| 40 |
getenvdata() {
|
| 41 |
let during_autoconf=0 |
| 42 |
[[ $1 == -v ]] && during_autoconf=1 |
| 43 |
arg=( "${strings:-}" )
|
| 44 |
for i in ${arg[*]}; do
|
| 45 |
if [[ ! $i =~ ^[a-zA-Z0-9]+$ ]]; then |
| 46 |
(( $during_autoconf )) && echo "no ($i isn't a valid fixed-string)" |
| 47 |
ok=0 |
| 48 |
continue |
| 49 |
fi |
| 50 |
label=label_$i |
| 51 |
if [[ -z "${!label}" ]]; then
|
| 52 |
(( $during_autoconf )) && echo "no ($i isn't given a label)" |
| 53 |
ok=0 |
| 54 |
continue |
| 55 |
fi |
| 56 |
colour=colour_$i |
| 57 |
if [[ -z "${!colour}" ]]; then
|
| 58 |
(( $during_autoconf )) && echo "no ($i isn't given a colour)" |
| 59 |
ok=0 |
| 60 |
continue |
| 61 |
fi |
| 62 |
|
| 63 |
fieldnames+=($i) |
| 64 |
labels+=("${!label}")
|
| 65 |
colours+=("${!colour}")
|
| 66 |
done |
| 67 |
} |
| 68 |
|
| 69 |
if [[ $1 == autoconf ]]; then |
| 70 |
let ok=1 |
| 71 |
|
| 72 |
[[ -z $strings ]] && echo "no strings to monitor defined" && ok=0 |
| 73 |
! type -P htcacheclean &>/dev/null && echo "can't find htcacheclean" && ok=0 |
| 74 |
! test -d "$my_cache_path" && echo "cache_path \"$cache_path\" is not readable" && ok=0 |
| 75 |
|
| 76 |
getenvdata -v |
| 77 |
|
| 78 |
(( ${#fieldnames[*]} == 0 )) && echo "no (no valid strings)" && ok=0
|
| 79 |
(( $ok == 1 )) && echo yes |
| 80 |
exit 0 |
| 81 |
fi |
| 82 |
|
| 83 |
getenvdata |
| 84 |
|
| 85 |
if [[ $1 == config ]]; then |
| 86 |
cat <<EOF |
| 87 |
graph_title Apache mod_cache_disk usage |
| 88 |
graph_title Number of entries in mod_cache_disk Apache cache |
| 89 |
graph_args --base 1000 -l 0 |
| 90 |
graph_vlabel Y |
| 91 |
graph_category webserver |
| 92 |
graph_order ${fieldnames[*]} total
|
| 93 |
total.draw LINE1 |
| 94 |
total.label all |
| 95 |
total.type GAUGE |
| 96 |
total.min 0 |
| 97 |
EOF |
| 98 |
|
| 99 |
let i=0 |
| 100 |
while (( $i < ${#fieldnames[*]} )); do
|
| 101 |
string=${fieldnames[$i]}
|
| 102 |
label="${labels[$i]}"
|
| 103 |
colour="${colours[$i]}"
|
| 104 |
cat <<EOF |
| 105 |
${string}.draw AREASTACK
|
| 106 |
${string}.label ${label}
|
| 107 |
${string}.colour ${colour}
|
| 108 |
EOF |
| 109 |
((i++)) |
| 110 |
done |
| 111 |
exit 0 |
| 112 |
fi |
| 113 |
|
| 114 |
total=$(htcacheclean -a -p "$my_cache_path"|wc -l) |
| 115 |
asset_count=$(htcacheclean -a -p "$my_cache_path"|egrep -o "\.($(echo ${fieldnames[*]}|tr ' ' '|'))"|sort|uniq --count)
|
| 116 |
printf "total.value %d\n" "$total" |
| 117 |
for i in ${fieldnames[*]}; do
|
| 118 |
c=$(echo "$asset_count"|sed -rn "/$i/s;^\s*([0-9]+).*;\1;p") |
| 119 |
[[ -z $c ]] && c=U |
| 120 |
printf "%s.value %s\n" "$i" "$c" |
| 121 |
done |
| 122 |
|
| 123 |
exit 0 |
