Хочу поделиться с сообществом свой наработкой по мониторингу бэкапов 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
Надеюсь, что инструмент окажется полезен, и буду рад если вы поделитесь идеями и предложениями.