2
0
Fork 0
mirror of https://github.com/munin-monitoring/contrib.git synced 2018-11-08 00:59:34 +01:00
contrib-munin/plugins/mail/postfix_stats
2016-11-02 05:03:01 +01:00

125 lines
2.7 KiB
Bash
Executable file

#!/bin/sh
#
# Plugin to show Postfix statistics - needs pflogsumm
#
# Contributed by David Obando (david@cryptix.de) - 16.04.2007
# Rewrited by Cristian Deluxe (me@cristiandeluxe.com) - 02.11.2016
#
#
# Example config for Ubuntu (You need: apt-get install pflogsumm)
#
# [postfix_stats]
# env.logfile /var/log/syslog
# env.logfile2 /var/log/syslog.1
# env.pflogsumm pflogsumm
#
#
# Magic markers - optional - used by installation scripts and
# munin-config:
#
#%# family=manual
#%# capabilities=autoconf
#set -xv
SYS_LOG=${logfile:-/var/log/syslog}
SYS_LOG2=${logfile2:-/var/log/syslog.0}
PFLOGSUMM=${pflogsumm:-pflogsumm.pl}
#
# Autoconf Section
#
if [ "$1" = 'autoconf' ]; then
# Try to find pflogsumm with default name
PFLOG_EXIST=$(command -v pflogsumm.pl)
# Try to find pflogsumm without any extension
if [[ -z "${PFLOG_EXIST}" ]]
then
PFLOG_EXIST=$(command -v pflogsumm)
fi
if [[ -z "${PFLOG_EXIST}" ]]
then
echo 'no';
else
echo 'yes'
fi
exit 0;
fi
#
# Config Section
#
if [ "$1" = 'config' ]; then
echo 'graph_title Postfix statistics'
echo 'graph_vlabel Postfix statistics'
echo 'graph_category mail'
echo 'graph_scale no'
echo 'graph_total Total'
echo 'received.label received'
echo 'received.type DERIVE'
echo 'received.min 0'
echo 'delivered.label delivered'
echo 'delivered.type DERIVE'
echo 'delivered.min 0'
echo 'forwarded.label forwarded'
echo 'forwarded.type DERIVE'
echo 'forwarded.min 0'
echo 'deferred.label deferred'
echo 'deferred.type DERIVE'
echo 'deferred.min 0'
echo 'bounced.label bounced'
echo 'bounced.type DERIVE'
echo 'bounced.min 0'
echo 'rejected.label rejected'
echo 'rejected.type DERIVE'
echo 'rejected.min 0'
echo 'held.label held'
echo 'held.type DERIVE'
echo 'held.min 0'
echo 'discarded.label discarded'
echo 'discarded.type DERIVE'
echo 'discarded.min 0'
exit 0;
fi
#
# Plugin Script
#
# Variable to store the pflogsumm result.
TMP_RAW=$("${PFLOGSUMM}" -d today --detail 0 --zero-fill "${SYS_LOG}" "${SYS_LOG2}")
# Parse value from Raw result
#
# Return digit if regex are parsed correctly
#
# Return -1 if any error occurs
#
parseValue() {
TMP_RETURN=$(echo "${TMP_RAW}" | grep -Ei '^[[:space:]]+[[:digit:]]+[[:space:]]+'"${1}"'.*$' | grep -oEi '[[:digit:]]+[[:space:]]+' | sed 's: ::g')
if [[ -z "${TMP_RETURN}" ]]
then
echo -1
else
echo "${TMP_RETURN}"
fi
}
# Print results
printf 'received.value '
parseValue 'received'
printf 'delivered.value '
parseValue 'delivered'
printf 'forwarded.value '
parseValue 'forwarded'
printf 'deferred.value '
parseValue 'deferred'
printf 'bounced.value '
parseValue 'bounced'
printf 'rejected.value '
parseValue 'rejected'
printf 'held.value '
parseValue 'held'
printf 'discarded.value '
parseValue 'discarded'