2009-02-27 7 views

Odpowiedz

17

można analizować dane wyjściowe ifconfig

+0

Zakłada, że ​​dostęp root jest dostępny – Lionel

+20

(zwykle) Nie musisz być rootem, aby uruchomić to ... – confiq

+2

/sbin/ifconfig? – russoue

4

Podoba mi się iptraf, ale prawdopodobnie trzeba go zainstalować i wydaje się, że nie jest już dłużej aktywnie obsługiwany.

+1

Jest takie iptraf-ng, wszelkie sugestie na temat różnic między nimi? –

+1

iptraf-ng jest widelcem oryginalnego projektu. Powinien mieć wszystkie oryginalne funkcje z więcej. –

23

Można analizować /proc/net/dev.

+3

/proc nie istnieje na każdym UNIX. –

+28

To prawda, zakładając ze względu na tag Linuksa, że ​​OP był zainteresowany jedynie Linuksem. – codelogic

+0

nie ma takiego pliku na jądrze 3.17 – SummerBreeze

40

Napisałem ten głupi skrypt dawno temu, to zależy, ale nic Perl i Linux ≥ 2.6:

#!/usr/bin/perl 

use strict; 
use warnings; 

use POSIX qw(strftime); 
use Time::HiRes qw(gettimeofday usleep); 

my $dev = @ARGV ? shift : 'eth0'; 
my $dir = "/sys/class/net/$dev/statistics"; 
my %stats = do { 
    opendir +(my $dh), $dir; 
    local @_ = readdir $dh; 
    closedir $dh; 
    map +($_, []), grep !/^\.\.?$/, @_; 
}; 

if (-t STDOUT) { 
    while (1) { 
     print "\033[H\033[J", run(); 
     my ($time, $us) = gettimeofday(); 
     my ($sec, $min, $hour) = localtime $time; 
     { 
      local $| = 1; 
      printf '%-31.31s: %02d:%02d:%02d.%06d%8s%8s%8s%8s', 
      $dev, $hour, $min, $sec, $us, qw(1s 5s 15s 60s) 
     } 
     usleep($us ? 1000000 - $us : 1000000); 
    } 
} 
else {print run()} 

sub run { 
    map { 
     chomp (my ($stat) = slurp("$dir/$_")); 
     my $line = sprintf '%-31.31s:%16.16s', $_, $stat; 
     $line .= sprintf '%8.8s', int (($stat - $stats{$_}->[0])/1) 
      if @{$stats{$_}} > 0; 
     $line .= sprintf '%8.8s', int (($stat - $stats{$_}->[4])/5) 
      if @{$stats{$_}} > 4; 
     $line .= sprintf '%8.8s', int (($stat - $stats{$_}->[14])/15) 
      if @{$stats{$_}} > 14; 
     $line .= sprintf '%8.8s', int (($stat - $stats{$_}->[59])/60) 
      if @{$stats{$_}} > 59; 
     unshift @{$stats{$_}}, $stat; 
     pop @{$stats{$_}} if @{$stats{$_}} > 60; 
     "$line\n"; 
    } sort keys %stats; 
} 

sub slurp { 
    local @ARGV = @_; 
    local @_ = <>; 
    @_; 
} 

To właśnie odczytuje z /sys/class/net/$dev/statistics każdy drugi i wypisuje aktualne numery i średniej stopy zmian:

$ ./net_stats.pl eth0 
rx_bytes      : 74457040115259 4369093 4797875 4206554 364088 
rx_packets      :  91215713193 23120 23502 23234 17616 
... 
tx_bytes      : 90798990376725 8117924 7047762 7472650 319330 
tx_packets      :  93139479736 23401 22953 23216 23171 
... 
eth0       : 15:22:09.002216  1s  5s  15s  60s 

           ^current reading ^-------- averages ---------^ 
+5

To świetny scenariusz, dzięki, człowieku! – Gui13

+0

Musiałem zamienić "8s" i "8,8s" na "16s" i "16,16s", aby numery pasowały. – Nickolay

146

iftop does for network usage what top(1) does for CPU usage - http://www.ex-parrot.com/~pdw/iftop/

nie wiem jak "standardowy" iftop jest, ale udało mi się go zainstalować z yum install iftop na Fedorze.

+0

WOW! Wow, wow! To narzędzie tworzy żywą listę kontrolną najlepszych hostów. Możesz oglądać wszystkich swoich klientów OpenVPN walczących o to w czasie rzeczywistym. Bardzo fajny. Thx – artfulrobot

+13

'iftop' może być również zainstalowany na czystej instalacji Ubuntu:' apt-get install iftop'. –

+1

i Arch Linux z 'pacman -S iftop' –

2

Uważam, że dstat dość dobry. Musi być zainstalowany. Zapewnia znacznie więcej informacji, niż potrzebujesz. Netstat poda ci stawki pakietów, ale nie będzie również pasował. netstat -s

15

Poza iftop i iptraf również sprawdzić:

  • bwm-ng (Bandwidth Monitor Next Generation)

i/lub

  • cbm (Kolor Bandwidth Meter)

ref: http://www.powercram.com/2010/01/bandwidth-monitoring-tools-for-ubuntu.html

+2

bwm-ng rocks: nie wymaga żadnych specjalnych uprawnień do uruchomienia. –

+0

Używam go już od wielu lat iw większości przypadków znajduję jego interfejs znacznie jaśniejszy niż na przykład iftop. –

96

Masz sar? Prawdopodobnie tak, jeśli używasz RHEL/CentOS.

Nie ma potrzeby korzystania z priv, dorky binaries, hacky scripts, libpcap itp. Win.

$ sar -n DEV 1 3 
Linux 2.6.18-194.el5 (localhost.localdomain) 10/27/2010 

02:40:56 PM  IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s 
02:40:57 PM  lo  0.00  0.00  0.00  0.00  0.00  0.00  0.00 
02:40:57 PM  eth0 10700.00 1705.05 15860765.66 124250.51  0.00  0.00  0.00 
02:40:57 PM  eth1  0.00  0.00  0.00  0.00  0.00  0.00  0.00 

02:40:57 PM  IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s 
02:40:58 PM  lo  0.00  0.00  0.00  0.00  0.00  0.00  0.00 
02:40:58 PM  eth0 8051.00 1438.00 11849206.00 105356.00  0.00  0.00  0.00 
02:40:58 PM  eth1  0.00  0.00  0.00  0.00  0.00  0.00  0.00 

02:40:58 PM  IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s 
02:40:59 PM  lo  0.00  0.00  0.00  0.00  0.00  0.00  0.00 
02:40:59 PM  eth0 6093.00 1135.00 8970988.00 82942.00  0.00  0.00  0.00 
02:40:59 PM  eth1  0.00  0.00  0.00  0.00  0.00  0.00  0.00 

Average:  IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s 
Average:   lo  0.00  0.00  0.00  0.00  0.00  0.00  0.00 
Average:   eth0 8273.24 1425.08 12214833.44 104115.72  0.00  0.00  0.00 
Average:   eth1  0.00  0.00  0.00  0.00  0.00  0.00  0.00 
+10

Dla transmisji i odbioru kB/s: sar -n DEV 1 3 | grep $ IFACE | ogon -n1 | awk '{wydrukuj 5 $, 6 $}' – Lionel

+2

@Lionel - minor nit: miałeś na myśli Receive and Transmit, w tej kolejności. :-) – lacinato

+0

Sar to piękne stare narzędzie.Jest to inny plik binarny lub cztery i różne cronjobs do zbierania, choć :) – XTL

14

mam inny skrypt bash quick'n'dirty na to:

#!/bin/bash 
IF=$1 
if [ -z "$IF" ]; then 
     IF=`ls -1 /sys/class/net/ | head -1` 
fi 
RXPREV=-1 
TXPREV=-1 
echo "Listening $IF..." 
while [ 1 == 1 ] ; do 
     RX=`cat /sys/class/net/${IF}/statistics/rx_bytes` 
     TX=`cat /sys/class/net/${IF}/statistics/tx_bytes` 
     if [ $RXPREV -ne -1 ] ; then 
       let BWRX=$RX-$RXPREV 
       let BWTX=$TX-$TXPREV 
       echo "Received: $BWRX B/s Sent: $BWTX B/s" 
     fi 
     RXPREV=$RX 
     TXPREV=$TX 
     sleep 1 
done 

To zważywszy że sleep 1 faktycznie trwać dokładnie jedną sekundę, co nie jest prawdą, ale wystarczająco dobre dla szorstkiej przepustowości oszacowanie.

Dzięki @ephemient za /sys/class/net/<interface>!:)

+2

Jeśli chcesz sformatować swoje numery jako MB/s, zamień linię "echo" na: echo $ BWRX $ BWTX | awk "{rx = 1/1024/1024; tx = 2 USD/1024/1024; print "Odebrano" rx "MB/s, Wysłane" tx "MB/s"} ' –

+1

@BuddyCasino Jestem pewien, że możesz to zrobić bezpośrednio w 'let BWRX = ($ RX- $ RXPREV)/1024' (choć Nie mam teraz czego przetestować) – Matthieu

+0

Wygląda na to, że masz rację, to nie działało z jakiegoś powodu, gdy próbowałem to zrobić w ten sposób, więc zdecydowałem się na awk, ale myślę, że to był tylko literówka. –

23
  • dstat - Łączy vmstat, iostat, ifstat, netstat informacje i więcej
  • iftop - Niesamowite narzędzie przepustowość sieci do analizy tego, co naprawdę dzieje się na ETH
  • netio - mierzy przepustowość netto jednostki sieć przez TCP/IP
  • inq - Narzędzie do rozwiązywania problemów CLI, które wyświetla informacje o przechowywaniu, zwykle Symmetrix. Domyślnie INQ zwraca nazwę urządzenia, identyfikator symetrii, symetryczną jednostkę LUN i pojemność.
  • send_arp - Wysyła transmisję arp na określone urządzenie sieciowe (domyślnie eth0), zgłaszając stare i nowe odwzorowanie adresu IP na adres MAC.
  • EtherApe - jest graficznym monitorem sieciowym dla systemu Unix wzorowanego na platformie etherman. Zawiera tryby łącza, IP i TCP, wyświetla graficznie aktywność sieci.
  • iptraf - Monitor ruchu IP wyświetlający informacje o ruchu IP przesyłanym przez sieć.

Więcej szczegółów: http://felipeferreira.net/?p=1194

+1

Dzięki za prostą listę i że są to głównie narzędzia domyślne. W szczególności udało mi się uzyskać bardzo dobrą przepustowość szczytową z iftopu bez instalowania czegokolwiek. – Foliovision

19

nload jest doskonałym narzędziem do monitorowania przepustowości w czasie rzeczywistym i łatwo zainstalować w Ubuntu lub Debiana z sudo apt-get install nload.

Device eth0 [10.10.10.5] (1/2): 
===================================================================================== 
Incoming: 


           .   ...|  
           #   ####| 
          .. |#| ... #####.   ..   Curr: 2.07 MBit/s 
          ###.### #### #######|.  . ##  | Avg: 1.41 MBit/s 
         ########|#########################. ### Min: 1.12 kBit/s 
      ........ ################################### .### Max: 4.49 MBit/s 
      .##########. |###################################|##### Ttl: 1.94 GByte 
Outgoing: 
      ########## ########### ########################### 
      ########## ########### ########################### 
      ##########. ########### .########################### 
      ########### ########### ############################# 
      ########### ###########..############################# 
      ############ ########################################## 
      ############ ########################################## 
      ############ ########################################## Curr: 63.88 MBit/s 
      ############ ########################################## Avg: 32.04 MBit/s 
      ############ ########################################## Min: 0.00 Bit/s 
      ############ ########################################## Max: 93.23 MBit/s 
     ############## ########################################## Ttl: 2.49 GByte 

Innym doskonałym narzędziem jest iftop, również łatwo apt-get'able:

   191Mb  381Mb     572Mb  763Mb    954Mb  
└────────────┴──────────┴─────────────────────┴───────────┴────────────────────── 
box4.local   => box-2.local      91.0Mb 27.0Mb 15.1Mb 
         <=         1.59Mb 761kb 452kb 
box4.local   => box.local       560b 26.8kb 27.7kb 
         <=         880b 31.3kb 32.1kb 
box4.local   => userify.com       0b 11.4kb 8.01kb 
         <=         1.17kb 2.39kb 1.75kb 
box4.local   => b.resolvers.Level3.net    0b  58b 168b 
         <=          0b  83b 288b 
box4.local   => stackoverflow.com     0b  42b  21b 
         <=          0b  42b  21b 
box4.local   => 224.0.0.251       0b  0b 179b 
         <=          0b  0b  0b 
224.0.0.251   => box-2.local       0b  0b  0b 
         <=          0b  0b  36b 
224.0.0.251   => box.local       0b  0b  0b 
         <=          0b  0b  35b 


───────────────────────────────────────────────────────────────────────────────── 
TX:   cum: 37.9MB peak: 91.0Mb  rates: 91.0Mb 27.1Mb 15.2Mb 
RX:     1.19MB   1.89Mb    1.59Mb 795kb 486kb 
TOTAL:    39.1MB   92.6Mb    92.6Mb 27.9Mb 15.6Mb 

Nie zapomnij o klasycznej i potężnego SAR i użyteczności netstat na starszej * nix!

3

Jeśli chcesz po prostu uzyskać wartość, można użyć prostego skorupę oneliner tak:

S=10; F=/sys/class/net/eth0/statistics/rx_bytes; X=`cat $F`; sleep $S; Y=`cat $F`; BPS="$(((Y-X)/S))"; echo $BPS 

Pokaże ci średnią "odebranych bajtów na sekundę" przez okres 10 sekund (możesz zmienić okres, zmieniając parametr S=10 i możesz zmierzyć przesyłany BPS zamiast odebranego BPS przy użyciu tx_bytes zamiast rx_bytes). Nie zapomnij zmienić eth0 na urządzenie sieciowe, które chcesz monitorować.

Oczywiście nie jesteś ograniczony do wyświetlania średniej stawki (jak wspomniano w innych odpowiedziach, są inne narzędzia, które pokażą ci dużo lepsze wyniki), ale to rozwiązanie jest łatwo skryptowalne, aby robić inne rzeczy.

Na przykład, następujące skrypt (podzielone na kilka linii dla czytelności) wykona offlineimap procesu tylko po 5 minut Średnia szybkość transmisji spada poniżej 10 KBps (zapewne po zakończeniu inny proces pasma czasochłonne)

#!/bin/sh 
S=300; F=/sys/class/net/eth0/statistics/tx_bytes 
BPS=999999 
while [ $BPS -gt 10000 ] 
do 
    X=`cat $F`; sleep $S; Y=`cat $F`; BPS="$(((Y-X)/S))"; 
    echo BPS is currently $BPS 
done 
offlineimap 

Należy pamiętać, że /sys/class/... jest specyficzne dla systemu Linux (co jest dobre, ponieważ nadawca wybrał znacznik linux) i potrzebuje nie archaicznego jądra. Sam kod powłoki jest zgodny/bin/sh (więc nie tylko bash, ale dash i inne/bin/sh implementations będzie działać) i/bin/sh jest czymś, co jest naprawdę zawsze zainstalowane.

0

nie mogłem dostać skrypt parse ifconfig dla mnie pracować na AMI więc dostał to zadziałało pomiaru otrzymał ruch uśredniona 10 sekund

date && rxstart=`ifconfig eth0 | grep bytes | awk '{print $2}' | cut -d : -f 2` && sleep 10 && rxend=`ifconfig eth0 | grep bytes | awk '{print $2}' | cut -d : -f 2` && difference=`expr $rxend - $rxstart` && echo "Received `expr $difference/10` bytes per sec" 

Niestety, to nigdy tak tanie i paskudne, ale to działało !

0
ifconfig -a 
ip -d link 
ls -l /sys/class/net/ (physical and virtual devices) 
route -n 

Jeśli chcesz wyjście (ifconfig -a) w formacie JSON można użyć this (python)

+0

Żadna z tych statystyk przepustowości raportów? –

Powiązane problemy