#!/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'