Резервное копирование и восстановление данных мониторинга Prometheus

Содержание

Обзор функции

Данные мониторинга Prometheus хранятся в формате TSDB (Time Series Database) и поддерживают функции резервного копирования и восстановления. Данные мониторинга сохраняются в заданном пути внутри контейнера 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: Резервное копирование каталога хранения (рекомендуется)

  1. Используйте команду kubectl cp для резервного копирования:

    kubectl cp -n cpaas-system prometheus-kube-prometheus-0-0:/prometheus -c prometheus <target storage path>
  2. Резервное копирование из бэкенда хранения (в зависимости от типа хранилища, выбранного при установке):

  • LocalVolume: копировать из каталога /cpaas/monitoring/prometheus
  • PV: копировать из каталога монтирования PV (рекомендуется установить для PV параметр persistentVolumeReclaimPolicy в значение Retain)
  • StorageClass: копировать из каталога монтирования PV

Метод 2: Резервное копирование с помощью снимка (snapshot)

  1. Включите Admin API:

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

    Добавьте конфигурацию:

    spec:
      enableAdminAPI: true

    Примечание: после обновления и сохранения конфигурации Pod Prometheus (имя 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 после завершения операций