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 存储监控数据时,先将采集的数据放入缓存,随后定期写入存储目录。以下备份方式均以存储目录作为数据源,因此备份时不包含缓存中的数据。

方法一:备份存储目录(推荐)

  1. 使用 kubectl cp 命令备份:

    kubectl cp -n cpaas-system prometheus-kube-prometheus-0-0:/prometheus -c prometheus <目标存储路>
  2. 从存储后端备份(根据安装时选择的存储类型):

  • LocalVolume:从 /cpaas/monitoring/prometheus 目录复制
  • PV:从 PV 挂载目录复制(建议将 PV 的 persistentVolumeReclaimPolicy 设置为 Retain
  • StorageClass:从 PV 挂载目录复制

方法二:快照备份

  1. 启用 Admin API:

    kubectl edit -n cpaas-system prometheus kube-prometheus-0

    添加配置:

    spec:
      enableAdminAPI: true

    注意:更新保存配置后,Prometheus Pod(Pod 名称:prometheus-kube-prometheus-0-0)将重启。请等待所有 Pod 状态变为 Running 后再进行后续操作。

  2. 创建快照:

    curl -XPOST <Prometheus Pod IP>:9090/api/v1/admin/tsdb/snapshot

恢复数据

  1. 将备份数据复制到 Prometheus 容器:

    kubectl cp ./prometheus-backup cpaas-system/prometheus-kube-prometheus-0-0:/prometheus/
  2. 将数据移动到指定目录:

    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