Entradas

Mostrando entradas de marzo, 2016

Script recolector de métricas

Imagen
Al probar una aplicación debemos contar con herramientas que recaben información por nosotros y las resguarden para su posterior consulta.

Instalación (Fedora 22)
# dnf install -y sysstat



Manos a la obra

Normalmente, cuando se tiene el JAVA_HOME establecido como debe ser, tendremos disponible el comando jps, el cual nos ayuda a indentificar los procesos Java que están siendo ejecutados al momento. Si solo existe un proceso Java, podemos evitarnos la tarea de estar buscándolo a cada reinicio. Con la siguiente cadena de comandos, podemos realizar de manera automática el guardado de las métricas.
while(true) do date +'%Y-%m-%d,%T,'| tr -d '\n'; ps -p `jps | grep Main | awk '{print $1}'` -o etime,%cpu,%mem,rss,cmd; sleep 1; done > metricas.log
A continuación le damos un poco de tratamiento para que se vea claro lo que buscamos.
head -n1 metricas.log | awk '{print $1,$2,$3,$4}' > tmp.log; cat metricas.log | awk '{print $1,$2,$3,$4}' | sed '/CP…

Un bajo consumo de CPU durante pruebas no significa que todo vaya bien.

Imagen
Un monitoreopobre durante las pruebas de QA se traduce en problemas y dolores de cabeza en producción, en especial, para los administradores. En las aplicaciones basadas en Java, existen componentes intrínsecos a los servidores de aplicaciones/JVM, como el GC. También existen los componentes de las aplicaciones, como los hilos http o las conexiones abiertas hacia base de datos o ldaps.
Es importante tener la visión completa desde que llega una petición hasta que ésta es retornada. Tengo que decir que debemos ser cuidadosos con los costos de la demasía en el monitoreo, en especial, por el overhead que ésto conlleva. En papel o en una herramienta de software, es posible realizar un mapa con las dependencias a otros servicios, la interacción que tiene; el cual posteriormente podemos anexar en el test plan. Ésto nos ayudará a plasmar y detectar los sitios donde colocaremos nuestros scripts recolectores.
El leitmotiv de este post es describir la importancia de mirar las entrañas de la JVM du…