Вот упрощенный вариант утилиты vznetstat на перле написал
Запускается с хост-машины, дает показания трафика по интерфейсам заданной VE. Обычно интерфейс под номером 0 - loopback.
#!/usr/bin/perl -w
my $numArgs = $#ARGV + 1;
if ($numArgs <= 0) {
print "Usage: $0 VEID [VEID] [...]\n";
exit;
}
my $ve;
my $counter=0;
print "CTID\tifNum\tInput(bytes)\tInput(packets)\tOutput(bytes)\tOutput(packets)\n";
foreach $ve (@ARGV) {
if ($ve =~ /^\d+$/) {
my $s = `/usr/sbin/vzctl status $ve`;
if ($s =~ /^VEID \d+ exist/) {
my $fp;
$counter=0;
open $fp, "/usr/sbin/vzctl exec $ve cat /proc/net/dev |";
while (<$fp>) {
if (/^\s*([a-z0-9_-]+):\s*(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/) {
print "$ve\t$counter\t$2\t$3\t$10\t$11\n";
$counter++;
}
}
}
}
}
Пример использования
# ./vznetstat 100 200
CTID ifNum Input(bytes) Input(packets) Output(bytes) Output(packets)
100 0 216216705 1693881 216216705 1693881
100 1 2948225436 33918128 57983428690 48185011
200 0 397660994315 338046152 397660994315 338046152
200 1 537780976361 3870889534 7946463690716 5913777508
[Updated on: Fri, 30 January 2009 13:59]
Report message to a moderator