2
0
mirror of https://github.com/munin-monitoring/contrib.git synced 2018-11-08 00:59:34 +01:00
contrib-munin/plugins/disk/quota2percent_
2017-01-24 22:28:30 +01:00

144 lines
5.6 KiB
Bash

#!/bin/bash
# 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
##########################################################################################
# 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 #
##########################################################################################
# Spachauswahl
# Language selection
Language="de"
# Wildcard-Text erkennen
# get tehe wild card text
Id=$0
Id=${Id##*_}
# 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 )
# Anzahl der Nutzer ermitteln
# Get the count of Users
Users=${#Quotas[@]}
###################################################
# Beginn der Standard-Konfigurationsbereiches #
# Standard Config Section Begin #
###################################################
if [ "$1" = "autoconf" ]; then
echo yes
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_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_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_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_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
Quota=( ${Quotas[$i]} )
User=${Quota[0]}
Passwd=$(cat /etc/passwd | grep $User)
OLDIFS=$IFS
IFS=':' Infos=($Passwd)
IFS=$OLDIFS
Name=${Infos[4]}
Name=${Name%%,*}
[ $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
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
fi
###################################################
# Ende der Standard-Konfigurationsbereiches #
# Standard Config Section End #
###################################################
# 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
Quota=( ${Quotas[$i]} )
User=${Quota[0]}
[ $User == "root" ] && User="__root"
Prozent=`echo "scale=2 ; ${Quota[2]}*100/${Quota[4]}" | bc`
echo $User.value $Prozent
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
exit 0