zur Statistischen Erfassung war auf dem alten Mailserver „mailgraph“ installiert. Das Problem für mich war, das ich die Daten nicht brauchbar ins Nagios bekommen habe (check_rrd etc).
Die Lösung: Das Maillog mit check_logfile parsen und das Ergebniss als Performance Daten für Nagios ausgeben.
Aufruf von check_logfile in der nrpe.cfg:
command[check_mailflow]=sudo /usr/lib/nagios/plugins/check_logfiles -f /etc/nagios-plugins/config/logfile.cfg
In der logfile.cfg sind die Parser für
- recive – Mail an den Exchange weitergeleitet
- bounce – allgemeine Bounces
- block – durch RBL geblocke Mails
- block-nouser – wegen ungültiger Benutzer geblockte Mail
our $sendcount = 0;
our $bouncecount = 0;
our $blockcount = 0;
our $nousercount = 0;
@searches = ({
tag => 'postfix',
logfile => '/var/log/mail.log',
rotation => 'loglogdate8gz',
options => 'supersmartscript,noprotocol,supersmartpostscript',
criticalpatterns => '.*',
script => sub {
if ( $ENV{CHECK_LOGFILES_SERVICEOUTPUT} =~ /\bstatus=sent\b/){
if ( $ENV{CHECK_LOGFILES_SERVICEOUTPUT} !~ /\brelay=[^\s\[]*\[127\.0\.0\.1\]/ ){
$sendcount++;
}
}
if ( $ENV{CHECK_LOGFILES_SERVICEOUTPUT} =~ /\bstatus=bounced\b/) {
$bouncecount++;
}
if ( $ENV{CHECK_LOGFILES_SERVICEOUTPUT} =~ /\b.*NOQUEUE: .*reject: .*: 554.* blocked using\b/) {
$blockcount++;
}
if ( $ENV{CHECK_LOGFILES_SERVICEOUTPUT} =~ /\b.*NOQUEUE: .*reject: .*: 550.* Recipient address rejected\b/) {
$nousercount++;
}
},
});
$options = 'supersmartpostscript';
$postscript = sub {
my $tic = $CHECK_LOGFILES_PRIVATESTATE->{postfix}->{lastruntime} || 0;
my $tac = time;
my $runtime = ($tac - $tic);
my $sendrate = 60 * ( $sendcount / $runtime );
printf "OK - recive: %.1f bounce: %.1f block: %.1f block-nouser: %.1f | recive=%.1f;bounce=%.1f;block=%.1f;block-nouser=%.1f\n", $sendra
te, $bouncecount, $blockcount, $nousercount, $sendrate, $bouncecount, $blockcount, $nousercount;
return 0;