Jump to content

kpps в Linux


Recommended Posts

Господа, помогайте.

всегда старался юзать freebsd, пришло время глубоко осваивать linux

 

как посмотреть packets per second в Linux, в debian в частности?

есть какая-то альтернатива freebsd-шной: netstat -bdhI $iface 1?

 

дабы в реалтайме смотреть kpps + траф в мб/мбитах?

 

ifstat, iptraf, bmon, vnstat

все не то

 

trafshow не предлагать

 

спасибо.

Link to post
Share on other sites

Самописный скрипт для /proc/net/dev

Со мной таким в своё время поделились как раз для этих задач. И я его немного подправил под себя, так сказать.

Link to post
Share on other sites

Самописный скрипт для /proc/net/dev

Со мной таким в своё время поделились как раз для этих задач. И я его немного подправил под себя, так сказать.

 

не поделитесь в свою очередь?

Link to post
Share on other sites

Обычно ложу в /sbin/show_pps

Запуск без аргументов показывает только физические интерфейсы без ppp. Запуск командой 'show_pps all' Выводит статистику по всем интерфейсам.

 

Плюс данного решения - не вызывается libpcap и не тратятся ресурсы на считывание и фильтрование трафика (у iptraf с этим явная проблема - при его включении сразу падает скорость на интерфейсе, который слушаем, плюс неактуальные данные выводятся).

 

#!/usr/bin/perl
$num=1;
if($ARGV[0] ne ""){
	$doiface=$ARGV[0];
}else{
	$doiface="";
}
while (1){
	system("/usr/bin/clear");
	open (FILE, "</proc/net/dev");
	while (<FILE>) {
			if($doiface eq ""){
					next if (/ppp/);
			}
			s/n//;
			if( /.*:.*/ ){
					($iface,$data)=split(/:/,$_);
					$iface=~s/s{1,}//g;
					(@tmp)=split(' ',$data);
					$traf{$iface}="@tmp[0] @tmp[8] @tmp[1] @tmp[9]";
			}
	}
	close(FILE);
	printf "%-8s %12s %12s %12s %10s %10s %10sn", "Iface","In (Kbit/s)","Out (Kbit/s)","Sum (Kbit/s)","In (pps)","Out (pps)","Sum (pps)";
	printf "---------------------------------------------------------------------------------n";
	foreach $rec (sort keys %traf){
			($b_in,$b_out,$p_in,$p_out)=split(' ',$traf{$rec});
			($old_b_in,$old_b_out,$old_p_in,$old_p_out)=split(' ',$old_traf{$rec});
			$c_b_in=sprintf("%.0f",($b_in-$old_b_in)*8/1024/$num);
			$c_b_out=sprintf("%.0f",($b_out-$old_b_out)*8/1024/$num);
			$c_p_in=$p_in-$old_p_in;
			$c_p_out=$p_out-$old_p_out;
			my $sumk = $c_b_in + $c_b_out;
			my $sump = $c_p_in + $c_p_out;
			printf "%-8s %12s %12s %12s %10s %10s %10sn",$rec, $c_b_in, $c_b_out, $sumk, $c_p_in, $c_p_out, $sump;
	}
	%old_traf=%traf;
	print "n";
	sleep $num;
}

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By mac
      Глюк в тому, що один (так - тільки один) mac адрес onu існує в білінгу у вигляді строки. Це трохи заважає.
      olt - bdcom gepon.
      Наскільки зрозумів, це виключно проблема реалізації snmpwalk у freebsd, де snmpwalk може на свій розсуд віддати mac адресу не як hex-string, а як звичайний string.
      Можливо snmpwalk тригериться на якомусь символі, мені невідомо.
       
      # tcpdump -vv -i em0 udp port 161 and host olt and host ub | grep "3320.101.10.4.1.1.241 ... olt.snmp > ub.47940: [udp sum ok] { SNMPv2c C="*****" { GetResponse(44) R=93278354 E:3320.101.10.4.1.1.241="8LO"W*" } } ub.47940 > olt.snmp: [udp sum ok] { SNMPv2c C="*****" { GetNextRequest(34) R=93278355 E:3320.101.10.4.1.1.241 } } snmpwalk -c***** -v2c -t5 olt .1.3.6.1.4.1.3320.101.10.4.1.1 SNMPv2-SMI::enterprises.3320.101.10.4.1.1.241 = STRING: "8LO\"W*" snmpwalk -Ox -c***** -v2c -t5 olt .1.3.6.1.4.1.3320.101.10.4.1.1 SNMPv2-SMI::enterprises.3320.101.10.4.1.1.241 = Hex-STRING: 38 4C 4F 22 57 2A  
      Це стосується таких параметрів у snmp конфізі bdcom
       
      [signal] MACINDEX=".1.3.6.1.4.1.3320.101.10.4.1.1" [misc] ONUINDEX=".1.3.6.1.4.1.3320.101.11.1.1.3"  
      За для усунення глюку спробував трошки змінити код і завдати тип snmp параметру явно у ./api/libs/api.ponbdcom.php у function collect()
      Це працює. Мабуть станеться у нагоді:
       
      # diff api.ponbdcom.php{.new,.bak} 37c37 < $onuIndex = $this->snmp->walk('-Ox ' . $oltIp . ':' . self::SNMPPORT, $oltCommunity, $onuIndexOid, self::SNMPCACHE); --- > $onuIndex = $this->snmp->walk($oltIp . ':' . self::SNMPPORT, $oltCommunity, $onuIndexOid, self::SNMPCACHE); 91c91 < $macIndex = $this->snmp->walk('-Ox ' . $oltIp . ':' . self::SNMPPORT, $oltCommunity, $macIndexOID, self::SNMPCACHE); --- > $macIndex = $this->snmp->walk($oltIp . ':' . self::SNMPPORT, $oltCommunity, $macIndexOID, self::SNMPCACHE);  
      P.S. Створив тему, а зараз міркую: а може це глюк у ПЗ olt. Оновлю фірмваре olt та перевірю...
       

    • By a_n_h
      Всем доброго дня и мирного неба!
        После многочисленных экспериментов выяснил, что на последних версиях freebsd  максимум удавалось прокачать до 14 ГБт суммарно трафика со 100% загрузкой процессора. На том-же железе но с установленной freebsd 11.2 прокачивается до 20-ти ГБт суммарно тестового трафика с загрузкой процессора около 50%. 
        Подскажите, что можно убрать или наоборот добавить в систему с freebsd 13,3 для получения аналогичного результата...
    • By mac
      Здається, після оновлення PHP 7.4 до PHP 8.2 feesharvester припинив працювати:
       
      /usr/local/bin/curl "http://127.0.0.1/billing/?module=remoteapi&key={SERIAL}&action=feesharvester" <br /> <b>Fatal error</b>: Uncaught TypeError: Unsupported operand types: string - string in {UBPATH}/billing/api/libs/api.fundsflow.php:570 Stack trace: #0 {UBPATH}/billing/modules/remoteapi/feesharvester.php(22): FundsFlow-&gt;harvestFees('2024-01') ...  
      Невеличке розслідування врешті з'ясувало, що це через наявність пробілу у деяких логінах абонентів. Як так сталося? Тому що інколи був неуважно додан трейлінг пробіл до номеру будинка і цей пробіл потрапив до логіну абоненту. Логін абоненту неможливо змінити ніяким чином штатними засобами. Я не розглядаю створення нового абонента для усунення помілки.

      Був обран такий шлях вирішення проблеми. Заміну функції php explode() знайшов у мережі. Мабуть це станеться в нагоді:

       
      diff api.fundsflow.php.bak api.fundsflow.php.new 559c559 < $eachfee = explode(' ', $eachline); --- > $eachfee = preg_split("~(?<!\\\\)(?:\\\\{2})*'[^'\\\\]*(?:\\\\.[^'\\\\]*)*'(*SKIP)(*F)|\s+~s" , $eachline);  
    • By FantoM_EscapE
      Хочу перенести свій білінг NODENY із фізичного сервера на віртуальний. Шукаю адміна який зможе допомогти у цьому питанні, так як нашого адміна банально призвали до війська. Вся схема на даний момент робоча, маю доступи до всього. Потрібно проінсталити на новішу версію FREEBSD, бо на моїй 10 річній вже не працюють нові SSL сертифікати. Кого зацікавила дана пропозиція - прошу у приватні повідомлення. обсудимо ціну і строки. або пишіть на будь-який месенджер 0677792091
    • By axl72
      Після апгрейду сервера виявилось, що пакет flow-tools, що був у Дебіан 10, зник , починаючи з версії 11. Пошук по офсайту не дав ніяких пояснень. Може шановне панство підкаже, який пакет передбачений на заміну flow-tools для реалізації netflow-коллектора? Чи не гаяти часу і збирати самостійно?..
×
×
  • Create New...