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

Prometheus 1.4.1版本无影响删除旧数据方法咨询

解决Prometheus 1.4.1不停止运行删除旧数据的方法

嘿,针对你在运行Prometheus 1.4.1时想要删除旧数据且不影响服务的需求,我给你整理了几个实用的方案,按操作安全性和便捷性排序:

方案一:使用Prometheus Admin API(推荐,无需停服务)

Prometheus 1.x已经提供了官方的删除API,全程可以在服务运行状态下完成:

  1. 标记要删除的旧数据
    用curl调用删除接口,指定要删除的时间范围和匹配的时间序列。比如要删除所有2024年1月1日之前的数据,执行:

    curl -X POST -g 'http://<你的Prometheus地址>:9090/api/v1/admin/tsdb/delete?match[]={__name__=~".+"}&start=0&end=1704067200'
    

    说明:

    • match[]={__name__=~".+"} 表示匹配所有时间序列,如果只想删除特定指标,比如cpu_usage,可以改成match[]={__name__="cpu_usage"}
    • start=0 代表从时间起点开始,end是你要保留数据的起始时间戳(上面的1704067200对应2024-01-01 00:00:00)
  2. 清理磁盘上的标记数据
    第一步只是把数据标记为待删除,并不会立刻释放磁盘空间,执行下面的命令彻底清理:

    curl -X POST 'http://<你的Prometheus地址>:9090/api/v1/admin/tsdb/clean_tombstones'
    

    这个操作会把标记为删除的文件从磁盘移除,过程中可能会有短暂的IO负载升高,建议在业务低峰期执行。

方案二:手动清理数据目录(谨慎操作)

如果API方式无法满足需求,你可以直接操作Prometheus的数据存储目录,但要注意风险:

  1. 定位数据目录
    默认情况下Prometheus的数据存在启动目录下的data/文件夹,里面是按时间分段的块目录(比如20231201-000000这样命名)。

  2. 删除旧块目录
    找到所有时间范围早于你要保留的块目录,直接删除(比如删除2024-01-01之前的所有块)。注意:绝对不能删除当前正在写入的最新块,否则会导致数据异常。

  3. 触发清理
    删除后执行方案一中的clean_tombstones API,确保Prometheus识别到数据变化并清理残留文件,无需重启服务。

额外建议:配置自动数据保留

既然你已经启用了保留策略,可能只是需要调整参数让自动清理更符合需求。Prometheus 1.4.1使用--storage.local.retention参数设置保留时长,比如要保留30天数据,启动时添加:

./prometheus --storage.local.retention=30d ...

这样Prometheus会自动定期删除超过30天的旧数据,不用手动操作。

注意事项

  • 操作前务必备份数据:万一误删重要数据,备份是唯一的恢复途径
  • API操作完全不影响Prometheus的正常监控,是最安全的方式
  • 手动清理目录时,一定要确认目标块的时间范围,避免误删正在使用的数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:42:49