自建Sentry事件保留异常:升级后无法查看全量历史事件
解决Sentry WebUI仅显示90天事件的问题
1. 检查并修改ClickHouse表的TTL配置
Sentry在ClickHouse中的sentry_local、discover_local等表可能带有默认90天的TTL(生存时间)配置,这会导致旧数据被标记为过期,WebUI无法检索。需要手动调整:
- 登录ClickHouse客户端:
clickhouse-client - 查询表的TTL设置:
SHOW CREATE TABLE sentry_local; SHOW CREATE TABLE discover_local; - 如果输出包含
TTL timestamp + INTERVAL 90 DAY,执行ALTER语句修改为3650天:
注意:若存在ALTER TABLE sentry_local MODIFY TTL timestamp + INTERVAL 3650 DAY; ALTER TABLE discover_local MODIFY TTL timestamp + INTERVAL 3650 DAY;discover_local_*这类分区表,需同步修改对应配置。
2. 确认Sentry全局配置的retention参数
检查sentry.conf.py文件,避免硬编码配置覆盖环境变量:
- 查找是否存在
SENTRY_EVENT_RETENTION_DAYS = 90这类配置 - 若有,修改为
3650或直接注释,让.env中的设置生效
3. 验证旧事件的实际存储状态
确认ClickHouse中的旧数据未被物理删除:
- 查询90天前的事件数量:
SELECT count(*) FROM sentry_local WHERE timestamp < now() - INTERVAL 90 DAY; SELECT count(*) FROM discover_local WHERE timestamp < now() - INTERVAL 90 DAY; - 若结果大于0,说明数据存在,只是TTL限制了WebUI的检索;若结果为0,需从备份恢复旧数据。
4. 检查Sentry内部清理任务
即使移除了sentry-cleanup服务,Sentry后台可能仍有其他清理任务:
- 进入Sentry管理后台的Settings > Cron Jobs,查看
cleanup.events这类任务的配置 - 确认任务使用的retention天数为3650,若配置错误则修改参数,或禁用不必要的清理任务
5. 刷新缓存与索引
修改配置后,需重启服务并刷新索引:
- 重启Sentry服务:
docker-compose restart web worker cron - 手动触发索引更新:
docker-compose exec web sentry cleanup --days 3650 docker-compose exec web sentry update-index
内容的提问来源于stack exchange,提问作者Боян Бонев
相关产品推荐
相关产品推荐

