OVH Cloud OVH Cloud

Bande passante

2 réponses
Avatar
mailling
Salut,

je voudrais calculer la bande passante utilisée sur un port particulier.
Quel sont les possiblités ?

Merci


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

2 réponses

Avatar
lehmann
On ven, 2005-06-10 at 07:35 +0200, wrote:
Salut,

je voudrais calculer la bande passante utilisée sur un port particulier.
Quel sont les possiblités ?

Merci




La méthode "je mets les mains dans le cambouis" : tu installes un agent
SNMP sur ta machine, et tu lis les variables ifInOctets et ifOutOctets
avec un petit programme fait maison qui te permet de calculer le débit.

La méthode "tout se fait tout seul" : utilises des logiciels comme mrtg
ou cacti qui reposent sur le même principe de requêtes SNMP, mais qui
font tout automatiquement. Il y a aussi des logiciels comme iptraf (il
me semble qu'il est plus orienté consultation temps-réel), ntop
(attention aux plantages !).

Bon we (hehe, vive les rtt !)
Guillaume Lehmann



--
Pensez
Avatar
Vincent Lefevre
On 2005-06-10 07:35:41 +0200, wrote:
je voudrais calculer la bande passante utilisée sur un port particulier.
Quel sont les possiblités ?



J'utilise iptables pour avoir les compteurs et RRDTools pour sauver
les données et les afficher sous formes de graphes.

Mes règles iptables pour calculer la bande passante locale et externe:

if iptables -F; then
iface="`ifconfig -a | sed -n 's/ .*00:30:65:CC:59:74.*//p'`"
iface="${iface:-eth0}"
ipsrc2.168.0.3
iptables -X
iptables -A INPUT -i "$iface" -d $ipsrc -s 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -i "$iface" -d $ipsrc -j ACCEPT
iptables -A OUTPUT -o "$iface" -s $ipsrc -d 192.168.0.0/24 -j ACCEPT
iptables -A OUTPUT -o "$iface" -s $ipsrc -j ACCEPT
iptables -Z
fi

Je ne pense pas que ce soit bien compliqué d'adapter cela pour
spécifier un port particulier...

Les compteurs se lisent avec "iptables -vnxL". Mais il faut être root
pour utiliser iptables. Comme je voulais avoir accès aux compteurs en
tant que simple utilisateur, j'ai écrit un wrapper setuid root, appelé
"netcounters":

#include <stdio.h>
#include <unistd.h>
#include <errno.h>

int main(void)
{
execl("/sbin/iptables", "iptables", "-vnxL", (const char *) NULL);
perror("netcounters");
return 1;
}

Et enfin un script Perl qui utilise RRDTools:

#!/usr/bin/env perl

use strict;
use RRDs;

my $RCSID = '$Id: net-update 2770 2004-03-17 22:39:32Z lefevre $';
my ($proc) = $RCSID =~ /^.Id: (S+) / or die;

@ARGV or die "Usage: $proc <rrdfile> [ <webdir> ]n";

my $file = shift;
-f $file or die "$proc: RRDtool file isn't a plain filen";
-r $file or die "$proc: RRDtool file isn't readablen";
-w $file or die "$proc: RRDtool file isn't writablen";

my $wdir = shift;
if (defined $wdir)
{ -d $wdir or die "$proc: $wdir isn't a directoryn"; }

my %t = (
'day' => 1,
'week' => 6,
'month' => 24,
'year' => 288);

for(;;)
{
my $time = time;
open NETC, "netcounters 2> /dev/null |"
or die "$!n$proc: can't execute netcountersn";
my ($chain,%c);
while (<NETC>)
{
if (/^Chain (S+)/)
{
undef $chain;
$1 eq 'INPUT' and $chain = 'in';
$1 eq 'OUTPUT' and $chain = 'out';
}
elsif (defined $chain)
{
m:^s*d+s+(d+)s.*192.168.0.0/24:
and $c{"loc_$chain"} = $1;
m:^s*d+s+(d+)s.*0.0.0.0/0:
and $c{"ext_$chain"} = $1;
}
}
close NETC or die "$!n$proc: netcounters failedn";
time - $time < 3
and RRDs::update ($file, "$time:".join(':', map
{ defined $c{$_} ? $c{$_} : 'U' } qw/loc_in loc_out ext_in ext_out/));
&rrdgraph('loc', 'local');
&rrdgraph('ext', 'external');
sleep 60;
}

sub rrdgraph
{
defined $wdir or return;
my ($name,$label) = @_;
foreach (qw/day week month year/)
{
RRDs::graph ("$wdir/$name-$_.png", '-a', 'PNG',
'-h', 200, '-v', "$label comm. (bytes/sec)", '-o',
'--start', -120000*$t{$_},
"DEF:in=$file:${name}_in:AVERAGE",
"DEF:out=$file:${name}_out:AVERAGE",
"AREA:in#00ff00", "LINE1:out#0000ff");
}
}


--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact