^TipsAnd...
?TableOfContents
To analize the qmail log files and generate statistical information one can use the qmailanalog package from the author of qmail, Dan Bernstein, see: http://cr.yp.to/qmailanalog.html for the original package.
We have a patched version with the following features:
- can analize multilog generated logs (tai64 timestamps)
- works with GNU sort (-k_n_ instead of +n)
- provides
mlmatchup
for direct use of multilog ! procesor - added
clean
target to Makefile We also have a simple shell script:qareport
to postprocess the created output.
Get it from http://www.magma.com.ni/trac/browser/qmailanalog
Note! This is only useful, if you use multilog
from the daemontools package or svlogd
, the GPLed multilog
replacement from Gerrit Pape.
Compilation and Installation
- Get and unpack qmailanalog-0.70
- Get qmailanalog-multilog.patch.gz
- apply the patch
make
- as root:
make setup check
Prepare the qmail-send log service
For this explanation we suppose that qmail-send
is set up as a supervised service in the directory /etc/qmail/qmail-send
and that qmailanalog is installed in /usr/local/qmailanalog
.
A typical log service for qmail-send
in the subdirectory /etc/qmail/qmail-send/log
would look like this:
#!/bin/sh exec setuidgid qmaill multilog t ./main
We want to save the processed logs in the subdirectory qmailanalog
and make it accessible to the adm
group:
cd /etc/qmail/qmail-send/log mkdir qmailanalog chown qmaill:adm qmailanalog chmod 2750 qmailanalog
Then we extend the last line of the log service to read:
exec setuidgid qmaill multilog t ./main \ !/usr/local/qmailanalog/bin/mlmatchup ./qmailanalog
Now we are ready to restart the log service, as root:
svc -t .
Periodically create (qa)reports
To get daily, monthly and yearly summaries generated automatically use the files in the qareports
subdirectory. You need to adapt the qareports
script. Edit the lines with: MATCHUPDIR, REPORTDIR and QABIN to match your requirements. Following the above example you only need to set REPORTDIR to any directory you want the reports beeing generated in.
qareports
finds all saved logfiles from one day ago, concatenates them into the file raw.data
in a directory named 'REPORTDIR/YYYY/MM/DD' and generates (almost) all z* reports from the qmailanalog
packages out of them. It also updates raw.data
in 'REPORTDIR/YYYY/MM' and 'REPORTDIR/YYYY' and generates the same reports in these directories.
For REPORTDIR you can use a directory readable by your webbrowser, which allows you to browse and read the reports online. In this case you might want to protect the reports with a password or other access control method.
As root:
- Copy the script
qareports
to/usr/local/qmailanalog/bin
- Install
qmaill.crontab
as crontab for theqmaill
user:crontab -u qmaill qmaill.crontab
- Install
qareports.cron.d
in root's crontab, e.g. by:cp qareports.cron.d /etc/cron.d/qmailanalog
The third step will send an ALRM signal to the log service at midnight thus restarting logging with a newcurrent
log at the beginning of each day.
The second step will run the qareports
script five minutes afterwards creating the reports for the past day, and updateing the monthly and yearly reports.