Video Summary and Transcription
Nathan Mars, líder técnico en Grafana Labs, presenta la observabilidad para aplicaciones JavaScript, resaltando la efectividad de la depuración y solución de problemas con la observabilidad. Open Telemetry se presenta como una forma estandarizada de obtener datos del sistema y Grafana como una plataforma para monitorear métricas, registros, trazas y perfiles. La charla también enfatiza la aplicabilidad de la observabilidad en el front-end utilizando GrafanaFerro para recopilar métricas como la carga de la página, errores y sesiones de usuario.
1. Introducción a la Observabilidad
Hola, soy Nathan Mars, el líder técnico de Grafana Labs. Permíteme mostrarte cómo llevar la observabilidad a tus aplicaciones JavaScript. Aprende a depurar y solucionar problemas en aplicaciones modernas de manera efectiva utilizando la observabilidad.
Hola, mi nombre es Nathan Mars y soy el líder técnico de data visualization en Grafana Labs. Hoy estoy emocionado de compartir contigo cómo llevar la observabilidad a tus aplicaciones JavaScript. Si quieres descubrir por qué tu aplicación se está ejecutando demasiado lenta, está rota, o simplemente quieres mejorar su calidad de código, esta charla es para ti.
Comencemos con la historia. Imagina esto. Es una tarde de viernes y recibes un mensaje de tu jefe de que hay un error misterioso en producción. ¿Es hora de entrar en pánico? ¿Tendrás un fin de semana? Tal vez sí, tal vez no. Afortunadamente, esta empresa ficticia solo tiene un único servidor monolítico, y tanto tu servidor como el frontend están escritos en JavaScript. Así que tienes un arma secreta. El viejo y confiable console.log. Te sumerges en el código y agregas docenas de declaraciones console.log en un intento de localizar la causa raíz del error. Después de mucho ensayo y error, localizas el problema en la lógica de eliminación del carrito de tu servidor node. Solucionas el error y envías el código directamente a producción. Crisis evitada. Pero, ¿qué pasaría si estuvieras trabajando de manera más realista en una empresa con mucha más complejidad, donde tu aplicación está desplegada en todo el mundo y cada solicitud interactúa con un enjambre de microservicios? Ahí es donde console.log nos falla. Entonces, ¿qué podemos hacer para asegurarnos de que la depuración y solución de problemas en nuestras aplicaciones modernas no sea una pesadilla? La respuesta es la observabilidad.
¿Qué es la observabilidad? Significa cuán bien puedes entender lo que está sucediendo internamente en un sistema basado en sus salidas. A medida que los sistemas se vuelven más distribuidos y complejos, es difícil ver qué está sucediendo dentro de tu aplicación y por qué las cosas pueden estar saliendo mal. Al hablar de observabilidad, necesitamos definir los tipos de datos necesarios para comprender el rendimiento y la salud de nuestras aplicaciones. En términos generales, estos son métricas, registros y trazas. Las métricas son medidas recopiladas a intervalos regulares. La mayoría tiene una marca de tiempo, un nombre, y uno o más valores numéricos. Ejemplos incluyen la tasa de errores, el tiempo de respuesta o la salida. Los registros provienen directamente de tu aplicación, exportando datos detallados y contexto alrededor de un evento. Los ingenieros pueden recrear lo que ha sucedido milisegundo a milisegundo. Los registros deberían ser muy familiares, ya que son básicamente console.logs más escalables y útiles. Las trazas siguen una solicitud desde la solicitud inicial hasta la salida devuelta. Registran la cadena causal de eventos para determinar las relaciones entre diferentes entidades. Las trazas son muy valiosas para resaltar ineficiencias, cuellos de botella y obstáculos en la experiencia del usuario, ya que se pueden utilizar para mostrar la latencia de extremo a extremo de las solicitudes individuales en toda la arquitectura distribuida.
2. Open Telemetry y Grafana para Observabilidad
Tenemos una idea de qué es la observabilidad y de qué datos está compuesta. Open Telemetry es la respuesta para obtener estos datos, proporcionando una forma estandarizada de describir lo que está haciendo tu sistema. Una vez que tenemos Open Telemetry configurado, podemos exportar los datos recopilados a Grafana, donde podemos monitorear las métricas, registros, trazas y perfiles de nuestras aplicaciones. La observabilidad no se limita al backend; también se puede configurar para el frontend utilizando GrafanaFerro para recopilar métricas como la carga de la página, errores y sesiones de usuario.
¡Ok, genial! Tenemos una idea de qué es la observabilidad y de qué están compuestos los datos. Esto plantea una pregunta importante. ¿Cómo podemos obtener estos datos? ¿Deberíamos instrumentar manualmente cada servicio, capa por capa? No, esto llevaría tanto tiempo como escribir el código en sí. Afortunadamente, existen algunos proyectos de código abierto increíbles, así como empresas que facilitan mucho esto. La respuesta es Open Telemetry. ¿Qué queremos decir con Open Telemetry? Comencemos con el nombre en sí. Tenemos `open`, como en código abierto, y luego `telemetry`, que es el proceso de recopilar, analizar y transmitir datos desde fuentes remotas para monitorear el rendimiento de los sistemas. La palabra en sí proviene de las palabras griegas `tele`, que significa remoto, y `metron`, que significa medir. Con cualquier aplicación, cuando estás viendo este tipo de datos, tienes dos partes que deben unirse. La primera es descubrir cómo generar y transmitir esos datos. La segunda parte es decidir qué hacer con esos datos. Open Telemetry se ocupa de la primera parte. Hasta hace poco, realmente no había una forma estandarizada de describir lo que está haciendo tu sistema. Este problema se ha visto agravado por la gran variedad de lenguajes de programación y computadoras en uso, lo que dificulta la construcción de herramientas de observabilidad estandarizadas. Resolver este problema es el núcleo del proyecto Open Telemetry, proporcionando una estandarización para describir lo que están haciendo los sistemas distribuidos, sin importar el lenguaje de programación o los sistemas informáticos que estés utilizando. Hoy en día, el proyecto Open Telemetry se puede describir como una colección de herramientas, API, y SDK utilizados para instrumentar, generar, recopilar y exportar datos de telemetría para que podamos analizar esos datos con la plataforma que elijamos. Dadas las limitaciones de tiempo, no podré guiarte completamente en la configuración de Open Telemetry, pero puedo proporcionarte algunos recursos para ayudarte a comenzar. Una vez que tenemos Open Telemetry configurado, estamos recopilando datos y ahora necesitamos exportarlos a algún lugar para visualizarlos. Veamos cómo puedes usar Grafana, la principal tecnología de código abierto para paneles y visualización, para analizar estos datos y monitorear tu aplicación. Para comenzar, primero debes instalar las bibliotecas de instrumentación. En el caso de una aplicación de node, deberás instalar tanto las API de Open Telemetry como los paquetes de auto-instrumentación de node. Luego, debes configurar tu aplicación para exportar los datos de telemetría. Escribiremos un script básico de bash que configure Open Telemetry y ejecute nuestra aplicación. Para obtener las variables de entorno de autenticación, deberás configurar una cuenta gratuita en Grafana Cloud y configurar Open Telemetry para tu pila de Grafana Cloud. Luego, puedes elegir un nombre de servicio. Digamos que este es nuestro servicio de carrito, y luego ejecuta tu aplicación a través del script de shell y realiza solicitudes al servicio para enviar los datos de telemetría a Grafana Cloud. Dentro de Grafana Cloud, ahora puedes observar tu servicio y la observabilidad de la aplicación. Dentro de la observabilidad de la aplicación, puedes monitorear las métricas, registros, trazas y perfiles de tus servicios. Los perfiles aún no los hemos mencionado, identifican los cuellos de botella de rendimiento en el código de tu aplicación. Ahora que tenemos estos datos, ¿qué puedes hacer con ellos? Bueno, puedes configurar alertas y guardias para ayudar a tu equipo a saber cuándo algo está saliendo mal, como si el uso de CPU de tu aplicación de node supera un umbral determinado. Dentro de la observabilidad de la aplicación, también puedes desencadenar un incidente que incluye automáticamente el contexto importante de los datos intermedios. Mientras investigas un incidente, incluso puedes ejecutar análisis de aprendizaje automático a través de investigaciones SIFT, un asistente de diagnóstico poderoso que te ayuda a analizar holísticamente la telemetría de tu sistema durante las investigaciones. Esto se logra mediante comprobaciones como agrupar registros de error similares, identificar recursos que tuvieron una implementación reciente, identificar bloqueos de cubos y más. La observabilidad no se limita solo al backend. También puedes configurar la observabilidad para tu frontend para recopilar métricas como la carga de la página, errores, sesiones de usuario, registros y eventos personalizados, y más. Para comenzar a capturar telemetría de tus aplicaciones frontend dentro de Grafana, puedes configurar GrafanaFerro en tu inicialización de JavaScript código. Ahí lo tenemos, cómo puedes obtener información valiosa y mejorar tus aplicaciones JavaScript más allá de depender de los console.logs. Gracias por tu tiempo hoy.
Comments