Monitorización y análisis de rendimiento de aplicaciones con InspectIT APM

1
3636

Después de investigar sobre herramientas open source de APM nos encontramos con inspectIt, un proyecto con licencia Apache 2.

Monitorización y análisis de rendimiento de aplicaciones con InspectIT APM.

0. Índice de contenidos.


1. Introducción

Después de trabajar con
New Relic,
AppDynamics o
Dynatrace y
haber trasteado también con
PinPoint,
en este tutorial vamos a probar otra herramienta open source llamada inspectIt.

Se basa en los mismos principios que el resto, tiene un agente, un server (CMR) y un cliente basado, esta vez, en la
plataforma Eclipse.

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
  • InspectIt 1.7.3


3. Instalación.

Como casi todas, podemos realizar una descarga del producto dockerizado o realizar una instalación, accediendo a la página de descarga
http://www.inspectit.rocks; para el objetivo de este tutorial vamos a realizar una instalación,
seleccionando primero el sistema operativo.

inspectit-01

y después la versión

inspectit-02

una vez descargado, podemos acceder al paquete de instalación ejecutando el siguiente comando:

macbook-jmsanchez:Downloads jmsanchez$ java -jar inspectit.installer-all.macosx.x64-1.6.9.83.jar

Que lanzará un wizard de instalación

inspectit-03

Aceptamos la licencia

inspectit-04

Seleccionamos los componentes a instalar

inspectit-05

Y el directorio de instalación

inspectit-06

Que, como no existe, se creará

inspectit-07

Una vez instalados los paquetes

inspectit-08

La instalación ha finalizado

inspectit-09

Sólo nos queda arrancar el servidor (CMR):

macbook-jmsanchez:CMR jmsanchez$ ./startup.sh 
2016-09-16 16:07:25,216: 214    [           main] INFO      rocks.inspectit.server.CMR - Central Measurement Repository is starting up!
2016-09-16 16:07:25,218: 216    [           main] INFO      rocks.inspectit.server.CMR - ==============================================

...

2016-09-16 16:07:32,251: 7249   [           main] INFO      rocks.inspectit.server.CMR - Spring successfully initialized
2016-09-16 16:07:32,252: 7250   [           main] INFO      rocks.inspectit.server.CMR - Starting CMR in version 1.6.9.83. Please note that inspectIT does not provide any guarantee on backwards compatibility. Only if the version match exactly we ensure that the components are compatible.
2016-09-16 16:07:32,252: 7250   [           main] INFO      rocks.inspectit.server.CMR - CMR started in 7036.505 ms

Y configurar el agente en un servidor para que comience a enviar información añadiendo en los parámetros de arranque los siguientes argumentos:

-javaagent:/Applications/development/inspectIT/agent/inspectit-agent.jar  -Dinspectit.repository=localhost:9070 -Dinspectit.agent.name=TOMCAT_9

Debería quedar como sigue:

inspectit-10

Tras navegar por la aplicación comenzará a enviar información al servidor. Podemos comprobar en los logs de arranque del propio servidor información sobre la conectividad.

sep 16, 2016 11:27:31 PM rocks.inspectit.agent.java.javaagent.JavaAgent premain
INFO: inspectIT Agent: Starting initialization...
23:27:33.149 [main] INFO rocks.inspectit.agent.java.SpringAgent - Location of inspectit-agent.jar set to: /Applications/development/inspectIT.1.7/agent/inspectit-agent.jar
2016-09-16 16:27:33,569: [inspectIT] 446    [           main] INFO  spectit.agent.java.SpringAgent - Initializing Spring on inspectIT Agent...
2016-09-16 16:27:34,296: [inspectIT] 1173   [           main] INFO  nfig.impl.ConfigurationStorage - Repository information found in the JVM parameters: IP=localhost Port=9070
2016-09-16 16:27:34,296: [inspectIT] 1173   [           main] INFO  nfig.impl.ConfigurationStorage - Repository definition added. Host: localhost Port: 9070
2016-09-16 16:27:34,296: [inspectIT] 1173   [           main] INFO  nfig.impl.ConfigurationStorage - Agent name found in the JVM parameters: AgentName=TOMCAT_8
2016-09-16 16:27:34,319: [inspectIT] 1196   [           main] INFO  nfig.impl.ConfigurationStorage - Agent name set to: TOMCAT_8
2016-09-16 16:27:34,409: [inspectIT] 1286   [           main] INFO  izer.schema.ClassSchemaManager - ||-Class Schema Manager started..
2016-09-16 16:27:34,751: [inspectIT] 1628   [           main] INFO  nection.impl.KryoNetConnection - KryoNet: Connecting to localhost:9070
2016-09-16 16:27:36,598: [inspectIT] 3475   [           main] INFO  nection.impl.KryoNetConnection - KryoNet: Connection established!
2016-09-16 16:27:36,863: [inspectIT] 3740   [           main] INFO  nfig.impl.ConfigurationStorage - Agent configuration added with following configuration interface properties:
2016-09-16 16:27:36,863: [inspectIT] 3740   [           main] INFO  nfig.impl.ConfigurationStorage - Assigned environment: Default Environment
2016-09-16 16:27:36,863: [inspectIT] 3740   [           main] INFO  nfig.impl.ConfigurationStorage - Active profiles:
2016-09-16 16:27:36,864: [inspectIT] 3741   [           main] INFO  nfig.impl.ConfigurationStorage - |-[Common] SQL
2016-09-16 16:27:36,864: [inspectIT] 3741   [           main] INFO  nfig.impl.ConfigurationStorage - |-[Common] HTTP
2016-09-16 16:27:36,864: [inspectIT] 3741   [           main] INFO  nfig.impl.ConfigurationStorage - |-[Common] Exclude Classes
2016-09-16 16:27:36,864: [inspectIT] 3741   [           main] INFO  nfig.impl.ConfigurationStorage - Options:
2016-09-16 16:27:36,864: [inspectIT] 3741   [           main] INFO  nfig.impl.ConfigurationStorage - |-class loading delegation: true
2016-09-16 16:27:36,864: [inspectIT] 3741   [           main] INFO  nfig.impl.ConfigurationStorage - |-enhanced exception sensor: false
2016-09-16 16:27:36,864: [inspectIT] 3741   [           main] INFO  nfig.impl.ConfigurationStorage - Class-cache exists on the server: true
2016-09-16 16:27:36,865: [inspectIT] 3742   [           main] INFO  nfig.impl.ConfigurationStorage - Number of initially instrumented classes: 26
2016-09-16 16:27:37,354: [inspectIT] 4231   [           main] INFO  spectit.agent.java.SpringAgent - Spring successfully initialized
2016-09-16 16:27:37,355: [inspectIT] 4232   [           main] INFO  spectit.agent.java.SpringAgent - Using agent version 1.7.3.86.


4. Un vistazo rápido.

Dentro de la carpeta inspectit del directorio de instalación encontraremos un ejecutable para arrancar el cliente de monitorización
que debería mostrar una interfaz como la siguiente.

inspectit-11

Accediendo a local CMR podremos comprobar como se muestra la información remitida por el agente.

inspectit-12

Pulsando sobre una transacción podemos acceder a su drill down

inspectit-13

La información se puede almacenar

inspectit-14

Creando un almacén

inspectit-15

Seleccionado un agente para almacenar esa información

inspectit-16

La información a almacenar

inspectit-17

E indicando o no un límite para la monitorización

inspectit-18

Podemos filtrar la información sobre las transacciones de entre un rango horario

inspectit-19

Pulsando sobre botón derecho > detalles podemos acceder a la siguiente información

inspectit-20

La información a monitorizar se puede configurar añadiendo más perfiles y modificándolos

inspectit-21

Si pulsamos sobre Http timer data, podemos acceder a la infomación agregada por URLs

inspectit-22

En una aplicación con más tráfico se mostraría una información como la siguiente

inspectit-23

Desde esa vista podemos acceder a la información individual sobre cada una de las transacciones realizadas desde esa misma URL

inspectit-24

En una transacción con acceso a base de datos el drill down se mostrará como sigue:

inspectit-25

Y pulsando sobre la pestaña inferior de SQL podremos acceder a la siguiente información:

inspectit-26

Si accedemos al detalle de la SQL ejecutada podemos ver una información como la siguiente:

inspectit-27

Por último podemos visualizar la información en forma de gráfico si seleccionamos las transacciones botón derecho > «Navigate to» > «Display in Chart»

inspectit-28

Que mostraría un gráfico como el siguiente:

inspectit-29


5. Referencias.


6. Conclusiones.

Le falta un componente muy interesante que sí tiene el resto de APMs con los que hemos trabajado hasta ahora:
el dashboard de componentes, aquél que muestra todos los servidores y motores de bases de datos monitorizados.

Del mismo modo que con PinPoint, le haremos un seguimiento.

Un saludo.

Jose

1 COMENTARIO

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad