tutorial template sheet linebreaksbr dirs cheat django sentry data-cleansing

template - ¿Cómo borrar/mantener una base de datos django-sentry?



load django template (4)

Esta es la forma en que realiza una limpieza utilizando una instancia de Sentry acoplada con un docker-compose.yml predeterminado de la guía oficial :

$ # Go to a directory containing the docker-compose.yml: $ cd sentry-config $ docker-compose run --rm worker cleanup --days 90

Considere la posibilidad de leer la ayuda:

$ docker-compose run --rm worker help $ docker-compose run --rm worker cleanup --help

Utilice cron para realizar la limpieza regularmente. Ejecute crontab -e y agregue allí la siguiente línea:

0 3 * * * cd sentry-config && docker-compose run --rm worker cleanup --days 30

No olvide recuperar el espacio en disco ejecutando VACUUM FULL {{relation_name}}; Dentro de un contenedor de Postgres:

$ docker exec -it {{postgres_container_id} /bin/bash $ psql -U postgres postgres=# VACUUM FULL public.nodestore_node; postgres=# VACUUM FULL {{ any large relation }}; postgres=# VACUUM FULL public.sentry_eventtag;

Puedes ejecutar VACUUM FULL; sin especificar una relación, pero esto bloqueará toda la base de datos. Así que recomiendo aspirar las relaciones uno por uno. Así es como puedes encontrar el tamaño de tus relaciones más grandes.

Estoy usando django-sentry para rastrear errores en un sitio web. Mi problema es que la base de datos ha crecido demasiado. La tabla ''mensaje'' y el ''mensaje agrupado'' están relacionados

¿Hay alguna forma de borrar entradas antiguas y mensajes específicos o agregar las tablas de centinela al administrador de django?


Hay un comando de cleanup . Desafortunadamente, su comportamiento parece no documentado, pero los comentarios del código son bastante informativos.


Para continuar con la útil respuesta de radtek, si solo desea eliminar errores particulares, la forma más sencilla que he encontrado es llamar a eliminar en el objeto Group :

from sentry.models import Group Group.objects.filter(culprit__contains=''[SEARCH TERM]'').delete()

Donde [SEARCH TERM] es un texto que aparece dentro de los mensajes de error que desea eliminar.


Utilice el comando de limpieza. Dos parámetros están disponibles:

  • días (valor predeterminado: 30): indica la antigüedad del objeto para que se pueda limpiar.
  • proyecto: indica de qué proyecto se eliminará, ya que puede tener muchos configurados en un solo servidor centinela (predeterminado: todos)

Úsalo como tal ( --config ahora eliminado):

# sentry --config=sentry.conf.py cleanup --days 360 sentry cleanup --days 360

O con un parámetro de proyecto opcional, debe ser un entero:

# sentry --config=sentry.conf.py cleanup --days 360 --project 1 sentry cleanup --days 360 --project 1

También pude usar el ORM de django para hacer esto manualmente, antes de descubrir el comando de limpieza:

#$source bin/activate #$sentry --config=sentry.conf.py shell from sentry.models import Event, Alert Event.objects.all().count() Alert.objects.all().count()

Echa un vistazo a los modelos de centinela para consultar otros objetos. Desde aquí puede usar los comandos ORM de django como .save (), .remove () etc. en los objetos. Echa un vistazo a los modelos de centinela disponibles here . Este enfoque es un poco más flexible si necesita la granularidad, es decir, la modificación de objetos. Una cosa de la que carece el comando de limpieza es que le dice cuántos objetos eliminó, en su lugar, descarga los objetos eliminados en la pantalla.

Mi script de limpieza tiene este aspecto y lo ejecuto @monthly usando cron:

#!/bin/bash date cd /var/web/sentry source bin/activate # exec sentry --config=sentry.conf.py cleanup --days 360 #--project 1 # UPDATE: You can now drop the --config param exec sentry cleanup --days 360