munin-contrib/plugins/mixminion/mixminion

129 lines
3.4 KiB
Bash
Executable File

#!/bin/sh
#
# plugin to monitor mixminion stats
# pesco 2011, isc license
# munin metadata:
#%# capabilities=autoconf suggest
PATH=/bin:/usr/bin:/usr/local/bin
case $0 in
*_relay)
FIELDNAMES="AttemptedRelay SuccessfulRelay FailedRelay UnretriableRelay ReceivedPacket";;
*_exit)
FIELDNAMES="AttemptedDelivery SuccessfulDelivery FailedDelivery UnretriableDelivery";;
*)
FIELDNAMES="ReceivedConnection AttemptedConnect SuccessfulConnect FailedConnect";;
esac
case $1 in
autoconf)
# see if we got mixminion installed
if which mixminiond >/dev/null; then
echo "yes"
else
echo "no"
fi
exit 0;;
suggest)
desc="`cat /var/lib/mixminion/current-desc`"
echo connections
grep -q '^\[Incoming/MMTP\]' "$desc" && echo relay
grep -q '^\[Delivery/SMTP\]' "$desc" && echo exit
exit 0;;
config)
echo "graph_category mail"
echo "graph_args --base 1000 -l 0"
case $0 in
*_relay)
cat <<'EOM'
graph_title Mixminion relay
graph_vlabel packets per second
AttemptedRelay.label packets to relay
AttemptedRelay.info Total number of packets that we attempted to relay
AttemptedRelay.draw LINE2
FailedRelay.label relay errors
FailedRelay.info Number of packets that we (momentarily) failed to relay
FailedRelay.draw AREASTACK
UnretriableRelay.label permanent failures
UnretriableRelay.info Number of packets that we permanently gave up trying to relay
UnretriableRelay.draw AREASTACK
SuccessfulRelay.label relay success
SuccessfulRelay.info Number of packets that we successfully relayed
SuccessfulRelay.draw AREASTACK
SuccessfulRelay.graph no
ReceivedPacket.label incoming packets
ReceivedPacket.info Total number of packets that we received
ReceivedPacket.draw LINE2
EOM
;;
*_exit)
cat <<'EOM'
graph_title Mixminion exit
graph_vlabel messages per second
AttemptedDelivery.label messages to deliver
AttemptedDelivery.info Total number of emails that we tried to deliver
AttemptedDelivery.draw LINE2
FailedDelivery.label delivery errors
FailedDelivery.info Number of emails that we (momentarily) failed to deliver
FailedDelivery.draw AREASTACK
UnretriableDelivery.label permanent failures
UnretriableDelivery.info Number of emails that we permanently gave up trying to deliver
UnretriableDelivery.draw AREASTACK
SuccessfulDelivery.label delivery successes
SuccessfulDelivery.info Number of emails successfully delivered
SuccessfulDelivery.draw AREASTACK
SuccessfulDelivery.graph no
EOM
;;
*)
cat <<'EOM'
graph_title Mixminion connections
graph_vlabel connections in (-) / out (+) per second
ReceivedConnection.label incoming
ReceivedConnection.info number of successful incoming connections
ReceivedConnection.graph no
AttemptedConnect.label total conn's
AttemptedConnect.info Total number of attempted outgoing connections
AttemptedConnect.draw LINE2
AttemptedConnect.negative ReceivedConnection
FailedConnect.label conn. failures
FailedConnect.info Number of failed outgoing connections
FailedConnect.draw AREASTACK
SuccessfulConnect.label successful
SuccessfulConnect.info Number of successful in-/outgoin connections
SuccessfulConnect.draw AREASTACK
SuccessfulConnect.graph no
EOM
;;
esac
for field in $FIELDNAMES; do
echo "$field.type DERIVE"
echo "$field.min 0"
done
exit 0;;
esac
mixminion server-stats 2>/dev/null | perl -e '
while(<STDIN>) {
if(/^ *([[:alnum:]]+): *([.[:digit:]]+)/ &&
grep {$_ eq $1} @ARGV) {
print "$1.value $2\n";
}
}
' $FIELDNAMES