Monitorización y análisis de rendimiento de aplicaciones con Dynatrace

3
8262

En este tutorial vamos a echar un vistazo a Dynatrace, una herramienta que nos permite monitorizar nuestras aplicaciones en un entorno productivo o no.


Índice de contenidos.


1. Introducción

El producto de APM de Dynatrace es uno de los más destacados dentro del cuadránte mágico de Gartner (APM) que define este tipo de herramientas como aquellas que
permiten monitorizar 5 dimensiones funcionales básicas:

  • end-user experience monitoring (EUM)
  • runtime application architecture discovery modeling and display
  • user-defined transaction profiling
  • component deep-dive monitoring in application context and
  • analytics

Ya hemos tratado en otros tutoriales otros productos de APM que se encuentran también muy bien posicionados, así

AppDynamics
y
New Relic.

Lo interesante ahora de todas ellas es que dentro de su licenciamiento proporcionan una licencia gratuita para la monitorización de entornos no productivos, con la única limitación del tiempo;
así, con toda la potencia de la herramienta puedes monitorizar su comportamiento en tu entorno de desarrollo local, almacenando información, por regla general, de las últimas dos horas.
Para otro tipo de entornos, ya productivos, se hace necesario adquirir una licencia comercial del mismo.

En este tutorial vamos a ver como instalar y configurar Dynatrace en un entorno local y daremos un vistazo rápido a sus características de monitorización.

2. Entorno.

El tutorial está escrito usando el siguiente entorno:

  • Hardware: Portátil MacBook Pro 15′ (2.5 GHz Intel Core i7, 16GB DDR3).
  • Sistema Operativo: Mac OS El Capitan 10.11
  • Dynatrace 6.5


3. Instalación.

Todas las herramientas de APM requiere de la instalación de:

  • un servidor o controlador de eventos, aunque hay algunas como New Relic que este componente solo está disponible en la nube, en el modo on-premise del resto lo primero a hacer es instalar el servidor,
  • un cliente que permita acceder a la información de la monitorización, aunque también en el caso de New Relic solo está disponible en la nube,
  • un agente de usuario para la tecnología con la que trabajemos, en nuestro caso java, que instrumentaliza nuestro código para remitir los eventos que se producen en el mismo hacia el servidor.

Lo primero que deberíamos hacer para instalar Dynatrace es registrarnos en la web para poder realizar una prueba gratuita, proporcionando la siguiente información:

dynatrace-01

Una vez registrados nos llegará un correo electrónico con la siguiente información, junto con la licencia de uso del producto:

dynatrace-02

Pulsando sobre el enlace accederemos a la página de descarga del producto y seleccionando el SO correspondiente podremos descargar el correspondiente paquete de instalación.

dynatrace-03

Desde la propia página podemos acceder a la información necesaria para la instalación, en nuestro caso al seleccionar el paquete para Mac, debemos ejecutar el jar como sigue:

dynatrace-04

Tras lo cual, se descomprime el paquete y disponemos del producto «instalado» en el mismo directorio dynatrace-X.X correspondiente a la versión

El siguiente paso es arrancar todos los servicios como sigue:

Podemos comprobar que se han levantado correctamente ejecutando un grep sobre los procesos «dt»:

A continuación debemos descargar el cliente para activar la licencia, para ello desde la parte inferior de la página de descarga podemos acceder al siguiente paso:

dynatrace-042

Que nos permitirá realizar una descarga del paquete cliente.

dynatrace-041

Con ello tendremos ya descargados dos paquetes, el servidor y el cliente:

dynatrace-10

Al abrir el dmg podemos proceder a realizar la instalación:

dynatrace-05

Lo primero que debemos hacer es asignar el fichero de la licencia:

dynatrace-06

Si todo va bien, nos confirmará la importación de la misma.

dynatrace-07

Que requrirá el reinicio del servidor.

dynatrace-08

El reinicio se realizará automáticamente

dynatrace-09

Al reiniciar se mostrará dentro del cliente una ventana como la que sigue, para proceder a la descarga y configuración del agente:

dynatrace-11

Debemos seleccionar el tipo de agente, en nuestro caso java:

dynatrace-12

Y configurar el tipo de servidor que vamos a monitorizar:

dynatrace-13

Seleccionamos el SO para el cuál realizar la descarga del paquete del agente; tened en cuenta que lo normal será tener el servidor montado en un entorno y la monitorización de los servidores de aplicaciones en otro, aquí lo estamos montando todo en la misma máquina:

dynatrace-14

Una vez seleccionado podremos descargar el agente para java:

dynatrace-15

Una vez descargado no tenemos más que ejecutar el jar para descomprimirlo:

dynatrace-17

A continuación, el propio wizard muestra un ejemplo de cómo configurar el arranque de Tomcat para añadir la configuración del agente

dynatrace-19

Que llevado a los parámetros de arranque del Tomcat que podemos lanzar desde cualquier IDE, en nuestro caso Eclipse, sería lo siguiente:

dynatrace-18

No tenemos más que incorporar el siguiente argumento:

El cliente permanecerá esperando la información que el agente remitirá al servidor una vez arranquemos nuestro Tomcat

dynatrace-20

En el arranque del Tocmat deberíamos ver las siguientes trazas:

dynatrace-201

Y automáticamente el cliente detectará el envío de información, indicando que la configuración es correcta.

dynatrace-21

Mostrando a continuación un resumen de la configuración del agente.

dynatrace-22

Quedando el agente registrado como sigue:

dynatrace-23


4. Un vistazo rápido.

En el primer acceso al cliente nos mostrará un resumen de los agentes instalados y las transacciones monitorizadas.

dynatrace-24

Para que se muestre la siguiente información, hemos realizado una serie de peticiones a la aplicación desplegada en el tomcat y el cliente descubre automáticamente el tipo de petición y el servidor.

dynatrace-25

Pulsando sobre el nodo, se muestra en una ventana emergente un resumen desde el cual podemos acceder al detalle de las transacciones o, en terminología de Dynatrace, los PurePaths.

Hemos forzado un cierto número de errores para comprobar que los monitoriza y, del mismo modo, también hemos forzado un sleep en la única petición satisfactoria para comprobar que somos capaces de encontrar el origen de la demora.

dynatrace-26

A continuación podemos ver como acceder, pulsando sobre la fila, al detalle de la transacción para ver donde se va el tiempo de respuesta.

dynatrace-27

Desde el dashboard podemos acceder a un listado de los errores producidos para comprobar los mensajes de respuesta al cliente.

dynatrace-28

Y desde el resumen de los mensajes a las transacciones que los originaron.

dynatrace-29

Es interesante comprobar como la herramienta en base a la información de la transacción puede generar un diagrama de secuencia de las clases implicadas en la misma

dynatrace-30

Generando un diagrama como el siguiente:

dynatrace-31

Y más interesante aún ver cómo podemos acceder al código fuente de un método en concreto, responsable de la falta de rendimiento:

dynatrace-32

Decompilando el código fuente como se ve a continuación:

dynatrace-33

Si probamos a desplegar una aplicación con «un poco más de chicha» podemos comprobar como el cliente nos muestra un diagrama de los componentes implicados en las transacciones,
en este caso, un nodo adicional de base de datos.

dynatrace-43

Podemos acceder al detalle de las transacciones y comprobar como aparece en la parte superior derecha un resumen de puntos calientes que afectan al rendimiento de la transacción, en este caso los accesos a base de datos:

dynatrace-42

Desde las opciones de la transacción podemos acceder a un listado de todas las consultas realizadas desde la transacción a base de datos.

dynatrace-44

Así podemos comprobar los tiempos de respuesta y decidir si es necesario dedicar tiempo o no a optimizar las mismas.

Una última característica bastante interesante es la posibilidad de exportar un PurePath para remitirlo, en cualquier momento, ocultando la información de los posibles objetos sensibles de la sesión del usuario, al equipo de desarrollo para su visualización en local, sin necesidad de acceso al servidor.

dynatrace-34

Para ello, pulsando sobre la transacción, podemos exportarla indicando la siguiente información:

dynatrace-35

5. Referencias.


6. Conclusiones.

No es una herramienta más, es una de las 3 mejores posicionadas y que proporciona mucho más de lo que hemos visto en este simple tutorial: cuadros de mando, alertas, agentes de máquina y base de datos, agentes de EUM que permiten recibir información del tiempo de renderización de las páginas en cliente (incluso snapshots de las mismas), posibilidad de disponer de un entorno de instalación dockerizado,…

Toda una joya, de ahí que su licencia para entornos productivos lo valga!

Un saludo.

Jose

3 Comentarios

  1. Buenas,
    En mi opinión es otra herramienta de integracion continua mas, las diferencias que comentas son solo de un interfaz mas amigable, ademas de otras funcionalidades que tampoco solucionan mucho en entornos productivos(siempre se trabaja con un repositorio, y aquí no veo que vaya a cambiar codigo del repositorio).
    Que no tiene Jenkins que si tenga Dynatracer?
    Un saludo.

Dejar respuesta

Please enter your comment!
Please enter your name here