
Quiero analizar la carga de trabajo de la red de mi servidor Debian 9 para detectar algunas posibles sobrecargas de la red.
Las principales métricas que necesito analizar son:
- CPS (conexiones por segundo)
- Rendimiento
¿Hay alguna manera de obtener estas métricas desde Linux?
Pensé que la métrica de CPS podría obtenerse de alguna manera a través de NEW
eventos de conexiones de conntrack, pero no estoy seguro de que esta sea la forma más adecuada.
Lo siento si es obvio.
PD: este servidor no solo maneja el tráfico local, sino que también reenvía una gran cantidad de tráfico.
Respuesta1
Creo que sería suficiente describir los orígenes de estas métricas basándose en la API nativa de Linux.
Rendimiento
Por cierto, elrendimientoLa métrica en general es algo, es decir.externoen relación con el objeto de prueba (OS Linux del que estás hablando). Es decir, en términos generales, tenemos dos hosts (por ejemplo, cliente y servidor) y un objeto de prueba entre ellos. Soplamos el tráfico de red entre el cliente y el servidor y registramos el rendimiento (límite) del objeto de prueba (por ejemplo, coniperf).
Pero desde el sistema operativo Linux, una forma sencilla de medir el rendimiento es solo por interfaz.
Entonces puedes simplemente mirar/proc/net/dev
y calcular eldelta de bytes por segundo:
sh-tst# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 87016202 715723 0 0 0 0 0 0 87016202 715723 0 0 0 0 0 0
eth3: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
eth2: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
eth1: 246415305 2899662 0 132906 0 0 0 230 5466117 19016 0 0 0 0 0 0
eth0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
CPS
Lo mismo ocurre con la métrica CPS. Básicamente es una medida externa. Pero desde tu Linux puedes intentar calcularlo basándose en /proc/net/stat/ip_conntrack
:
sh-tst# cat /proc/net/stat/ip_conntrack
entries searched found new invalid ignore delete delete_list insert insert_failed drop early_drop icmp_error expect_new expect_create expect_delete search_restart
000000f8 00001742 0003142f 0001e85a 00000079 00021333 0001e6cf 00003a3d 00003bc5 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
000000f8 00002389 0005f1a0 0003b6f3 00000085 0004286f 0003b59e 00003cea 00003e3f 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
000000f8 000002c0 00037a77 00000714 00000000 000382cb 00000825 00000724 00000616 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
000000f8 00000225 00026cf9 00000271 00000000 00026e48 00000348 000002bd 000001e6 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
Delnstat(8)
hombre:
/proc/net/stat/ip_conntrack, /proc/net/stat/nf_conntrack Contadores relacionados con Conntrack. ip_conntrack es solo para compatibilidad con espacios de usuario anteriores y muestra los mismos datos que nf_conntrack.
...
Nuevo número de entradas de conntrack agregadas que no se esperaban antes.
En el seguimiento de conexiones de Linux:
NUEVO: significa que el paquete ha iniciado una nueva conexión, o está asociado de otro modo con una conexión que no ha visto paquetes en ambas direcciones, y
Entonces parece que quieres calculardelta new
por segundo.
Leer más:
Respuesta2
El comando sar que viene con sysstat hará ambas cosas.
Para monitorear conexiones por segundo sar -n TCP 1
activo/s son las conexiones TCP salientes pasivo/s son las conexiones TCP entrantes
para UDP sar -n UDP 1
Para ver el rendimiento de la red sar -n DEV (opcionalmente agregue un 1 para monitorear la corriente por segundo)