Monitoreo de Aplicaciones e Infraestructura

Una de las experiencias mas complicadas que puede tener un administrador de sistemas o peor aún, un gerente en tecnología, es el desconocer cómo se están comportando los sistemas, aplicaciones o la misma red de datos en la compañía; ¿por qué es relevante el conocer esta información? bueno de eso depende que todo funcione bien!! te suena familiar los siguientes comentarios:

  • “.. por ratos el sistema se pone lento..”
  • “…ya no se puede escribir en las carpetas compartidas, da un mensaje que ya no hay espacio..”
  • “… a veces el sistema falla y toca volver a cargar todo…”
 
Detalles como estos surgen por el desconocimiento de cómo se están comportanto los equipos y las aplicaciones dentro de ellos, es por eso que es de gran importancia contar con una herramienta de monitoreo que nos facilite identificar cómo está la utilización de recursos de hardware como:
  • % de uso de CPU
  • % de uso de Memoria
  • % de uso de Espacio en Disco
  • % Utilización del ancho de banda de la red

Ya si son aspectos relacionados a las aplicaciones, podríamos indicar aspectos como:

  • Cantidad de sesiones activas
  • Número de transacciones por minuto
  • Tamaño del Log de la base de datos
  • Tamaño de la Base de Datos
  • Número de bloqueos en una base de datos
  • etc…etc…
 

Te cuento una historia….

Trabajaba en una TELCO y como tal teníamos un sistema de monitoreo llamado Solarwinds (muy bueno por cierto), pero de parte del área de Call Center, nos estaban reportando que una aplicación los usuarios estaban reportando errores al realizar ciertos procesos, eso en su momento lo escalé con el administrador correspondiente y me dieron la respuesta “…ya lo revise y ya lo corregí, el usuario había agregado un parámetro mal..” y ahí quedo todo, yo simplemente reporté que ya estaban resueltos los casos y listo.

El problema nos lo siguieron reportando y de igual forma se resolvían según nos lo reportaban hasta que….. nos convocaron a una reunión con el Director de Tecnología y el área de Call Center y Atención al Cliente, claro como ya sabía por donde iva la cosa, lleve impreso los indicadores de monitoreo de los servidores para evidenciar que todo estaba bien, peeeeroooo… cuando llegamos a la sala de reuniones, nos dijeron “vamos a escuchar los audios de las llamadas de los clientes para ustedes nos puedan comprender que no somos nosotros los que insistimos, sino que son los clientes que realmente estan reclamando porque el sistema esta fallando..” y colocaron el audio de 2 llamadas en donde incluso el cliente casi que ultrajaba al agente de servicio en la llamada (muy feo por cierto) … a la mitad del segundo audio el director de tecnología dijo:

  • “.. Claudia (nombre ficticio), le agradezco mucho que nos ilustre de esta forma los detalles de los problemas que tenemos y créame que le creo y tenga por seguro que vamos a resolverle esto de raíz..! ”  … luego inmediatamente volvea la mirada hacia mi y me dice:
  • ” …Walter confirmeme lo siguiente, contamos con minitoreo para este sistema ..” yo ya iva inmediatamente a sacar mis páginitas impresas del uso de CPU, Memoria, etc… cuando termindo de decir lo siguiente:
  • ” … solo quiero que me confirme si para este sistema en especial contamos con monitoreo end-to-end para que me pueda validar que estamos identificando desde el monento en que el usuario dió clic en la aplicación y que esa transacción ingresó a la base de datos..?..”  en ese momento me detuve y le dije ” no ingeniero contamos con monitoreo pero no hasta ese detale..” a lo que él termino la reunión indicando:
  • “.. ya no hablemos mas, Walter por favor regrese y hoy mismo asegurese que veamos de implementar un monitoreo al 100% de esta aplicación, Claudia le ruego nos disculpe por las molestias que le hemos estado causando, pero le doy mi palabra que esto lo vamos a solventar de raís hoy mismo para evitar que los clientes estén molestos”
 
Luego de salir de esa reunión como te podrás imaginar, a correr para ver qué implementabamos para monitorear todo lo relacionado a la aplicación, estaba claro que únicamente estabamos monitoreando las “cajas”, es decir, sólo los componentes del sistema operativo y del hardware del servidor, luego de haberlo realizado identificamos patrones de comportamiento a nivel del aplicativo y la base de datos que nos llevaron a identificar el problema!!!

 

MORALEJA – Si ya cuentas con un sistema de monitoreo, asegúrate de no estár monitoreando solo los componentes de hardware, deberás de llegar a monitorear todos los componentes que están “adentro” a nivel de las aplicaciones, servicios o bases de datos para tener un panorama completo.

Indicadores de Desempeño

Siempre que se habla de monitoreo de sistemas, es importante hablar o identificar los indicadores claves de rendimiento que en primera instancia te dan visibilidad que algo anda mal o se podría poner mal en el comportamiento de un equipo o aplicación, te comento algunos:

% Disponibilidad

Este indicador permite ver la disponibilidad del servidor o servicio, es decir, cuánto tiempo ha estado disponible dicho recurso, este indicador debe de mantenerse en 100% en caso contrario debe de realizarse un proceso de investigación para determinar qué está provocando que lo estemos brindando dicho servicio a nuestros usuarios.

% Utilización de CPU

Está de más decir que una utilización alta del procesador puede indicar problemas de rendimiento o saturación en el servidor y/o base de datos, por lo que es importante establecer la linea base de comportamiento, esto quiere decir, que debemos de identificar los niveles máximos de uso de CPU en donde el sistema aun se comporta bien, arriba de eso debemos de reportar alarmas de alta utilización.

% Utilización de Memoria

Similar que la utilización de CPU, muchos sistemas dependen de cierto porcentaje de disponibilidad de memoria para operar bien, con la memoria es de analizar tambien el indicador de Memoria Virtual ya que algunos sistemas operativos como Windows usan este componente a través del archivo de pagineo, incluso bases de datos también.

Tiempo de Respuesta

Ya si nos movemos a un entorno de servidores de aplicación, el indicador de Tiempo de Respuesta del servidor hacia los usuarios es otro indicador muy importante para saber si no hay problema a nivel aplicativo o de hardware que esté afectando el tiempo de respuesta.

TOP QUERIES BY CPU

Finalmente, a nivel de base de datos algo que puede impactar muy fuerte en el rendimiento de una base de datos es tener CONSULTAS (queries) que están mal diseñadas o que la base no tenga los ínidces necesarios para poder realizar las consultas de una forma rápida y eficiente, acá nos podemos meter en temas mas profundos a nivel del diseño de una base de datos, pero como lo que deseamos es identificar si hay consultas que están impactando negativamente el rendimiento de una base de datos, este es otro indicador importante.

Finalmente si no deseas estás así:

Te recomiendo que veas de implementar una herramienta de monitoreo y que luego de tener cierta información histórica como de 1 o 2 semanas puedas identificar el comportamiento normal (linea base) de los sistemas o aplicaciones y que sobre eso comiences a establecer las reglas para que automáticamente el sistema de monitoreo te pueda enviar ALARMAS vía correo electrónico para ver de actuar de inmediato.

Recuerda que debes de armar tus propios indicadores de desempeño, aquellos que te ayuden a mantener tu infraestructura y sistemas siempre en ejecución y en buen estado, si deseas conocer todos los indicadores posibles que podrías implementar, te comparto el siguiente archivo de EXCEL que en su momento logre descargar de un excelente sitio que exitio llamado KPI Library.

Espero que lo anterior te sea de utilidad y recuerda que debemos de estar preparados ante cualquier situación, somos los de Reacción Inmediata ante cualquier situación de problema con los sistemas, lo más importante es poder anticiparnos a una caida de sistemas.

Herramientas de monitoreo

No me puedo retirar sin recomendarte algunas herramientas de monitoreo recomendadas, entre OpenSource:

  •  LibreNMS
  • Zabbix
  • Nagios
 
Y herramientas de paga bajo licenciamiento muy potentes:
  •  Solarwinds NPM
  • Solarwinds APM
  • ManageEngine Application Manager 
  • ManageEngine OPManager
 
LibreNMS, Solarwinds NPM y ManageEngine OPManager son consolas de monitoreo basado en el protocolo SNMP (Simple Network Management Protocol), esto quiere decir que se debe de instalar este protocolo en todos los equipos a monitorear y configurarlo para iniciar a obtener información de rendimiento de ellos.

 

Exitos..!

 

Lo importante es compartir

Facebook
Twitter
LinkedIn