mirror of
https://github.com/cmur2/munin-postfix.git
synced 2024-11-18 12:56:17 +01:00
Add doc and helper scripts
This commit is contained in:
parent
d020f29b34
commit
8f5d97e002
25
README.md
Normal file
25
README.md
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
Low volume postfix_mailqueue munin plugin
|
||||||
|
=========================================
|
||||||
|
|
||||||
|
The original postfix_mailqueue plugin delivered with munin does very well
|
||||||
|
in many aspects. But it has a design related problem: to measure the number
|
||||||
|
of mails per queue (active, incomming, deferred, ...) it counts the entries
|
||||||
|
in the corresponding spool directories every 5 minutes (when munin core asks).
|
||||||
|
If a mail only stays a short time in a queue (especially active and incomming
|
||||||
|
queues) it won't get recognized by postfix_mailqueue.
|
||||||
|
|
||||||
|
Since on my low volume mailserver I'm interested in the total number of sent/
|
||||||
|
recieved messages in the last 5 minutes (for the deferred and hold queues the
|
||||||
|
original method is good enough since a mail there probably stays longer than
|
||||||
|
5 minutes) I changed the behavior and meaning of the "active" and "incomming"
|
||||||
|
graphs to "outgoing" (to the network) and "incomming" (from the network).
|
||||||
|
To determine the number of mails for these graphs the recent (5 minutes, hardcoded)
|
||||||
|
syslog entries are grep'ed for signaling sequences indicating some kind of
|
||||||
|
action of postfix.
|
||||||
|
|
||||||
|
syslog5mins
|
||||||
|
-----------
|
||||||
|
|
||||||
|
This little script returns the entries of a (syslog created) file of the last
|
||||||
|
5 minutes.
|
||||||
|
**You should modify the scripts location in postfix_mailqueue script!**
|
@ -78,6 +78,9 @@ munin-node.
|
|||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
|
MAILLOG="/var/log/mail.log"
|
||||||
|
SYSLOG5MINS="/opt/syslog5mins"
|
||||||
|
|
||||||
# atempt to get spooldir via postconf, but environment overrides.
|
# atempt to get spooldir via postconf, but environment overrides.
|
||||||
|
|
||||||
# Remember that postconf is not available unless postfix is.
|
# Remember that postconf is not available unless postfix is.
|
||||||
@ -127,10 +130,10 @@ cd $SPOOLDIR >/dev/null 2>/dev/null || {
|
|||||||
}
|
}
|
||||||
|
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
outgoing.value `/opt/syslog5mins /var/log/mail.log | grep "postfix/smtp\[.*status=sent" | wc -l`
|
outgoing.value `$SYSLOG5MINS $MAILLOG | grep "postfix/smtp\[.*status=sent" | wc -l`
|
||||||
deferred.value `(test -d deferred && find deferred -type f ) | wc -l`
|
deferred.value `(test -d deferred && find deferred -type f ) | wc -l`
|
||||||
maildrop.value `(test -d maildrop && find maildrop -type f ) | wc -l`
|
maildrop.value `(test -d maildrop && find maildrop -type f ) | wc -l`
|
||||||
incoming.value `/opt/syslog5mins /var/log/mail.log | grep "postfix/pipe\[.*status=sent" | wc -l`
|
incoming.value `$SYSLOG5MINS $MAILLOG | grep "postfix/pipe\[.*status=sent" | wc -l`
|
||||||
corrupt.value `(test -d corrupt && find corrupt -type f ) | wc -l`
|
corrupt.value `(test -d corrupt && find corrupt -type f ) | wc -l`
|
||||||
hold.value `( test -d hold && find hold -type f ) | wc -l`
|
hold.value `( test -d hold && find hold -type f ) | wc -l`
|
||||||
EOF
|
EOF
|
||||||
|
15
syslog5mins
Executable file
15
syslog5mins
Executable file
@ -0,0 +1,15 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ "$1" == "" ]; then
|
||||||
|
echo "No file given!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
for (( i = 4; i >= 0; i-- )) ; do
|
||||||
|
# In %_d the underscore is important since it demands `date`
|
||||||
|
# to pad with spaces (like syslog for e.g. "Jan 1" to "Jan 9")
|
||||||
|
# instead of zeros.
|
||||||
|
dstring=`LANG=C date -d "-$i min" +"%b %_d %R"`
|
||||||
|
#echo "Entries for '$dstring':"
|
||||||
|
grep "^$dstring:.. " $1
|
||||||
|
done
|
Loading…
Reference in New Issue
Block a user