一、TSDB 是什么
TSDB = Time Series Database(时间序列数据库),是 Prometheus 内置的、专门存 "某个指标在某个时间点的值" 的存储引擎。数据写在 /var/lib/prometheus/。
存的数据本质上是一长串 "指标 + 标签 + 时间戳 + 数值" 的四元组,例如你在 Grafana 看到的折线图,底层就是这种按时间排列的样本点:
pg_stat_database_numbackends{datname="postgres"} @ 09:00:00 = 3
pg_stat_database_numbackends{datname="postgres"} @ 09:00:05 = 3
pg_stat_database_numbackends{datname="postgres"} @ 09:00:10 = 4
关键特性:只增不改、按时间有序、数据一旦落盘基本不修改(只做压缩合并和过期删除)。
二、TSDB 的目录结构和数据如何组织
/var/lib/prometheus/
├── chunks_head/ ← 内存数据的临时落盘区
├── wal/ ← 预写日志(WAL),防止崩溃丢数据
├── queries.active ← 正在执行的查询
└── <block 目录>/ ← 时间分块,每个块是一个时间段的完整数据
├── chunks/ ← 实际数据样本(压缩存储)
├── index/ ← 标签+指标名 索引,加速查询
├── meta.json ← 块元信息(起止时间)
└── tombstones ← 已删除数据的墓碑标记
数据流是:抓取 → 先写内存 (head) → 同时写 WAL → 定期刷成 block → 后台压缩合并 → 超过保留期自动删除。
三、TSDB 如何维护(关键运维动作)
1. 保留期(最重要的)
默认只存 15 天,超时自动删除。用启动参数控制:
--storage.tsdb.retention.time=30d # 保留30天
你当前 service 里没配,所以是默认 15 天。想长期存历史,这个必须改。
2. 压缩(Compact)
Prometheus 后台自动把多个小块合并成更大的块、压缩样本,减少空间。一般不用手动干预。
3. 磁盘空间
存储量 ≈ 指标数量 × 抓取频率 × 样本大小 × 保留天数。指标越多、抓越勤,占用越大。监控 /var/lib/prometheus 的磁盘使用。
4. 常见维护命令
# 看用了多少空间
du -sh /var/lib/prometheus
# 删除某个时间块(谨慎,会丢数据)
rm -rf /var/lib/prometheus/01M4HKZYK1HJ6G2W1SXRQ5Y3X6
# 配置了保留期后重载即可,无需停服
5. 磁盘不足时的处理
- 优先:延长
retention前先评估磁盘; - 清理:调短保留期 + 重启 Prometheus 让它删除旧块;
- 不要直接删正在使用的
wal/或chunks_head/(会导致崩溃或丢数据)。
TSDB 存储结构图
预览
查看代码
一句话总结
TSDB 就是 Prometheus 自带的 "指标仓库",把每次抓到的样本按时间存成块、自动压缩、到期清理。你要维护的核心只有两点:磁盘空间和保留期(默认 15 天)。
有的。TSDB 的管理主要有 Prometheus 自带的工具和第三方工具两类。
一、Prometheus 自带(最常用)
1. Prometheus Web UI(网页)
浏览器打开 http://192.168.56.132:9090:
- Graph / Explore:可视化查询指标、画图(你查 pg 指标就用这个)
- Status → Runtime & Build Info:看 TSDB 运行时状态
- Status → TSDB Status:看块数量、样本数、压缩状态、WAL 大小等最直接的 TSDB 视图
- Status → Targets:看采集目标健康(up/down)
2. HTTP API(命令行可调用)
# 查指标
curl 'http://127.0.0.1:9090/api/v1/query?query=pg_up'
# 查 TSDB 统计(块、样本、压缩等)
curl 'http://127.0.0.1:9090/api/v1/status/tsdb'
# 查所有运行时 flag(含 retention)
curl 'http://127.0.0.1:9090/api/v1/status/flags'
3. promtool(Prometheus 配套命令行工具)
服务器上 /usr/local/bin/prometheus 同目录一般有 promtool,用于本地检查 TSDB:
promtool tsdb list /var/lib/prometheus # 列出所有块
promtool tsdb analyze /var/lib/prometheus # 分析存储
promtool tsdb check /var/lib/prometheus # 检查完整性
promtool tsdb compact /var/lib/prometheus # 手动压缩
二、第三方工具
表格
| 工具 | 用途 |
|---|---|
| Grafana | 可视化查询 TSDB 数据(你已有),建 Dashboard 看趋势 |
| Thanos / VictoriaMetrics | 远程长期存储、跨节点汇聚(数据量大时用) |
| Remote Write 接收端 | 把 TSDB 数据同步到外部存储,便于长期保存 |
你的场景建议
你现在主要需要的是查看 TSDB 状态—— 最简单的是浏览器打开 http://192.168.56.132:9090/status/tsdb(Prometheus Web UI),能直接看到块、样本数、压缩情况。
浙公网安备 33010602011771号