¿Cómo debo determinar la utilización actual de la red?
9
Quiero mostrar la utilización de red actual (uso de ancho de banda) de una interfaz de un cuadro de Debian en un sitio web. No se supone que sea muy elaborado o preciso, solo un número simple como "52 Mbit / s".
Los monitores de ancho de banda de red típicos, como iftopno me dan forma de extraer simplemente dicho valor.
¿Cómo puedo recuperarlo mejor?
Por ejemplo, supongo que podría analizar /proc/net/devcada pocos minutos. Sin embargo, no estoy seguro de si esta es realmente la mejor manera de hacerlo.
La mejor manera de hacerlo simplemente es analizar /proc/net/dev(tenga en cuenta que /procno es portátil). Aquí hay un bashscript que preparé rápidamente que debería poder calcularlo:
Tenga en cuenta que sleepno considera la cantidad de tiempo que lleva realizar las operaciones en el ciclo while, por lo que esto es (muy levemente) inexacto. En mi mina de cobre de 600 mhz, el ciclo tarda 0.011 segundos, una inexactitud insignificante para la mayoría de los propósitos. Tenga en cuenta también que cuando utiliza las salidas de kilobyte / megabit (comentadas), bash solo comprende la aritmética de enteros.
Creo que esta debería ser la respuesta elegida. Todas las demás soluciones se transmiten, detrás de escena, al análisis /proc/net/dev, sin comprender realmente qué y cómo sucede esta magia.
Eran
Esta solución funcionó para mí en un enrutador / busybox.
cloneman
Utilícelo date +%s.%Npara obtener la marca de tiempo de Unix para cada iteración y divida la diferencia de bytes por la diferencia de marca de tiempo. Luego, evita el problema de que las iteraciones de bucle sean más largas que 1s.
Arnavion
3
Hay monitores de tráfico de red como vnstat
que mantiene registros mensuales de su tráfico, o slurm que toma sus valores directamente de los almacenados en el núcleo. Está disponible en la mayoría de los repositorios de distro.
¿Puedes explicar esto un poco? ¿Cuál debe ser exactamente el parámetro? ¿Cuál es el significado de 125? Por favor no responda en los comentarios; edite su respuesta para que sea más clara y completa.
/proc/net/dev
, sin comprender realmente qué y cómo sucede esta magia.date +%s.%N
para obtener la marca de tiempo de Unix para cada iteración y divida la diferencia de bytes por la diferencia de marca de tiempo. Luego, evita el problema de que las iteraciones de bucle sean más largas que 1s.Hay monitores de tráfico de red como vnstat que mantiene registros mensuales de su tráfico, o slurm que toma sus valores directamente de los almacenados en el núcleo. Está disponible en la mayoría de los repositorios de distro.
Esto es lo que veo cuando corro
slurm -i ra0
:fuente
Aquí hay un script de shell muy simple para calcular esto:
simplemente inicie el script pasando el nombre de la interfaz, por ejemplo.
./shtraf eth1
fuente
125
? Por favor no responda en los comentarios; edite su respuesta para que sea más clara y completa.