1
0
Fork 0
mirror of https://github.com/munin-monitoring/contrib.git synced 2025-07-21 18:41:03 +00:00

Update quota2percent_

add       POD documentation
  add       env.language
  add       example graph for Munin Plugin Gallery
  remove German comments
This commit is contained in:
JoHartmann 2017-02-08 15:23:44 +01:00 committed by GitHub
parent dab96a619f
commit f21a2fe432

View file

@ -1,45 +1,116 @@
#!/bin/bash
# -*- sh -*-
: <<=cut
# Das Plugin zeigt die Festplattenbelegung in Prozent des Quota-Hard-Limits.
# Munin plugin to show the disk usage in percent of the quota hard limit.
# The base frame is copied from the proftp plugin
=head1 NAME
##########################################################################################
# Folgende Eintraege in der Datei /etc/munin/plugin-conf.d/munin-node nicht vergessen ! #
# Don't forget to add following lines to the file /etc/munin/plugin-conf.d/munin-node #
# [quota2percent_*] #
# user root #
# #
# Weiterhin sind folgende Environment-Variablen erlaubt: #
# Following environment variables are allowed: #
# env.warning [value] #
# env.critical [value] #
# V17.0124 Jo Hartmann #
##########################################################################################
quota2percent - Plugin to show disk usage in percent of quota hard limit.
# Spachauswahl
# Language selection
Language="de"
=head1 APPLICABLE SYSTEMS
All systems with "bash", "quota", "repquota" and "munin"
=head1 CONFIGURATION
The following is the default configuration
[quota2percent_*]
user root
You could define two alert levels and the graph language
[quota2percent_*]
env.warning [value] (default: 90)
env.critical [value] (default: 95)
env.language [en|de|es] (default: en)
=head1 DESCRIPTION
Wild card Plugin for monitoring the utilization of devices with quota rules.
A graph is drawn for each user, which shows the usage as a percentage of his hard limit. System accounts (UID <1000) are suppressed.
In addition, a graph is displayed which indicates the ratio device size to device coverage.
The script repqutoa, usually part of the package quota, is needed.
The plugin itself can be stored in any directory. For example, the device sdb1 shell be monitored, a symbolic link must be created
in the /etc/munin/plugins/ directory as follows:
=over
I<<< ln -s /<path to file>/quota2percent_ quota2percent_sdb1 >>>
=back
=head1 MAGIC MARKERS
#%# family=auto
#%# capabilities=autoconf
=head1 VERSION
17.0131
=head1 HISTORY
V17.0131
add POD documentation
add env.language
add example graph for Munin Plugin Gallery
remove German comments
V17.0124
first version, not munin rules conform
=head1 AUTHOR
Jo Hartmann
=head1 LICENSE
GPLv2 (L<http://www.gnu.org/licenses/gpl-2.0.html>)
=cut
###################################################
# Preparation section #
###################################################
# Load munin's shell libary
. "$MUNIN_LIBDIR/plugins/plugin.sh"
# if any fetch from munin-node file
Warning=${warning:-90}
Critical=${critical:-95}
Language=${language:-en}
# Ensure that the 'root' path is valid
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# Checking if repquota installed and on the path
repquota -V &> /dev/null
if ! repquota -V &> /dev/null ; then
echo "The script 'repquota' is not installed or on the path"
# Send the exit code FATAL ERROR happens
exit 127
fi
# Wildcard-Text erkennen
# get tehe wild card text
Id=$0
Id=${Id##*_}
Id=${0##*_}
###################################################
# Data reading sections #
###################################################
# Einlesen der Quoten für das entsprechende Laufwerk mit repquota
# Reading the quotes for the selected device, using repquota
readarray Quotas < <( repquota /dev/$Id | grep " -- " )
readarray Totals < <( df /dev/$Id )
readarray Quotas < <( repquota "/dev/$Id" | grep " -- " )
readarray Totals < <( df "/dev/$Id" )
# Anzahl der Nutzer ermitteln
# Get the count of Users
Users=${#Quotas[@]}
###################################################
# Beginn der Standard-Konfigurationsbereiches #
# Standard Config Section Begin #
# Munin Configuration Section #
###################################################
if [ "$1" = "autoconf" ]; then
@ -47,97 +118,88 @@
exit 0
fi
. $MUNIN_LIBDIR/plugins/plugin.sh
if [ "$1" = "config" ]; then
# Anpassung der Texte in der Grafik
# Localisation of the graphic texts
case $Language in
de)
echo graph_title Quota-Hard-Limit von $Id
echo graph_vlabel Nutzung in % Hardlimit
echo graph_title "Quota-Hard-Limit von $Id"
echo graph_vlabel "Nutzung in % Hardlimit"
echo graph_info "Die Grafik zeigt die Belegung des durch Quota reglementierten Speicherplatzes für alle regulären Nutzer (UID >=1000) in Prozent des Hardlimits."
Total_txt="Su. aller Nutzer"
Total_info="Inklusive Systemnutzer (UID < 1000)"
;;
es)
echo graph_title Cuota de límite absoluto de $ Id
echo graph_vlabel el % de uso del límite duro
echo graph_title "Cuota de límite absoluto de $Id"
echo graph_vlabel "el % de uso del límite duro"
echo graph_info "El gráfico muestra la disponibilidad de espacio regulado por cuotas para todos los usuarios regulares (UID> = 1000) como porcentaje de límites duros."
Total_txt="Suma de todos los usuarios "
Total_info="La inclusión de usuario del sistema (UID <1000) "
;;
*)
echo graph_title quota hard limit of %Id
echo graph_vlabel Usage in %
Total_txt="all users"
echo graph_title "quota hard limit of $Id"
echo graph_vlabel "Usage in %"
echo graph_info "The graphic shows the allocation of the quota-regulated storage space for all regular users (UID> = 1000) as a percentage of the hard limit ."
Total_txt="all users"
Total_info="system users (UID < 1000) included"
;;
esac
# Standard Konfiguration
# Defaults configuration
echo graph_category disk
echo graph_args --lower-limit 0 --upper-limit 100
echo graph_printf %5.2lf %%
echo graph_scale no
# Ggf. Werte aus der Datei munin-node uebernehmen
# if any fetch from munin-node file
Warning=${warning:-90}
Critical=${critical:-95}
# Die Quota-Nutzer und deren Real-Namen ermitteln, das Root-Problem beheben, die Kondfigurationsdaten ausgeben
# For each quota user fetch his real name, solve the root problem, Output the configuration data
for((i=0; i<$Users; i++));do
for((i=0; i<"$Users"; i++));do
Quota=( ${Quotas[$i]} )
User=${Quota[0]}
Passwd=$(cat /etc/passwd | grep $User)
UserName=${Quota[0]}
#Passwd=$(cat /etc/passwd | grep $UserName)
Passwd=$(grep "$UserName" /etc/passwd)
OLDIFS=$IFS
IFS=':' Infos=($Passwd)
IFS=$OLDIFS
Name=${Infos[4]}
Name=${Name%%,*}
UserInfo=${Infos[4]}
UserInfo=${UserInfo%%,*}
[ $User == "root" ] && { User="__root"; Name="__root";}
[ ! -n "$Name" ] && Name=$User
[ $(id -u ${Quota[0]}) -lt 1000 ] && echo $User.graph no
echo $User.label $Name
echo $User.warning $warning
echo $User.critical $critical
UserName="$(clean_fieldname "$UserName")"
UserInfo="$(clean_fieldname "$UserInfo")"
[ ! -n "$UserInfo" ] && UserInfo="$UserName"
[ "$(id -u "${Quota[0]}")" -lt 1000 ] && echo "$UserName.graph no"
echo "$UserName.label $UserInfo"
echo "$UserName.warning $Warning"
echo "$UserName.critical $Critical"
done
# Die Summenzeile konfigurieren
# configure the total line
echo total.label $Total_txt
echo total.warning $Warning
echo total.critical $Critical
echo total.info $Total_info
exit 0
# configure the total line and send exit code NO ERROR happens
echo total.label "$Total_txt"
echo total.warning "$Warning"
echo total.critical "$Critical"
echo total.info "$Total_info"
exit 0
fi
###################################################
# Ende der Standard-Konfigurationsbereiches #
# Standard Config Section End #
# Munin value section #
###################################################
# Die Werte (Belegung und Hardlimit) je Nutzer ermitteln, das Root-Problem umgehen, die Prozente berechnen
# fetch the needed values (used and hard limit) for each user, work around the root problem, calculate the percent value
for((i=0; i<$Users; i++));do
for((i=0; i<"$Users"; i++));do
Quota=( ${Quotas[$i]} )
User=${Quota[0]}
[ $User == "root" ] && User="__root"
Prozent=`echo "scale=2 ; ${Quota[2]}*100/${Quota[4]}" | bc`
echo $User.value $Prozent
UserName="$(clean_fieldname "${Quota[0]}")"
echo "${Quota[2]} ${Quota[4]} $UserName.value" | awk '{printf "%s %.2f\n", $3 ,$1*100/$2}'
done
# Die Summenwerte
# the value for the total line
Total=( ${Totals[1]} )
Summe=`echo "scale=2;${Total[2]}*100/${Total[1]}" | bc`
echo total.value $Summe
echo "${Total[2]} ${Total[1]} total.value" | awk '{printf "%s %.2f\n", $3, $1*100/$2}'
# send the exit code NO ERROR happens
exit 0
###################################################
# Script end #
###################################################