Como instalar tu propio Sentry en debian 8
Hace poco instalé Sentry en un VPS con debian y como los pasos son unos cuantos, decidí escribir este post para mantenerlo en algún lugar público (que mejor que el blog!).
Sentry es un sistema que reporta en tiempo real los crashes o excepciones que ocurren en nuestras aplicaciones web, apps mobiles o juegos. No solo reporta y notifica por email, sino que podés discutir con colegas sobre errores, darle un seguimiento, etc. Permite definir multiples proyectos, y permisos específicos por usuarios y proyectos.
Sentry trabaja con la mayoría de los lenguajes y frameworks:

También permite integraciones con aplicaciones y servicios:

Bueno, basta de chachara, vamos con los pasos.
Añadimos un usuario para manejar la aplicación y lo agregamos al grupo sudo
adduser sentry (sentrymava) gpasswd -a sentry sudo
Iniciamos sesión con el nuevo usuario e instalamos dependencias:
su - sentry sudo apt-get install build-essential python-dev sudo apt-get python-pip sudo apt-get install libxml2-dev libxslt-dev libz-dev libssl-dev # sentry instalaré dependiencia para postgres sudo apt-get install postgresql postgresql-contrib libpq-dev # si no tiene virtuelenv sudo apt-get install python-virtualenv # sentry necesita redis sudo apt-get install redis-server
Comprobamos que está todo ok con redis:
redis-cli ping PONG # son unos genios LOL
Creamos virtualenv para sentry y lo instalamos:
cd ~ virtualenv env source env/bin/activate pip install sentry
Si da error
c/_cffi_backend.c:15:17: fatal error: ffi.h: No such file or directory #include <ffi.h>
compilation terminated
# probá instalando
sudo apt-get install libffi-dev
y reintentar con
Una vez instalado, iniciamos la configuración:
sentry init # dentro del virtuelenv
Configuramos la base de datos postgres
sudo -u postgres psql psql (9.4.5) Digite «help» para obtener ayuda. postgres=# create extension adminpack; CREATE EXTENSION postgres=# \q
Si da error
ERROR: no se pudo abrir el archivo de control de extensión «/usr/share/postgresql/9.4/extension/admipack.control»: No existe el fichero o el directorio
ls /usr/share/postgresql/9.4/extension/ | grep adminpack
y vemos contenido, hacemos
sudo apt-get install locale sudo updatedb
reintentar!
Continuamos configurando la base de datos:
sudo passwd postgres sudo su - postgres psql -d template1 -c "ALTER USER postgres WITH PASSWORD 'unaclaverealmentefuerte';" createdb sentry_db createuser sentry_user --pwprompt psql -d template1 -U postgres GRANT ALL PRIVILEGES ON DATABASE sentry_db TO sentry_user; \q exit # salir del usuario postgres
Proseguimos editando el archivo de configuración de sentry:
vim .sentry/sentry.conf.py
y establecemos los valores para la conexión a la base de datos
DATABASES = { 'default': { 'ENGINE': 'sentry.db.postgres', 'NAME': 'sentry_db', 'USER': 'sentry_user', 'PASSWORD': 'unaclaverealmentefuerte', 'HOST': 'localhost', 'PORT': '', } }
y actualizamos la instalación
sentry upgrade # dentro del virtualenv
Podemos probar si funciona ok la instalación:
sentry start
Configuración NGINX
Añadimos en la configuración
server { listen 80; server_name sentry.tudominio.com; access_log /home/sentry/logs/nginx.access.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; proxy_set_header X-Forwarded-Proto $scheme; } }
y creamos el archivo de log
mkdir logs touch logs/nginx.access.log sudo service nginx reload
Arrancamos sentry y verificamos que podemos acceder en sentry.tudominio.com
sentry start
Gestión de la aplicación con supervisor
Si no lo tenemos instalado
sudo apt-get install supervisor
Debemos crear dos archivos de configuración, una para la app web, y otro para las tareas que ejecuta celery
Archivo en /etc/supervisor/conf.d/sentry.conf
[program:sentry-web] directory=/home/sentry/ command=/home/sentry/env/bin/sentry start http user = sentry stdout_logfile = /home/sentry/logs/sentry.log redirect_strerr = true autostart=true autorestart=true
Archivo en /etc/supervisor/conf.d/sentry-worker.conf
[program:sentry-worker] directory=/home/sentry/ command=/home/sentry/env/bin/sentry celery worker -B stdout_logfile = /home/sentry/logs/sentry-worker.log user = sentry autostart=true autorestart=true redirect_stderr=true killasgroup=true
Creamos los archivos de logs de ambos procesos
touch logs/sentry-worker.log touch logs/sentry.log
Y por último, recargamos e reiniciamos supervisor
sudo supervisorctl reread sudo supervisorctl update sudo supervisorctl reload
Eso es todo. Realmente Sentry es una app indispensable si querés estar al tanto de todo lo que suceda en tus sistemas web o mobile.
Los pasos que siguen tienen que ver con crear un usuario en sentry, crear un proyecto y realizar la integración en tu proyecto. Todo esto es explicado por el mismo sentry cuando dseleccionas el lenguaje o framework que estás usando en tu proyecto.
Espero les sirva.
Bye!