Prometheus 监控数据的备份与恢复
目录
功能概述
Prometheus 监控数据以 TSDB(时间序列数据库)格式存储,支持备份与恢复功能。监控数据存储在 Prometheus 容器内指定路径(由配置项 storage.tsdb.path
指定,默认值为 /prometheus
)。
template:
spec:
containers:
- args:
- '--storage.tsdb.path=/prometheus' # Prometheus 容器中存储监控数据的目录
使用场景
- 系统迁移时保留历史监控数据
- 防止因意外事件导致的数据丢失
- 将监控数据迁移至新的 Prometheus 实例
前置条件
- 已安装 ACP Monitoring 中的 Prometheus 插件(计算组件名称为
prometheus-kube-prometheus-0
,类型为 StatefulSet
)
- 具备集群管理员权限
- 确保存储目标位置有足够的存储空间
操作流程
备份数据
备份前请注意:Prometheus 存储监控数据时,先将采集的数据放入缓存,随后周期性写入存储目录。以下备份方式均以存储目录作为数据源,因此备份时不包含缓存中的数据。
方式一:备份存储目录(推荐)
-
使用 kubectl cp 命令备份:
kubectl cp -n cpaas-system prometheus-kube-prometheus-0-0:/prometheus -c prometheus <目标存储路径>
-
从存储后端备份(根据安装时选择的存储类型):
- LocalVolume:从
/cpaas/monitoring/prometheus
目录复制
- PV:从 PV 挂载目录复制(建议将 PV 的 persistentVolumeReclaimPolicy 设置为
Retain
)
- StorageClass:从 PV 挂载目录复制
方式二:快照备份
-
启用 Admin API:
kubectl edit -n cpaas-system prometheus kube-prometheus-0
添加配置:
spec:
enableAdminAPI: true
注意:更新保存配置后,Prometheus Pod(Pod 名称:prometheus-kube-prometheus-0-0)将重启。请等待所有 Pod 状态为 Running 后再进行后续操作。
-
创建快照:
curl -XPOST <Prometheus Pod IP>:9090/api/v1/admin/tsdb/snapshot
恢复数据
-
将备份数据复制到 Prometheus 容器:
kubectl cp ./prometheus-backup cpaas-system/prometheus-kube-prometheus-0-0:/prometheus/
-
将数据移动到指定目录:
kubectl exec -it -n cpaas-system prometheus-kube-prometheus-0-0 -c prometheus sh
mv /prometheus/prometheus-backup/* /prometheus/
快捷方式:插件安装时存储类型为 LocalVolume,可直接将备份数据复制到插件所在节点的 /cpaas/monitoring/prometheus/prometheus-db/
目录。
操作结果
- 备份完成后,可在目标存储路径看到完整的 TSDB 格式监控数据
- 恢复完成后,Prometheus 会自动加载历史监控数据
了解更多
TSDB 数据格式说明
TSDB 格式数据结构示例:
├── 01FXP317QBANGAX1XQAXCJK9DB
│ ├── chunks
│ │ └── 000001
│ ├── index
│ ├── meta.json
│ └── tombstones
├── chunks_head
│ ├── 000022
│ └── 000023
├── queries.active
└── wal
├── 00000020
├── 00000021
├── 00000022
├── 00000023
└── checkpoint.00000019
└── 00000000
数据备份注意事项
- 备份数据不包含备份时缓存中的数据
- 建议定期进行数据备份
- 使用 PV 存储时,建议将 persistentVolumeReclaimPolicy 设置为
Retain
后续操作
- 验证监控数据是否已正确恢复
- 定期制定数据备份计划
- 使用快照备份方式时,可选择关闭 Admin API