Prometheus仅保留最近2天数据的原因咨询(配置30天/200GB)
检查磁盘使用是否触发size限制
先确认Prometheus数据目录的实际占用,执行命令:du -sh <你的Prometheus数据目录路径>。如果总大小已经接近或超过200GB,说明是size阈值先被触发——你之前仅保留10天数据,切换到30天策略后,数据量会快速累积,直接触达200GB上限,导致旧块被优先清理。注意Prometheus计算size时会包含未完成归档的临时块,实际占用可能比你预估的高。从日志确认清理触发条件
查看Prometheus日志文件,搜索cleanup或retention关键词,找到类似Deleting outdated block的日志条目,里面会明确标注是time还是size触发的清理。如果日志里出现Retention policy enforced by size,就坐实是size限制导致旧块提前被清理。验证启动参数是否生效
访问Prometheus的/status页面(或用curl http://<Prometheus地址>:9090/status),在「Command Line Flags」部分核对storage.tsdb.retention.size和storage.tsdb.retention.time是否确实设置为200GB和30d。有可能是启动脚本被修改、配置文件中的retention设置覆盖了命令行参数,或是容器部署时环境变量配置错误,导致实际生效的保留策略和你预期不符。排查外部清理干扰
检查是否有自定义脚本、监控运维工具在手动删除TSDB的块文件——这类操作会绕过Prometheus自身的保留机制,导致数据被意外清理。同时,如果Prometheus进程近期重启过,清理流程会立即启动,若重启前数据已经触达size阈值,会快速完成旧块清理。
内容的提问来源于stack exchange,提问作者Megazord

