[go: up one dir, main page]

HeapDeck: Postgres® Monitor para iPhone

Mira qué arde en tu Postgres.Apágalo.

¿Te salta una alerta de Postgres y tienes el portátil en casa? HeapDeck te muestra quién bloquea y cuánto le falta al servidor para el wraparound, y actúas desde el iPhone. Contén el incidente desde el teléfono y arregla la causa en tu mesa.

Consíguelo en el App Store
Escanéalo para abrirlo en tu iPhone

Free · Pro 22,99 € pago único · PostgreSQL 13–19 · iOS 17+ · iPhone y iPad

Pantalla Salud de HeapDeck con un servidor de producción en estado Crítico: primero las sesiones bloqueadas, luego las conexiones, la consulta más larga, el wraparound y la replicación

Mira quién bloquea a todos en Postgres. Detén la raíz con vista previa.

La pantalla Bloqueos construye el árbol de bloqueos a partir de pg_blocking_pids() y pone arriba la raíz del bloqueo: su pid, user@app, cuánto tiempo lleva reteniendo el bloqueo y qué está ejecutando. Debajo, todas las sesiones atascadas en la cola.

  • El botón de la raíz sigue su estado: Cancelar la raíz mientras ejecuta una sentencia, Finalizar la raíz cuando está idle in transaction. La cifra del botón abarca las sesiones que esperan a la propia raíz, y la confirmación muestra sus pids. PRO
  • HeapDeck vuelve a leer la cadena antes de enviar nada y, si las cifras cambiaron, vuelve a pedirte confirmación. Después informa de lo que midió: cuántas sesiones desbloqueó y cuántas siguen esperando.
  • Cancelar detiene la consulta en ejecución. Terminar cierra la sesión y revierte su transacción, después de que escribas el pid de la raíz. PRO
  • Cada sesión en espera muestra qué está esperando, como RowExclusiveLock on public.orders. Una raíz que está idle in transaction aparece marcada, y un deadlock se señala como tal.
Pantalla Bloqueos: la raíz del bloqueo lleva 06:48 inactiva dentro de una transacción y bloquea cuatro sesiones; debajo, el botón Finalizar la raíz (desbloquea 2) y por qué se ignoraría una cancelación

Conoce tu % de wraparound antes de que Postgres deje de aceptar escrituras.

La pantalla Vacuum y hinchazón muestra lo cerca que está el servidor del wraparound de ID de transacciones, como porcentaje de 2³¹, con las tablas más antiguas por edad de relfrozenxid. Al llegar al límite, PostgreSQL rechaza las escrituras con database is not accepting commands to avoid wraparound data loss.

  • A partir del 75 %, la pantalla lo dice sin rodeos y enumera las razones habituales por las que autovacuum no da abasto: una transacción abierta desde hace mucho, un slot de replicación inactivo, un worker atascado.
  • Filas muertas por tabla, con su porcentaje y la fecha del último vacuum de cada tabla.
  • Índices sin usar con el espacio que ocupan. HeapDeck te copia DROP INDEX CONCURRENTLY y nunca lo ejecuta por su cuenta.
  • Lanza VACUUM (ANALYZE) o ANALYZE sobre una tabla de la lista. VACUUM FULL te pide antes escribir el nombre de la tabla. PRO
Pantalla Vacuum y hinchazón: wraparound de ID de transacciones al 86 %, un aviso de que la base de datos deja de aceptar escrituras al 100 % y tres causas probables

Llega a tu Postgres a través de tu bastión, con los permisos que ya tiene tu rol.

HeapDeck se conecta desde tu iPhone a tu servidor, directamente o a través de tu bastión SSH. No hay ningún servidor de HeapDeck de por medio ni cuenta que crear. El asistente de IA, si lo configuras, solo habla con el proveedor que elegiste, con tu propia clave.

  • SSH con contraseña, con una clave Ed25519, ECDSA o RSA y su frase de contraseña, o con una clave de Secure Enclave, a través de hasta tres hosts. HeapDeck fija la clave de cada host en la primera conexión.
  • TLS con sslmode=require por defecto. La huella digital SHA-256 del certificado queda fijada, y si el certificado cambia, la conexión se detiene hasta que decidas.
  • Las contraseñas, las claves y las huellas digitales se quedan en el Keychain de este iPhone y nunca se sincronizan. Face ID abre la app.
  • ¿Tu rol no es superusuario? HeapDeck te muestra el GRANT pg_monitor exacto que necesita en lugar de una pantalla vacía.
Hoja “Verifica este servidor” en la primera conexión: la huella digital SHA-256 del certificado del servidor, para compararla con tus registros antes de confiar en él

Problemas de Postgres que puedes resolver desde el iPhone

Cada tarjeta parte de lo que ves cuando algo falla y lleva a una guía con el SQL, los umbrales y la pantalla que debes abrir. Las guías están en inglés.

Puedes ver todo esto gratis en un servidor. Para terminar una sesión, ejecutar VACUUM o eliminar un slot necesitas Pro, una compra única de 22,99 €.

Todos los casos de uso

Las pantallas que abres durante un incidente de Postgres

Diez indicadores de salud nada más abrir y una pantalla nativa detrás de cada uno, para que nunca tengas que escribir psql en el teclado del teléfono. La consola SQL está ahí cuando la necesitas y revisa cada sentencia antes de ejecutarla.

  • Salud

    Diez indicadores: sesiones frente a max_connections, sesiones bloqueadas, la consulta más larga, TPS, aciertos de caché, autovacuum, wraparound, replicación, tamaño de la base de datos y consultas lentas. Un veredicto Advertencia o Crítico nombra los indicadores que lo provocan. Se actualiza cada 10 segundos mientras está abierta.

  • Actividad

    Todas las sesiones de pg_stat_activity, primero las que esperan. Filtra por activas, idle in transaction, más de 10 s o en espera. Desliza una fila para cancelarla o terminarla.

  • Replicación y slots

    Retraso de reproducción por réplica, desglosado por fase de WAL. Cada slot con el WAL que retiene, y un aviso cuando un slot inactivo te está llenando el disco.

  • Consultas lentas

    Las 300 sentencias más pesadas de pg_stat_statements, ordenadas por tiempo total, media, llamadas o filas. El detalle de una sentencia muestra su rol, base de datos, tiempos e I/O, y las sesiones que la ejecutan ahora (PostgreSQL 14+).

  • Datos y consola SQL

    Explora tablas, filtra en el servidor, sigue claves foráneas, exporta una página como CSV o JSON. La consola clasifica cada sentencia mientras escribes; en Free, las lecturas se ejecutan dentro de BEGIN READ ONLY.

  • Asistente de IA PRO

    Explica un incidente o una cadena de bloqueos y prepara un borrador de la solución, con tu propia clave de API o tu propio Ollama. Recibe una instantánea enmascarada y nunca ejecuta nada por su cuenta.

La demo integrada de HeapDeck, en modo oscuro y claro, como iOS.

Hoja “Cancelar la sesión que bloquea”: pid 24310, una migración ALTER TABLE que lleva 01:12 activa; “Esto debería desbloquear 2 sesiones en espera”

Cancelar la raíz Qué se desbloquea, antes de que confirmes.

Pantalla Vacuum y hinchazón: filas muertas por tabla y seis índices sin escaneos, 34 GB en total

Vacuum y hinchazón Filas muertas e índices sin usar, con el espacio que ocupan.

Pantalla Actividad: sesiones con su estado, tiempo de espera y SQL; la que bloquea aparece marcada con “bloquea a 4 sesiones”

Actividad Primero las sesiones en espera.

Pantalla Replicación: dos réplicas con su retraso de reproducción y el aviso de que un slot inactivo hace que PostgreSQL conserve WAL para siempre

Replicación Retraso por réplica y slots que retienen WAL.

Pantalla Consultas lentas: sentencias ordenadas por tiempo total, con llamadas, tiempo medio y filas

Consultas lentas De pg_stat_statements.

Pantalla Actividad de un rol sin pg_monitor: “Puedes ver las sesiones, pero no su SQL”, con el botón Muéstrame cómo

Acceso limitado ¿Sin pg_monitor? Te dice qué queda oculto y cómo arreglarlo.

Consola SQL: la sentencia DELETE FROM public.orders clasificada como Destructiva, sin cláusula WHERE, 18,1 millones de filas estimadas

Clasificador SQL Su veredicto ante un DELETE sin WHERE.

Respuesta del asistente: una transacción inactiva retiene un bloqueo de fila en orders y siete sesiones esperan; con los siguientes pasos sugeridos

Asistente de IA Explica una cadena de bloqueos.

Lo que ve el modelo: la instantánea que se envía al modelo, con los nombres sustituidos por marcadores como table_1

Lo que ve el modelo El texto exacto, antes de enviarlo.

Pestaña Datos: la tabla orders en una cuadrícula, mostrando 200 de 18.412.004 filas

Datos Páginas de 200 filas, filtradas en el servidor.

Cancelar la raíz Qué se desbloquea, antes de que confirmes.

Monitorizar Postgres es gratis. Pro es una sola compra.

Pruébalo primero en tu propia producción: todas las pantallas de monitorización son gratis para un servidor. Pro añade el resto de servidores y todas las acciones con un único pago de 22,99 €. Sin suscripción, sin cuenta.

Free

para siempre

Conéctalo a un servidor de producción y míralo todo.

  • Todas las pantallas de monitorización: Salud, Actividad, Bloqueos, Vacuum y hinchazón, Replicación, Almacenamiento, Consultas lentas
  • Una conexión guardada con TLS, túnel SSH, huellas digitales fijadas y Face ID
  • Explorador de datos con filtros en el servidor, claves foráneas y exportación a CSV y JSON
  • Consola SQL para lecturas, dentro de una transacción de solo lectura
  • El clasificador de SQL y sus explicaciones

Pro

22,99 €

compra única

Para cuando tengas que actuar.

  • Conexiones guardadas ilimitadas: todos los servidores de tus guardias
  • Cancelar y terminar sesiones, detener la raíz de una cadena de bloqueos
  • VACUUM, ANALYZE y eliminar un slot de replicación
  • Escrituras y DDL en la consola, con confirmación previa
  • Insertar, editar y eliminar filas en tablas con clave primaria
  • El asistente de IA con tu propia clave o tu propio modelo

En Free, las acciones de Pro siguen visibles, marcadas con PRO, para que veas qué harían. El asistente funciona gratis con el incidente de demostración integrado. Fuera de la zona euro, el App Store muestra el precio en tu moneda.

Free · Pro 22,99 € pago único · PostgreSQL 13–19 · iOS 17+ · iPhone y iPad

Preguntas sobre HeapDeck y Postgres

¿Funciona con Neon, Supabase, Amazon RDS, Cloud SQL o Azure?

HeapDeck funciona con cualquier PostgreSQL 13–19 al que llegue tu iPhone, autoalojado o gestionado, primario o réplica. Si tu rol no es superusuario, las pantallas muestran qué queda oculto y el GRANT pg_monitor que lo soluciona.

Neon, Supabase y Amazon RDS están comprobados en vivo. Pega la cadena de conexión del panel Connect de Neon o Supabase; para RDS, introduce el endpoint de la instancia que muestra la consola de RDS. Neon se conecta directamente o a través de su host -pooler. El host directo de Supabase solo tiene dirección IPv6: en una red sin IPv6, HeapDeck te lo indica y te remite a la cadena del Session pooler.

verify-full funciona cuando el certificado se encadena a una raíz en la que confía iOS, como el de Neon. Amazon RDS firma con su propia CA raíz, que iOS no incluye; para RDS y proveedores similares, usa sslmode=require: la conexión va cifrada y HeapDeck fija la huella digital del certificado en la primera conexión.

¿Puede llegar a una base de datos detrás de un bastión?

Sí. Activa el túnel SSH en la conexión e introduce el host del bastión, el usuario y una contraseña o una clave. HeapDeck lee claves Ed25519, ECDSA y RSA en formato OpenSSH, PEM, PKCS#8 o PuTTY, con o sin frase de contraseña, y puede crear una clave de Secure Enclave que nunca sale de tu iPhone.

Si hay más de un salto, añade hasta dos hosts de salto, cada uno con su propio inicio de sesión. HeapDeck responde a las solicitudes de autenticación de dos factores y fija la clave de cada host en la primera conexión. Los certificados de cliente (mTLS) no se admiten.

¿Mis credenciales o mis datos salen de mi iPhone?

HeapDeck se conecta a tu servidor directamente o a través de tu bastión SSH, sin ningún servidor nuestro en medio. No necesitas cuenta. Las contraseñas, las claves SSH y las huellas digitales fijadas se quedan en el iOS Keychain de este dispositivo, sin sincronización con iCloud.

Dos cosas pueden salir del teléfono, y las dos dependen de ti: una pregunta al proveedor de IA que configures (Pro), y los informes de fallos y los recuentos de uso, que puedes desactivar en el primer arranque o en Ajustes. Ninguna de las dos contiene SQL, nombres de tablas, nombres de host, valores ni credenciales. Los detalles están en la política de privacidad.

¿Hace falta ser superusuario?

No. Un rol con pg_monitor cubre las pantallas de monitorización: GRANT pg_monitor TO your_role;. Sin él, HeapDeck sigue funcionando y señala lo que el servidor le oculta a tu rol. Para cancelar sesiones de otros roles hacen falta los permisos habituales de PostgreSQL, como pg_signal_backend; sin ellos, HeapDeck te da el comando para que se lo pases a tu DBA.

Cancelar o terminar: ¿cuál de los dos?

Cancelar (pg_cancel_backend) detiene la consulta que está ejecutando una sesión; la sesión y su transacción siguen abiertas. Terminar (pg_terminate_backend) mata la sesión entera y revierte su transacción.

Una sesión idle in transaction no tiene ninguna consulta en ejecución, así que cancelar no le hace nada: lo que libera sus bloqueos es terminarla. HeapDeck te pide escribir el pid antes de terminar la raíz de una cadena de bloqueos o una sesión en una conexión de Producción.

¿Puede HeapDeck romper mi base de datos?

Free no escribe nada: las lecturas de la consola se ejecutan dentro de BEGIN READ ONLY … ROLLBACK. En Pro, cada escritura pasa por cuatro controles, en este orden: Pro, el interruptor Solo lectura de la conexión, el clasificador de SQL y tu confirmación.

VACUUM FULL, eliminar un slot y terminar la raíz de un bloqueo te piden escribir antes el nombre de la tabla, el nombre del slot o el pid. Una conexión marcada como Producción lleva la insignia PROD y confirmaciones más estrictas.

¿Por qué no entrar por SSH y usar psql sin más?

Puedes seguir haciéndolo. HeapDeck da a cada pregunta de un incidente su propia pantalla, para que no escribas consultas en el teclado del teléfono: quién bloquea y cuántas sesiones esperan, qué ejecuta la raíz, cuánto falta para el wraparound, qué slot retiene WAL. Vuelve a leer la cadena de bloqueos antes de actuar y te pide que confirmes.

¿Qué ve el asistente de IA?

Una instantánea enmascarada de la pantalla sobre la que preguntaste. El host, el puerto, las contraseñas y las claves nunca van en ella, y los valores se convierten en marcadores como $1. Con modelos en la nube, los nombres de bases de datos, tablas y columnas se ocultan por defecto y se restauran en tu teléfono cuando llega la respuesta.

Las solicitudes van de tu iPhone al proveedor que elegiste, con tu propia clave (Anthropic, OpenAI, OpenRouter, Z.ai), o a tu propio Ollama o servidor compatible con OpenAI. “Lo que ve el modelo” muestra el texto exacto antes de que lo envíes. El asistente forma parte de Pro y nunca ejecuta SQL por su cuenta.

¿Hay suscripción?

No. Monitorizar un servidor es gratis, y Pro, con servidores ilimitados y todas las acciones, es una sola compra de 22,99 € vinculada a tu Apple ID. No hay cuenta ni periodo de prueba que caduque.

¿Me avisará cuando algo se rompa?

No. HeapDeck funciona mientras está abierto y no monitoriza nada en segundo plano. Deja tus alertas donde están: HeapDeck es la pantalla que abres cuando salta la alerta.

¿Funciona en iPad?

Sí. En iPad, HeapDeck funciona a pantalla completa en todas las orientaciones, con una barra lateral en lugar de la barra de pestañas. La pantalla Bloqueos muestra el árbol de bloqueos junto a la sesión seleccionada, y la consola SQL ocupa todo el ancho. Pro va ligado a tu Apple ID, así que una sola compra vale para tu iPhone y tu iPad.

Amazon Web Services, AWS y Amazon RDS son marcas comerciales de Amazon.com, Inc. o sus filiales. Neon, Supabase, Google Cloud SQL y Microsoft Azure son marcas comerciales de sus respectivos propietarios. HeapDeck no está afiliado a ninguno de ellos ni cuenta con su respaldo.

Guías para incidentes de Postgres

Los problemas que te despiertan de noche, una página para cada uno: el SQL para comprobarlo a mano y lo que muestra HeapDeck. Las guías están en inglés.

Tenlo en el teléfono antes del próximo incidente de Postgres.

Añade un servidor, fija su certificado y todas las pantallas de monitorización son tuyas gratis. Pro está ahí para la noche en que tengas que actuar.

Consíguelo en el App Store
Escanéalo para abrirlo en tu iPhone

Free · Pro 22,99 € pago único · PostgreSQL 13–19 · iOS 17+ · iPhone y iPad