- PVSM.RU - https://www.pvsm.ru -

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

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

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

В тот же раз, мне нужно было не просто так разово посмотреть на какую-то стату, мне нужно было отслеживать её изменение. Не помню что это было точно, возможно надо было смотреть на изменение лага репликации, или с какой частотой вызывался какой-то конкретный запрос…
Так вот, поймав себя на мысли что мне мне хватает инструмента я начал поиски утилит под свою задачу, но увы, не нашел ничего того что мне бы зашло. Так появился pgCenter [1].

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

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

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

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

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

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

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

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

Автор: lesovsky

Источник [2]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/postgresql/294590

Ссылки в тексте:

[1] pgCenter: https://github.com/lesovsky/pgcenter

[2] Источник: https://habr.com/post/425083/?utm_campaign=425083