postfix-stats/grapher.sh

101 lines
3.9 KiB
Bash
Executable File

#!/bin/bash
# Go into appropriate directory
cd `dirname $0`
# Load settings
. ./settings.sh
period_filenames=("hour.png" "6hours.png" "12hours.png" "day.png" "week.png" "month.png" "6months.png" "year.png")
period_startparams=("end-1h" "end-6h" "end-12h" "end-24h" "end-7d" "end-4w" "end-6M" "end-1y")
period_texts=("Last hour" "Last 6 hours" "Last 12 hours" "Last day" "Last week" "Last month" "Last 6 months" "Last year")
for index in ${!period_filenames[*]}; do
filename=${period_filenames[$index]}
startparam=${period_startparams[$index]}
text=${period_texts[$index]}
# Draw the graphs
# Logfile
rrdtool graph $GRAPHDIR/log_$filename \
--start $startparam \
--step 60 \
--title "Mail logfile statistics on `hostname -f` - $text" \
--vertical-label "lines/minute" \
-h 200 -w 800 --slope-mode \
DEF:log_lines_total=$RRDFILE:log_lines_total:AVERAGE \
DEF:log_lines_smtp=$RRDFILE:log_lines_smtp:AVERAGE \
DEF:log_lines_smtpd=$RRDFILE:log_lines_smtpd:AVERAGE \
AREA:log_lines_total#00000033 \
LINE:log_lines_total#000000:'total' \
AREA:log_lines_smtp#FF000055 \
LINE:log_lines_smtp#FF0000:'smtp' \
AREA:log_lines_smtpd#0000FF77 \
LINE:log_lines_smtpd#0000FF:'smtpd'
# Connections
rrdtool graph $GRAPHDIR/connections_$filename \
--start $startparam \
--step 60 \
--title "Inbound mail connections on `hostname -f` - $text" \
--vertical-label "connections/minute" \
-h 200 -w 800 --slope-mode \
DEF:mi_connects=$RRDFILE:mi_connects:AVERAGE \
DEF:mi_connects_tls=$RRDFILE:mi_connects_tls:AVERAGE \
AREA:mi_connects#CC000033 \
LINE:mi_connects#CC0000:'total' \
AREA:mi_connects_tls#00FF0055 \
LINE:mi_connects_tls#00FF00:'with tls'
# Outbound mail
rrdtool graph $GRAPHDIR/mail_out_$filename \
--start $startparam \
--step 60 \
--title "Outbound mail on `hostname -f` - $text" \
--vertical-label "mails/minute" \
-h 200 -w 800 --slope-mode \
DEF:mo_sent=$RRDFILE:mo_sent:AVERAGE \
DEF:mo_deferred=$RRDFILE:mo_deferred:AVERAGE \
DEF:mo_bncd_total=$RRDFILE:mo_bncd_total:AVERAGE \
DEF:mo_bncd_spam=$RRDFILE:mo_bncd_spam:AVERAGE \
DEF:mo_bncd_reputation=$RRDFILE:mo_bncd_reputation:AVERAGE \
DEF:mo_deliverable=$RRDFILE:mo_deliverable:AVERAGE \
DEF:mo_undeliverable=$RRDFILE:mo_undeliverable:AVERAGE \
AREA:mo_deferred#77777733 \
LINE:mo_deferred#777777:'deferred' \
AREA:mo_sent#00DD0055 \
LINE:mo_sent#00DD00:'sent' \
AREA:mo_deliverable#00AA0077 \
LINE:mo_deliverable#00AA00:'deliverable' \
AREA:mo_undeliverable#AA880077 \
LINE:mo_undeliverable#AA8800:'undeliverable' \
AREA:mo_bncd_total#0000FF77 \
LINE:mo_bncd_total#0000FF:'bounced total' \
AREA:mo_bncd_spam#FF0000AA \
LINE:mo_bncd_spam#FF0000:'bounced due to SPAM' \
AREA:mo_bncd_reputation#FF00FFFF \
LINE:mo_bncd_reputation#FF00FFFF:'reputation event'
# Inbound mail
rrdtool graph $GRAPHDIR/mail_in_$filename \
--start $startparam \
--step 60 \
--title "Inbound mail on `hostname -f` - $text" \
--vertical-label "mails/minute" \
-h 200 -w 800 --slope-mode \
DEF:mi_accept=$RRDFILE:mi_accept:AVERAGE \
DEF:mi_reject=$RRDFILE:mi_reject:AVERAGE \
DEF:mi_proxy_accept=$RRDFILE:mi_proxy_accept:AVERAGE \
DEF:mi_proxy_reject=$RRDFILE:mi_proxy_reject:AVERAGE \
AREA:mi_accept#00FF0033 \
LINE:mi_accept#00FF00:'accept' \
AREA:mi_proxy_accept#00880055 \
LINE:mi_proxy_accept#008800:'proxy-accept' \
AREA:mi_reject#FF000077 \
LINE:mi_reject#FF0000:'reject' \
AREA:mi_proxy_reject#88000077 \
LINE:mi_proxy_reject#880000:'proxy-reject'
done