#!/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=contrib #%# capabilities=autoconf #set -xv SYS_LOG=${logfile:-/var/log/syslog} SYS_LOG2=${logfile2:-/var/log/syslog.0} PFLOGSUMM=${pflogsumm:-pflogsumm.pl} # Fields (Array to avoid code duplication) declare -a FIELDS_ARR=("received" "delivered" "forwarded" "deferred" "bounced" "rejected" "held" "discarded") # # 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_period minute' echo 'graph_total Total' # Generate config for each field for i in "${FIELDS_ARR[@]}" do echo "${i}.label ${i}" echo "${i}.type DERIVE" echo "${i}.min 0" echo "${i}.draw AREASTACK" done 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:]]+' | head -n 1 | sed 's: ::g') if [[ -z "${TMP_RETURN}" ]] then echo -1 else echo "${TMP_RETURN}" fi } # Print results for i in "${FIELDS_ARR[@]}" do printf "${i}.value " parseValue "${i}" done