Постгресовая стата без нервов и напрягов

Пару-тройку лет назад, разбираясь с очередной проблемой в производительности постгреса, мне надо было покопаться в постгресовой статистике. Копаясь во вьюхах и функциях я поймал себя на мысли что работать с тем что есть по дефолту, довольно не удобно.

И в самом деле, в постгресе довольно большая куча всяких метрик, все они представлены в виде представлений и функций. С одной стороны это очень удобно, написал SELECT и получил данные. С другой стороны, такая периодическая писанина слегка утомляет.

В тот же раз, мне нужно было не просто так разово посмотреть на какую-то стату, мне нужно было отслеживать её изменение. Не помню что это было точно, возможно надо было смотреть на изменение лага репликации, или с какой частотой вызывался какой-то конкретный запрос…
Так вот, поймав себя на мысли что мне мне хватает инструмента я начал поиски утилит под свою задачу, но увы, не нашел ничего того что мне бы зашло. Так появился pgCenter.
Изначально это была консольная утилита и задумывалась она как простая в использовании штука, которая в top-подобном интерфейса выводила бы изменения постгресовой статистики. Однако учитывая, что во время траблшутинга постгреса нужно еще иметь перед глазами системные метрики, туда добавилась еще и системная статистика… cpu, память, своп, утилизация дисков и сетевых интерфейсов. Уже потом добавились другие админские функции, типа просмотр конфигурации и правка конфигов, работа с логами, возможность отстрела запросов и клиентов. В общем, постепенно количество функций росло… да и пользователи предлагали разные идеи как сделать инструмент еще лучше. Сегодня после некоторой разработки, я наконец готов представить новый релиз, в котором pgCenter очень сильно изменился.

Основное и пожалуй самое главное изменение, это то что pgCenter теперь написан на Go. Изначально он был на С, но честно говоря, на Go мне проще реализовывать идеи и добавлять новые функции. Другая положительная особенность это дистрибуция — исполняемый файл представляет собой один бинарник которые нужно лишь скачать, распаковать и можно пользоваться.

Другое большое нововведение это то что pgСenter это теперь не только top-like viewer для статистики. Теперь статистику можно дампить в локальные файлы и затем просматривать при необходимости. Применяется когда нет вменяемого мониторинга или надо пособирать статку в процессе бенчмаркинга на временной виртуалке или контейнере. В итоге, получилась штука которая напоминает оракловый statspack или например sar из пакета sysstat. При этом не нужно ничего городить на уровне базы, никаких дополнительных функций и т.п.

По итогу получилось 3 утилитки в одном бинарнике и все они вызываются как отдельные подкоманды наподобие того как это выглядит в git или perf.

На этом крупные новшества заканчиваются и остаются небольшие улучшения. В основном они связаны с top просмотрщиком:

  • Теперь по умолчанию вместо статистики по базам, показывается статистика активности — кто подключен, какие запросы исполняет, как долго и так далее. Опыт показывает что чаще всего нужно оценить именно текущую активность, поэтому пожалуй имеет смысл сразу показывать именно эту стату.
  • В activity статистике теперь можно видеть и фоновые процессы (добавлено в postgres 10), и idle клиентов которые ничего не делают (включается по хоткею). Раньше idle не показывались вообще, ввиду их бесполезности, но мало вдруг кому надо.
  • Статистика связанная с таблицами раньше показывалась двумя отдельными представлениями, теперь вся статистика объединена и показывается в одном представлении.
  • Функция фильтрации теперь поддерживает регулярные выражения, и можно более гибко задавать параметры того, чего именно хочется видеть… имена таблиц, индексов, функций, запросов и т.п.


Вполне вероятно что я забыл упомянуть еще какие-то фичи, но самые интересные на мой взгляд я перечислил.

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

9bf5669f0b7eaa275b27dca9ab888b8e.png

Есть еще презентация с доклада, хотя там описывается старая версия, но имеет смысл взглянуть тоже.

Ну и конечно, жду фидбеков и баг-репортов. Всем хорошего дня!

© Habrahabr.ru