Cómo configurar Sentry en Django

Clase 17 de 22Curso de Despliegue de Aplicaciones Python en la Nube

Resumen

Detecta errores sin vigilar los logs todo el día. Integra Sentry con tu proyecto Django en Python, recibe alertas por correo o Slack, y organiza tus logs en uWSGI para depurar rápido y con confianza.

¿Cómo integrar Sentry en Django de forma segura?

Sentry se integra en tu proyecto para capturar excepciones con contexto. Evitas mostrar detalles sensibles en el navegador y centralizas la información de fallos con trazas, URL, transacción y status code.

  • Crea tu cuenta en sentry.io y presiona Get Started. Digita tus datos y elige dónde guardar la información: Europa o Estados Unidos. Activa si deseas recibir actualizaciones y acepta términos. Presiona Start.
  • Selecciona el framework: Django. Entra en “Configurar SDK” para ver cómo instalar dependencias.
  • Instala las dependencias con pip en tu entorno virtual activo. Hazlo en el proyecto. Recomendado hacerlo en local, aunque también puedes en el servidor.
  • Copia la configuración sugerida al final de settings.py. Guarda los cambios.
  • En urls.py, agrega un endpoint de prueba con un error controlado: división de 1/0. Así validas que Sentry recibe eventos.
  • Recarga tu servidor uWSGI. Visita la ruta de prueba (sentry debug) para forzar el error y confirmar que Sentry “recibe” el evento.

¿Qué datos de error muestra Sentry?

Al abrir el evento verás detalles accionables:

  • URL y transacción para ubicar la petición exacta.
  • Status code devuelto por el servidor.
  • Mensaje del intérprete, por ejemplo: invalid syntax en el archivo y número de línea (como la línea 30 por una coma faltante). Corrige, guarda y recarga.

¿Cómo configurar alertas efectivas?

Sentry permite activar alertas por correo y también integrarlas con Slack. Además, los mismos errores quedan en los logs del servidor si ya los tienes configurados. Así mantienes visibilidad duplicada: panel centralizado y archivos del sistema.

¿Cómo verificar errores también en los logs del servidor?

Además de Sentry, revisa tus archivos en /var/logs (por ejemplo, en uwsgi y en la app de deployment). Allí verás el rastro completo del servidor.

  • Ejecuta sudo cut sobre la ruta de logs para leer el contenido.
  • Identifica mensajes como invalid syntax al olvidar una coma. Verás todo lo que ocurre dentro del servidor.
  • Ten presente que los archivos crecen con el uso de los usuarios. Conviene agrupar por aplicación y por fecha para mantener control y limpieza.

¿Cómo rotar y agrupar logs en uWSGI?

La rotación facilita borrar los de “X días” sin tocar los actuales.

  • Edita la configuración en etc/uwsgi/apps-enable de tu aplicación.
  • Agrega logsuffix con una expresión que añade un número por cada día al final del archivo.
  • Agrega daemonize para crear el archivo con marca de tiempo al iniciar uWSGI y al cambio de día.
  • Define la ruta de logs que ya usas. Guarda y realiza restart.
  • Valida con status: verás que corre y los procesos activos (por ejemplo, cuatro procesos).

¿Qué habilidades y conceptos consolidar para el monitoreo?

Domina un flujo de observabilidad que te ahorra tiempo y reduce riesgo al desplegar.

  • Monitoreo de logs: lectura en /var/logs y control de crecimiento por tráfico.
  • Integración de Sentry: cuenta en sentry.io, Get Started, Start y “Configurar SDK”.
  • Buenas prácticas de entorno: pip install con el entorno virtual activado.
  • Configuración en Django: edición de settings.py y urls.py para generar errores de prueba.
  • Depuración guiada: interpretación de URL, transacción, status code y mensajes como invalid syntax con línea exacta.
  • Alertas operativas: notificaciones por correo y Slack para responder rápido.
  • uWSGI avanzado: parámetros logsuffix y daemonize para rotación por día y marcas de tiempo.
  • Mantenimiento seguro: reinicio, validación con status y verificación de procesos concurrentes.

¿Quieres compartir cómo organizas tus alertas y rotación de logs en producción? Deja tus ideas y dudas para seguir mejorando juntos.

      Cómo configurar Sentry en Django