Всем привет. Меня зовут Олег, я техлид в команде разработки CRM для менеджеров ипотечного кредитования в Домклике. Сегодня я бы хотел поделиться рецептом установки утилиты PGHero с подключением нескольких баз данных. PGHero — это простенькая утилита, написанная на Ruby, с минималистичным дашбордом для мониторинга производительности БД PostgreSQL. Что может показать нам PGHero: статистику по запросам: количество вызовов, среднее и суммарное время выполнения (с возможностью хранения истории); активные в данный момент запросы; информацию о таблицах: занимаемое на диске место, даты последних запусков VACUUM и ANALYSE; информацию об индексах: занимаемое на диске место, наличие дублируемых/неиспользуемых индексов. Также может порекомендовать добавить индекс при наличии сложных запросов с Seq Scan; статистику по открытым подключениям к БД; вывод основных настроек БД, влияющих на производительность (shared_buffers, work_mem, maintenance_work_mem и т.д.) Одна из очень удобных возможностей утилиты — просмотр динамики среднего времени выполнения запросов (на основе статистики стандартного расширения PostgreSQL — pg_stat_statements). Выглядит это в интерфейсе PGHero вот так: Следующие шаги нужно проделать для каждой БД, которую мы собираемся подключать к PGHero.  Запросы нужно выполнять под суперпользователем. Устанавливаем расширение pg_stat_statements (если еще не установлено): Откройте файл postgresql.conf в текстовом редакторе и измените строку shared_preload_libraries: Перезапускаем сервер PostgreSQL: Создаем расширение и сбрасываем статистику: Создаем в БД отдельного пользователя для PGHero (чтобы не давать утилите полные права над базой).  В следующем запросе заменяем эти значения в угловых скобках на свои: <pghero_password> — пароль для пользователя pghero; <db_name> — имя вашей БД; <migrations_user> — имя основной роли с доступом к текущей БД. Допустим, у нас есть три БД: db_one, db_two и db_three. Мы хотим по всем трем отображать статистику в PGHero (вместе с историей запросов и размеров таблиц). Важный момент: для хранения истории запросов и размеров таблиц нужно завести в одной из баз данных отдельные таблицы, где будет храниться эта статистика. Мы будем хранить эти таблицы в БД db_one (хотя можно завести отдельную базу для этой статистики). Далее создаем на сервере файл конфигурации pghero.yml со следующим содержимым (подставляем актуальные настройки): Переходим к установке. Документация предлагает нам несколько способов: Docker-контейнер; отдельная служба на Linux; gem-пакет Ruby; Мы будем использовать первый способ — запуск в виде Docker-контейнера. Для этого в папке с файлом конфигурации pghero.yml нужно добавить Docker-файл с таким содержимым: Теперь собираем образ на основе Docker-файла и запускаем контейнер на нужном порту: Теперь дашборд должен быть доступен по адресу http://123.45.67.89:12345. Не забывайте про basic-авторизацию, логин и пароль мы указывали в pghero.yml. Последний этап: нужно настроить автозапуск по крону скриптов для сохранения в БД истории по запросам (capture_query_stats) и размерам таблиц (capture_space_stats). Документация рекомендует запускать capture_query_stats раз в 5 минут, а capture_space_stats — раз в сутки (но тут нужно решать по ситуации). Запускаем в командной строке crontab -e и добавляем строки для запуска скриптов: Вот и всё. Спасибо за внимание. Демо-версию утилиты можно посмотреть здесь. Исходный код и документация. Техлид