Monitorización de errores y ralentizaciones con un frontend de JS y un backend de Node

Rate this content
Bookmark

Tenemos un frontend de JavaScript que se conecta a un backend de Node (Express.js). Vamos a ver cómo saber qué parte es responsable de cada error, cuál es el impacto y todo el contexto necesario para resolverlo.

This talk has been presented at Node Congress 2022, check out the latest edition of this JavaScript Conference.

FAQ

Sentry es un sistema de monitoreo de código diseñado para desarrolladores que ayuda a identificar y alertar sobre errores y ralentizaciones en la aplicación. No se enfoca en monitoreo de infraestructura ni de análisis, sino específicamente en la capa de aplicación.

Para instalar Sentry en un proyecto Node, se realiza mediante NPM. Luego, se inicializa el SDK con el método 'sentry.init' junto con algunas opciones de configuración específicas.

Sentry puede detectar automáticamente errores no capturados o no manejados en la aplicación. También permite la captura manual de errores, especialmente útil cuando los errores son manejados explícitamente en el código.

Sentry proporciona detalles como el tipo de error, el número de veces que ocurrió, los usuarios afectados, la frecuencia del error, la traza de la pila, versión del navegador, sistema operativo del usuario y cualquier etiqueta personalizada. También muestra la primera y la última vez que se observó el error.

Sentry identifica transacciones lentas y muestra métricas clave como el tiempo de carga de la página y los componentes que contribuyen a la lentitud. Estos datos permiten evaluar el rendimiento y optimizar donde sea necesario.

Las migas de pan en Sentry son registros que muestran las acciones que llevó a cabo el usuario antes de que ocurriera un error. Esto incluye solicitudes HTTP, clics y otras interacciones, proporcionando un contexto valioso sobre lo que estaba haciendo el usuario en ese momento.

En Sentry, se pueden configurar alertas directamente desde la interfaz, estableciendo umbrales de tiempo para definir cuándo una transacción se considera crítica, de advertencia o resuelta. Estas alertas pueden configurarse para enviar notificaciones por correo electrónico o a través de Slack.

Chris Stavitsky
Chris Stavitsky
8 min
17 Feb, 2022

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Sentry es una herramienta de monitorización de código para desarrolladores, diseñada específicamente para la capa de aplicación. Ayuda a identificar detalles de errores, frecuencia, versión, información del usuario y traza de la pila. Se pueden subir mapas de origen para ver el código fuente original y se pueden identificar los commits sospechosos. La monitorización de rendimiento ayuda a identificar ralentizaciones y determinar la causa. La automatización de alertas y la investigación de errores ayudan a obtener contexto instantáneo y rastrear errores en diferentes proyectos.

1. Introducción a Sentry y Monitoreo de Errores

Short description:

Soy Chris, un ingeniero de soluciones en Sentry. Hoy, discutiremos el monitoreo de errores y ralentizaciones en JavaScript. Sentry es un monitoreo de código para desarrolladores, diseñado específicamente para la capa de aplicación. Cubriremos el monitoreo de errores y el monitoreo de rendimiento. En nuestro sitio de demostración, nos encontramos con un punto final de productos lento y un error. Con Sentry, podemos identificar los detalles del error, incluyendo su frecuencia, versión, información del usuario y rastreo de la pila. Las migas de pan proporcionan información sobre el recorrido del usuario que lleva al error.

Hola a todos, mi nombre es Chris. Soy un ingeniero de soluciones en Sentry y estoy aquí para hablarles hoy sobre el monitoreo de errores y ralentizaciones en JavaScript. Sentry es un monitoreo de código para desarrolladores. Te avisamos cuando tu código está roto y te avisamos cuando tu código es lento. No somos un monitoreo de infraestructura, no somos un monitoreo de análisis, específicamente vivimos en la capa de aplicación, estamos diseñados para desarrolladores. Hoy vamos a hablar sobre dos áreas principales, el monitoreo de errores y el monitoreo de rendimiento. Vamos a ir a docs.sentry.io, echar un vistazo a la documentación de node, es una instalación simple de NPM, e inicializar el SDK con sentry.init y algunas opciones de configuración. Muy fácil de empezar. Aterrizamos aquí en nuestro sitio de demostración donde vamos a comprar algunos productos de comercio electrónico. Notamos que el punto final de productos tarda un poco en cargarse, así que volveremos a eso en un momento. Vamos a añadir algunos productos al carrito. Hacer el checkout y esperar a recibir nuestros productos, y vemos un error. Así que sin algo como Sentry no vamos a saber que algo estaba mal, tanto en términos de que el punto final de productos estaba lento, como también, y más importante, en términos de tener este error. Así que lo que veremos aquí es, en el momento actual solo obtenemos un error y aparece en Slack. Podemos ver que es un 500, podemos ver que está sucediendo en producción, podemos ver la versión en la que se lanzó, tal vez esto fue algo que se lanzó anteriormente hoy, recientemente. Pero sabemos que está sucediendo en producción, es importante, vamos a hacer clic para ver más detalles. Aquí estamos en la página del problema. Esto es el Quién, Qué, Cuándo, Dónde, Por qué del error. Podemos ver cuál es el error, es un 500, ha ocurrido 45 veces para 22 usuarios únicos. Ha ocurrido tantas veces en las últimas 24 horas, y tantas veces en los últimos 30 días. Se vio por primera vez hace cinco meses, y se vio más recientemente, comprensiblemente, porque lo acabamos de desencadenar hace unos segundos en esta versión más reciente. Podemos ver que el usuario estaba en Chrome, y estaba en Mac OS X. Obtenemos un poco de información sobre su dirección de correo electrónico y cualquier otra etiqueta personalizada que hayamos establecido aquí. Tenemos el rastreo de la pila que nos dice el tipo de error y el mensaje. Puedes ver, bien, si la respuesta no se guardó, y vamos a llamar manualmente a capture exception, SDK de Sentry. Sentry se adjunta al controlador de errores global y capturará automáticamente cualquier error no capturado o no manejado también. También puedes capturarlos manualmente, por ejemplo, si estás manejando errores, como en este caso, también puedes capturarlos manualmente. Las migas de pan nos dan una idea del recorrido del usuario que lleva al error. ¿Qué estaba haciendo el usuario justo antes de que ocurriera el error? Puedes ver que justo antes hubo una solicitud POST al punto final de checkout, algunas declaraciones de impresión, un CLICK. Lo otro que es realmente importante mencionar es que estamos viendo un mensaje legible por humanos

2. Análisis de Errores y Rendimiento

Short description:

Si tienes una traza de pila minificada en bruto, puedes subir mapas de origen para ver el código fuente original. Sentry se integra con herramientas de gestión de código fuente para identificar confirmaciones sospechosas. Rastrea eventos de error secundarios y proporciona información sobre diferentes proyectos. Una vez identificada la causa raíz, se puede prestar atención al rendimiento. El puntaje de miseria del usuario refleja un rendimiento lento y se pueden analizar las transacciones para identificar ralentizaciones. El contexto y las migas de pan ayudan a comprender las acciones del usuario, y las etiquetas proporcionan información adicional. La función de trazado de Sentry ayuda a localizar problemas en el backend, como consultas ineficientes a la base de datos. Al consolidar todo el contexto relevante, Sentry simplifica la solución de problemas de errores y rendimiento.

versión de esto. Entonces, si tienes una traza de pila minificada en bruto, porque tienes código JavaScript empaquetado que ha sido minificado, verás algo que no es útil como esto. Cuando subes mapas de origen, podrás ver el código fuente original legible por humanos. También tenemos integraciones con diferentes herramientas de gestión de código fuente, por lo que por ejemplo, puedes ver estas confirmaciones sospechosas, y esto nos da una idea de quién podría haber cometido el código que causó este problema. También podemos ver que hay un evento de error secundario, y podemos rastrearlo en todos los proyectos. Hay otro proyecto, en este caso nuestra aplicación Node Express, y podemos ver que hay un mensaje de error diferente. No hay suficiente inventario para el producto.

Ha ocurrido 87,000 veces para 85,000 usuarios únicos, por lo que claramente este no es un problema nuevo. Ha ocurrido con mucha más frecuencia en las últimas 24 horas y 30 días que el problema anterior, considerándolo como el más recientemente visto y el primero visto. Todo lo mismo, el quién, qué, dónde, por qué, cuándo. Entonces no hay suficiente inventario para el producto, y lanzamos un nuevo error. En este punto, lo hemos rastreado hasta la causa raíz. Podemos considerar esto resuelto y dirigir nuestra atención al rendimiento. Entonces, si recuerdas, estamos aquí, hicimos clic en el punto final de productos, y vimos que había un rendimiento lento. Ahora, también podemos ver eso reflejado dentro de Sentry mismo. Puedes ver varios indicadores web de Google, solo las cosas estándar relacionadas con el SEO, como cuánto tiempo tarda en aparecer la cosa más grande en la página, la primera cosa en aparecer en la página, y también podemos ir a ver específicamente nuestras transacciones generales. Puedes ver que hay un puntaje de miseria del usuario que es bastante alto aquí para el punto final de productos. Entonces, si no supiéramos qué estábamos buscando, podríamos ver esto. Esto también es configurable. Si tienes puntos finales, ya sabes, que van a llevar mucho tiempo. Pero básicamente, es una forma de ver de manera útil qué transacciones están tardando mucho más de lo esperado. Haré clic aquí, echaré un vistazo a algunas de nuestras transacciones recientes. Y también podemos ver esto muestra muchos recursos y activos que los navegadores cargan, podemos ver que los componentes de React se montan, se actualizan, podemos expandir esto y ver que en un proyecto de backend hubo una solicitud HTTP que tardó aproximadamente 7.2 segundos de los 7.8 totales. Entonces, en este caso, hay una ralentización, parece que la mayoría de estas cosas no están contribuyendo a ello, pero este es el culpable aquí en esta página, también obtenemos contexto, tenemos migas de pan similares. ¿Qué estaba haciendo el usuario durante el tiempo previo a este punto? ¿Alguna información adicional aquí? Tenemos un montón de etiquetas diferentes a las que podemos acceder, además también podemos utilizar la función de trazado de Sentry para ir de nuevo a nuestro proyecto de nodo en el backend y darnos cuenta de que aquí es donde realmente están ocurriendo los problemas. Parece que hay algunas consultas a la base de datos que están sucediendo aquí. Y en este caso, parece que estamos haciendo algunas de forma secuencial. Entonces estamos obteniendo identificadores de productos individuales en lugar de todos los productos al mismo tiempo o un conjunto de identificadores de productos. Por lo tanto, esta podría ser un área donde hay margen para mejoras. Lo rastreamos desde el frontend hasta el backend, sin tener que buscar en los registros de ambas aplicaciones. El objetivo de Sentry es básicamente consolidar todo el contexto que necesitas para resolver errores y problemas de rendimiento y ponerlos en el

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Vue: Actualizaciones de Características
Vue.js London 2023Vue.js London 2023
44 min
Vue: Actualizaciones de Características
Top Content
The Talk discusses the recent feature updates in Vue 3.3, focusing on script setup and TypeScript support. It covers improvements in defining props using imported types and complex types support. The introduction of generic components and reworked signatures for defined components provides more flexibility and better type support. Other features include automatic inference of runtime props, improved define emits and defined slots, and experimental features like reactive props destructure and define model. The Talk also mentions future plans for Vue, including stabilizing suspense and enhancing computer invalidations.
Es una jungla ahí fuera: ¿Qué está pasando realmente dentro de tu carpeta Node_Modules?
Node Congress 2022Node Congress 2022
26 min
Es una jungla ahí fuera: ¿Qué está pasando realmente dentro de tu carpeta Node_Modules?
Top Content
The talk discusses the importance of supply chain security in the open source ecosystem, highlighting the risks of relying on open source code without proper code review. It explores the trend of supply chain attacks and the need for a new approach to detect and block malicious dependencies. The talk also introduces Socket, a tool that assesses the security of packages and provides automation and analysis to protect against malware and supply chain attacks. It emphasizes the need to prioritize security in software development and offers insights into potential solutions such as realms and Deno's command line flags.
Hacia una Biblioteca Estándar para Runtimes de JavaScript
Node Congress 2022Node Congress 2022
34 min
Hacia una Biblioteca Estándar para Runtimes de JavaScript
Top Content
There is a need for a standard library of APIs for JavaScript runtimes, as there are currently multiple ways to perform fundamental tasks like base64 encoding. JavaScript runtimes have historically lacked a standard library, causing friction and difficulty for developers. The idea of a small core has both benefits and drawbacks, with some runtimes abusing it to limit innovation. There is a misalignment between Node and web browsers in terms of functionality and API standards. The proposal is to involve browser developers in conversations about API standardization and to create a common standard library for JavaScript runtimes.
ESM Loaders: Mejorando la carga de módulos en Node.js
JSNation 2023JSNation 2023
22 min
ESM Loaders: Mejorando la carga de módulos en Node.js
ESM Loaders enhance module loading in Node.js by resolving URLs and reading files from the disk. Module loaders can override modules and change how they are found. Enhancing the loading phase involves loading directly from HTTP and loading TypeScript code without building it. The loader in the module URL handles URL resolution and uses fetch to fetch the source code. Loaders can be chained together to load from different sources, transform source code, and resolve URLs differently. The future of module loading enhancements is promising and simple to use.
Diagnostics de Node.js listos para usar
Node Congress 2022Node Congress 2022
34 min
Diagnostics de Node.js listos para usar
This talk covers various techniques for getting diagnostics information out of Node.js, including debugging with environment variables, handling warnings and deprecations, tracing uncaught exceptions and process exit, using the v8 inspector and dev tools, and generating diagnostic reports. The speaker also mentions areas for improvement in Node.js diagnostics and provides resources for learning and contributing. Additionally, the responsibilities of the Technical Steering Committee in the TS community are discussed.
Compatibilidad con Node.js en Deno
Node Congress 2022Node Congress 2022
34 min
Compatibilidad con Node.js en Deno
Deno aims to provide Node.js compatibility to make migration smoother and easier. While Deno can run apps and libraries offered for Node.js, not all are supported yet. There are trade-offs to consider, such as incompatible APIs and a less ideal developer experience. Deno is working on improving compatibility and the transition process. Efforts include porting Node.js modules, exploring a superset approach, and transparent package installation from npm.

Workshops on related topic

Cómo Resolver Problemas del Mundo Real con Remix
Remix Conf Europe 2022Remix Conf Europe 2022
195 min
Cómo Resolver Problemas del Mundo Real con Remix
Featured Workshop
Michael Carter
Michael Carter
- ¿Errores? Cómo renderizar y registrar tus errores del servidor y del clientea - Cuándo devolver errores vs lanzar excepcionesb - Configurar servicios de registro como Sentry, LogRocket y Bugsnag- ¿Formularios? Cómo validar y manejar formularios de varias páginasa - Usar zod para validar los datos del formulario en tu acciónb - Pasar por formularios de varias páginas sin perder datos- ¿Atascado? Cómo solucionar errores o funciones faltantes en Remix para que puedas continuara - Usar patch-package para solucionar rápidamente tu instalación de Remixb - Mostrar herramienta para gestionar múltiples parches y seleccionar solicitudes de extracción abiertas- ¿Usuarios? Cómo manejar aplicaciones de varios inquilinos con Prismaa - Determinar el inquilino por el host o por el usuariob - Base de datos múltiples o base de datos única/múltiples esquemasc - Asegura que los datos del inquilino siempre estén separados de los demás
Monitoreo 101 para Desarrolladores de React
React Advanced 2023React Advanced 2023
112 min
Monitoreo 101 para Desarrolladores de React
Top Content
WorkshopFree
Lazar Nikolov
Sarah Guthals
2 authors
Si encontrar errores en tu proyecto frontend es como buscar una aguja en un pajar de código, entonces el monitoreo de errores de Sentry puede ser tu detector de metales. Aprende los conceptos básicos del monitoreo de errores con Sentry. Ya sea que estés ejecutando un proyecto de React, Angular, Vue, o simplemente JavaScript “vainilla”, ve cómo Sentry puede ayudarte a encontrar el quién, qué, cuándo y dónde detrás de los errores en tu proyecto frontend.
Masterclass de Node.js
Node Congress 2023Node Congress 2023
109 min
Masterclass de Node.js
Top Content
Workshop
Matteo Collina
Matteo Collina
¿Alguna vez has tenido dificultades para diseñar y estructurar tus aplicaciones Node.js? Construir aplicaciones que estén bien organizadas, sean probables y extensibles no siempre es fácil. A menudo puede resultar ser mucho más complicado de lo que esperas. En este evento en vivo, Matteo te mostrará cómo construye aplicaciones Node.js desde cero. Aprenderás cómo aborda el diseño de aplicaciones y las filosofías que aplica para crear aplicaciones modulares, mantenibles y efectivas.

Nivel: intermedio
Construye y Despliega un Backend con Fastify y Platformatic
JSNation 2023JSNation 2023
104 min
Construye y Despliega un Backend con Fastify y Platformatic
WorkshopFree
Matteo Collina
Matteo Collina
Platformatic te permite desarrollar rápidamente APIs GraphQL y REST con un esfuerzo mínimo. La mejor parte es que también te permite aprovechar todo el potencial de Node.js y Fastify cuando lo necesites. Puedes personalizar completamente una aplicación de Platformatic escribiendo tus propias características y complementos adicionales. En el masterclass, cubriremos tanto nuestros módulos de código abierto como nuestra oferta en la nube:- Platformatic OSS (open-source software) — Herramientas y bibliotecas para construir rápidamente aplicaciones robustas con Node.js (https://oss.platformatic.dev/).- Platformatic Cloud (actualmente en beta) — Nuestra plataforma de alojamiento que incluye características como aplicaciones de vista previa, métricas integradas e integración con tu flujo de Git (https://platformatic.dev/).
En este masterclass aprenderás cómo desarrollar APIs con Fastify y desplegarlas en la nube de Platformatic.
Construyendo un Servidor Web Hiper Rápido con Deno
JSNation Live 2021JSNation Live 2021
156 min
Construyendo un Servidor Web Hiper Rápido con Deno
WorkshopFree
Matt Landers
Will Johnston
2 authors
Deno 1.9 introdujo una nueva API de servidor web que aprovecha Hyper, una implementación rápida y correcta de HTTP para Rust. El uso de esta API en lugar de la implementación std/http aumenta el rendimiento y proporciona soporte para HTTP2. En este masterclass, aprende cómo crear un servidor web utilizando Hyper en el fondo y mejorar el rendimiento de tus aplicaciones web.
0 a Auth en una Hora Usando NodeJS SDK
Node Congress 2023Node Congress 2023
63 min
0 a Auth en una Hora Usando NodeJS SDK
WorkshopFree
Asaf Shen
Asaf Shen
La autenticación sin contraseña puede parecer compleja, pero es fácil de agregar a cualquier aplicación utilizando la herramienta adecuada.
Mejoraremos una aplicación JS de pila completa (backend de Node.JS + frontend de React) para autenticar usuarios con OAuth (inicio de sesión social) y contraseñas de un solo uso (correo electrónico), incluyendo:- Autenticación de usuario - Administrar interacciones de usuario, devolver JWT de sesión / actualización- Gestión y validación de sesiones - Almacenar la sesión para solicitudes de cliente posteriores, validar / actualizar sesiones
Al final del masterclass, también tocaremos otro enfoque para la autenticación de código utilizando Flujos Descope en el frontend (flujos de arrastrar y soltar), manteniendo solo la validación de sesión en el backend. Con esto, también mostraremos lo fácil que es habilitar la biometría y otros métodos de autenticación sin contraseña.
Tabla de contenidos- Una breve introducción a los conceptos básicos de autenticación- Codificación- Por qué importa la autenticación sin contraseña
Requisitos previos- IDE de tu elección- Node 18 o superior