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