[pve-devel] Count monthly traffic
Stefan Priebe - Profihost AG
s.priebe at profihost.ag
Wed Apr 17 14:29:02 CEST 2013
Am 17.04.2013 14:17, schrieb Dietmar Maurer:
>> Nowhere ;-) how about just return the counter values for the correct tap device
>> through API?
>>
>> So it is basically:
>> 1.) a wrapper from netX to correct tap
>> 2.) query tap counter inout / output values
>> 3.) allow to query this through API
>>
>> So it is at least possible to implement traffic account in external software. You
>> jsut have to query the API every X seconds and detect resets yourself. It acts
>> than basically like SNMP traffic counters in switches.
>
> sounds reasonable.
Then let's go this way. It's much simpler than adding RRD.
So the question is should this be a completely new call or do you want
to add a new hash key to sub vmstatus { ?
this could be
my $netdev = PVE::ProcFSTools::read_proc_net_dev();
foreach my $dev (keys %$netdev) {
next if $dev !~ m/^tap([1-9]\d*)i/;
my $vmid = $1;
my $d = $res->{$vmid};
next if !$d;
$d->{netout} += $netdev->{$dev}->{receive};
$d->{netin} += $netdev->{$dev}->{transmit};
}
converted to:
my $netdev = PVE::ProcFSTools::read_proc_net_dev();
foreach my $dev (keys %$netdev) {
next if $dev !~ m/^tap([1-9]\d*)i(\d+)/;
my $vmid = $1;
my $netid = $2;
my $d = $res->{$vmid};
next if !$d;
$d->{netout} += $netdev->{$dev}->{receive};
$d->{netin} += $netdev->{$dev}->{transmit};
$d->{traffic}{'net'.$netid}{netout} = $netdev->{$dev}{receive};
$d->{traffic}{'net'.$netid}{netin} = $netdev->{$dev}{transmit};
}
Stefan
More information about the pve-devel
mailing list