sábado, junio 09, 2007

Probando Wily Introscope

sábado, junio 09, 2007 por Martín

Durante esta semana de cuatro días (el lunes era festivo en Irlanda) he estado bastante ocupado. Me ha tocado evaluar Introscope de Wily, empresa que CA compró el año pasado, así que he compartido miércoles, jueves y viernes con dos consultores de la compañía, y un tercero de su partner en Irlanda. En fin, que me han hecho un marcaje muy directo intentando mostrarme las maravillas de su producto.

Y la verdad es que me ha quedado una cosa muy clara. Si en algún momento fuese comercial, tengo claro que querría vender algo como Introscope. Es decir, un producto maduro, avanzado, con montones de funcionalidades y que no me deje el culo al aire cuando voy a un cliente.

A partir de aquí OJO! porque esto va a derivar en publicidad gratuita de un producto comercial :-)

El producto es espectacular. Funciona de la siguiente manera: Introscope se instala en un servidor central donde tiene una base de datos de eventos. Posteriormente instalas agentes en las diferentes partes que quieras monitorizar como WebLogic, WebSphere, Tomcat, MQ Series, Oracle, o cualquier otro producto soportado. Estos agentes normalmente se ejecutan como agentes Java que se encargarán de instrumentar toda clase que intente cargarse en la virtual machine. La instrumentación es muy flexible y, todavía más importante, configurable, y va desde contar el número de invocaciones a métodos, calcular el tiempo de respuesta, realizar cálculos complejos, segregar en base a parámetros, capturar excepciones, etc.

El producto inicialmente viene con una instrumentación por defecto que captura todo lo relativo a errores, EJBs, Servlets, CPU, Garbage Collection, y todas estas cosillas, más que suficiente para empezar. Pero posteriormente tú puedes escoger que paquetes o clases instrumentar, y por supuesto esto incluye tus propias aplicaciones. También trae, como era de esperar, soporte de JMX, y aunque inicialmente sólo monitoriza unos cuantos MBeans, tú puedes cambiar eso después para que monitorize los que tu quieras, incluso los tuyos claro.

Todos estos agentes capturarán toda esa información y la envían al servidor central. Para acceder a ella se utiliza una aplicación de escritorio o también se puede acceder mediante una consola web. Es decir, el único overhead que añade el producto en los servidores de aplicaciones es el enviar todas las métricas cada 15 segundos, que es el intervalo que se utiliza para actualizar los datos en el servidor central. Como era de esperar, cuantas más clases más overhead.

Toda esta información se renderiza después en forma de árbol donde hay colgando miles de métricas que ofrecen gráficas interesantes. En las gráficas se pueden definir alertas de aviso o peligro, crear acciones (enviar emails, ejecutar scripts), crear informes de explotación, y lo más interesante, diseñar cuadros de mandos donde simplemente copias y pegas las gráficas en las que estés más interesado. Los cuadros de mando son multinivel, así que puedes hacer lo típico de empezar con un cuadro orientado a dirección y terminar en uno orientado al equipo de operaciones.



En la comunidad de Wily (sólo para clientes) se pueden descargar gratuitamente diferentes módulos para monitorizar: Spring, Hibernate (lo probamos), JPA, Garbage Collection, y cosillas así.

Otra de las funcionalidades más espectaculares es la de traza de sesiones. Ahí Introscope funciona como un profiler, y te traceará todo a nivel de milisegundos. Después te muestra bonitos gráficos de como se han ejecutado las diferentes transacciones, puedes ver los errores que se han producido, el tiempo que ha llevado cada paso de la transacción e incluso monitorizar queries SQL o procedimientos almacenados y ver su tiempo de ejecución y cosas así.

Más o menos lo mismo para los errores. El manager te mantiene un historial con todos los errores que se van produciendo en los diferentes agentes. Una ventana de consultas históricas te permite buscar errores en el pasado, pues por ejemplo cuando vuelves del fin de semana (como me tocará a mi el lunes).

El producto a mayores trae una serie de añadidos que le dan más interés si cabe. Un detector de cambios (ChangeDetector) en el que puedes decirle a Introscope que monitorize cambios sobre diferentes tipos de fichero: Clases Java, ficheros de texto o binarios, propiedades de la virtual machine, etc. Después Introscope te muestra una barra horizontal en la línea de tiempo de las gráficas donde resalta los momentos de tiempo en los que se ha detectado un cambio, y puedes ver también los cambios realizados. A nivel de cambio, sólo decir que hasta te permite hacer diff para ver lo que ha cambiado. De este modo es muy fácil detectar cambios bruscos en el rendimiento que se han debido a algún cambio en la configuración.

Otro añadido muy interesante es su EPA (Enterprise Performance Agent, creo). Básicamente es una aplicación que se puede ejecutar en cualquier máquina y que lanzá scripts realizados en Perl, Java y cualquier otro lenguaje. La única condición de esos scripts es que tienen que volcar métricas en un formato especial de clave,valor. EPA recoge la salida de esos scripts y las envia al Enterprise Manager central. Nosotros por ejemplo instalamos un par de scripts de perl para enviar la salida de netstat y vmstat hacia el servidor central, con lo que puedes ver en tu cuadro de mandos la salida de cualquier programa de este estilo. Ni que decir tiene que nuestro a nuestro jefe de operaciones le caía la baba cuando veía que podía tener vmstat en gráficos, a todo color, y acompañado de otras métricas de negocio.

Después tendríamos el LeakHunter que más que nada resulta útil en tiempo de desarrollo ya que lo único que hace es llevar cuenta del tamaño de todas las colecciones de datos (según Wily fuente del 80% de los memory leaks) que hay en el sistema y conforme avanza el tiempo te avisará si realmente es un leak o no.

Bueno, no me enrollo mucho más que no me dan comisión. Eso sí, este producto es muy recomendable si como nosotros tenéis un software que se vende en base a SLAs. No sólo te permite probar que estáis cumpliendo vuestros SLAs sino que además es una herramienta con la que realmente puedes probar que los estás cumpliendo. Definitivamente, salir a producción con una herramienta como esta es mucho más sencillo.

Ah, ¿el precio? Como era de esperar, no apto para todos los bolsillos. No os digo más pero hablamos de cifras en torno a las decenas de miles de euros. En este caso se cumple lo de "el que algo quiere algo le cuesta".

¿Alguno tiene experiencia con Introscope? ¿Qué herramientas utilizáis vosotros?

comments

4 Respuestas a "Probando Wily Introscope"
Joserra dijo...
10:55

Yo me quede con ganas de probarlo en una empresa anterior. Pero el precio nos echo atrás. Desde luego lo que comentan de ese producto son maravillas.
Al final acabamos usando el JProbe, pero claro, la filosofía es diferente, únicamente siendo apto para evaluar tu aplicación en desarrollo (por su coste de recursos) Por lo menos hace un par de años.


Martín dijo...
11:58

Sí, ambas cosas son ciertas, es muy caro, y la filosofía es diferente de JProbe. Lo primero que ya te avisan es que no es un profiler (aunque puedes usarlo como tal pero entonces la carga es inmensa).

Nosotros utilizamos JProfiler y va muy bien, pero claro, es lo que dices, al igual que JProbe ocupa muchísima memoria, CPU, y las métricas que ofrece son muy orientadas a desrrollo.


Maria dijo...
14:57

Me gustaría que me confirmarais si Introscope permite la obtención de la complejidad esencial y ciclomatica, ya que en la propia documentación de la herramienta no soy capaz de localizarlo.
GRACIAS


Martín dijo...
15:12

No. Introscope no es un software de cálculo de métricas del software.

Aunque probablemente se pudiera implementar algún script que las calculase.