Finalmente! ya esta en productivo pero ¿funciona bien nuestra web app?

¿Se han preguntado, bueno finalmente ya esta arriba ahora como monitoreamos una aplicación web? Vamos a platicar por qué la observabilidad y el monitoreo son parte fundamental en la infraestructura de los negocios de hoy en día.

New Relic Logo ( Imagen con derechos de autor).

Bueno lo primero será conocer ¿cual es la diferencia entre monitoring y observability? ¿es observability solo un nuevo buzzword que hacen los chicos de mercadotecnia? ¿ es observability un monitoreo pero con esteroides?.

Y hasta ahi vamos a dejar las interrogantes por que que si no el artículo se hace eterno.

¡Ojo! según leo, no existe la palabra observabilidad, así que voy a usar el anglicismo observability, así tal cual, ustedes disculpen, si encuentran un mejor expresión por favor háganmela saber (y la palabra monitoreo si existe, pero voy a seguir usando monitoring solo para seguir con la línea del artículo).

La palabra observabilidad no está en el diccionario.

Monitoreamos aplicaciones para detectar problemas y anomalías, como solucionadores de problemas tenemos que encontrar la causa raíz de los problemas y ganar ideas o elementos y tomarlos como requerimientos de capacidad y tendencias de rendimiento al paso del tiempo.

Esto es la parte básica, pero el monitoreo ha evolucionado para soportar muchos mas a los stakeholders o partes interesadas. Durante el desarrollo de la aplicación, estos amigos usan el monitoreo para correlacionar las prácticas de código en resultados de rendimiento, mientras los arquitectos pueden validar que patrón en la nube y modelos entrega la mayor inversión por el dinero.

De hecho no es un termino nuevo, el termino viene del mundo de la teoría e ingeniera de control.

Básicamente como lo define Wikipedia, observability, mide que tan bien los estados internos de un sistema pueden ser inferidos del conocimiento de sus salidas externas . Así que en contraste al monitoreo que es algo que realmente hacemos, observability es un sustantivo, es más una propiedad de un sistema. Por lo tanto, si nuestro viejo buen sistema de TI y aplicaciones no externan adecuadamente su estado, entonces incluso el mejor monitoreo puede quedarse corto.

Observability es importante hoy en día cuando consideramos ambas características de aplicaciones modernas y el ritmo en que estas están siendo entregadas.

Es critico entonces que mejores y modernas herramientas sean empleadas para tener un mejor entendimiento de las propiedades de una aplicación y su desempeño a medida que un complejo sistema distribuido toma forma a través de las tuberías de entrega hasta productivo.

New Relic es una empresa basada en a San Francisco, California-based technology company which develops cloud-based software to help website and application owners track the performances of their services.

Con New Relic podemos monitorear diferentes tipos de aplicaciones y por supuesto las basadas en el navegador.

Bueno primero hay que abrir una cuenta en el sitio de New Relic, de ahi vamos a la opción de New Relic Browser, la cual mostrará la siguiente imagen.

Instalamos el agente APM

Un agente New Relic es una pieza de software que instalamos en la aplicación o en un host para enviar datos del desempeño a New Relic.

New Relic, como una solución en tiempo real SaaS-based, provee manejo de desempeño de aplicaciones para Java, .NET, PHP, Python, Ruby, Go, PHP y Node Web applications, e incluso a aplicaciones móviles Android y iOS.

Voy a instalar Node.

Una vez que el agente este propiamente instalado y los datos de tu aplicación se estén reportando comenzaremos a ver los datos acerca de esta en el APM UI (más adelante).

Creamos un directorio que se llame miapp (o como ustedes gusten) donde vamos a crear una aplicación con express muy sencilla.

Creamos un app.js dentro este directorio .

var express = require('express');
var app = express();

app.get('/', function (req, res) {
res.send('¡Hola Mundo!');
});

app.listen(3000, function () {
console.log('Example app listening on port 3000!');
});

Nada elegante. La aplicación inicia un servidor y escucha las conexiones en el puerto 3000. La aplicación responde con “¡Hola Mundo!” para las solicitudes al URL raíz (/) o a la ruta raíz. Para cada vía de acceso diferente, responderá con un error 404 Not Found.

Ejecutamos la aplicación.

$ node app.js
OK, tenemos la aplicación corriendo en el puerto 3000

Después de este verificarnos que este corriendo, con el siguiente comando creamos el package.json que es el archivo de configuración, solo hay que seguir los pasos que se indican. Mas abajo cuando ejecuto el comando npm install newrelic pongo la bandera — save precisamente para agregar al package.json esta dependencia. Cualquiera de los dos caminos funciona.

$ npm init

Muy bien, ahora seguimos los siguientes pasos: 1. Obtener la licencia 2. Instalar el Agente via npm.

Hay que darle clic en el botón naranja ara obtener la licencia, asegurénse de copiarla y guardarla.

Y bueno, como se muestra en la imagen anterior ejecutamos el siguiente comando npm para bajar las dependencias de new relic.

$ npm install newrelic --save

Configuramos el archivo newrelic.js

Para esto copiamos el archivo newrelic.js de node_modules/newrelic al directorio raíz de nuestra aplicación.

Estructura de archivos en raíz.

Establecemos un valor para app_name.

Y obviamente reemplazamos el valor de la licencia con el que obtuvimos previamente. Solo se ve el botón naranja, cuando le dan click se despliega.

newrelic.js

Debemos agregar la librería newrelic al archivo app.js como se muestra a continuación.

var nr = require('newrelic');
var express = require('express');
var app = express();

app.get('/', function (req, res) {
res.send('¡Hola Mundo!');
});

app.listen(3000, function () {
console.log('Example app listening on port 3000!');
});

Hacemos el deployment otra vez, obviamente en la UI no vamos a ver cambio alguno.

Ingresamos al dashboard.
Esperamos un momento.

Listo, deberán ver algo como la siguiente imagen, jaja bueno no, por que pues lógicamente no tenemos mucho mejor dicho que mostrar. ;-) La imagen fue tomada del sitio de New Relic para fines demostrativos.

New Relic APM

Más bien esta es la imagen que van a ver originalmente.

Imagen apenas integramos nuestra app con express y New Relic APM.

Si le dan clic en el nombre , en este caso Demo-Alex desplegará el dashboard.

Pero por lo pronto no hay mucho que mostrar. Tendremos que generar tráfico en nuestra app.

Pues esta fue la instalación, debería ser rápida y expedita.

Pero de aquí se despliegan un millón de opciones que nos tomarán tiempo, así que ire haciendo una serie al respecto para analizar una aplicación node JS (o incluso en otra tecnología) con New Relic APM paso a paso.

Y escribiré más no solo APM y del monitoreo sino de observability, que fueron los temas con que abrimos este artículo.

Nos seguimos leyendo.

Alex ;-)

An Inclusive Event Series for Monitoring and Observability Practitioners http://monitorama.com/#speakers

https://sdtimes.com/new-relic/new-relic-extends-app-performance-software-to-mobile/

Cheerleader in chief for KMMX, RPA Enthusiast, DevOps, Technical Writer & International Speaker, Dad & 2 cats.

Cheerleader in chief for KMMX, RPA Enthusiast, DevOps, Technical Writer & International Speaker, Dad & 2 cats.