martes, 5 de febrero de 2013

Unix V. Parámetros de monitorización de red.



Es tiempo de reencuentros en qatecnico. Tras este largo paréntesis en nuestros artículos relacionados con nuestro sistema operativo preferido, volvemos con una nueva entrega que puede ser de utilidad para aquellos que se dediquen a monitorizar el rendimiento del sistema.



Comandos de consulta de configuración de sistema.


Una situación típica durante la preparación de unas pruebas de rendimiento de sistema, es averiguar si la máquina sobre la que estamos monitorizando tiene (o responde) por una serie de IP como propias . Habitualmente , para averiguar estos datos , se puede proceder de dos modos : 


  • como usuario con permisos administrativos de la máquina . 
  • usuario sin permisos especiales

 

Consulta como usuario privilegiado



En el primer caso, el comando a ejecutar sería el que permite realizar cambios de la configuración de los interfaces de red de la máquina. Dicho comando es el ifconfig


Para usarlo con meros propósitos de consulta, debemos ejecutar en  línea de comandos ifconfig. Mostramos un ejemplo sobre un sistema con sólo una tarjeta de red


 [root@mortadelo ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:04:C5:06:F3:BF 
          inet addr:192.168.9.64  Bcast:192.168.9.255  Mask:255.255.254.0
          inet6 addr: ff50::142:c2bf:fe06:f3:bf/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3581337903 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3956497861 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1572087099 (1.4 GiB)  TX bytes:2666945600 (2.4 GiB)
          Interrupt:16

lo        Link encap:Local Loopback 
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:8461 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8461 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:6134634 (5.8 MiB)  TX bytes:6134634 (5.8 MiB)

  

Hemos marcado en negrita, la dirección IP de la tarjeta de red eth0 por la que responde el equipo (192.168.9.64). En el caso de que se disponga de varias tarjetas o interfaces de red (una wifi, un interfaz virtual…etc) los datos relativos a la dirección y a la configuración aparecerán agrupados a la derecha del nombre del interfaz.

La información incluye además datos relativos a configuración del protocolo TCP/IP en este caso,como tamaño de MTU, métrica de saltos , máscara , valores de la MAC..etc. Como podemos ver esta es una información que, aparte de útil, puede ser bastante sensible, por lo que hemos de proceder con cuidado a la hora de proporcionarla.
 

Consulta de configuración como usuarios sin privilegios.


En este caso, el comando que permite realizar esta consulta es el netstat.

Habitualmente la invocación directa del comando está disponible para los usuarios sin privilegios específicos. No obstante, hemos de indicar que, debido a la cantidad de información que consulta y proporciona, es un comando cuyo uso no puede ser realizado de manera contínua por el consumo de recursos que realiza.

Nota: El comando al ejecutarse por defecto recurre a la invocación de DNS, por lo que su tiempo de respuesta puede verse incrementado de manera notable por latencias de red, tiempos de espera de respuesta de los DNS…etc.

La invocación correcta desde el punto de vista de rendimiento y tiempo de respuesta de cara al usuario o shell script que lo incluya , debe de utilizar como parámetro de llamada el modificador -n

Con esta opción, deshabilitamos la resolución de nombres que realizaría la conversión de IP a nombre, con la consiguiente reducción de tiempo de respuesta y procesamiento por parte de la máquina.

Dependiendo de la versión de sistema UNIX , la salida del comando devolverá unos valores u otros. No obstante, termina devolviendo las IP por las que responde el sistema, junto con información de la red (máscaras de subred, encaminadores…etc.)

La invocación, digamos de manera genérica del comando sería de la siguiente forma



                                                              $ netstat -ian

  
-i: Muestra todos los datos activos
-n: Presenta los datos de manera numérica, sin traducir direcciones
-a: Muestra todas las interfaces activas, sean físicas o virtuales.


Ejemplos de salida del comando según versiones UNIX.

 

Solaris 

AIX


HP-UX




En este caso, el parámetro –w es indicado para mostrar todos los datos dentro de la pantalla de consola (135 x 80)

La información que nos aporta la configuración nos permite
  • Especificar qué IP responden en la máquina
  • Conocer el MTU de red configurado
  • Cuantificar el número de paquetes deshechados
  • Monitorizar las colisiones que se presentan

Esta es, evidentemente una información valiosa para propósitos de monitorización de la red. La fragmentación, rechazos y redirecciones son sin duda alguna, valores que pueden afectar decisivamente al rendimiento de las aplicaciones que usen instancias o servicios de las máquinas.

Monitorización específica.


Como ya hemos indicado, el uso del comando netstat conlleva un gasto adicional en recursos, que, en situaciones de alto desempeño, pueden afectar de manera notable a las capacidades de las máquinas donde se ejecute: recordemos el principio de Heisengber, y una de las interpretaciones de dicho postulado: la observación afecta a los resultado.



Habitualmente, la salida correspondiente a la ejecución del comando netstat –an, nos permite observar qué conexiones se están estableciendo y sus distintos estados.



La interpretación que se debe de hacer, según nuestros conocimientos, experiencia y lectura de las cartas del tarot es la siguiente

Estado TCP
Interpretación
ESTABLISHED
Las conexiones en este estado pueden interpretarse como sesiones activas contra el puerto TCP de la aplicación
TIME_WAIT
Sesiones a la espera de respuesta de conexión.
CLOSE_WAIT
Sesiones cerrándose
  
Debemos destacar que si bien el estado ESTABLISHED lo consideramos un muestreador de la concurrencia, los estados TIME_WAIT y CLOSE_WAIT son indicativos de cuellos de botella  de red.Especialmente si se observa una clara descompensación entre las sesiones establecidas y las que quedan en el resto de estados.


El uso de estos comandos permite tener una idea bastante aproximada del comportamiento y uso de la máquina ,sus interfaces de red y concurrencia durante la operación habitual del sistema.

Esperamos ofreceros próximamente más información que sea útil en este blog.

1 comentario:

  1. La informacion acerca del sistema operativo UNIX y sus comandos es realmente util.
    Por favor seguir instruyendonos con sus conocimientos

    ResponderEliminar