Monitorización de aplicaciones; claves para cubrir nuestras necesidades

En el sector de la monitorización existen diferentes claves que los responsables del sector IT deben controlar. Muy brevemente, podríamos resumir los pilares tecnológicos más importantes en comunicaciones, servidores y aplicaciones. Los tres son imprescindibles para que los servicios de una compañía funcionen, un problema crítico en cualquiera de estos tres puntos provocaría perjuicios masivos en cualquier compañía. En este artículo vamos a centrarnos en la monitorización de aplicaciones, un estudio de las necesidades, tecnologías, servicios y puntos clave.

Como sabemos, las aplicaciones siempre se encuentran en un servidor; desde un pequeño ordenador personal que soporta la Intranet de un colegio, hasta una gran máquina que soporta los servicios de virtualización de una compañía multinacional. Por ello, la monitorización de los servidores en sí, a nivel de hardware y recursos, será la primera parte importante que tendremos que cubrir para tener una buena monitorización de aplicaciones. Sería equivalente al establecimiento o local donde se abre un negocio; de no existir no podría existir tal negocio, ¿verdad?

El segundo punto clave será la monitorización de aplicaciones “desde dentro”, analizando cada tecnología, los recursos que necesita, procesos y servicios, dependencias y funcionamiento interno. Esta será la parte más complicada, ya que siempre será diferente para cada aplicación y tipos de tecnologías. Vamos a comentar las diferentes formas de obtener esta información.

Monitorización remota

La primera opción sería la obtención de datos de forma remota, esto es, sin instalar ningún software en el servidor donde la aplicación se está ejecutando. La forma sería ejecutar chequeos remotos a través de la red utilizando los diferentes protocolos disponibles.

ICMP

En primer lugar podríamos comprobar si el servidor se encuentra encendido y disponible, mediante chequeos de disponibilidad y latencia ICMP. De este modo sabríamos en todo momento cuándo se produce una caída o desconexión del servidor, o si se produce alguna incidencia en la red que afecte a la velocidad de respuesta y provoque una degradación del servicio. El caso más habitual sería crear un chequeo de “Host Alive” mediante un ping al servidor a monitorizar, comprobando si se encuentra funcionando; también la utilización del propio ping para crear un chequeo “Host Latency” y poder detectar rápidamente cualquier incidencia de lentitud en la red.

SNMP

Si el servidor soporta el protocolo SNMP, esta será otra buena opción para obtener información. Puede devolvernos información ampliada sobre los recursos del sistema y saber así si la máquina tiene algún problema o sufre picos de estrés. Además, este protocolo es vastamente utilizado para la monitorización de dispositivos de red. Un ejemplo sería obtener uso de CPU y memoria del servidor para conocer la carga de trabajo general que está soportando.

WMI

Si se trata de un servidor de aplicaciones Windows, podemos valernos de los chequeos WMI remotos. Este protocolo de Microsoft, permite obtener prácticamente toda la información posible sobre servidores Windows de forma remota, desde estado de los recursos (memoria, CPU, espacio en disco…) hasta procesos o servicios. Un protocolo excelente y muy completo. Requiere facilitar credenciales del sistema operativo para ejecutar los chequeos. En un entorno real podríamos obtener los servicios en ejecución para la monitorización de aplicaciones, por ejemplo los servicios Exchange.

Protocolos particulares de cada tecnología

El último punto -y el más complejo- es el de la monitorización de aplicaciones mediante los protocolos específicos que utilizan. ¿Por qué es más complejo? Porque es diferente para cada aplicación, no pudiendo aplicar conocimientos generales, como por ejemplo monitorizar procesos y servicios, sino que es necesario conocer la aplicación por dentro, cómo funciona, qué forma tiene de transmitir información, si escucha en algún puerto, si es posible desplegar una monitorización sobre elementos que dependen de la aplicación para garantizar que se encuentra dando servicio, etc.

Un caso habitual sería la monitorización de forma remota del puerto 80 de nuestro servidor web para ver si se encuentra escuchando, así como paralelamente comprobar la disponibilidad y tiempos de carga de los sitios web. Otro caso podría ser chequear el puerto 3306 para ver que el servidor MySQL se encuentra funcionando. Nos permitiría realizar comprobaciones más avanzadas como chequeos de seguridad, realizando las comprobaciones de forma remota desde IPs en las que MySQL esté escuchando y esperando conexiones, y también desde alguna otra IP no autorizada para obtener una respuesta negativa. Generalmente monitorizaremos puertos a la escucha y servicios online que dependan de nuestras aplicaciones.

En muchos casos las aplicaciones dispondrán de su propia interfaz de línea de comando a la que será posible conectarse remotamente para ejecutar comandos y recoger información mucho más amplia. El desafío aquí residirá en recoger esta información desde fuera de la interfaz de línea de comando particular; en algunos casos esto podrá resolverse lanzando las peticiones de forma remota sin llegar a acceder a la interfaz de línea de comando, pero no siempre será tan sencillo.

Monitorización local

O monitorización basada en agentes, consiste en la instalación de un pequeño software que se encuentra corriendo en todo momento en nuestro servidor de aplicaciones y recoge y envía información cada cierto tiempo. Mediante este sistema se puede llegar a niveles mucho más profundos y obtener información desde “dentro” de las propias aplicaciones.

Habitualmente se requerirán credenciales específicos para acceder a las aplicaciones y obtener información, y siempre será más sencillo extraer la información y plasmarla en módulos de forma práctica que mediante la monitorización remota. Para recoger información útil con gran nivel de detalle serán necesarios conocimientos avanzados de las aplicaciones a monitorizar, pero los resultados siempre serán superiores a los logrados mediante monitorización remota.

Ventajas e inconvenientes

Como último punto comentamos algunas de las ventajas inconvenientes de los dos tipos de monitorización de aplicaciones que hemos descrito en este artículo.

Monitorización remota

Ventajas:

  • Mayor rapidez en el despliegue.
  • Consumo de recursos prácticamente nulo.
  • La información es extraída desde el exterior, garantizando que el servicio es perfectamente funcional para clientes y usuarios.

Inconvenientes:

  • No es posible para todas las aplicaciones.
  • La información sobre el estado de las aplicaciones puede verse afectada por incidencias en las comunicaciones.
  • Mayor dificultad para recoger la información de forma clara y depurada.

Monitorización local

Ventajas:

  • Nivel de detalle mucho mayor.
  • La información es recogida directamente desde la aplicación, sin depender de canales externos.
  • Posibilidad de ejecutar acciones de forma proactiva en función de la información recogida.

Inconvenientes:

  • Requiere instalación de software, implicando cierto impacto en los recursos.
  • Fase de despliegue más lenta.
  • Recogida de información de forma descentralizada.

Finalmente, el decidir cuál es mejor siempre dependerá de las características del entorno, exigencias y posibilidades, por lo que no es posible afirmar que un sistema sea mejor que otro. Siempre se requerirá un estudio previo para decidir la forma óptima de cubrir las necesidades existentes.

Shares