AppDynamics vs Dynatrace vs Elastic: La batalla de los gigantes de monitoreo de las aplicaciones empresa.
Este articulo esta basado en otro articulo en ingles y adaptado al mercado español.
Si tuviera que elegir tres herramientas que aparecerían en la mayoría de las listas de evaluación de APM (Monitoreo del rendimiento de la aplicación) de la empresa, sería AppDynamics, Dynatrace y Elastic.
Este trio no se convirtieron en líderes en APM de la noche a la mañana, pero lo hicieron a través de diferentes viajes, a pesar de tener bases similares en el diagnóstico de Java. Dynatrace comenzó más como una herramienta de rendimiento de preproducción en 2005 para desarrolladores y evaluadores de control de calidad, mientras que AppDynamics se fundó en 2008 con casos de uso de producción enfocados más hacia los equipos de soporte de operaciones y aplicaciones. Mientras Elastic Elasticsearch, llamado Compass, en 2004. Mientras pensaba en la tercera versión de Compass, se dio cuenta de que sería necesario volver a escribir grandes partes de Compass para “crear una solución de búsqueda escalable”. Así que creó “una solución creada desde cero para ser distribuida” y usó una interfaz común, JSON sobre HTTP, adecuada para lenguajes de programación distintos de Java. Shay Banon lanzó la primera versión de Elasticsearch en febrero de 2010. Y es relativamente nuevo en el mercado de las APM cuenta con una ventaja sobre los otros dos y es cuenta con despliegue y motor de bases de datos basado en Hadoop, con lo que las búsquedas son escalables, además de contra con una visión 360 grados de nuestra infraestructura, además de un machine learning alucínate, con el que podremos no solo contar con maquinas virtuales que midan el rendimiento de nuestro navegadores o código Java, Servidores de Jnode, podemos incluir factores que los otros dos competidores no cuenta actualmente y es poder incluir CPU de los switch por ejemplo, rendimiento de los balanceadores, asi como bloqueos de bases de datos, y luego hablaremos del beneficio mayor que es el precio, en este análisis comparativo, iremos desgranado cada uno de los procesos que nos ofrecen cada uno de los productos.
En la siguiente publicación, descubriremos la verdad detrás de “Newspeak” (o hablar de marketing) y lo ayudaremos a comprender qué ofrece cada herramienta y cuál es la que mejor se adapta a sus necesidades.
Lo primero que tenemos que destacar es que en las áreas de desarrollo empresarial debemos tener en cuenta los factores que influyen en la toma de decisiones de nuestros clientes y la experiencia que tiene en nuestros entornos, con los que podemos hacer una aplicación muy atractiva pero si la experiencia del usuario o los cambios entre los formularios o reportes tardan demasiado esto puede afectar de manera negativa el negocio, es por ello que en el área de infraestructura, tenemos el deber de monitorizar el rendimiento y tratar de ser predictivos, y tomar acciones adecuadas para los cambios efectivos de infraestructura.
En este sentido vamos a evaluar tres productos, dos muy específicos y uno un poco mas abierto y con mayores posibilidades de servicio.
Características
Monitorización de la experiencia del usuario final
La primera dimensión de APM es el monitoreo de la experiencia del usuario final (EUEM). Es un término usado para describir los múltiples enfoques para monitorear lo que un usuario final podría estar experimentando.
Dynatrace: la compañía divide sus capacidades de EUEM en 3 productos: “Gestión de la experiencia del usuario”, “Monitoreo sintético” y “Centro de datos RUM (monitoreo real del usuario)”. No se asusten con los nombres, están diseñados para sonar explosivos y expansivos, mientras que simplemente monitorean la experiencia del usuario desde diferentes perspectivas.
La primera herramienta, “User Experience Management” ofrece una inyección de JavaScript basada en navegador y un enfoque de SDK para aplicaciones móviles que captura métricas relacionadas con las solicitudes y sesiones de los usuarios, en diferentes navegadores y dispositivos. Por ejemplo, puede buscar acciones de usuario específicas para obtener un historial de su rendimiento / cuánto tiempo tardaron en ejecutarse.
El servicio de “Monitoreo sintético” muestras estadísticas de diferentes lugares alrededor del mundo. También es útil para simular ejecuciones de prueba, comparar el rendimiento a través de patrones de comportamiento problemáticos, monitorear la disponibilidad del host y servicios de terceros o incluso simular tráfico de gran volumen.
“Data Center RUM” es la última solución que ofrece un enfoque sin agentes para el monitoreo del usuario final mediante el rastreo de solicitudes HTTP entrantes (y otros protocolos) para que pueda unir la latencia de las solicitudes del usuario final sin necesidad de instrumentar explícitamente páginas web o aplicaciones móviles nativas. .
En resumen: inyección JS / SDK, simulando visitantes de diferentes ubicaciones y actividad de la red.
Dashboard de utilización de Experiencia de usuario.
AppDynamics: la categoría “Monitoreo del usuario final” también se expande en 3 productos diferentes: “Navegador en usuario real”, “Navegador sintético” y “Monitoreo en tiempo real móvil”. En términos simples, podrá monitorear la experiencia del usuario y las interacciones y comparar su desempeño en regiones específicas.
“Browser Real-User” es un método de inyección de JavaScript como Dynatrace que le permite capturar la experiencia de los usuarios finales desde el navegador. Podrá reproducir el viaje de sus usuarios dentro de la aplicación, ver transacciones individuales e identificar problemas de rendimiento.
“Browser Synthetic” supervisará la disponibilidad de su aplicación 24/7 e informará su latencia en todo el mundo. Al igual que Dynatrace, simula el tráfico de los navegadores para evaluar la experiencia real del usuario final. También puede volver a probar las condiciones para eliminar resultados erróneos o confirmarlos.
“Mobile Real-Time” se trata de aplicaciones móviles nativas, que ofrecen las mismas medidas y opciones, solo en aplicaciones y dispositivos móviles. Permite clasificar los pasos que el usuario tomó antes de que la aplicación fallara, ver la latencia entre los servicios y los errores para que pueda identificar y solucionar problemas. La instrumentación se realiza a través de SDK estándar para iOS y Android.
Dashboard de utilización de Experiencia de usuario.
Elastic APM es un sistema de monitoreo de rendimiento de aplicaciones construido en Elastic Stack. Le permite monitorear los servicios y aplicaciones de software en tiempo real, recolectando información detallada sobre el rendimiento del tiempo de respuesta para solicitudes entrantes, consultas de bases de datos, llamadas a cachés, solicitudes HTTP externas, etc. Esto hace que sea más fácil identificar y corregir problemas de rendimiento rápidamente.
Elastic APM también recopila automáticamente errores y excepciones no manejados. Los errores se agrupan basándose principalmente en el seguimiento de pila, de modo que puede identificar los nuevos errores a medida que aparecen y vigilar cuántas veces ocurren los errores específicos.
En el caso de Elastic no tiene una clara división entre los tipo de experiencias al usuario por que realmente lo que estamos midiendo es los totales de una aplicación al igual que los otros dos atravez de la ingesta de datos y el análisis de estos datos, otra de las opciones que debemos destacar es que el dashboard aun esta un poco verde para mi gusto, ya que no es tan amigable como el de los otros dos, pero es cuestión de customizarlo con kibana, para nosotros los que tenemos experiencia en desarrollo podemos generar dashboard mas amigable para nuestros cliente ya que el que trae por defecto no es lo que nos pueden ofrecer, esto requiere mas trabajo pero merece la pena ya que es un mundo abierto, no tenemos que esperar que los equipos de desarrollo tomen la decisiones de habilitarnos nuevas características.
Dashboar de Elastic.
Runtime Application Architecture Modelado de descubrimiento
Esta es quizás la dimensión más interesante de APM, donde se obtiene un mapa de topología en vivo de cómo las solicitudes de los usuarios finales atraviesan los muchos entornos de ejecución de aplicaciones. Por ejemplo, en una arquitectura de microservicios, una sola transacción de usuario podría afectar a varios cientos de componentes y servidores diferentes, y cada salto podría contribuir a la latencia. Con los mapas de topología, debería poder entender dónde se gasta la latencia para la aplicación. O donde se propagan los bloqueos.
Diagrama de propagación de latencias Dynatrace.
Diagrama de propagación de latencias AppDynamics.
Un diagrama hecho rápidamente si manuales de estilo elastic.
Recordad que con Elastic, tenemos infinidad de pocibilidades y los construimos a base de los datos en estado puro.
Instalación y facilidad de implementación
Dynatrace: En realidad nos impresionó bastante el proceso de instalación, que es completamente auto explicativo. La compañía ofrece varios instaladores para Windows, Linux y Mac OS, que contienen todo, agente incluido. También puede ejecutarlo todo en un contenedor de Docker preconfigurado.
Después de la instalación, se le pedirá que conecte el agente con el servidor, y se le presentarán guías de video para cada entorno, si necesita ayuda.
En entornos a gran escala, tendrá que instalar múltiples componentes para que Dynatrace pueda escalar. Por ejemplo, los agentes de Dynatrace se comunican con los recolectores que luego se comunican con el servidor central de Dynatrace. Deberá agregar más servidores de recopilador a medida que la cantidad de agentes aumenta con el tiempo.
AppDynamics: después de registrarse en el servicio, se le presenta una pantalla de instalación que tiene 4 pasos y no más información. Buscamos un kit de descarga o instrucciones, pero no pudimos encontrarlas. Resulta que AppDynamics necesita algo de tiempo para configurar su entorno y no puede comenzar a usarlo de inmediato. Aunque tiene sentido, esto no se explicó en la pantalla principal, y tomó más de una hora hasta que recibimos nuestro correo electrónico de bienvenida y el panel completo.
La arquitectura de AppDynamics es más sencilla que Dynatrace de implementar, ya que solo requiere agentes y un servidor de administración central conocido como el controlador. AppDynamics recopila y transmite muchos menos datos que Dynatrace, por lo que no requiere servidores recolectores adicionales para escalar. Aunque requiere un agente adicional por máquina para métricas de infraestructura.
Elástica APM consta de cuatro componentes:
Agentes de la APM
Servidor APM
Elasticsearch
Kibana UI
Agentes de la APM
Los agentes de APM son bibliotecas de código abierto escritas en el mismo idioma que su aplicación. Los instalas en tu aplicación como instalarías cualquier otra biblioteca. Los agentes se conectan a su aplicación y comienzan a recopilar métricas de rendimiento y errores. Todos los datos que los agentes recopilan y envían al servidor
• APM.
• Servidor APM
El servidor APM es una aplicación de código abierto escrita en Go que se ejecuta en sus servidores. Escucha de forma predeterminada en el puerto 8200 y recibe datos de los agentes periódicamente. La API es una simple API HTTP basada en JSON. El servidor APM crea documentos de Elasticsearch a partir de los datos recibidos de los agentes. Estos documentos se almacenan en un clúster de Elasticsearch. Un único proceso de servidor APM puede manejar datos de cientos de agentes.
Ahora mismo estos agentes APM están disponibles:
Agente APM Node.js
Agente APM Python
Agente Ruby APM
APM Frontend JavaScript Agent
En esta publicación no vamos a ver cómo instalar y configurar el servidor APM, puede leer más aquí (el procedimiento está bien documentado): Elastic – APM.
s agentes de APM son bibliotecas de código abierto escritas en el mismo idioma que su servicio. Los instala en su servicio como instalaría cualquier otra biblioteca. Instalan su código y recopilan datos de rendimiento y errores en tiempo de ejecución. Estos datos se almacenan temporalmente durante un breve periodo de tiempo y se envían al servidor APM.
APM Server es una aplicación de código abierto escrita en Go que generalmente se ejecuta en servidores dedicados. Escucha en el puerto 8200 de forma predeterminada y recibe datos de los agentes a través de una API HTTP de JSON. Luego crea documentos a partir de esos datos y los almacena en Elasticsearch.
Elasticsearch es un motor de análisis y búsqueda de texto completo altamente escalable. Le permite almacenar, buscar y analizar grandes volúmenes de datos de forma rápida y casi en tiempo real. Elasticsearch se utiliza para almacenar métricas de rendimiento de APM y hacer uso de sus agregaciones.
Kibana es una plataforma de análisis y visualización de código abierto diseñada para trabajar con Elasticsearch. Utiliza Kibana para buscar, ver e interactuar con los datos almacenados en Elasticsearch. Puede utilizar Kibana para visualizar los datos de APM utilizando la UI de APM dedicada en la licencia Básica, o los paneles de Kibana de código abierto preconstruidos que se pueden cargar directamente a través de la UI de Kibana de APM.
• Conceptos APM
• Eventos
Los agentes de APM capturan diferentes tipos de información desde sus aplicaciones instrumentadas, conocidas como eventos. Los eventos pueden ser errores, intervalos o transacciones. Estos eventos luego se transmiten al servidor APM que valida y procesa los eventos.
Los errores contienen información sobre el error o la excepción que se capturó.
Los intervalos contienen información sobre una ruta de código específica que se ha ejecutado. Miden desde el principio hasta el final de una actividad, y pueden tener una relación padre / hijo con otros tramos.
Las transacciones son un tipo especial de intervalo que tiene metadatos adicionales asociados con ellas. Puede pensar en las transacciones como el nivel más alto de trabajo que está midiendo dentro de un servicio. Por ejemplo, atender una solicitud HTTP o ejecutar un trabajo de fondo específico.
Ver la documentación del modelo de datos APM para obtener más información sobre los eventos.
Comunicación componente
El servidor de APM es un componente separado por diseño: ayuda a mantener a los agentes ligeros, evita ciertos riesgos de seguridad y mejora la compatibilidad en la pila de Elastic y APM.
La API de admisión es lo que llamamos el protocolo interno que los agentes de APM utilizan para hablar con el servidor de APM. Después de que el servidor APM haya validado y procesado los eventos de los agentes de APM (a través de la API de admisión), el servidor transforma los datos en documentos de Elasticsearch y los almacena en los índices correspondientes de Elasticsearch. En cuestión de segundos, puede comenzar a ver los datos de rendimiento de su aplicación en Kibana.
Monitoreo de usuario real (RUM)
editar
Real User Monitoring captura la interacción del usuario con clientes como los navegadores web. El agente de JavaScript es el agente de RUM de Elastic. Para usarlo, debe habilitar el soporte de RUM en el servidor APM.
A diferencia de los agentes de backend de Elastic APM que monitorean las solicitudes y respuestas, el agente de RUM JavaScript monitorea la interacción y la experiencia del usuario real dentro de su aplicación del lado del cliente. El agente de JavaScript de RUM también es independiente del marco, lo que significa que se puede utilizar con cualquier aplicación de frontend de JavaScript.
Podrá medir métricas como “Time to First Byte”, domInteractive y domComplete, lo que le ayuda a descubrir problemas de rendimiento dentro de su aplicación del lado del cliente, así como problemas relacionados con la latencia de su aplicación del lado del servidor.
• Rastreo distribuido
Juntas, las transacciones y los vanos forman un Rastro. Las trazas no son eventos, sino que agrupan eventos que tienen una raíz común.
Todos nuestros agentes APM admiten el seguimiento distribuido de forma inmediata. El rastreo distribuido le permite analizar el rendimiento en toda la arquitectura de microservicios en una sola vista.
Precios
Todas las compañías ofrecen un período de valoración para probar la versión Pro, seguida de una rebaja a la versión gratuita. Si quieres saber cuánto costará realmente la versión Pro, tendrás que trabajar duro para descubrirlo, por que dependerá del tipo de contrato y en muchos casos como el de Dynatrace cobra por usuarios concurrentes de nuestras aplicaciones.
Dynatrace: El precio está influenciado por una serie de factores, como el número de servidores de aplicaciones, servidores web, sesiones de usuario y otros factores. Deberá hablar con el equipo de ventas para obtener una cotización adecuada, ya que los precios no están disponibles en el sitio web de Dynatrace. El tamaño de transacción promedio de otros estados de origen es de $ 10,000 para una suscripción anual.
AppDynamics: el plan gratuito de la compañía ofrece unidades de agente limitadas por módulo de producto y retención de datos limitada. Los precios de Pro se publican en el sitio web de AppDynamics y comienzan en $ 3,600 por unidad por año (por ejemplo, Instancia / Procesos de JVM / OS). Si no eres de EE. UU., Se cargará una página de precios diferente sin los detalles exactos de los precios.
Elastic: Elastic Cloud es nuestra creciente familia de ofertas de SaaS que facilitan la implementación, el funcionamiento y la escala de productos y soluciones de Elastic en la nube. Elastic Cloud es su trampolín para que Elastic trabaje para usted sin problemas, desde una experiencia de Elasticsearch fácil de usar y hospedada hasta soluciones de búsqueda listas para usar y listas para usar. Y estamos hablando en Cloud unos 1732,8 € anual
Conclusión: todas las compañías ofrecen un plan gratuito, pero ambas difieren cuando se trata de transparencia de precios. AppDynamics publica precios al igual Elastic tienes planes gratuito onpremise y pruebas de cloud y tiene las listas de precios en la web, Dynatrace no lo hace. Sin embargo, tres proveedores tienen múltiples productos a los que se les asigna un precio con métricas diferentes, por lo que es intrínsecamente complejo el precio de ambos (Dynatrace, AppDynamics), a menos que hable con alguien en ventas.
Páginas de referencias.
AppDynamics vs Dynatrace: Battle of the Enterprise Monitoring Giants
Application Performance Monitoring with Elasticsearch 6.1, Kibana and Skedler Alerts
https://www.elastic.co/guide/en/apm/
adicionalmente de los laboratorio y pruebas realizad sobre cada productos en entornos pre-productivos.