[FUG-BR] Tráfego de banda (CACTI + PFCTL)
Welkson Renny de Medeiros
welkson em focusautomacao.com.br
Quarta Janeiro 24 16:57:42 BRST 2007
Blz Ricardo...
O Gilberto me enviou o plugin que ele fez para o PF + CACTI... estarei
fazendo testes e retorno.
Obrigado pela atenção.
--
Welkson Renny de Medeiros
Focus Automação Comercial
Desenvolvimento / Gerência de Redes
welkson em focusautomacao.com.br
----- Original Message -----
From: "Ricardo Campos Passanezi" <riccp em ige.unicamp.br>
To: "Lista Brasileira de Discussão sobre FreeBSD (FUG-BR)"
<freebsd em fug.com.br>
Sent: Wednesday, January 24, 2007 3:44 PM
Subject: Re: [FUG-BR] Tráfego de banda (CACTI + PFCTL)
On Wed, Jan 24, 2007 at 10:52:48AM -0300, Welkson Renny de Medeiros wrote:
> Olá Ricardo,
>
>
> Essa parte de pegar os dados via SNMP no CACTI é tranquilo, já pego
> informação de alguns roteadores PR1000 Cyclades... mas essa do script não
> ficou bem claro, pode mandar um exemplo mais detalhado?
No meu servidor de emails tenho o script abaixo:
------ conta_mails.sh ------
#!/bin/sh
cat /var/tmp/mailstats.txt
----------------------------
Esse script é chamado via snmp:
exec .1.3.6.1.4.1.2021.54 shelltest /bin/sh /root/bin/conta_mails.sh
O mailstats.txt é gerado por um outro script (claro que dá para melhorar
o script - fui escrevendo e adicionando variáveis e aí funcionou e ficou
como ficou.... :-)), que rodo a cada 5 minutos via crontab:
------ atualiza_contagem.pl ------
#!/usr/bin/perl -w
$sent = 0;
$received = 0;
$rejected = 0;
$bounced = 0;
$spam_mark = 0;
$spam_block = 0;
$virus = 0;
$badh = 0;
open (LAST, "</var/tmp/mailstats.log")
or die "Unable to open\n";
while (<LAST>) {
if ($_ =~ /^0:/) {
($hash,$sentold) = split(/:/,$_);
} elsif ($_ =~ /^1:/) {
($hash,$receivedold) = split(/:/,$_);
} elsif ($_ =~ /^2:/) {
($hash,$rejectedold) = split(/:/,$_);
} elsif ($_ =~ /^3:/) {
($hash,$bouncedold) = split(/:/,$_);
} elsif ($_ =~ /^4:/) {
($hash,$spam_markold) = split(/:/,$_);
} elsif ($_ =~ /^5:/) {
($hash,$spam_blockold) = split(/:/,$_);
} elsif ($_ =~ /^6:/) {
($hash,$virusold) = split(/:/,$_);
} elsif ($_ =~ /^7:/) {
($hash,$badhold) = split(/:/,$_);
}
}
close (LAST);
system "/bin/mv /var/tmp/mailstats.log /var/tmp/mailstats.log.old";
open(LOG, "< /var/log/maillog")
or die "Unable to open\n";
while (<LOG>) {
if ($_ =~ /\bsaturno postfix\/smtp\[.*status=sent\b/ && $_ !~
/\brelay=[^\s\[]*\[127\.0\.0\.1\]/) {
$sent++;
} elsif ($_ =~ /\bsaturno postfix\/smtp\[.*status=bounced\b/) {
$bounced++;
} elsif ($_ =~ /\bsaturno postfix\/(local|error).*status=bounced\b/) {
$bounced++;
} elsif ($_ =~ /\bsaturno postfix\/smtpd.*client=(\S+)/ && $_ !~
/client=localhost/ && $_ !~ /reject:/) {
$received++;
} elsif ($_ =~ /\bsaturno postfix\/smtpd.* reject:/) {
$rejected++;
} elsif ($_ =~ /\bsaturno postfix\/cleanup.* (reject|discard):/) {
$rejected++;
} elsif ($_ =~ /saturno amavis.*Passed SPAM/) {
$spam_mark++;
} elsif ($_ =~ /saturno amavis.*Blocked SPAM/) {
$spam_block++;
} elsif ($_ =~ /saturno amavis.*(Passed |Blocked )?INFECTED/) {
$virus++;
} elsif ($_ =~ /saturno amavis.*(Passed|Not-Delivered) BAD-HEADER/) {
$badh++;
}
}
close (LOG);
open (LAST, ">/var/tmp/mailstats.log")
or die "Unable to open\n";
#print "0:$sent\n";
#print "1:$received\n";
#print "2:$rejected\n";
#print "3:$bounced\n";
#print "4:$spam_mark\n";
#print "5:$spam_block\n";
#print "6:$virus\n";
#print "7:$badh\n";
printf LAST "0:$sent\n";
printf LAST "1:$received\n";
printf LAST "2:$rejected\n";
printf LAST "3:$bounced\n";
printf LAST "4:$spam_mark\n";
printf LAST "5:$spam_block\n";
printf LAST "6:$virus\n";
printf LAST "7:$badh";
close (LAST);
$sent = $sent - $sentold;
$received = $received - $receivedold;
$rejected = $rejected - $rejectedold;
$bounced = $bounced - $bouncedold;
$spam_mark = $spam_mark - $spam_markold;
$spam_block = $spam_block - $spam_blockold;
$virus = $virus - $virusold;
$badh = $badh - $badhold;
open (LASTOUT, ">/var/tmp/mailstats.txt")
or die "Unable to open\n";
printf LASTOUT "$sent\n";
printf LASTOUT "$received\n";
printf LASTOUT "$rejected\n";
printf LASTOUT "$bounced\n";
printf LASTOUT "$spam_mark\n";
printf LASTOUT "$spam_block\n";
printf LASTOUT "$virus\n";
printf LASTOUT "$badh";
close(LASTOUT);
----------------------------------
Depois que fiz isso, criei um "Data Template" e depois dele um "Graph
Template" que gera o gráfico para as estatísticas de email.
Tudo bem que olhando nos fóruns do cacti já tem umas coisas prontas pro
postfix, mas isso acima já me basta...
--
Ricardo Campos Passanezi
-------------------------
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
Mais detalhes sobre a lista de discussão freebsd