Sentry, un aliado para la monitorización de aplicaciones web

Uno de los mayores quebraderos de cabeza en la gestión de aplicaciones se centra en cómo gestionar y monitorizar todos los errores de nuestra aplicación en los entornos donde la tenemos disponible; el principal y más importante: el entorno de producción. El número de entornos del que disponemos depende de varios factores: el equipo, el tamaño del proyecto o el presupuesto, por ejemplo.

Gestionar todos los entornos desde el equipo de desarrollo es muy complejo. Aunque la teoría nos dice que los entornos deben ser gemelos unos de otros del entorno de producción, no siempre se dispone de este escenario y gestionar los errores de nuestra aplicación sin herramientas de monitorización (con ficheros enormes de logs) es hartamente complicado.

Es por ello que han surgido herramientas que facilitan esta tarea y que permiten gestionar de una manera sencilla y, desde una interfaz, los errores y excepciones de nuestra aplicación. Hoy hablamos de una de las herramientas Open Source más interesantes para esta labor: Sentry.

sentry1-jpg

Sentry nació en el año 2010 en la empresa Disqus de un proyecto más antiguo llamado django-db-log. A los aficionados a los videojuegos, y concretamente, al Starcraft 2, el nombre Sentry no le debe sonar extraño. Y es que el nombre del proyecto tiene su origen en una de las unidades que se pueden utilizar en este juego de estrategia.

¿Cuáles son sus principales ventajas?

Para empezar, Sentry es gratuito. Parece una obviedad, pero no muchas aplicaciones de monitorización de aplicaciones lo son a día de hoy. Sentry basa su negocio en ofrecer soporte y gestión de cuentas de pago dentro de su propia infraestructura, pero el sistema puede ser montado en cualquier máquina sin ningún tipo de problema.

Otro aspecto a resaltar, aunque de nuevo pueda parecer extraño, es que el código de Sentry es público y accesible para quien lo desee en su repositorio de github. Otras herramientas similares no permiten el acceso a su código fuente y son privativas, lo que las hacen menos interesantes de cara a su uso.

El punto fuerte de Sentry es su fácil integración con multitud de lenguajes, frameworks y plataformas. En sus inicios, sólo disponía de conector para proyectos desarrollados en Python, pero a día de hoy dispone de multitud de conectores y plugins para diferentes plataformas, lo que lo hace una herramienta versátil y potente.

sentry2

Infografía de los lenguajes y frameworks integrables Sentry

Otro punto fuerte son sus integraciones con otras aplicaciones. Es posible integrar Sentry como plugin en Slack, JIRA, Gitlab o Trello, entre otros, para poder utilizar Sentry desde tus aplicaciones y servicios favoritos.

sentry3

Infografía de las plataformas integrables con Sentry

También es necesario destacar su interfaz, sencilla pero elegante, que otorga una navegación clara por todos los errores de nuestro proyecto. Además, son interesantes las gráficas y estadísticas que nos facilitan una imagen general de todo el proyecto y el número de nuevos eventos que ha habido durante cada hora, teniendo un vistazo inicial rápido de si nuestra aplicación está teniendo alguna incidencia en producción o no.

Captura de pantalla de ejemplo de Sentry

Pero, ¿cómo funciona internamente?

Sentry expone un API al que nuestro cliente debe enviar todas las excepciones y trazas que nosotros indiquemos en nuestro proyecto. Para ello, Sentry dispone de diferentes clientes dependiendo del lenguaje de programación que hacen esta abstracción por nosotros y se encargan de capturar todas esas excepciones y enviarlas al endpoint de Sentry que hayamos configurado en nuestro proyecto.

Con cada petición recibida, Sentry almacena en una cola de Rabbit un mensaje para que, cuando pueda, sea procesada. Sentry dispone de un proceso asíncrono que va procesando todas estas peticiones para convertirlas de una simple petición a un evento rico en información que aporte el máximo de contenido al equipo sobre qué está pasando, dónde, etc.

sentry5

Pequeño esquema interno de la arquitectura de Sentry

Cada evento de Sentry almacena en PostgreSQL multitud de información de la petición: máquinas afectadas, trazabilidad de las excepciones, IPs afectadas, paquetes instalados, cabeceras, rutas de los ficheros afectados, threads… y las agrupa de manera que la información mostrada al usuario sea lo más sencilla, rica y legible posible gracias a un diseño elegante, práctico y usable.

Dentro de las sesiones de formación que habitualmente llevan a cabo compañeros de Paradigma, ya dimos a conocer Sentry como una alternativa más que interesante.

Conclusiones

Tras años de uso en diferentes proyectos de Paradigma, sobre todo en proyectos desarrollados en Python y Django como por ejemplo Tuenti LATAM o Lowi, no podemos más que recomendar su uso. Por su sencillez, la facilidad de integración en los proyectos, la cantidad de información que aporta al equipo de desarrollo y porque es una herramienta que está en constante evolución y cada nueva versión aporta mejoras y facilidades para los equipos de mantenimiento y desarrollo de aplicaciones.

Sin duda, no es una herramienta que por sí sola permita monitorizar todo. Es interesante complementar Sentry con otras herramientas de monitorización a nivel de red como Zabbyx, por ejemplo, pero a los desarrolladores de aplicaciones web les ayudará a conocer en tiempo real qué incidencias se están produciendo en su código y detectar bugs en los entornos de una manera mucho más rápida que únicamente analizando logs (que son igualmente necesarios).

Reduciendo el tiempo en que se tarda en resolver estos problemas, incrementamos la satisfacción de los visitantes de nuestra plataforma y, por tanto, de los clientes que delegan su confianza en nosotros.

Recibe más artículos como este

Recibirás un email por cada nuevo artículo.. Acepto los términos legales

Escribe un comentario