HeapDeck: Postgres® Monitor para iPhone

Veja o que está pegando fogo no seu Postgres.Apague o incêndio.

Foi acionado por causa do Postgres e o notebook ficou em casa? O HeapDeck mostra quem está bloqueando, quão perto você está do wraparound e qual réplica está ficando para trás, e deixa você agir pelo iPhone. Estanque o sangramento agora e deixe a correção definitiva para quando voltar à sua mesa.

Free · Pro US$ 29,99 pagamento único · PostgreSQL 13–18 · iOS 17+ · iPhone

Tela Saúde do HeapDeck com um servidor de produção em estado Crítico: primeiro as sessões bloqueadas, depois as conexões, a consulta mais longa, o wraparound e a replicação

Veja quem está bloqueando todo mundo no Postgres. Cancele a raiz com uma prévia.

A tela Bloqueios monta a árvore de bloqueios a partir de pg_blocking_pids() e coloca o bloqueador raiz no topo: o pid dele, user@app, há quanto tempo ele segura o bloqueio e o que está executando. Abaixo dele, todas as sessões presas na fila.

  • Cancelar a raiz (desbloqueia N) diz quantas sessões estão presas atrás dela e lista os pids delas antes de você confirmar. PRO
  • O HeapDeck lê a cadeia de novo antes de enviar qualquer coisa. Se ela mudou enquanto você decidia, você vê os números novos e confirma de novo.
  • Cancelar interrompe a consulta em execução. Encerrar derruba a sessão e faz rollback da transação dela, depois que você digitar o pid. PRO
  • Cada sessão em espera mostra o que está esperando, como RowExclusiveLock on public.orders. Uma raiz parada em idle in transaction fica marcada, e um deadlock é sinalizado como tal.
Tela Bloqueios: o bloqueador raiz está ocioso em uma transação há 06:48 e bloqueia quatro sessões; abaixo, o botão Cancelar a raiz (desbloqueia 4)

Saiba seu % de wraparound antes que o Postgres pare de aceitar escritas.

A tela Vacuum e bloat mostra quão perto o servidor está do wraparound do ID de transação, como porcentagem de 2³¹, com as tabelas mais antigas pela idade de relfrozenxid. No limite, o PostgreSQL recusa escritas com database is not accepting commands to avoid wraparound data loss.

  • A partir de 75%, a tela diz isso com todas as letras e lista os motivos comuns para o autovacuum não dar conta: uma transação aberta há muito tempo, um slot de replicação inativo, um worker travado.
  • Linhas mortas por tabela, com a proporção de mortas e quando a tabela passou pelo último vacuum.
  • Índices sem uso com o espaço que ocupam. O HeapDeck copia o DROP INDEX CONCURRENTLY para você e nunca o executa por conta própria.
  • Rode VACUUM (ANALYZE) ou ANALYZE em uma tabela da lista. O VACUUM FULL pede que você digite o nome da tabela antes. PRO
Tela Vacuum e bloat: wraparound do ID de transação em 86%, um aviso de que o banco de dados deixa de aceitar escritas em 100% e três causas prováveis

Chegue ao seu Postgres pelo seu bastião, com as permissões que sua role já tem.

O HeapDeck se conecta do seu iPhone ao seu servidor, direto ou pelo seu bastião SSH. Não há servidor do HeapDeck no meio nem conta para criar. O assistente de IA, se você configurá-lo, fala só com o provedor que você escolheu, com a sua própria chave.

  • Túnel SSH com senha ou chave Ed25519. A chave do host do bastião é fixada na primeira conexão.
  • TLS com sslmode=require por padrão. A impressão digital SHA-256 do certificado é fixada, e um certificado alterado interrompe a conexão até você decidir.
  • Senhas, chaves e impressões digitais ficam no Keychain deste iPhone e nunca são sincronizadas. O Face ID abre o app.
  • Sua role não é superusuário? O HeapDeck mostra o GRANT pg_monitor exato de que precisa, em vez de uma tela vazia.
Painel “Verifique este servidor” na primeira conexão: a impressão digital SHA-256 do certificado do servidor, para comparar com seus registros antes de confiar nele

As telas que você abre durante um incidente no Postgres

Dez indicadores de saúde logo de cara e uma tela nativa por trás de cada um, para você nunca precisar digitar psql no teclado do celular. O console SQL está lá quando você precisa, e ele verifica cada instrução antes de executá-la.

  • Saúde

    Um veredito e dez indicadores: sessões em relação a max_connections, sessões bloqueadas, a consulta mais longa, TPS, acertos no cache, autovacuum, wraparound, replicação, tamanho do banco de dados e consultas lentas. Atualiza a cada 10 segundos enquanto está aberta.

  • Atividade

    Todas as sessões de pg_stat_activity, com as que estão esperando primeiro. Filtre por ativas, idle in transaction, mais de 10 s ou em espera. Deslize uma linha para cancelar ou encerrar a sessão.

  • Replicação e slots

    Atraso de reprodução por réplica, detalhado por fase do WAL. Cada slot com o WAL que ele retém, e um aviso quando um slot inativo está enchendo o seu disco.

  • Consultas lentas

    As 300 instruções mais pesadas do pg_stat_statements, ordenadas por tempo total, média, chamadas ou linhas, e as sessões que estão executando uma delas agora (PostgreSQL 14+).

  • Dados e console SQL

    Navegue pelas tabelas, filtre no servidor, siga chaves estrangeiras, exporte uma página como CSV ou JSON. O console classifica cada instrução enquanto você digita; no Free, as leituras rodam dentro de BEGIN READ ONLY.

  • Assistente de IA PRO

    Explica um incidente ou uma cadeia de bloqueios e rascunha a correção, com a sua própria chave de API ou o seu próprio Ollama. Recebe um snapshot mascarado e nunca executa nada por conta própria.

HeapDeck 1.0 com dados de exemplo, nos modos escuro e claro, como o iOS.

Monitorar o Postgres é gratuito. O Pro é uma compra única.

Teste primeiro na sua própria produção: nenhuma tela de monitoramento tem paywall, em quantos servidores você quiser. O Pro libera as ações com um único pagamento de US$ 29,99. Sem assinatura, sem conta.

Free

para sempre

Conecte à produção e veja tudo.

  • Todas as telas de monitoramento: Saúde, Atividade, Bloqueios, Vacuum e bloat, Replicação, Armazenamento, Consultas lentas
  • Conexões ilimitadas com TLS, túnel SSH, impressões digitais fixadas e Face ID
  • Navegador de dados com filtros no servidor, chaves estrangeiras e exportação em CSV e JSON
  • Console SQL para leituras, dentro de uma transação somente leitura
  • O classificador de SQL e suas explicações

Pro

US$ 29,99

compra única

Para a hora em que você precisar agir.

  • Cancelar e encerrar sessões, cancelar a raiz de uma cadeia de bloqueios
  • VACUUM, ANALYZE e exclusão de um slot de replicação
  • Escritas e DDL no console, com confirmações
  • Inserir, editar e excluir linhas em tabelas com chave primária
  • O assistente de IA com a sua própria chave ou o seu próprio modelo

No Free, as ações do Pro continuam visíveis, marcadas com PRO, para você ver o que elas fariam. O assistente funciona de graça no incidente de demonstração integrado. Fora dos EUA, a App Store mostra o preço na sua moeda.

Free · Pro US$ 29,99 pagamento único · PostgreSQL 13–18 · iOS 17+ · iPhone

Perguntas sobre o HeapDeck e o Postgres

Funciona com Amazon RDS, Cloud SQL, Azure ou Supabase?

O HeapDeck funciona com qualquer PostgreSQL 13–18 que o seu iPhone consiga alcançar, auto-hospedado ou gerenciado, primário ou réplica. Quando a sua role não é superusuário, as telas mostram o que está oculto e o GRANT pg_monitor que resolve.

Provedores gerenciados assinam os certificados com raízes que o iOS não traz. Para eles, use sslmode=require: a conexão é criptografada e o HeapDeck fixa a impressão digital do certificado na primeira conexão.

Dá para acessar um banco de dados atrás de um bastião?

Sim. Ative o túnel SSH na conexão e informe o host do bastião, o usuário e uma senha ou chave. A chave precisa ser Ed25519, sem criptografia e no formato OpenSSH; a chave do host do próprio bastião pode ser Ed25519 ou ECDSA e é fixada na primeira conexão.

A versão 1.0 não suporta chaves RSA, chaves protegidas por senha, códigos de uso único nem cadeias de jump hosts.

Minhas credenciais ou meus dados saem do meu iPhone?

O HeapDeck se conecta ao seu servidor direto ou pelo seu bastião SSH. Não há servidor do HeapDeck nem conta. Senhas, chaves SSH e impressões digitais fixadas ficam no iOS Keychain deste dispositivo, sem sincronização com o iCloud.

Duas coisas podem sair do celular, e as duas estão sob o seu controle: uma pergunta ao provedor de IA que você configurar (Pro), e os relatórios de falhas e as contagens de uso, que você pode desativar na primeira abertura ou em Ajustes. Nenhuma delas contém SQL, nomes de tabelas, nomes de host, valores ou credenciais. Os detalhes estão na política de privacidade.

Preciso ser superusuário?

Não. Uma role com pg_monitor cobre as telas de monitoramento: GRANT pg_monitor TO your_role;. Sem ela, o HeapDeck continua funcionando e indica o que o servidor esconde da sua role. Cancelar sessões de outras roles exige as permissões usuais do PostgreSQL, como pg_signal_backend.

Cancelar ou encerrar: qual usar?

Cancelar (pg_cancel_backend) interrompe a consulta que uma sessão está executando; a sessão e a transação dela continuam abertas. Encerrar (pg_terminate_backend) derruba a sessão inteira e faz rollback da transação dela.

Uma sessão em idle in transaction não tem consulta em execução, então cancelar não faz nada com ela: o que libera os bloqueios dela é encerrar. O HeapDeck pede que você digite o pid antes de encerrar a raiz de uma cadeia de bloqueios ou uma sessão em uma conexão de Produção.

O HeapDeck pode quebrar meu banco de dados?

O Free não escreve nada: as leituras do console rodam dentro de BEGIN READ ONLY … ROLLBACK. No Pro, cada escrita passa por quatro verificações, nesta ordem: Pro, a opção Somente leitura da conexão, o classificador de SQL e a sua confirmação.

VACUUM FULL, excluir um slot e encerrar a raiz de um bloqueio pedem que você digite antes o nome da tabela, o nome do slot ou o pid. Uma conexão marcada como Produção ganha o selo PROD e confirmações mais rígidas.

Por que não simplesmente entrar por SSH e rodar o psql?

Você ainda pode. O HeapDeck dá a cada pergunta de um incidente a sua própria tela, para você não digitar consultas no teclado do celular: quem está bloqueando e quantas sessões esperam, o que a raiz está executando, quão perto está o wraparound, qual slot está retendo WAL. Ele lê a cadeia de bloqueios de novo antes de agir e pede a sua confirmação.

O que o assistente de IA vê?

Um snapshot mascarado da tela sobre a qual você perguntou. Host, porta, senhas e chaves nunca estão nele, e os valores viram marcadores como $1. Para modelos na nuvem, os nomes de bancos de dados, tabelas e colunas ficam ocultos por padrão e são restaurados no seu celular quando a resposta chega.

As solicitações vão do seu iPhone para o provedor que você escolheu, com a sua própria chave (Anthropic, OpenAI, OpenRouter, Z.ai), ou para o seu próprio Ollama ou servidor compatível com OpenAI. “O que o modelo vê” mostra o texto exato antes de você enviar. O assistente faz parte do Pro e nunca executa SQL por conta própria.

Tem assinatura?

Não. O monitoramento é gratuito, e o Pro é uma compra única de US$ 29,99 vinculada ao seu Apple ID. Não há conta nem período de teste que expira.

O HeapDeck me avisa quando algo quebrar?

Não. O HeapDeck funciona enquanto está aberto e não faz monitoramento em segundo plano. Mantenha seus alertas onde estão: o HeapDeck é a tela que você abre depois de ser acionado.

Funciona no iPad?

O HeapDeck foi feito para iPhone, na vertical. No iPad, ele roda no modo de compatibilidade com iPhone.

Guias para incidentes no Postgres

Os problemas que acordam você de madrugada, uma página para cada um: o SQL para verificar à mão e o que o HeapDeck mostra. Os guias estão em inglês.

Do blog

Todos os posts

Tenha no celular antes do próximo incidente no Postgres.

Adicione um servidor, fixe o certificado dele, e todas as telas de monitoramento são suas de graça. O Pro está lá para a noite em que você precisar agir.

Free · Pro US$ 29,99 pagamento único · PostgreSQL 13–18 · iOS 17+ · iPhone