我正在使用django-sentry来跟踪网站上的错误。我的问题是数据库已经变得过于庞大。'message'表和'groupedmessage'表是相关的。
有没有办法清除旧条目和特定的消息,或将sentry表添加到django的管理界面中呢?
我正在使用django-sentry来跟踪网站上的错误。我的问题是数据库已经变得过于庞大。'message'表和'groupedmessage'表是相关的。
有没有办法清除旧条目和特定的消息,或将sentry表添加到django的管理界面中呢?
使用清理命令,有两个可用参数:
使用方法如下(--config
现已删除):
# sentry --config=sentry.conf.py cleanup --days 360
sentry cleanup --days 360
OR后面可以跟一个可选的项目参数,该参数必须是整数:
# sentry --config=sentry.conf.py cleanup --days 360 --project 1
sentry cleanup --days 360 --project 1
我之前也能够使用Django的ORM手动完成这项任务,直到发现了cleanup命令:
#$source bin/activate
#$sentry --config=sentry.conf.py shell
from sentry.models import Event, Alert
Event.objects.all().count()
Alert.objects.all().count()
查看 Sentry 模型以查询其他对象。从这里,您可以对这些对象使用 Django ORM 命令,如 .save()、.remove() 等。在此处查看可用的 Sentry 模型。如果您需要更精细的对象修改,则此方法比较灵活。清理命令缺少一个告诉您删除了多少个对象的功能,它只是将已删除的对象转储到屏幕上。
我的清理脚本类似于以下内容,并使用 cron @monthly 运行:
#!/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
以下是使用默认的docker-compose.yml
从官方指南清理使用Docker化的Sentry实例的步骤:
$ # Go to a directory containing the docker-compose.yml:
$ cd sentry-config
$ docker-compose run --rm worker cleanup --days 90
考虑阅读帮助文档:
$ docker-compose run --rm worker help
$ docker-compose run --rm worker cleanup --help
使用cron定期进行清理。 运行crontab -e
,并在其中添加以下行:
使用cron定期清理,运行crontab -e
并添加以下行:
0 3 * * * cd sentry-config && docker-compose run --rm worker cleanup --days 30
别忘了通过在Postgres容器内运行VACUUM FULL {{relation_name}};
来回收磁盘空间:
$ 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;
您可以在不指定关系的情况下运行VACUUM FULL;
,但这将锁定整个数据库。因此,我建议逐个清理关系。以下是如何查找最大关系的大小。
继radtek的有用回答之后,如果您只想删除特定错误,我发现最简单的方法是调用Group
对象上的delete方法:
from sentry.models import Group
Group.objects.filter(culprit__contains='[SEARCH TERM]').delete()
[SEARCH TERM]
是出现在想要删除的错误消息中的一些文本。