En este tutorial vamos a ver qué es la herramienta New Relic y cómo monitorizar nuestras aplicaciones web usando esta opción.
0. Índice de contenidos
- 1. Introducción
- 2. Entorno
- 3. ¿Qué es New Relic?
- 4. Instalando
- 5. Configuración.
- 6. Monitorización.
- 7. Conclusiones
- 8. Referencias
1. Introducción
Monitorizar nuestras aplicaciones web es la mejor forma de comprobar cómo se comportan. Además nos permite ver los tiempos de respuesta de nuestros componentes, estadísticas sobre el rendimiento…
Existen varias herramientas; ya Alberto Barranco nos contaba cómo usar AppDynamics.
New Relic nos permite realizar este tipo de tareas de una forma rápida y sencilla, además de hacerlo mediante una interfaz agradable e intuitiva. Durante el tiempo que estemos leyendo este tutorial aprenderemos a instalar y monitorizar una aplicación web java, aunque veremos que hay más posibilidades a explotar y que se dejan como «ejercicio» para el lector.
2. Entorno
El tutorial está escrito usando el siguiente entorno:
- Hardware: Portátil MacBook Pro 15′ (2.4 Ghz Intel Core I5, 8GB DDR3).
- Sistema Operativo: Mac OS Yosemite 10.10.4
- Entorno de desarrollo:
- Eclipse Mars
- Versión de Java: JDK 1.8
- NewRelic
3. ¿Qué es New Relic?
A estas alturas ya tenemos una idea básica de lo que es NewRelic: una herramienta de monitorización. Pero vayamos un poco más allá: ¿Qué nos permite hacer?
Este software es capaz de realizar las siguientes tareas (entre otras muchas):
- Monitorizar Conexiones HTTP (tiempos de respuesta, nº de peticiones…).
- Monitorización de errores (avisos cuando se detectan fallos de ejecución o conexión).
- Fijar alertas sobre datos de referencia (tiempos de respuesta, errores de autenticación…).
- Estadísticas de rendimiento en distintos dispositivos (uso de memoria, velocidad de respuesta,…).
- Estadísticas de usuarios que la usen según el SO utilizado.
Esta herramienta además soporta diferentes plataformas:
Aplicaciones WEB (APM)
Permite monitorizar aplicaciones web en los siguientes lenguajes:
- Ruby
- PHP
- Java (la miraremos un poco más en detalle)
- .NET
- Python
- NodeJs
Aplicaciones Móviles (Mobile)
Permite monitorizar nuestras aplicaciones para móviles (Android, iOS y Titanium).
Navegadores (Browser)
Permite monitorizar nuestro sitio sobre el navegador del usuario (tiempo de respuesta, tiempo de carga de elementos…).
Usuarios (Synthetics)
Permite simular usuarios (tanto flujo como interacciones) para anticiparse a los errores. Usa el servicio de alertas para avisar de esto.
Servidores (Servers)
Nos da una vista del servidor desde la perspectiva de la propia aplicación.
Otros
Además de las características arriba descritas, nos ofrece un amplio abanico de Plugins para ayudarnos con ellas, e incluso añadir nuevas funcionalidades.
Como conclusión a esta pequeña review sobre NewRelic, mencionar que tiene soporte en la nube y que se puede integrar con Docker, herramienta que nos explicaba nuestro compañero Jorge Pacheco aquí.
4. Instalando
¡Pero basta de teoría! Somos informáticos y nos gusta ir al grano, a tener algo tangible que poder toquetear a nuestro gusto. No os hago esperar más.
Supongamos que tenemos una aplicación web hecha en java y montada sobre un Tomcat. El primer paso es ir a la web de New Relic y crearnos una cuenta.
Una vez creada la cuenta, nos logueamos y aparecerá la pantalla principal:
Seleccionamos el agente web de Java, y la pantalla nos mostrará una serie de pasos a seguir que resumiremos aquí brevemente:
- Apuntar el número de licencia (para comprobar que el agente tiene la misma).
- Descargar el fichero .zip que contiene el agente
- Instalar el agente (ver a continuación).
- Redesplegar la aplicación (reiniciar el servidor y volver a lanzar la app).
- Iniciar sesión en New Relic y ver los datos (entre 2 y 5 min).
Instalar el Agente
Una vez descargado el paquete que contiene el agente, entramos en el directorio donde esté ylo decomprimimos en el directorio raíz de nuestro servidor de aplicaciones (la raíz de la instalación del Tomcat) mediante el comando:
unzip newrelic-java.3.19.2.zip -d /ruta/al/servidor/
Por ejemplo, en este caso, la ruta es «/Users/rodrideblas/Servers/apache-tomcat-8.0.23/»
Esto nos creará un directorio newrelic en dicha localización. Ahora vamos al directorio recién creado:
cd /ruta/al/servidor/newrelic
y ejecutamos el comando de instalación:
java -jar newrelic.jar install
5. Configuración.
Ahora nos vamos a fijar en el fichero newrelic.yml. Este fichero es el archivo de configuración del agente. En él se pueden configurar, entre otras cosas, el nivel de trazas de log que se guardarán (en una carpeta log) y el nombre de la aplicación (parámetro app_name, se recomienda que sea el mismo que la aplicación a monitorizar).
Hay mas información sbre este fichero aquí.
Por último, hay que especificar a la JVM de Java que vamos a usar el agente. Para ello, le pasamos el siguiente argumento en la línea de comandos:
-javaagent:/ruta/al/archivo/newrelic.jar
En este caso tenemos desplegada la aplicación desde Eclipse, por lo que este argumento se lo pasamos haciendo click derecho en la aplicación y seleccionando Run as -> Run Configurations….
En la ventana que se abre, seleccionamos la pestaña Arguments y dentro de ésta, VM arguments. Añadimos la línea
-javaagent:/ruta/al/archivo/newrelic.jar
al final de los demás argumentos. Una vez realizado, pulsamos Apply y luego Close.
IMPORTANTE: El servidor debe estar parado para que se apliquen los cambios.
6. Monitorización
Una vez hemos instalado y configurado el agente, reiniciamos el Tomcat y lanzamos la aplicación. Tras unos minutos usándola (si no nos apetece hacerlo a mano podemos utilizar herramientas como JMeter, de la que Jose María Toribio y Carlos García nos dejaron unos tutoriales muy útiles), en la pantalla de monitorización.
A ésta se accede iniciando sesión en https://rpm.newrelic.com/
Ya dentro de ella, seleccionamos la aplicación y tendremos una pantalla similar a esta:
En este caso no se ha generado mucho tráfico; si se usa más tiempo y más usuarios, las gráficas mostrarán aspectos diferentes.
En el menú lateral izquierdo vemos las diversas opciones que existen para monitorizar las aplicaciones que despleguemos; cada una nos ofrece información y valores sobre los elementos de nuestra aplicación (peticiones, servicios, mapa de componentes,…).
Echemos un vistazo a estas opciones, a ver qué podemos encontrarnos:
-
Monitoring (Monitorización)
- Overview: Esto nos da información sobre el tiempo de respuesta de las transacciones web que se van realizando a lo largo del tiempo, el Throughput del sistema, las transacciones, el ratio de error… de cada uno de los nodos del sistema (en esta caso, JVM y Postgres).
- Service Maps: Mapa de la aplicación. En este caso, un nodo con la aplicación y otro con la base de datos de PostgreSQL.
- Transactions: Información sobre las transacciones y su throughput. Si se selecciona “Java” en el tipo, se muestran las funciones usadas y su uso de CPU y memoria).
- Databases: Aquí aparece la información relativa a las bases de datos que se usan, mostrando las querys y sus tiempos, la respuesta de la BD, el tipo de query…
- External Services: Servicios externos que usa nuestra aplicación. en este caso, ninguno, ya que no se usa un servicio externo.
- JVMs: Máquinas Virtuales de Java que usa la aplicación. Nos da información sobre el uso de memoria del Heap en MB, el tiempo de respuesta, el espacio usado, información sobre el Garbage Collector…
-
Events (Alertas y errores)
- Errors: Errores que da la aplicación y sus trazas.
- Alerts: Configurador de alertas en función de un umbral.
- Deployments: Información sobre despliegues de nuestra aplicación. Para ello, es necesario grabarlos (dan una URL para más info).
- Thread Profiler: Monitorizador y grabador de hilos durante un cierto tiempo, para visualizar cuellos de botella en el código de la aplicación, fallos, tiempos de CPU, tiempo de transacciones…
-
Reports (Informes)
- Varios tipos de informes sobre Disponibilidad, Escalabilidad, Transacciones, Bases de Datos y Tareas en segundo plano. Deben configurarse en la sección de Configuración (Settings).
-
Settings (Configuración)
- Opciones y configuración de New Relic para la monitorización de la aplicación.
-
Alerts (Avisos)
- Política de avisos e historial de notificaciones.
Se puede encontrar mucha más documentación sobre cada una de las funciones de New Relic en este documento. Os recomiendo que le echéis un vistazo mas a fondo y probéis diversas configuraciones.
7. Conclusiones
Las herramientas de monitorización son una muy buena manera de tener nuestras aplicaciones controladas y obtener información extensa y detallada sobre su comportamiento. Hemos mencionado que existen varias herramientas de este estilo y nos hemos centrado en una muy potente (a mi parecer): New Relic.
New relic nos ofrece muchísimas opciones de monitorización, con una instalación sencilla y rápida. Ya que sólo hemos probado la versión gratuita de demo (activa durante 14 días), la verisón pro ofrece muchas más posibilidades que nos ayudarán a la hora de gestionar el comportamiento de las aplicaciones que desarrollemos.
Además hemos visto que esta herramienta nos ofrece servicios más allá de centrarnos en la aplicación, ya que podemos monitorizar navegadores, simular usuarios, obtener información de los servidores desde el punto de vista de la aplicación…
En definitiva, New Relic es una herramienta muy potente y de fácil uso que tiene mucho que ofrecer.
Espero que estos párrafos os animen a usar esta herramienta. ¡Un saludo!
Rodrigo de Blas
Gracias por tu explicación
Hola Rodrigo,
Tienes una errata en el apartado 3. Está cambiado el contenido de Navegadores (Browser) por el de Usuarios.
Un saludo,
Dani
nice blog and article ..