Configurar Sentry

  
18 de Octubre de 2014   1  

Sentry es un servidor para centralizar todos los errores producidos por Django. En vez de colapsar una cuenta de email, esta aplicación lo canaliza todo, hace gráficas, de modo que pueda ser gestionada de manera ágil por los mismos desarrolladores o el administrador del proyecto.

 

group_list

https://github.com/getsentry/sentry

Primero debemos crear nuestro entorno virtual en /var/www/ (esto es por costumbre)

1
2
3
virtualenv --no-site-packages sentry
cd sentry
source bin/activate

Instalamos Sentry

1
pip install sentry

Inicializamos sentry

1
sentry init

Nos habrá creado el config a /var/www/.sentry/sentry.conf.py

Ejecutamos un migrate

1
sentry upgrade

Podremos configurar Nginx para correr nuestro proyecto de sentry.
Un ejemplo del nginx.conf sería

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
    listen 80;
    server_name sentry.miproyecto.com;
 
    access_log /var/log/www/sentry_access.log;
    error_log /var/log/www/error_log.log;
 
    location / {
        proxy_pass http://localhost:9000;
        proxy_redirect off;
 
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
 
}

Con esto ya tendremos el sentry instalado y corriendo, para poder entrar a la url debemos iniciar el sentry ejecutando el siguiente comando:

1
/var/www/sentry/bin/sentry start http

Ahora podemos acceder a nuestra url configurada en el Nginx sentrymiproyecto.com y veremos el login de Sentry, pero como ejecutar este comando cada vez que queramos acceder al sentry es muy lioso, podemos instalar supervisor, una aplicación que nos permite monitorizar nuestra aplicacion y la mantiene corriendo todo el tiempo en segundo plano.

1
sudo apt-get install supervisor

y luego agregamos un fichero de configuración en /etc/supervisor/conf.d/

1
2
3
4
5
6
7
8
9
[program:sentry-web]
directory=/var/www/sentry/
command=/var/www/sentry/bin/sentry start http
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/www/sentry.log
user=USUARIO
group=USUARIO

pero ahora debemos configurar nuestro proyecto para que todos los errores los envíe a este proyecto.

Primero nos aseguramos que tenemos estas librerías instaladas en nuestro entorno virtual

1
2
sentry==5.0.14
raven==2.0.6

Añadimos un nuevo middleware en el settings de nuestro proyecto:

1
'raven.contrib.django.middleware.SentryResponseErrorIdMiddleware',

Agregamos la sentry a la lista de aplicaciones

1
'raven.contrib.django',

Ahora podemos ir al Sentry y crear un proyecto, nos pedirá el nombre, la plataforma del proyecto (en este caso Django), luego nos dará un código llamado SENTRY_DNS que lo agregaremos en el settings de nuestro proyecto, al final del todo lo podremos agregar.

Añadir este handler en el LOGGING:

1
2
3
4
'sentry': {
'level''WARNING',
'class''raven.contrib.django.handlers.SentryHandler',
},

Una vez hecho esto cada vez que nuestro proyecto genere un error nos llegará al Sentry y podremos ver cuantas veces ha sucedido, gráficos, marcarlos como resueltos y mucho más.

Saludos.



Alex Dzul

FullStack Python / Django Developer. #jslove

Temas relacionados