Logo-Kirey-group

Herramientas de APM (Parte 2)

Kirey-monitorización-y-ciberseguridad-1

Comparte este artículo

Tipos y características de las herramientas APM

A la hora de escoger nuestra suite de herramientas APM existe un pequeño matiz lingüístico que tendremos que saber diferenciar para obtener la herramienta que mejor se ajuste a nuestras expectativas: lo simple contra lo sencillo. A menudo la gente confunde estos dos términos, pero en nuestras herramientas APM vamos a querer un entorno lo más sencillo y amigable posible, y por lo general todo lo alejado del concepto de “simple” que nos pueda ofrecer la tecnología. Sencillo para que cualquiera, desde el developer más técnico hasta el directivo más estratégico puedan sacarle el mayor partido a las diferentes particularidades de la herramienta de manera cómoda e intuitiva. Y complejo —que no complicado— a nivel funcional para que la herramienta disponga internamente de los más avanzados recursos que la permitan diferenciarse de aquellas que solo ofrecen lo básico. La inteligencia artificial, el machine learning y demás métodos heurísticos son tremendamente complejos de implementar, pero sin duda pueden ofrecer los mejores resultados en un entorno tan variable y dinámico como es el análisis de rendimiento de las aplicaciones.

Por supuesto, no hay que desdeñar las herramientas que ofrezcan soluciones más básicas. Sencillamente, tendremos que evaluar el impacto que va a tener el uso de las mismas. Un set de herramientas APM con la información básica —a menudo incluso una demo gratuita— nos bastará para evaluar el impacto de una aplicación generada por un usuario particular y que usará poca gente. A medida que nos movemos a aplicaciones más «serias», la necesidad de obtener una suite que pueda sacar el máximo rendimiento de nuestros programas se convierte en una necesidad vital a nivel de negocio.

A continuación desgranaremos los tres tipos de herramientas APM existentes hoy día en el mercado, desde el más simple al más complejo. Por supuesto, una buena herramienta APM deberá combinar los tres elementos, y no solo uno de ellos.

Monitorización de métricas de aplicaciones

La monitorización de las métricas de las aplicaciones es la piedra angular sobre la que se va a basar toda herramienta de APM. A través de la recolección, tratamiento y posterior análisis de las métricas de aplicación podemos convertir un —aparentemente incomprensible— conjunto de indicadores y datos en toda una historia que desgrana los problemas que puede estar padeciendo una aplicación y que nos puede dar pistas para resolver dichos problemas de manera eficaz.

Al monitorizar las métricas —consumo de CPM o memoria, tiempos de acceso a BBDD, llamadas a servicios externos, etc.— podremos observar de un vistazo en qué partes se están consumiendo más recursos y tiempo del esperado. Por supuesto, una buena herramienta sabrá analizar el consumo medio de la aplicación y nos podrá decir los cuellos de botella que hay que mejorar a través de reports específicos una vez puestos en conjunto todos los datos técnicos. A lo que no podrá llegar —eso lo veremos en el segundo punto— es a analizar el propio código de la aplicación para decirnos exactamente dónde puede estar el problema a tratar. Pero el análisis de métricas nos aportará un conocimiento estupendo de esos leaking points o puntos de fuga por donde se nos está escapando literalmente el dinero.

Por otro lado, hay ciertas métricas en las que no valdrá el análisis de código y donde la monitorización de métricas de aplicaciones nos va a dar un conocimiento de un valor incalculable, sobre todo para el equipo de operaciones o infraestructura. Para los encargados de los mainframes, servidores, redes y demás elementos más «tangibles» tener las métricas de consumo del hardware —tasas de lectura y escritura en disco, porcentajes de consumo de memoria real o virtual, comportamiento de firewalls físicos, etcétera— o del ancho de banda —como en llamadas a APIs externas, acceso a servicios y datos en la nube, picos de actividad e inactividad y número de usuarios concurrentes— hará que tengan el control absoluto sobre el funcionamiento de cada pieza de equipo y red.

Por ejemplo, para saber los datos más accedidos en cada momento y poder evaluar si dejarlos en un disco duro o cinta «de toda la vida», si almacenarlos en la nube de manera externa a nuestros servidores o incluso si dedicar un SSD específico para conjuntos pequeños de ficheros altamente accedidos de forma continua. Poniendo otro ejemplo para la parte de software, las métricas nos pueden avisar por ejemplo de mappings o workflows que estén haciendo de manera incorrecta el pushdown a la base de datos y en los que se esté multiplicando exageradamente el tiempo de acceso a los datos.

Code profiling o análisis de código

La siguiente pata de la mesa se mete directamente en el quid de la cuestión: el código de programación. Las herramientas de APM con capacidades de análisis de código pueden adentrarse en cada instrucción para contestar preguntas tales como cuántas veces es llamado cada método en una ejecución estándar de la aplicación o cuánto tiempo tarda de media cada uno de estos métodos en finalizar. El code profiling es una manera estupenda de averiguar cómo se comportan las diferentes dependencias entre transacciones, el tiempo que se gasta en cada llamada a un web service o qué función es la que está gastando la mitad de la memoria de la máquina.

A nivel incluso más bajo nos pueden ayudar a averiguar las sentencias SQL y accesos a BBDD que están dando mayor cantidad de problemas —y por qué— e incluso ofrecernos información sobre características habitualmente automatizadas en la programación —como el recolector de basura, que generalmente no se tiene que manejar de manera directa— que puedan estar afectando al rendimiento en tiempo de ejecución. Y en un gran número de casos ni siquiera hará falta tocar una sola línea, simplemente reubicando bloques de código se podrá conseguir un flujo de ejecución mucho más optimizado y veloz que antes del análisis del programa. A nivel de tráfico online estas herramientas pueden incluso analizar el flujo de las solicitudes recibidas y especificar los transaccionales más demandados donde deberíamos mejorar al máximo el tiempo de ejecución y respuesta.

Monitorización del rendimiento de la red

También conocido como Network Performance Monitoring o NPM, la monitorización del rendimiento de la red consiste en el análisis, optimización, resolución de problemas y documentación de la disponibilidad y salud de nuestra red tal y como es percibida por los usuarios finales. Requiere de una programación interna por parte del APM bastante compleja, por lo que muchos APM —incluso de gran nivel— no lo soportan. La clave consiste en que, en aquellos que lo hacen, toda esta complejidad sea transparente para el usuario del APM. Una perfecta caja negra que se alimentará con los datos de uso de nuestra aplicación y nos devolverá informes y soluciones a las posibles problemáticas halladas. Para analizar este tráfico de red el NPM puede utilizar diferentes telemetrías, como las métricas de dispositivo, el flujo de datos de red o los mismos paquetes de datos, y cada una de ellas nos ofrecerá diferentes puntos de vista sobre diferentes aspectos de la experiencia digital de nuestra aplicación.

Las métricas de dispositivo (como puede ser el SNMP, el WMI de Windows, las diversas APIs, las trazas y logs e incluso las clásicas interfaces de línea de comandos) nos pueden ofrecer métricas tales como disponibilidad de interfaces y dispositivos de red, cortes o fallos en la infraestructura, latencias, errores, pérdidas de paquetes, etc. Información general del estado de la red desde el servidor central hasta la última impresora conectada, pasando por todos los puntos intermedios.

El flujo de datos de red, proporcionados por los routers, switches y hubs ofrecerá información acerca de los datos de cada transacción realizada: entre qué actores ha sucedido, en qué momento y durante cuánto tiempo, la cantidad de datos… Extrapolando información de este flujo de datos se pueden obtener patrones de comportamiento y estadísticas de uso de los puntos clave en nuestras aplicaciones web.

Mediante la captura de los paquetes de datos (los grupos «mínimos» de información transferida a través de la red) se pueden resolver problemas como la pérdida de los mismos, su reenvío repetido a causa de una mala comunicación o diversas actividades perjudiciales en la red. También podremos identificar diferentes amenazas a la seguridad de la red o realizar un análisis forense para descubrir qué puede haber causado caídas o problemas de rendimiento. Los diferentes paquetes de envío y respuesta se «capturan» en tiempo real, copiándolos pasivamente para poder analizarlos posteriormente en busca de esta información tan preciada.

Por supuesto, lo óptimo es que nuestra herramienta de APM integre el análisis de las tres telemetrías para una visión de conjunto de nuestra red completa, y que lo presente todo en una interfaz cómoda y amigable. Que nos ofrezca una caja negra donde no importa lo complejo que pueda ser la lógica interna y donde sólo importen los resultados y cómo obtenerlos.

Algo sencillo, aunque no simple.

Suscríbete a nuestra newsletter

Entérate antes que nadie de los mejores contenidos.

Quizás también te interese

¿Quieres que mejoremos la rentabilidad de tu empresa?

Escríbenos para recibir una propuesta personalizada.