Saltar al contenido

¿Cómo obtener estadísticas de red en tiempo real en Linux con formato KB/MB/Bytes y para puerto específico o ID de proceso de aplicación?

Siéntete en la libertad de compartir nuestros post y códigos con otro, necesitamos tu ayuda para ampliar nuestra comunidad.

Solución:

Es probable que su aplicación esté enviando paquetes a un número de puerto UDP o TCP específico o a una dirección IP específica.

Por lo tanto, puede usar algo como TCPdump para capturar ese tráfico.

TCPdump no le brinda las estadísticas en tiempo real que desea, pero puede alimentar su salida a algo que lo haga (intentaré actualizar esta respuesta con una respuesta más adelante).


Actualizar:

$ 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

Interrumpí eso después de un minuto presionando Ctrl+C.

Debería agregar una expresión de filtro adecuada al final de la tcpdump comando para incluir solo el tráfico generado por su aplicación (por ejemplo, port 123)

El programa netbps Es esto:

#!/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 Bpsn", (localtime())[2,1,0],$bps;
       $start_time = [Time::HiRes::gettimeofday()];
       $bytes_this_interval = 0;
    
  

Es solo un ejemplo, ajusta al gusto.

Uso como se muestra a continuación desde la misma carpeta:

Para verificar el empaquetador por interfaz: ./netpps.sh eth0

Para comprobar la velocidad por interfaz: ./netspeed.sh eth0

Medir paquetes por segundo en una interfaz netpps.sh como nombre de archivo

#!/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

Medir el ancho de banda de la red en una interfaz netspeed.sh como nombre de archivo

#!/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

Consulte este sitio para obtener más información http://xmodulo.com/measure-packets-per-second-throughput-high-speed-network-interface.html

El más fácil de usar y más fácil de controlar la salida y redirigir al archivo para un registro continuo:

ifstat

Probablemente viene con la mayoría de las distribuciones de Linux y se puede instalar con brew en mac

Si piensas que te ha resultado de provecho nuestro post, te agradeceríamos que lo compartas con otros juniors de esta forma contrubuyes a extender este contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *