Pull to refresh

Мониторинг бэкапов PostgreSQL, сделанных в pg_probackup

Level of difficultyMedium
Reading time2 min
Views3.4K

Хочу поделиться с сообществом свой наработкой по мониторингу бэкапов PostgreSQL.

Для того чтобы делать сами бэкапы, используется сторонний open source инструмент pg_probackup (разработка компании Postgres Professional).

Этот инструмент умеет делать инкрементные бэкапы, а также автоматизирует сопутствующие процессы, такие как, сжатие данных, merge, удаление старых бэкапов и wal-файлов.

Остается проблема мониторинга. Предположим, мы настроили pg_probackup и он трудится упорно, вызываемый регулярно через cron.

Как мы узнаем, о том, что что-то сломалось?

Для решения этой проблемы был написан небольшой экспортер метрик pg_probackup для Prometheus.

К счастью, разработчики pg_probackup предусмотрели возможность вызова своего инструмента с параметром --format=json, чтобы выдавать статус бэкапов и конфигурацию в структурированном виде.

Экспортер работает как web-сервис, который при вызове выполняет команды pg_probackup show и show-config и далее преобразует данные из json в формат Prometheus.

Инструкцию по настройке здесь приводить не буду, т.к. она несложная и уже есть в репозитории github.

Расскажу немного о том, как дальше можно использовать полученные метрики.

1) Запрос таблицы с бэкапами

Для начала, можно построить в Grafana таблицу со статусом последних бэкапов, аналогичную той, что мы можем увидеть, вызвав команду show:

Запрос PromQL:

sum by (service_id,backup_no, id, backup_mode, status, start_time) (postgres_backup_data_bytes{instance="your_host",service_id="your_instance_name"})

Итоговый вид таблицы:

таблица со статусом последних бэкапов
таблица со статусом последних бэкапов

2) Информирование о сбое

Далее можно настроить alert в Prometheus, с информацией о том, что бэкап сломался.

Запрос PromQL:

postgres_backup_error{backup_no="000",job="pg_probackup"} > 0

Надеюсь, что инструмент окажется полезен, и буду рад если вы поделитесь идеями и предложениями.

Tags:
Hubs:
Total votes 10: ↑10 and ↓0+12
Comments6

Articles