You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自托管Sentry如何删除30天以上旧问题,解决数据库空间快速占满问题

清理超过30天的旧问题

Sentry 自托管版本自带官方清理工具,操作步骤如下:

  1. 首先查询Sentry web服务的容器名:
    docker ps | grep sentry-web
  2. 进入容器执行清理命令,指定清理30天以上的所有历史数据:
    docker exec -it [你的sentry-web容器名] sentry cleanup --days 30
  3. 清理完成后需要对PostgreSQL数据库执行空间回收,删除的数据默认不会自动释放磁盘空间,进入PostgreSQL容器执行:
    docker exec -it [你的sentry-postgres容器名] psql -U postgres
    进入数据库命令行后执行:
    VACUUM FULL;
    注意:VACUUM FULL操作会锁表,建议在业务低峰期执行,避免影响Sentry正常服务
配置自动覆盖/自动清理规则

固定周期自动清理

通过系统定时任务实现自动清理,避免磁盘空间占满,编辑crontab配置:
crontab -e
添加如下定时规则,示例为每周一凌晨2点自动清理30天以上的历史数据:

0 2 * * 1 docker exec [你的sentry-web容器名] sentry cleanup --days 30 >> /var/log/sentry_cleanup.log 2>&1

按磁盘阈值自动清理

Sentry本身没有内置磁盘阈值触发清理的功能,可以自行编写简易Shell脚本监控根分区使用率,当使用率超过设定阈值(比如70%)时,自动调整清理天数删除更早的历史数据,实现新数据自动覆盖旧数据的效果。
另外可以直接在Sentry的环境变量配置文件中添加SENTRY_EVENT_RETENTION_DAYS=30参数,配置后Sentry会自动按照设定的周期清理过期数据,无需额外手动执行命令。

其他优化方案
  • 调整SDK采样率:在各业务接入Sentry的SDK配置中调低采样率,比如生产环境设置0.2~0.5的采样率,在不影响问题排查的前提下可降低50%以上的数据写入量
  • 配置事件过滤规则:在Sentry项目的设置页面添加过滤规则,拦截404类状态码、爬虫请求、测试环境错误等无需关注的事件,从源头减少无效数据写入
  • 拆分大文件存储:将事件附件、符号表、崩溃转储文件等大体积数据存储到对象存储服务中,不要存储在PostgreSQL数据库内,可大幅降低数据库的存储压力
  • 定期数据库维护:每半个月对PostgreSQL执行一次VACUUM ANALYZE操作,清理表碎片,减少无效空间占用同时提升查询性能
  • 版本升级:条件允许的情况下可升级到更高版本的Sentry,21.6之后的版本对存储结构做了多处优化,相同数据量下存储占用可降低30%左右

内容的提问来源于stack exchange,提问作者SP.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 07:12:00