mirror of
https://github.com/munin-monitoring/contrib.git
synced 2018-11-08 00:59:34 +01:00
109 lines
2.5 KiB
Bash
Executable File
109 lines
2.5 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# Plugin to monitor the amavis mail filter for Debian
|
|
# (based upon a plugin authored by Geoffroy Desvernay)
|
|
#
|
|
# This plugin is built and tested on Debian Etch using:
|
|
# munin 1.2.5-1
|
|
# amavisd-new 2.4.2-6.1
|
|
#
|
|
# With some minor modification it should also work on non-debian systems
|
|
# This, however, is up to you
|
|
#
|
|
# Munin graph will sum up: Passed CLEAN, Blocked VIRUS, Blocked SPAM, Other
|
|
#
|
|
# Parameters understood:
|
|
# config (required)
|
|
# autoconf (optional)
|
|
#
|
|
# Config variables:
|
|
# AMAVIS_LOG - file where amavis logs are written
|
|
# LOGTAIL - location of logtail
|
|
# BC - location of bc
|
|
#
|
|
# Enjoy!
|
|
# Fili Wiese
|
|
#
|
|
|
|
AMAVIS_LOG=${logfile:-/var/log/mail.log}
|
|
STATEFILE=$MUNIN_PLUGSTATE/amavis.offset
|
|
LOGTAIL=${logtail:-`which logtail`}
|
|
BC=${bc:-`which bc`}
|
|
|
|
mktempfile () {
|
|
mktemp
|
|
}
|
|
|
|
if [ "$1" = "autoconf" ]; then
|
|
if [ -f "${AMAVIS_LOG}" -a -n "${LOGTAIL}" -a -x "${LOGTAIL}" -a -n "${BC}" -a -x "${BC}" ] ; then
|
|
echo yes
|
|
else
|
|
echo no
|
|
fi
|
|
exit 0
|
|
fi
|
|
|
|
if [ "$1" = "config" ]; then
|
|
echo 'graph_title Amavis filter statistics'
|
|
echo 'graph_category antivirus'
|
|
echo 'graph_order total clean spam virus other'
|
|
echo 'graph_vlabel Mails filtered'
|
|
echo 'graph_scale no'
|
|
echo 'total.label Total'
|
|
echo 'total.draw AREA'
|
|
echo 'total.colour DDDDDD'
|
|
echo 'clean.label Passed CLEAN'
|
|
echo 'clean.draw LINE1'
|
|
echo 'clean.colour 32FA00'
|
|
echo 'spam.label Blocked SPAM'
|
|
echo 'spam.draw LINE1'
|
|
echo 'spam.colour FF0000'
|
|
echo 'virus.label Blocked VIRUS'
|
|
echo 'virus.draw LINE1'
|
|
echo 'virus.colour 880088'
|
|
echo 'other.label Other'
|
|
echo 'other.draw LINE1'
|
|
echo 'other.colour 0099FF'
|
|
exit 0
|
|
fi
|
|
|
|
clean=0
|
|
virus=0
|
|
spams=0
|
|
other=0
|
|
total=0
|
|
|
|
ARGS=0
|
|
`$LOGTAIL /etc/hosts 2>/dev/null >/dev/null`
|
|
if [ $? = 66 ]; then
|
|
if [ ! -n "$logtail" ]; then
|
|
ARGS=1
|
|
fi
|
|
fi
|
|
|
|
TEMP_FILE=`mktempfile munin-amavis.XXXXXX`
|
|
|
|
if [ -n "$TEMP_FILE" -a -f "$TEMP_FILE" ]
|
|
then
|
|
if [ $ARGS != 0 ]; then
|
|
$LOGTAIL ${AMAVIS_LOG} $STATEFILE | grep 'amavis\[.*\]:' | grep -v 'TIMED OUT' > ${TEMP_FILE}
|
|
else
|
|
$LOGTAIL ${AMAVIS_LOG} $STATEFILE | grep 'amavis\[.*\]:' | grep -v 'TIMED OUT' > ${TEMP_FILE}
|
|
fi
|
|
total=`cat ${TEMP_FILE} | wc -l`
|
|
clean=`grep 'CLEAN' ${TEMP_FILE} | wc -l`
|
|
virus=`grep 'INFECTED' ${TEMP_FILE} | wc -l`
|
|
spam=`grep 'Blocked SPAM' ${TEMP_FILE} | wc -l`
|
|
other=`echo ${total}-${clean}-${virus}-${other}-${spam} | ${BC}`
|
|
|
|
/bin/rm -f $TEMP_FILE
|
|
fi
|
|
|
|
|
|
echo "clean.value ${clean}"
|
|
echo "virus.value ${virus}"
|
|
echo "spam.value ${spam}"
|
|
echo "other.value ${other}"
|
|
echo "total.value ${total}"
|
|
|