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