Обратная связь для разработчиков PostgreSQL


Когда я тестировал PostgreSQL, то у меня было много вопросов к тому, в каких условиях используют DBA эти СУБД: на какой файловой системе, сколько RAM и CPU на сервере, какие дополнительные расширения они устанавливают и т.д. Время ресурс не бесконечный, а тестирование ПО вещь дорогая, поэтому хотелось знать ответы на эти вопросы, чтобы правильно спланировать тестирование и фокусироваться на тех конфигурациях тестовых окружений, которые бы покрывали нужды большинства пользователей СУБД PostgresPro.

Чтобы получить ответы на такие вопросы есть два способа:

  1. общение с представителями компаний, у которых больше все установок СУБД и которые приносят больше всего дохода компании-производителю. Такое общение обычно происходит со стороны отдела продаж или со стороны менеджера продукта. С таким способом как минимум два недостатка: вероятность искажения информации пока она дойдет от пользователей до отдела разработки и тестирования и отсутствие оперативности в предоставлении информации.
  2. автоматический сбор нужных метрик средствами самого продукта и отправка их разработчикам.

Второй способ широко используется и для коммерческих продуктов и для открытых проектов. Но для PostgreSQL я не нашёл расширения, которое бы собирало параметры СУБД и отправляло на удаленный сервер. Поэтому решил сделать его сам.

В первую очередь я посмотрел на расширение для MariaDB. Их расширение для сбора статистики по умолчанию установлено и выключено. После включения с заданной периодичностью расширение собирает значения 850 параметров и отправляет их на сервер компании MariaDB. Статистику некоторых параметров можно посмотреть на специальной страничке.

Для своего расширения я решил вместо данных в формате списка key=value использовать JSON. Просто потому что это будет удобнее и в PostgreSQL хорошая поддержка JSON (операторы и тип данных). Отправка отчёта с данными с помощью самого расширения мне показалась излишним. Для отправки проще использовать curl, а периодичность настроить в crontab(1).

Составил список того, что интересно было бы знать при разработке: версия СУБД, список расширений, настройки СУБД из postgresql.conf, размер БД на диске, файловая система диска, на котором находится $PGDATA, информация о CPU и RAM, информация об операционной системе и идентификатор СУБД. Для части параметров можно составить SQL запросы и на выходе получить JSON структуру. А некоторых параметров в БД нет. Для таких параметров сделал отдельные SQL функции на C, вывод которых уже добавлял в отчёт. Так получилось расширение pg_feedback. Было бы здорово сделать ещё сервис с web-ui, чтобы смотреть статистику по полученным отчётам, но пока получилось их только собирать и складывать в СУБД - pg_feedback-webui. Да и не уверен я, что нужно писать специальный сервис, когда есть Logstash и Kibana.

Метки: postgresql opensource