En el 2017 asistí a la conferencia de New Relic en San Francisco, donde entre otras cosas asistí a un tutorial bien interesante para aprender New Relic. Esta herramienta es un servicio en el cloud que permite recolectar información sobre el funcionamiento interno de un sistema y el uso de recursos como para controlar y mejorar el rendimiento de las mismas.
De las cosas que me resultó más atractivo es que tenían una aplicación con un problema de performance, a propósito, para aprender New Relic y sobre análisis de performance. Esa aplicación es de código abierto y se puede encontrar acá: https://github.com/philweber/spring-petclinic
Te dejo acá algunos apuntes y capturas que tomé durante el tutorial.
Instalación del agente
El docente primero comenzó instalando el agente en el servidor que se quería monitorizar. Este tipo de herramientas de APM funcionan con agentes que se instalan en los componentes a monitorizar y ellos recolectan la información y lo envían al servidor de New Relic. Al instalar el agente este reconoció las tecnologías de la aplicación a monitorizar automáticamente y así comienza a guardar la información en forma centralizada.
Metodología de análisis
Como ya comenté la aplicación que estábamos probando tiene algunos problemas introducidos a propósito.
Lo primero que se planteó fue ver que el percentil 95 de los tiempos de respuesta era alto en un rango de tiempo, lo cual significa que el 5% de los usuarios tuvieron una experiencia peor que ese valor.
Desde ese overview se puede observar el problema y poner foco en el período de tiempo que queremos analizar, seleccionando sobre el gráfico. Aplicado ese filtro podemos acceder al histograma de tiempos de respuesta viendo los métodos en los que la aplicación se quedó procesando más tiempo
Así se puede analizar si hay loops, si hay demasiadas llamadas a un servicio, etc, y luego yendo a synthetic transactions, transactions details podemos hacer un análisis bien fino de lo que hizo la aplicación en ese momento.
Alertas
New Relic se puede usar como una herramienta de diagnóstico, como lo que comentaba recién, o como una herramienta de alertas, configurando notificaciones ante la aparición de determinados eventos o al sobrepasar ciertos umbrales.
Apex
New Relic maneja una métrica considerando la satisfacción del usuario en base al tiempo de respuesta de la página. Le llaman Apex por application performance index, y la siguiente slide muestra la explicación de la misma.
Por cada request que el usuario queda “frustrado” New Relic decide capturar información de la traza del mismo.
Synthetics
También habló de New Relic Synthetics, del cual estuve ya comentando en un post bastante tiempo atrás.
Y vos, ¿has usado New Relic o algún otro APM?
Hola Federico, sigo tu blog con gusto.
Te hago llegar una consulta, me dedico a la seguridad informática, tienes alguna experiencia en testeos de seguridad en entornos de delivery continuo? Yo estoy proponiendo las instrumentación de Sonarqube en Jenkins, pero me pregunto si en tus diferentes congresos pudiste tener contacto con otras herramientas.
Saludos,
ÁLVARO
Álvaro, qué tal? gracias por la pregunta.
Lo que he visto y hemos experimentado es sí, Sonarqube (para chequeos estáticos que revela vulnerabilidades) y también en clases en UCU los alumnos probaron una herramienta para hacer otras verificaciones más. Conté la experiencia acá http://federico-toledo.com/pruebas-de-seguridad-en-continuous-integration-con-vaddy/
Espero sirva!