HeapDeck: Postgres® Monitor для iPhone

Увидеть, что горит в вашем Postgres.Потушить.

Пришёл алерт по Postgres, а ноутбук остался дома? HeapDeck покажет, кто блокирует, далеко ли до wraparound и какая реплика отстаёт, — и даст действовать прямо с iPhone. Сейчас — потушить пожар, чинить по-настоящему — уже за рабочим столом.

Free · Pro 29,99 $ разово · PostgreSQL 13–18 · iOS 17+ · iPhone

Экран «Здоровье» в HeapDeck: боевой сервер в состоянии «Критично» — сначала заблокированные сессии, затем соединения, самый долгий запрос, wraparound и репликация

Посмотрите, кто в Postgres блокирует всех. Отмените корень — с предпросмотром.

Экран «Блокировки» строит дерево по pg_blocking_pids() и ставит корень блокировки наверх: его pid, user@app, как долго он держит блокировку и что выполняет. Под ним — все сессии, застрявшие в очереди.

  • Отменить корень (разблокирует N) показывает, сколько сессий застряло за ним, и перечисляет их pid до того, как вы подтвердите. PRO
  • Перед отправкой HeapDeck заново читает цепочку. Если она изменилась, пока вы решали, вы увидите новые цифры и подтвердите ещё раз.
  • Отмена прерывает текущий запрос. Снятие завершает сессию и откатывает её транзакцию — после того как вы введёте её pid. PRO
  • У каждой ждущей сессии видно, чего она ждёт, например RowExclusiveLock on public.orders. Корень в состоянии idle in transaction выделен, а дедлок помечен именно как дедлок.
Экран «Блокировки»: корень блокировки уже 06:48 простаивает в транзакции и блокирует четыре сессии; под ним кнопка «Отменить корень (разблокирует 4)»

Узнайте свой процент wraparound раньше, чем Postgres перестанет принимать запись.

Экран «Vacuum и раздувание» показывает, насколько сервер близок к wraparound ID транзакций, как долю от 2³¹, и самые старые таблицы по возрасту relfrozenxid. На пределе PostgreSQL отказывает в записи с ошибкой database is not accepting commands to avoid wraparound data loss.

  • С 75% экран говорит об этом прямо и перечисляет обычные причины, по которым autovacuum не успевает: долгая открытая транзакция, неактивный слот репликации, застрявший воркер.
  • Мёртвые строки по каждой таблице: их доля и когда таблицу последний раз обрабатывал vacuum.
  • Неиспользуемые индексы и место, которое они занимают. HeapDeck скопирует для вас DROP INDEX CONCURRENTLY, но сам никогда его не выполняет.
  • Запустите VACUUM (ANALYZE) или ANALYZE для таблицы из списка. VACUUM FULL сначала попросит ввести имя таблицы. PRO
Экран «Vacuum и раздувание»: wraparound ID транзакций на 86%, предупреждение, что на 100% база перестанет принимать запись, и три вероятные причины

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

HeapDeck подключается с вашего iPhone к вашему серверу напрямую или через ваш SSH-бастион. Посередине нет сервера HeapDeck, аккаунта тоже нет. AI-ассистент, если вы его настроите, общается только с выбранным вами провайдером и по вашему собственному ключу.

  • SSH-туннель с паролем или ключом Ed25519. Ключ хоста бастиона закрепляется при первом подключении.
  • TLS по умолчанию с sslmode=require. Отпечаток SHA-256 сертификата закрепляется, а сменившийся сертификат останавливает соединение, пока вы не решите, что делать.
  • Пароли, ключи и отпечатки остаются в Keychain этого iPhone и не синхронизируются. Face ID открывает приложение.
  • Нет суперпользователя? Вместо пустого экрана HeapDeck покажет точный GRANT pg_monitor, который ему нужен.
Окно «Проверьте этот сервер» при первом подключении: отпечаток SHA-256 сертификата сервера, чтобы сверить его со своими записями, прежде чем доверять

Экраны, которые вы открываете во время инцидента в Postgres

Десять плиток на экране «Здоровье» и за каждой — нативный экран, так что набирать psql на клавиатуре телефона не придётся. SQL-консоль под рукой, когда нужна, и проверяет каждый запрос перед выполнением.

  • Здоровье

    Один вердикт и десять плиток: сессии относительно max_connections, заблокированные сессии, самый долгий запрос, TPS, попадания в кэш, autovacuum, wraparound, репликация, размер базы и медленные запросы. Пока экран открыт, данные обновляются каждые 10 секунд.

  • Активность

    Все сессии из pg_stat_activity, ждущие — первыми. Фильтры: активные, idle in transaction, дольше 10 с или ждущие. Смахните строку, чтобы отменить запрос или снять сессию.

  • Репликация и слоты

    Отставание проигрывания на каждой реплике с разбивкой по фазам WAL. Каждый слот с объёмом WAL, который он удерживает, и предупреждение, когда неактивный слот забивает диск.

  • Медленные запросы

    300 самых тяжёлых запросов из pg_stat_statements с сортировкой по общему времени, среднему, вызовам или строкам — и сессии, которые выполняют такой запрос прямо сейчас (PostgreSQL 14+).

  • Данные и SQL-консоль

    Просмотр таблиц, фильтр на сервере, переход по внешним ключам, экспорт страницы в CSV или JSON. Консоль классифицирует каждый запрос прямо при наборе; во Free чтение идёт внутри BEGIN READ ONLY.

  • AI-ассистент PRO

    Объясняет инцидент или цепочку блокировок и предлагает черновик исправления — с вашим собственным API-ключом или вашим сервером Ollama. Получает очищенный снимок и никогда ничего не запускает сам.

HeapDeck 1.0 с демонстрационными данными, в тёмной и светлой теме, как iOS.

Мониторинг Postgres бесплатный. Pro — одна покупка.

Сначала попробуйте на своих боевых серверах: ни один экран мониторинга не требует оплаты, сколько бы серверов у вас ни было. Pro открывает действия один раз — за 29,99 $. Без подписки и без аккаунта.

Free

навсегда

Подключите к боевому серверу и смотрите всё.

  • Все экраны мониторинга: Здоровье, Активность, Блокировки, Vacuum и раздувание, Репликация, Хранилище, Медленные запросы
  • Сколько угодно соединений с TLS, SSH-туннелем, закреплёнными отпечатками и Face ID
  • Просмотр данных с фильтрами на сервере, внешними ключами, экспортом в CSV и JSON
  • SQL-консоль для чтения — внутри транзакции только на чтение
  • SQL-классификатор и его пояснения

Pro

29,99 $

разовая покупка

Для момента, когда нужно действовать.

  • Отмена запросов и снятие сессий, отмена корня цепочки блокировок
  • VACUUM, ANALYZE и удаление слота репликации
  • Запись и DDL в консоли — через подтверждения
  • Вставка, правка и удаление строк в таблицах с первичным ключом
  • AI-ассистент с вашим ключом или вашей моделью

Действия Pro видны и во Free с пометкой PRO, чтобы было понятно, что они сделают. На встроенном демо-инциденте ассистент работает бесплатно. За пределами США App Store показывает цену в вашей валюте.

Free · Pro 29,99 $ разово · PostgreSQL 13–18 · iOS 17+ · iPhone

Вопросы о HeapDeck и Postgres

Работает ли HeapDeck с Amazon RDS, Cloud SQL, Azure или Supabase?

HeapDeck работает с любым PostgreSQL 13–18, до которого дотянется ваш iPhone: свой или управляемый, основной или реплика. Если ваша роль не суперпользователь, экраны показывают, что скрыто, и GRANT pg_monitor, который это исправит.

Управляемые провайдеры подписывают сертификаты корневыми CA, которых нет в iOS. Для них используйте sslmode=require: соединение шифруется, а HeapDeck закрепляет отпечаток сертификата при первом подключении.

Подключится ли HeapDeck к базе за бастионом?

Да. Включите SSH-туннель в соединении и укажите хост и пользователя бастиона, а также пароль или ключ. Ключ должен быть незашифрованным Ed25519 в формате OpenSSH; собственный ключ хоста бастиона может быть Ed25519 или ECDSA и закрепляется при первом подключении.

Версия 1.0 не поддерживает ключи RSA, ключи с парольной фразой, одноразовые коды и цепочки jump-хостов.

Уходят ли с iPhone мои пароли, ключи или данные?

HeapDeck подключается к вашему серверу напрямую или через ваш SSH-бастион. Сервера HeapDeck нет, аккаунта тоже. Пароли, SSH-ключи и закреплённые отпечатки остаются в iOS Keychain на этом устройстве, без синхронизации с iCloud.

С телефона могут уйти две вещи, обе под вашим контролем: вопрос AI-провайдеру, которого вы настроили (Pro), а также отчёты о сбоях и счётчики использования — их можно выключить при первом запуске или в Настройках. Ни там, ни там нет SQL, имён таблиц, имён хостов, значений или учётных данных. Подробности — в политике конфиденциальности.

Нужен ли суперпользователь?

Нет. Роли с pg_monitor хватает для экранов мониторинга: GRANT pg_monitor TO your_role;. Без неё HeapDeck тоже работает и помечает, что сервер скрывает от вашей роли. Чтобы отменять запросы в сессиях других ролей, нужны обычные права PostgreSQL, например pg_signal_backend.

Отменить запрос или снять сессию: что выбрать?

Отмена (pg_cancel_backend) останавливает запрос, который выполняет сессия; сама сессия и её транзакция остаются открытыми. Снятие (pg_terminate_backend) завершает всю сессию и откатывает её транзакцию.

У сессии в состоянии idle in transaction нет выполняемого запроса, поэтому отмена на неё не действует: её блокировки освободит снятие. Перед снятием корня цепочки блокировок или сессии на боевом соединении HeapDeck попросит ввести pid.

Может ли HeapDeck сломать мне базу?

Free вообще ничего не пишет: чтение в консоли идёт внутри BEGIN READ ONLY … ROLLBACK. В Pro каждая запись проходит четыре проверки по порядку: Pro, переключатель «Только чтение» в соединении, SQL-классификатор и ваше подтверждение.

Для VACUUM FULL, удаления слота и снятия корня блокировки сначала нужно ввести имя таблицы, имя слота или pid. Соединение с пометкой «Боевой» получает бейдж PROD и более строгие подтверждения.

Почему бы просто не зайти по SSH и не запустить psql?

Можно и так. HeapDeck отводит каждому вопросу инцидента свой экран, чтобы не набирать запросы на клавиатуре телефона: кто блокирует и сколько ждут, что выполняет корень, далеко ли до wraparound, какой слот держит WAL. Перед действием он заново читает цепочку блокировок и просит подтвердить.

Что видит AI-ассистент?

Очищенный снимок экрана, о котором вы спросили. Хоста, порта, паролей и ключей в нём никогда нет, а значения превращаются в плейсхолдеры вроде $1. Для облачных моделей имена баз данных, таблиц и колонок по умолчанию скрыты и возвращаются на место у вас в телефоне, когда приходит ответ.

Запросы идут с вашего iPhone к выбранному провайдеру по вашему собственному ключу (Anthropic, OpenAI, OpenRouter, Z.ai) или на ваш собственный сервер Ollama либо OpenAI-совместимый сервер. «Что видит модель» показывает точный текст до отправки. Ассистент входит в Pro и никогда не выполняет SQL сам.

Есть ли подписка?

Нет. Мониторинг бесплатный, а Pro — одна покупка за 29,99 $, привязанная к вашему Apple ID. Аккаунта нет, пробного периода с обратным отсчётом тоже.

Пришлёт ли он алерт, если что-то сломается?

Нет. HeapDeck работает, пока открыт, и ничего не мониторит в фоне. Алертинг оставьте там, где он есть: HeapDeck — это экран, который вы открываете после алерта.

Работает ли он на iPad?

HeapDeck сделан для iPhone в портретной ориентации. На iPad он работает в режиме совместимости с iPhone.

Руководства по инцидентам в Postgres

Проблемы, из-за которых будят ночью, — по странице на каждую: SQL для ручной проверки и что показывает HeapDeck. Руководства на английском.

Из блога

Все статьи

Поставьте его на телефон до следующего инцидента в Postgres.

Добавьте сервер, закрепите его сертификат — и все экраны мониторинга ваши бесплатно. Pro — для той ночи, когда придётся действовать.

Free · Pro 29,99 $ разово · PostgreSQL 13–18 · iOS 17+ · iPhone