我正在使用 django-sentry 来跟踪网站中的错误。我的问题是数据库变得太大了。'message' 表和 'groupedmessage' 是相关的
有没有办法清除旧条目和特定消息或将哨兵表添加到 django 的管理员?
我正在使用 django-sentry 来跟踪网站中的错误。我的问题是数据库变得太大了。'message' 表和 'groupedmessage' 是相关的
有没有办法清除旧条目和特定消息或将哨兵表添加到 django 的管理员?
使用清理命令。有两个参数可用:
像这样使用它(--config
现在已删除):
# sentry --config=sentry.conf.py cleanup --days 360
sentry cleanup --days 360
或带有可选项目参数,它必须是整数:
# sentry --config=sentry.conf.py cleanup --days 360 --project 1
sentry cleanup --days 360 --project 1
在发现清理命令之前,我还可以使用 django ORM 手动执行此操作:
#$source bin/activate
#$sentry --config=sentry.conf.py shell
from sentry.models import Event, Alert
Event.objects.all().count()
Alert.objects.all().count()
查看哨兵模型以查询其他对象。从这里您可以在对象上使用 .save()、.remove() 等 django ORM 命令。在此处查看可用的哨兵模型。如果您需要粒度,即修改对象,这种方法会更灵活一些。cleanup 命令缺少的一件事是告诉您它删除了多少对象,而是将已删除的对象转储到屏幕上。
我的清理脚本如下所示,我使用 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
这是您使用 dockerized Sentry 实例执行清理的方式,该实例具有官方指南中的docker-compose.yml
默认值:
$ # 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
并添加以下行:
0 3 * * * cd sentry-config && docker-compose run --rm worker cleanup --days 30
不要忘记VACUUM FULL {{relation_name}};
通过在 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;
您可以在VACUUM FULL;
不指定关系的情况下运行,但这会锁定整个数据库。所以我建议一对一地清理关系。这就是你如何找到你最大的关系的大小。
要继续 radtek 的有用答案,如果您只想删除特定错误,我发现最简单的方法是在Group
对象上调用 delete:
from sentry.models import Group
Group.objects.filter(culprit__contains='[SEARCH TERM]').delete()
[SEARCH TERM]
您要删除的错误消息中出现的一些文本在哪里。