Резервное копирование и восстановление данных мониторинга 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: Резервное копирование каталога хранения (рекомендуется)
-
Используйте команду kubectl cp для резервного копирования:
kubectl cp -n cpaas-system prometheus-kube-prometheus-0-0:/prometheus -c prometheus <target storage path>
-
Резервное копирование из бэкенда хранения (в зависимости от типа хранилища, выбранного при установке):
- LocalVolume: копировать из каталога
/cpaas/monitoring/prometheus
- PV: копировать из каталога монтирования PV (рекомендуется установить для PV параметр persistentVolumeReclaimPolicy в значение
Retain
)
- StorageClass: копировать из каталога монтирования PV
Метод 2: Резервное копирование с помощью снимка (snapshot)
-
Включите Admin API:
kubectl edit -n cpaas-system prometheus kube-prometheus-0
Добавьте конфигурацию:
spec:
enableAdminAPI: true
Примечание: после обновления и сохранения конфигурации Pod Prometheus (имя 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 после завершения операций