GNU/Linux >> Znalost Linux >  >> Linux

Jak získat síťové statistiky v reálném čase v Linuxu s formátem KB/MB/Bytes a pro konkrétní port nebo ID procesu aplikace?

Vaše aplikace pravděpodobně odesílá pakety na konkrétní číslo portu UDP nebo TCP nebo na konkrétní IP adresu.

K zachycení tohoto provozu tedy můžete použít něco jako TCPdump.

TCPdump vám neposkytne statistiky v reálném čase, které si přejete, ale můžete jeho výstup poskytnout něčemu, co ano (tuto odpověď se pokusím aktualizovat později).

Aktualizace:

$ sudo tcpdump -i eth1 -l -e -n | ./netbps
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
11:36:53    2143.33 Bps
11:37:03    1995.99 Bps
11:37:13    2008.35 Bps
11:37:23    1999.97 Bps
11:37:33    2083.32 Bps
131 packets captured
131 packets received by filter
0 packets dropped by kernel

Po minutě jsem to přerušil stisknutím Ctrl+C.

Budete muset přidat vhodný výraz filtru na konec tcpdump příkaz zahrnout pouze provoz generovaný vaší aplikací (např. port 123 )

Program netbps je toto:

#!/usr/bin/perl
use strict;
use warnings;
use Time::HiRes;

my $reporting_interval = 10.0; # seconds
my $bytes_this_interval = 0;
my $start_time = [Time::HiRes::gettimeofday()];

STDOUT->autoflush(1);

while (<>) {
  if (/ length (\d+):/) {
    $bytes_this_interval += $1;
    my $elapsed_seconds = Time::HiRes::tv_interval($start_time);
    if ($elapsed_seconds > $reporting_interval) {
       my $bps = $bytes_this_interval / $elapsed_seconds;
       printf "%02d:%02d:%02d %10.2f Bps\n", (localtime())[2,1,0],$bps;
       $start_time = [Time::HiRes::gettimeofday()];
       $bytes_this_interval = 0;
    }
  }
}

Je to jen příklad, upravte podle chuti.


Použití jako níže ze stejné složky:

Chcete-li zkontrolovat packer na rozhraní:./netpps.sh eth0

Chcete-li zkontrolovat rychlost na rozhraní:./netspeed.sh eth0

Měření paketů za sekundu na rozhraní netpps.sh jako název souboru

#!/bin/bash

INTERVAL="1"  # update interval in seconds

if [ -z "$1" ]; then
        echo
        echo usage: $0 [network-interface]
        echo
        echo e.g. $0 eth0
        echo
        echo shows packets-per-second
        exit
fi

IF=$1

while true
do
        R1=`cat /sys/class/net/$1/statistics/rx_packets`
        T1=`cat /sys/class/net/$1/statistics/tx_packets`
        sleep $INTERVAL
        R2=`cat /sys/class/net/$1/statistics/rx_packets`
        T2=`cat /sys/class/net/$1/statistics/tx_packets`
        TXPPS=`expr $T2 - $T1`
        RXPPS=`expr $R2 - $R1`
        echo "TX $1: $TXPPS pkts/s RX $1: $RXPPS pkts/s"
done

Změřte šířku pásma sítě na rozhraní netspeed.sh jako název souboru

#!/bin/bash

INTERVAL="1"  # update interval in seconds

if [ -z "$1" ]; then
        echo
        echo usage: $0 [network-interface]
        echo
        echo e.g. $0 eth0
        echo
        exit
fi

IF=$1

while true
do
        R1=`cat /sys/class/net/$1/statistics/rx_bytes`
        T1=`cat /sys/class/net/$1/statistics/tx_bytes`
        sleep $INTERVAL
        R2=`cat /sys/class/net/$1/statistics/rx_bytes`
        T2=`cat /sys/class/net/$1/statistics/tx_bytes`
        TBPS=`expr $T2 - $T1`
        RBPS=`expr $R2 - $R1`
        TKBPS=`expr $TBPS / 1024`
        RKBPS=`expr $RBPS / 1024`
        echo "TX $1: $TKBPS kB/s RX $1: $RKBPS kB/s"
done

Další informace naleznete na této stránce http://xmodulo.com/measure-packets-per-second-throughput-high-speed-network-interface.html


Nejjednodušší použití a nejjednodušší ovládání výstupu a přesměrování do souboru pro nepřetržité protokolování:

ifstat

Pravděpodobně se dodává s většinou linuxových distribucí a lze jej nainstalovat s brew na mac


Linux
  1. Linux – Jak zrušit sdílení sítě pro aktuální proces?

  2. Linux – Jak získat Grindeq (latexový plugin pro Word) pro práci s Wordem ve víně?

  3. Linux – Jak šáhnout po konkrétním slovu a uchopit text?

  1. Jak získat systémové statistiky pomocí node.js

  2. Jak dosáhnout toho, aby se pro konkrétní proces spustil pouze uživatel, pid a příkaz? (Ubuntu 11.10)

  3. jak používat netstat na konkrétním portu v Linuxu

  1. Začněte s NetworkManagerem v systému Linux

  2. Jak zkontrolovat otevřené porty v Linuxu pomocí netstat, lsof a nmap

  3. Jak v Linuxu zjistit, jaké síťové rozhraní a zdrojová IP adresa se používá pro cestu ke konkrétnímu cílovému hostiteli?