exim statistics

Templates, scripts for templates, scripts and requests for templates.

Moderators: Developers, Moderators

dmcat10
Posts: 2
Joined: Tue Aug 07, 2007 9:12 pm

Post by dmcat10 »

hey dk10tlx,

This is excellent I'm also working on stats of exim4 on Debian.

Would you be able to post the script you are using?

thanks
User avatar
dk10tlx
Posts: 19
Joined: Sat Aug 04, 2007 8:10 am
Location: Tirol / Austria
Contact:

Post by dk10tlx »

Hi again,

the script is really tightened to vexim2/exim4 on Debian (here it is saved as /usr/local/sbin/exim4_stats.pl)

Code: Select all

#!/usr/bin/perl

# originally: exim_perf.pl - gathers performance data from the exim log file
# adapted and fixed for VEXIM 2.2 and Exim 4.x on Debian Lenny
# by Daniel Knabl

use strict;
use File::stat qw(:FIELDS);

my $exim_log = "/var/log/exim4/mainlog";
my $exim_sta = "/etc/snmp/exim_perf.stat";
my $exim_tmp = "/tmp/exim_perf.temp";
my $exim_1 = "/var/log/exim4/mainlog.1";
my $logchunk = get_newest($exim_log);

open STATS, "|eximstats > $exim_tmp" or die;

foreach my $line (@$logchunk) {
        print STATS $line;
}

close STATS;

my $remote_smtp = 0;
my $local_delivery = 0;
my $virtual_delivery = 0;
my $virtual_vacation_delivery = 0;
my $ditch_spam_transport = 0;
my $mailman_transport = 0;
my $blackhole = 0;

open STATS, "<$exim_tmp" or die;

while (my $line = <STATS>) {
        chomp $line;
        if ($line =~ m/remote_smtp .* ([0-9]+)$/) {
                $remote_smtp = $1;
        }
        if ($line =~ m/local_delivery .* ([0-9]+)$/) {
                $local_delivery = $1;
        }
        if ($line =~ m/virtual_delivery .* ([0-9]+)$/) {
                $virtual_delivery = $1;
        }
        if ($line =~ m/virtual_vacation_delivery .* ([0-9]+)$/) {
                $virtual_vacation_delivery = $1;
        }
        if ($line =~ m/ditch_spam_transport .* ([0-9]+)$/) {
                $ditch_spam_transport = $1;
        }
        if ($line =~ m/mailman_transport .* ([0-9]+)$/) {
                $mailman_transport = $1;
        }
        if ($line =~ m/:blackhole: .* ([0-9]+)$/) {
                $blackhole = $1;
        }
}
close STATS;

print "remote_smtp\n";
print "$remote_smtp\n";
print "local_delivery\n";
print "$local_delivery\n";
print "virtual_delivery\n";
print "$virtual_delivery\n";
print "virtual_vacation_delivery\n";
print "$virtual_vacation_delivery\n";
print "ditch_spam_transport\n";
print "$ditch_spam_transport\n";
print "mailman_transport\n";
print "$mailman_transport\n";
print "blackhole\n";
print "$blackhole\n";

exit (0);

sub get_newest ($) {
        my $file = shift;
        my $position= 0;
        my $timestamp = 1000000000000000;
        my @log;

        if (-e "$exim_sta") {
                open FILE, "<$exim_sta" or die;
                my $line = <FILE>;
                chomp $line;
                ($position, $timestamp) = split " ", $line;
                close FILE;
        }

        open FILE, "<$exim_log" or die;
        my $st = stat("$exim_1") or die;

        if ($st->ctime > $timestamp) {
                # File has been rotated, read the old file first.
                open OLDFILE, "<$exim_1" or die;
                seek (OLDFILE, $position, 0);
                while (my $line = <OLDFILE>) {
                        push @log, $line;
                }
                close OLDFILE;
                $position = 0;
        }

        seek (FILE, $position, 0);

        # now read the new file.
        while (my $line = <FILE>) {
                push @log, $line;
        }
        $position = tell(FILE);

        close FILE;

        open FILE, ">$exim_sta" or die;
        print FILE "$position " . $st->ctime . "\n";
        close FILE;

        return \@log;
}
regards
Daniel

[size=67]
[b]cacti [color=red]0.8.6j[/color] - cactid [color=red]0.8.6i[/color]
Debian GNU/Linux lenny/sid[/b]
Apache2 - PHP5 - MySQL5[/size]
dmcat10
Posts: 2
Joined: Tue Aug 07, 2007 9:12 pm

Post by dmcat10 »

thanks,

ah, but i'm using sa-exim. this doesn't return any information on spam stats for me :(

i'm not sure exactly how i'm going to get the spam stats as eximstats doesn't seem to report them when using sa-exim.

i'm just running a mail relay so i don't need any of the local delivery stats. anyone using cacti to graph what sa-exim is doing?
User avatar
dk10tlx
Posts: 19
Joined: Sat Aug 04, 2007 8:10 am
Location: Tirol / Austria
Contact:

Post by dk10tlx »

:( ... something is going wrong here ...

The script does only give reasonable results if I run it by hand, although it seems to work correctly. It is chmod'ed to 750, it is in the path, the cron job runs the script as user root (yes, it is chown'ed to root.root) ... still no output.

My perl knowledge is pretty poor which means: I can read and understand, what the script does, but I can't modify it furthermore to do what I want it to do. So, if there's anyone using this kind of solution successfully, then PLEASE share your wisdom with me :oops:

I'm willing to provide any information needed to debug, even a limited shell account would be an option ... so you can see my desperation :roll:
regards
Daniel

[size=67]
[b]cacti [color=red]0.8.6j[/color] - cactid [color=red]0.8.6i[/color]
Debian GNU/Linux lenny/sid[/b]
Apache2 - PHP5 - MySQL5[/size]
User avatar
dk10tlx
Posts: 19
Joined: Sat Aug 04, 2007 8:10 am
Location: Tirol / Austria
Contact:

Post by dk10tlx »

Ladies and Gentlemen :D

Now I've got it up and running. My modifications seem to work perfectly, also there's now a way to query the rejected ones.

Though my modifications are based on an installation where exim4 is used together with vexim2/mysql. For this reason it is important to use exactly the same transports as provided with vexim2 - for example one could use our Debian packages that we provide on http://pkg-vexim.alioth.debian.org

For any ideas to improve or simplify my setup please pm me.
regards
Daniel

[size=67]
[b]cacti [color=red]0.8.6j[/color] - cactid [color=red]0.8.6i[/color]
Debian GNU/Linux lenny/sid[/b]
Apache2 - PHP5 - MySQL5[/size]
User avatar
dk10tlx
Posts: 19
Joined: Sat Aug 04, 2007 8:10 am
Location: Tirol / Austria
Contact:

Post by dk10tlx »

Hi again,

is there still some need or interest in this template? If so, I could provide the latest version of it. Please don't hit me, but there's one question remaining:

How can I make one xml file out of those numerous files? Is it even possible?
Please help me with this issue if someone needs the working version :)
regards
Daniel

[size=67]
[b]cacti [color=red]0.8.6j[/color] - cactid [color=red]0.8.6i[/color]
Debian GNU/Linux lenny/sid[/b]
Apache2 - PHP5 - MySQL5[/size]
dogzilla
Posts: 2
Joined: Wed Sep 19, 2007 4:42 am

Post by dogzilla »

Yes PLEASE! I have been unable to set this up correctly.

This is my cron entry :

*/5 * * * * /etc/snmp/exim_perf.pl > /etc/snmp/exim_perf.stats

And this is the output :

[root@smtp snmp]# /etc/snmp/exim_perf.pl > /etc/snmp/exim_perf.stats
[root@smtp snmp]# cat exim_perf.stats
clamcheck
0
local_delivery
0
remote_smtp
1
spamcheck
0
trend_micro
0
remote_smtp_single_recipient_domains
0

It only shows 1 message because my mail server is quiet at the moment. When i ran earlier i saw it correctly counting.

At the bottom of my SNMPD config file i have the following :

exec .1.3.6.1.4.1.14464.25 exim_perf.pl /bin/cat /etc/snmp/exim_perf.stats

So whats up? My graph is returning null values!
User avatar
dk10tlx
Posts: 19
Joined: Sat Aug 04, 2007 8:10 am
Location: Tirol / Austria
Contact:

Post by dk10tlx »

Your graph is most probably returning NULL values, because you seem to use the original script. You should instead use the modified script which i posted before. Here everything works fine with some different machines.


regards
Daniel
regards
Daniel

[size=67]
[b]cacti [color=red]0.8.6j[/color] - cactid [color=red]0.8.6i[/color]
Debian GNU/Linux lenny/sid[/b]
Apache2 - PHP5 - MySQL5[/size]
dogzilla
Posts: 2
Joined: Wed Sep 19, 2007 4:42 am

Post by dogzilla »

Actually that script is working fine but i have changed to yours now.

This what keeps happening, i run the script manually and it count mail just fine however if i leave it on its own and i check it later and the file is 0 bytes, completely empty!

I think maybe somehow the file is getting locked and the SNMP poll is interfering or something?
Smux
Posts: 40
Joined: Mon Sep 10, 2007 2:47 pm

Post by Smux »

Hi,

Im trying to import this XML files and the CACTI shows that "Error: XML: Hash version does not exist."

I use version 0.8.6j.

Anyone knows to solve this?

Thanks in advance and sorry for my bad english.
User avatar
dk10tlx
Posts: 19
Joined: Sat Aug 04, 2007 8:10 am
Location: Tirol / Austria
Contact:

Post by dk10tlx »

Normally this message means, that your version is older than the version the tamplate was created with. In this special case I'm rather unsure, because I also used version 0.8.6j to create the template/s.

Sorry, but I don't know a good answer though.

regrads
Daniel
regards
Daniel

[size=67]
[b]cacti [color=red]0.8.6j[/color] - cactid [color=red]0.8.6i[/color]
Debian GNU/Linux lenny/sid[/b]
Apache2 - PHP5 - MySQL5[/size]
User avatar
dk10tlx
Posts: 19
Joined: Sat Aug 04, 2007 8:10 am
Location: Tirol / Austria
Contact:

Post by dk10tlx »

dogzilla: have you cron'ed the script before the poller tries to access and fetch data via snmp? Normally this should work without any complications.
regards
Daniel

[size=67]
[b]cacti [color=red]0.8.6j[/color] - cactid [color=red]0.8.6i[/color]
Debian GNU/Linux lenny/sid[/b]
Apache2 - PHP5 - MySQL5[/size]
Smux
Posts: 40
Joined: Mon Sep 10, 2007 2:47 pm

Post by Smux »

dk10tlx wrote:Normally this message means, that your version is older than the version the tamplate was created with. In this special case I'm rather unsure, because I also used version 0.8.6j to create the template/s.

Sorry, but I don't know a good answer though.

regrads
Daniel
Thanks Daniel, i'll try create these xml files manually.
sjs
Posts: 22
Joined: Wed Oct 24, 2007 1:22 pm

Post by sjs »

Hi!

I'm using cacti 0.8.6i (which is part of the Debian Etch) and I'm also getting the "XML: Hash version does not exist." error when trying to import dk10tlx's XMLs.
Any chance I'll get that stuff up and running?


Regards,

Sebastian

PS: The debian-specific perl script seems to be working already.
Smux
Posts: 40
Joined: Mon Sep 10, 2007 2:47 pm

Post by Smux »

sjs wrote:Hi!

I'm using cacti 0.8.6i (which is part of the Debian Etch) and I'm also getting the "XML: Hash version does not exist." error when trying to import dk10tlx's XMLs.
Any chance I'll get that stuff up and running?


Regards,

Sebastian

PS: The debian-specific perl script seems to be working already.
I have same problem with xml hash version error...
Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest