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

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

    Данные мониторинга Prometheus хранятся в формате TSDB (Time Series Database) и поддерживают функции резервного копирования и восстановления. Данные мониторинга хранятся в заданном пути внутри контейнера Prometheus (задается параметром конфигурации storage.tsdb.path, значение по умолчанию — /prometheus).

    template:
      spec:
        containers:
          - args:
              - '--storage.tsdb.path=/prometheus' # Directory for storing monitoring data in the Prometheus container

    Сценарии использования

    • Сохранение исторических данных мониторинга при миграции системы
    • Предотвращение потери данных из-за непредвиденных инцидентов
    • Миграция данных мониторинга в новый экземпляр Prometheus

    Предварительные требования

    • Установлен плагин ACP Monitoring with 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. Выполните резервное копирование из backend хранилища (в зависимости от типа хранилища, выбранного при установке):

    • LocalVolume: скопируйте данные из каталога /cpaas/monitoring/prometheus
    • 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. Создайте snapshot:

      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

    Следующие процедуры

    • Проверьте, что данные мониторинга были восстановлены корректно
    • Настройте регулярное расписание резервного копирования данных
    • Если используется метод резервного копирования через snapshot, при необходимости можно отключить Admin API