[go: up one dir, main page]

HeapDeck: Postgres® Monitor pour iPhone

Voyez ce qui brûle dans votre Postgres.Éteignez-le.

Une alerte Postgres, et votre ordinateur portable est resté à la maison ? HeapDeck montre qui bloque et quelle marge il reste au serveur avant le wraparound, et vous agissez depuis votre iPhone. Contenez l’incident sur le téléphone, puis corrigez la cause au bureau.

Télécharger dans l’App Store
Scannez pour l’ouvrir sur votre iPhone

Free · Pro 22,99 € en achat unique · PostgreSQL 13–19 · iOS 17+ · iPhone et iPad

Écran Santé de HeapDeck pour un serveur de production en état Critique : d’abord les sessions bloquées, puis les connexions, la requête la plus longue, le wraparound et la réplication

Voyez qui bloque tout le monde dans Postgres. Arrêtez la racine en sachant ce qu’elle débloque.

L’écran Verrous construit l’arbre de blocage à partir de pg_blocking_pids() et place la racine du blocage en haut : son pid, user@app, depuis combien de temps elle tient le verrou et ce qu’elle exécute. En dessous, chaque session coincée dans la file d’attente.

  • Le bouton de la racine suit son état : Annuler la racine tant qu’elle exécute une requête, Terminer la racine quand elle reste idle in transaction. Le nombre affiché sur le bouton couvre les sessions qui attendent la racine elle-même, et la confirmation liste leurs pid. PRO
  • HeapDeck relit la chaîne avant d’envoyer quoi que ce soit et vous redemande de confirmer si les chiffres ont changé. Ensuite, il indique ce qu’il a mesuré : combien de sessions il a débloquées et combien attendent encore.
  • Annuler arrête la requête en cours. Terminer ferme la session et effectue le rollback de sa transaction, une fois le pid de la racine saisi. PRO
  • Chaque session en attente indique ce qu’elle attend, par exemple RowExclusiveLock on public.orders. Une racine restée idle in transaction est signalée, et un deadlock est identifié comme tel.
Écran Verrous : la racine du blocage est inactive dans une transaction depuis 06:48 et bloque quatre sessions ; en dessous, le bouton Terminer la racine (débloque 2) et pourquoi une annulation serait ignorée

Suivez votre wraparound en % avant que Postgres cesse d’accepter les écritures.

L’écran Vacuum et gonflement montre à quel point le serveur approche du wraparound des ID de transaction, en proportion de 2³¹, avec les tables les plus anciennes selon l’âge de relfrozenxid. À la limite, PostgreSQL refuse les écritures avec database is not accepting commands to avoid wraparound data loss.

  • Dès 75 %, l’écran le dit clairement et liste les raisons habituelles pour lesquelles autovacuum ne suit pas : une transaction ouverte depuis longtemps, un slot de réplication inactif, un worker coincé.
  • Les lignes mortes par table, avec leur proportion et la date du dernier vacuum de la table.
  • Les index inutilisés, avec l’espace qu’ils occupent. HeapDeck copie DROP INDEX CONCURRENTLY pour vous et ne l’exécute jamais lui-même.
  • Lancez VACUUM (ANALYZE) ou ANALYZE sur une table depuis la liste. VACUUM FULL vous demande d’abord de saisir le nom de la table. PRO
Écran Vacuum et gonflement : wraparound des ID de transaction à 86 %, un avertissement indiquant que la base cessera d’accepter les écritures à 100 %, et trois causes probables

Votre Postgres via votre bastion, avec les droits que votre rôle a déjà.

HeapDeck se connecte de votre iPhone à votre serveur, directement ou via votre bastion SSH. Il n’y a ni serveur HeapDeck entre les deux, ni compte. L’assistant IA, si vous le configurez, ne parle qu’au fournisseur que vous avez choisi, avec votre propre clé.

  • SSH avec mot de passe, clé Ed25519, ECDSA ou RSA et sa phrase secrète, ou clé Secure Enclave, via jusqu’à trois hôtes. HeapDeck épingle chaque clé d’hôte à la première connexion.
  • TLS avec sslmode=require par défaut. L’empreinte SHA-256 du certificat est épinglée, et si le certificat change, la connexion s’arrête jusqu’à votre décision.
  • Mots de passe, clés et empreintes restent dans le Keychain de cet iPhone, jamais synchronisés. L’app s’ouvre avec Face ID.
  • Pas de superuser ? HeapDeck affiche le GRANT pg_monitor exact dont il a besoin, au lieu d’un écran vide.
Feuille « Vérifiez ce serveur » à la première connexion : l’empreinte SHA-256 du certificat du serveur, à comparer avec vos enregistrements avant de lui faire confiance

Les problèmes Postgres que vous pouvez régler depuis votre iPhone

Chaque carte part de ce que vous voyez quand ça casse et mène à un guide avec le SQL, les seuils et l’écran à ouvrir. Les guides sont en anglais.

Vous voyez tout cela gratuitement sur un serveur. Pour terminer une session, lancer VACUUM ou supprimer un slot, il vous faut Pro, un achat unique à 22,99 €.

Tous les cas d’usage

Les écrans que vous ouvrez pendant un incident Postgres

Dix tuiles de santé en premier, et un écran natif derrière chacune, pour ne jamais avoir à taper psql sur un clavier de téléphone. La console SQL est là quand il le faut, et elle vérifie chaque requête avant son exécution.

  • Santé

    Dix tuiles : sessions face à max_connections, sessions bloquées, requête la plus longue, TPS, succès du cache, autovacuum, wraparound, réplication, taille de la base et requêtes lentes. Un verdict Attention ou Critique nomme les tuiles en cause. S’actualise toutes les 10 secondes tant que l’écran est ouvert.

  • Activité

    Toutes les sessions de pg_stat_activity, celles en attente d’abord. Filtrez les sessions actives, idle in transaction, de plus de 10 s ou en attente. Balayez une ligne pour annuler ou terminer la session.

  • Réplication et slots

    Retard de rejeu par réplica, détaillé par phase WAL. Chaque slot avec le WAL qu’il retient, et un avertissement quand un slot inactif remplit votre disque.

  • Requêtes lentes

    Les 300 requêtes les plus lourdes de pg_stat_statements, triées par temps total, moyenne, appels ou lignes. Le détail d’une requête affiche son rôle, sa base, ses temps et ses I/O, ainsi que les sessions qui l’exécutent en ce moment (PostgreSQL 14+).

  • Données et console SQL

    Parcourez les tables, filtrez côté serveur, suivez les clés étrangères, exportez une page en CSV ou JSON. La console classe chaque requête au fil de la saisie ; avec Free, les lectures s’exécutent dans BEGIN READ ONLY.

  • Assistant IA PRO

    Explique un incident ou une chaîne de verrous et rédige le correctif, avec votre propre clé API ou votre propre Ollama. Il reçoit un instantané expurgé et n’exécute jamais rien de lui-même.

La démo intégrée de HeapDeck, en sombre et en clair, comme iOS.

Feuille « Annuler la session qui bloque » : pid 24310, une migration ALTER TABLE active depuis 01:12 ; « Cela devrait débloquer 2 sessions en attente »

Annuler la racine Ce qui sera débloqué, avant de confirmer.

Écran Vacuum et gonflement : lignes mortes par table et six index sans aucun scan, 34 Go au total

Vacuum et gonflement Lignes mortes et index inutilisés, avec l’espace qu’ils occupent.

Écran Activité : les sessions avec leur état, leur temps d’attente et leur SQL ; celle qui bloque est marquée « bloque 4 sessions »

Activité Les sessions en attente d’abord.

Écran Réplication : deux réplicas avec leur retard de rejeu, et l’avertissement « Un slot inactif oblige PostgreSQL à conserver le WAL indéfiniment »

Réplication Retard par réplica, slots qui retiennent du WAL.

Écran Requêtes lentes : requêtes triées par temps total, avec appels, temps moyen et lignes

Requêtes lentes Issues de pg_stat_statements.

Écran Activité pour un rôle sans pg_monitor : « Vous voyez les sessions, mais pas leur SQL », avec un bouton « Montrez-moi comment »

Accès limité Pas de pg_monitor ? L’app dit ce qui est masqué et comment y remédier.

Console SQL : DELETE FROM public.orders classé Destructif, clause WHERE absente, 18,1 millions de lignes estimées

Classificateur SQL Son verdict face à un DELETE sans WHERE.

Réponse de l’assistant : une transaction inactive tient un verrou de ligne sur orders, sept sessions attendent, avec les prochaines étapes suggérées

Assistant IA Il explique une chaîne de verrous.

Ce que voit le modèle : l’instantané envoyé au modèle, avec les noms remplacés par des espaces réservés comme table_1

Ce que voit le modèle Le texte exact, avant l’envoi.

Onglet Données : la table orders en grille, 200 lignes affichées sur 18 412 004

Données Pages de 200 lignes, filtrées côté serveur.

Annuler la racine Ce qui sera débloqué, avant de confirmer.

La surveillance de Postgres est gratuite. Pro est un achat unique.

Essayez-le d’abord sur votre propre production : tous les écrans de surveillance sont gratuits pour un serveur. Pro ajoute tous les autres serveurs et toutes les actions, une fois pour toutes, pour 22,99 €. Sans abonnement, sans compte.

Free

pour toujours

Pointez-le sur un serveur de production et voyez tout.

  • Tous les écrans de surveillance : Santé, Activité, Verrous, Vacuum et gonflement, Réplication, Stockage, Requêtes lentes
  • Une connexion enregistrée avec TLS, tunnel SSH, empreintes épinglées et Face ID
  • Navigateur de données avec filtres côté serveur, clés étrangères, export CSV et JSON
  • Console SQL pour les lectures, dans une transaction en lecture seule
  • Le classificateur SQL et ses explications

Pro

22,99 €

achat unique

Pour le moment où il faut agir.

  • Connexions enregistrées illimitées : tous les serveurs dont vous assurez l’astreinte
  • Annuler et terminer des sessions, arrêter la racine d’une chaîne de verrous
  • VACUUM, ANALYZE et suppression d’un slot de réplication
  • Écritures et DDL dans la console, derrière des confirmations
  • Insérer, modifier et supprimer des lignes dans les tables avec clé primaire
  • L’assistant IA avec votre propre clé ou votre propre modèle

Dans Free, les actions Pro restent visibles, marquées PRO, pour que vous voyiez ce qu’elles feraient. L’assistant fonctionne gratuitement sur l’incident de démo intégré. Hors de la zone euro, l’App Store affiche le prix dans votre devise.

Free · Pro 22,99 € en achat unique · PostgreSQL 13–19 · iOS 17+ · iPhone et iPad

Questions sur HeapDeck et Postgres

HeapDeck fonctionne-t-il avec Neon, Supabase, Amazon RDS, Cloud SQL ou Azure ?

HeapDeck fonctionne avec tout PostgreSQL 13–19 que votre iPhone peut joindre, auto-hébergé ou géré, primaire ou réplica. Si votre rôle n’est pas superuser, les écrans indiquent ce qui est masqué et le GRANT pg_monitor qui y remédie.

Neon, Supabase et Amazon RDS sont vérifiés en conditions réelles. Collez la chaîne de connexion depuis le panneau Connect de Neon ou de Supabase ; pour RDS, saisissez le point de terminaison de l’instance affiché dans la console RDS. Neon se connecte en direct ou via son hôte -pooler. L’hôte direct de Supabase n’a qu’une adresse IPv6 : sur un réseau sans IPv6, HeapDeck le signale et vous oriente vers la chaîne du Session pooler.

verify-full fonctionne lorsque le certificat remonte à une racine approuvée par iOS, comme celui de Neon. Amazon RDS signe avec sa propre autorité racine, qu’iOS n’intègre pas ; pour RDS et les fournisseurs similaires, utilisez sslmode=require : la connexion est chiffrée et HeapDeck épingle l’empreinte du certificat à la première connexion.

Peut-il joindre une base derrière un bastion ?

Oui. Activez le tunnel SSH dans la connexion et saisissez l’hôte du bastion, l’utilisateur et un mot de passe ou une clé. HeapDeck lit les clés Ed25519, ECDSA et RSA aux formats OpenSSH, PEM, PKCS#8 ou PuTTY, avec ou sans phrase secrète, et peut créer une clé Secure Enclave qui ne quitte jamais votre iPhone.

Derrière plus d’un saut, ajoutez jusqu’à deux hôtes relais, chacun avec ses propres identifiants. HeapDeck répond aux demandes d’authentification à deux facteurs et épingle chaque clé d’hôte à la première connexion. Les certificats client (mTLS) ne sont pas pris en charge.

Mes identifiants ou mes données quittent-ils mon iPhone ?

HeapDeck se connecte à votre serveur directement ou via votre bastion SSH, sans serveur à nous entre les deux. Vous n’avez besoin d’aucun compte. Les mots de passe, les clés SSH et les empreintes épinglées restent dans l’iOS Keychain de cet appareil, sans synchronisation iCloud.

Deux choses peuvent quitter le téléphone, toutes deux sous votre contrôle : une question au fournisseur d’IA que vous avez configuré (Pro), et les rapports de plantage et les statistiques d’utilisation, que vous pouvez désactiver au premier lancement ou dans Réglages. Ni l’une ni l’autre ne contient de SQL, de noms de tables, de noms d’hôtes, de valeurs ni d’identifiants. Les détails sont dans la politique de confidentialité.

Faut-il être superuser ?

Non. Un rôle avec pg_monitor couvre les écrans de surveillance : GRANT pg_monitor TO your_role;. Sans lui, HeapDeck fonctionne quand même et signale ce que le serveur cache à votre rôle. Annuler les sessions d’autres rôles demande les droits PostgreSQL habituels, comme pg_signal_backend ; sans eux, HeapDeck vous donne la commande à transmettre à votre DBA.

Annuler ou terminer : lequel choisir ?

Annuler (pg_cancel_backend) arrête la requête qu’une session exécute ; la session et sa transaction restent ouvertes. Terminer (pg_terminate_backend) tue toute la session et effectue le rollback de sa transaction.

Une session idle in transaction n’exécute aucune requête, donc Annuler n’a aucun effet sur elle : c’est Terminer qui libère ses verrous. HeapDeck vous demande de saisir le pid avant de terminer la racine d’une chaîne de verrous ou une session sur une connexion Production.

HeapDeck peut-il casser ma base de données ?

Free n’écrit rien du tout : les lectures de la console s’exécutent dans BEGIN READ ONLY … ROLLBACK. Avec Pro, chaque écriture passe quatre contrôles, dans l’ordre : Pro, l’option Lecture seule de la connexion, le classificateur SQL et votre confirmation.

Avant de lancer VACUUM FULL, de supprimer un slot ou de terminer la racine d’une chaîne de verrous, HeapDeck vous demande de saisir le nom de la table, le nom du slot ou le pid. Une connexion marquée Production reçoit un badge PROD et des confirmations plus strictes.

Pourquoi ne pas simplement se connecter en SSH et lancer psql ?

Vous le pouvez toujours. HeapDeck donne à chaque question d’incident son propre écran, pour que vous n’ayez pas à taper de requêtes sur un clavier de téléphone : qui bloque et combien attendent, ce qu’exécute la racine, à quel point le wraparound est proche, quel slot retient du WAL. Il relit la chaîne de verrous avant d’agir et vous demande de confirmer.

Que voit l’assistant IA ?

Un instantané expurgé de l’écran sur lequel porte votre question. L’hôte, le port, les mots de passe et les clés n’y figurent jamais, et les valeurs deviennent des espaces réservés comme $1. Pour les modèles cloud, les noms de bases, de tables et de colonnes sont masqués par défaut et rétablis sur votre téléphone à l’arrivée de la réponse.

Les demandes partent de votre iPhone vers le fournisseur que vous avez choisi, avec votre propre clé (Anthropic, OpenAI, OpenRouter, Z.ai), ou vers votre propre Ollama ou serveur compatible OpenAI. « Ce que voit le modèle » montre le texte exact avant que vous l’envoyiez. L’assistant fait partie de Pro et n’exécute jamais de SQL de lui-même.

Y a-t-il un abonnement ?

Non. La surveillance d’un serveur est gratuite, et Pro, avec des serveurs illimités et toutes les actions, est un achat unique de 22,99 €, lié à votre Apple ID. Il n’y a pas de compte, ni d’essai limité dans le temps.

M’alertera-t-il en cas de panne ?

Non. HeapDeck fonctionne tant qu’il est ouvert et ne surveille rien en arrière-plan. Gardez votre système d’alerte tel quel : HeapDeck est l’écran que vous ouvrez après l’alerte.

Fonctionne-t-il sur iPad ?

Oui. Sur iPad, HeapDeck s’affiche en plein écran dans toutes les orientations, avec une barre latérale à la place de la barre d’onglets. L’écran Verrous affiche l’arbre de blocage à côté de la session sélectionnée, et la console SQL occupe toute la largeur. Pro suit votre Apple ID ; un seul achat couvre donc votre iPhone et votre iPad.

Amazon Web Services, AWS et Amazon RDS sont des marques d’Amazon.com, Inc. ou de ses sociétés affiliées. Neon, Supabase, Google Cloud SQL et Microsoft Azure sont des marques de leurs propriétaires respectifs. HeapDeck n’est affilié à aucun d’eux et n’est approuvé par aucun d’eux.

Guides pour les incidents Postgres

Les problèmes qui vous réveillent la nuit, une page pour chacun : le SQL pour vérifier à la main et ce que montre HeapDeck. Les guides sont en anglais.

Sur le blog

Tous les articles

Installez-le sur votre téléphone avant le prochain incident Postgres.

Ajoutez un serveur, épinglez son certificat, et tous les écrans de surveillance sont à vous, gratuitement. Pro est là pour la nuit où il faudra agir.

Télécharger dans l’App Store
Scannez pour l’ouvrir sur votre iPhone

Free · Pro 22,99 € en achat unique · PostgreSQL 13–19 · iOS 17+ · iPhone et iPad