1
0
Fork 0
mirror of https://github.com/munin-monitoring/contrib.git synced 2025-07-25 18:38:30 +00:00

dovecot: Use DERIVE to avoid ugly computations

Using a timed grep with a state computation is usually mostly wrong. The DERIVE
field type is specifically designed for that very purpose.

Closes #264
This commit is contained in:
Steve Schnepp 2013-09-05 00:24:19 +02:00
parent 4055fb1562
commit 2a72cc32dd

View file

@ -7,6 +7,7 @@
# http://developer.gauner.org/munin/ # http://developer.gauner.org/munin/
# Contributions by: # Contributions by:
# - Stephane Enten <tuf@delyth.net> # - Stephane Enten <tuf@delyth.net>
# - Steve Schnepp <steve.schnepp@pwkf.org>
# #
# Parameters understood: # Parameters understood:
# #
@ -28,7 +29,6 @@
###################### ######################
# Configuration # Configuration
###################### ######################
STAT_FILE=${STAT_FILE:-/var/lib/munin-node/plugin-state/root/plugin-dovecot.state}
EXPR_BIN=/usr/bin/expr EXPR_BIN=/usr/bin/expr
LOGFILE=${logfile:-/var/log/mail.log} LOGFILE=${logfile:-/var/log/mail.log}
###################### ######################
@ -43,37 +43,27 @@ if [ "$1" = "config" ]; then
echo 'graph_category Mail' echo 'graph_category Mail'
echo 'graph_args --base 1000 -l 0' echo 'graph_args --base 1000 -l 0'
echo 'graph_vlabel Login Counters' echo 'graph_vlabel Login Counters'
echo 'login_total.label Total Logins'
echo 'login_tls.label TLS Logins' for t in Total TLS SSL IMAP POP3
echo 'login_ssl.label SSL Logins' do
echo 'login_imap.label IMAP Logins' field=$(echo $t | tr '[:upper:]' '[:lower:]')
echo 'login_pop3.label POP3 Logins' echo "login_$field.label $t Logins"
echo "login_$field.type DERIVE"
echo "login_$field.min 0"
done
echo 'connected.label Connected Users' echo 'connected.label Connected Users'
exit 0 exit 0
fi fi
#############################
# Initialization
#############################
if [ ! -r $STAT_FILE ]; then
echo "TOTAL=0" > $STAT_FILE
echo "TLS=0" >> $STAT_FILE
echo "SSL=0" >> $STAT_FILE
echo "IMAP=0" >> $STAT_FILE
echo "POP3=0" >> $STAT_FILE
fi
#############################
###################### ######################
# Total Logins # Total Logins
###################### ######################
echo -en "login_total.value " echo -en "login_total.value "
NEW_TOTAL=$(egrep '[dovecot]?.*Login' $LOGFILE | grep "`date '+%b %e'`" | sort | wc -l) VALUE=$(egrep '[dovecot]?.*Login' $LOGFILE | sort | wc -l)
OLD_TOTAL=$(grep TOTAL $STAT_FILE | cut -f2 -d '=') if [ ! -z "$VALUE" ]; then
TOTAL=$($EXPR_BIN $NEW_TOTAL - $OLD_TOTAL) echo "$VALUE"
if [ $TOTAL -gt 0 ]; then
echo "$TOTAL"
else else
echo "0" echo "0"
fi fi
@ -83,8 +73,8 @@ echo -n
###################### ######################
DISCONNECTS=$(egrep '[dovecot]?.*Disconnected' $LOGFILE | sort | wc -l) DISCONNECTS=$(egrep '[dovecot]?.*Disconnected' $LOGFILE | sort | wc -l)
CONNECTS=$(egrep '[dovecot]?.*Login' $LOGFILE | sort | wc -l) CONNECTS=$(egrep '[dovecot]?.*Login' $LOGFILE | sort | wc -l)
DISCON=$($EXPR_BIN $CONNECTS - $DISCONNECTS) VALUE=$($EXPR_BIN $CONNECTS - $DISCONNECTS)
if [ $DISCON -lt 0 ]; then if [ -z "$DISCON" ] || [ "$DISCON" -lt 0 ]; then
DISCON=0 DISCON=0
fi fi
echo -en "connected.value " echo -en "connected.value "
@ -94,11 +84,9 @@ echo -n
# TLS Logins # TLS Logins
###################### ######################
echo -en "login_tls.value " echo -en "login_tls.value "
NEW_TLS=$(egrep '[dovecot]?.*Login.*TLS' $LOGFILE | grep "`date '+%b %e'`" | sort | wc -l) VALUE=$(egrep '[dovecot]?.*Login.*TLS' $LOGFILE | sort | wc -l)
OLD_TLS=$(grep TLS $STAT_FILE | cut -f2 -d '=') if [ ! -z "$VALUE" ]; then
TLS=$($EXPR_BIN $NEW_TLS - $OLD_TLS) echo "$VALUE"
if [ $TLS -gt 0 ]; then
echo "$TLS"
else else
echo "0" echo "0"
fi fi
@ -107,11 +95,9 @@ echo -n
# SSL Logins # SSL Logins
###################### ######################
echo -en "login_ssl.value " echo -en "login_ssl.value "
NEW_SSL=$(egrep '[dovecot]?.*Login.*SSL' $LOGFILE | grep "`date '+%b %e'`" | sort | wc -l) VALUE=$(egrep '[dovecot]?.*Login.*SSL' $LOGFILE | sort | wc -l)
OLD_SSL=$(grep SSL $STAT_FILE | cut -f2 -d '=') if [ ! -z "$VALUE" ]; then
SSL=$($EXPR_BIN $NEW_SSL - $OLD_SSL) echo "$VALUE"
if [ $SSL -gt 0 ]; then
echo "$SSL"
else else
echo "0" echo "0"
fi fi
@ -120,11 +106,9 @@ echo -n
# IMAP Logins # IMAP Logins
###################### ######################
echo -en "login_imap.value " echo -en "login_imap.value "
NEW_IMAP=$(egrep '[dovecot]?.*imap.*Login' $LOGFILE | grep "`date '+%b %e'`" | sort | wc -l) VALUE=$(egrep '[dovecot]?.*imap.*Login' $LOGFILE | sort | wc -l)
OLD_IMAP=$(grep IMAP $STAT_FILE | cut -f2 -d '=') if [ ! -z "$VALUE" ]; then
IMAP=$($EXPR_BIN $NEW_IMAP - $OLD_IMAP) echo "$VALUE"
if [ $IMAP -gt 0 ]; then
echo "$IMAP"
else else
echo "0" echo "0"
fi fi
@ -133,21 +117,10 @@ echo -n
# POP3 Logins # POP3 Logins
###################### ######################
echo -en "login_pop3.value " echo -en "login_pop3.value "
NEW_POP3=$(egrep '[dovecot]?.*pop3.*Login' $LOGFILE | grep "`date '+%b %e'`" | sort | wc -l) VALUE=$(egrep '[dovecot]?.*pop3.*Login' $LOGFILE | sort | wc -l)
OLD_POP3=$(grep POP3 $STAT_FILE | cut -f2 -d '=') if [ ! -z "$VALUE" ]; then
POP3=$($EXPR_BIN $NEW_POP3 - $OLD_POP3) echo "$VALUE"
if [ $POP3 -gt 0 ]; then
echo "$POP3"
else else
echo "0" echo "0"
fi fi
echo -n echo -n
######################
# Save the new values
######################
echo "TOTAL=$NEW_TOTAL" > $STAT_FILE
echo "TLS=$NEW_TLS" >> $STAT_FILE
echo "SSL=$NEW_SSL" >> $STAT_FILE
echo "IMAP=$NEW_IMAP" >> $STAT_FILE
echo "POP3=$NEW_POP3" >> $STAT_FILE