Tous les articles
Mer. 13 mai 2026 · 3 min de lecture

🔥 Ember : un htop pour Caddy et FrankenPHP, direct dans le terminal

Ember monitoring Caddy FrankenPHP

📚 Introduction

L’observabilité PHP est en pleine évolution. Avec FrankenPHP qui s’installe progressivement comme le runtime moderne et Caddy qui sert de plus en plus de frontaux web, la question du monitoring change : on ne veut pas forcément monter une stack OpenTelemetry / Prometheus / Grafana pour chaque petit projet ou chaque environnement de staging, mais on veut tout de même avoir un œil sur ce qui se passe.

Ember — dashboard temps réel pour Caddy et FrankenPHP

Ember, développé par Les Tilleuls (Alexandre Daubois), répond exactement à ce besoin. C’est un outil d’observabilité temps réel pour Caddy et FrankenPHP, qui s’exécute directement dans le terminal sous forme de TUI (Text User Interface). L’équipe le résume joliment : « un htop pour votre serveur Caddy ».

🚀 Ce qu’Ember affiche

Côté Caddy, Ember sort de la boîte avec :

  • le RPS (requêtes par seconde) avec sparklines,
  • la latence moyenne et les percentiles P50, P90, P95, P99,
  • le Time-to-First-Byte par host,
  • les status codes ventilés (2xx, 3xx, 4xx, 5xx),
  • des graphes ASCII plein écran pour visualiser l’évolution dans le temps.

Côté FrankenPHP (à partir de la version 1.13), Ember va plus loin et expose ce qu’aucun frontal classique ne donne :

  • l’état de chaque thread PHP en temps réel,
  • la méthode HTTP et l’URI en cours de traitement,
  • la mémoire utilisée par worker,
  • le nombre de requêtes déjà traitées,
  • la possibilité de redémarrer les workers directement depuis le dashboard.

Quand on a déjà passé du temps à débugger un worker FrankenPHP qui se comporte étrangement (voir aussi mon post sur FrankenPHP), ce niveau d’introspection vaut son pesant d’or.

🧰 Installation et premiers usages

Ember est écrit en Go et se distribue comme un binaire unique. Au choix :

# Via Homebrew
brew install alexandre-daubois/tap/ember
 
# Via Go
go install github.com/alexandre-daubois/ember/cmd/ember@latest
 
# Via Docker
docker run ghcr.io/alexandre-daubois/ember

Une fois installé, on lance Ember sur les endpoints d’admin de Caddy et FrankenPHP, et le dashboard s’ouvre dans le terminal. Pas de configuration YAML à monter, pas de service à déclarer.

🪶 Plusieurs modes pour plusieurs contextes

C’est l’autre point fort d’Ember : il n’est pas qu’un outil de visualisation interactive. On peut le brancher de plusieurs manières :

  • Mode TUI interactif pour le développement local et l’investigation rapide.
  • Mode JSON streaming pour piper la sortie dans une autre brique (un script, un agrégateur, un test).
  • Mode daemon avec endpoint Prometheus pour exposer les métriques scrapeables.
  • Health checks et readiness gates dans les pipelines de déploiement.
  • Validation de déploiement : on peut comparer un état avant/après mise en production et bloquer un rollout si les indicateurs dérivent.

C’est dans ces modes “intégration CI/CD” qu’Ember devient un vrai outil de production, pas juste un gadget de dev.

🎯 Quand utiliser Ember

Mon arbitrage actuel :

  • En local et en staging : Ember en TUI, simple comme un htop, idéal pour comprendre rapidement ce qui se passe sur un worker FrankenPHP.
  • Sur un projet hébergé via Coolify ou un VPS classique : Ember en mode daemon, sans monter de stack Prometheus, c’est largement suffisant pour les premiers signaux d’alerte.
  • Sur une application à fort trafic : Ember reste utile pour la lecture instantanée, mais on couple naturellement avec SigNoz et OpenTelemetry pour la rétention longue durée et la corrélation logs/traces.

⚠️ À noter

  • Ember se concentre sur Caddy et FrankenPHP. Si votre stack PHP repose encore sur PHP-FPM derrière Nginx, ce n’est pas l’outil pour vous.
  • Comme tout dashboard temps réel exposé par un endpoint d’admin, pensez à protéger l’accès en production : authentification, restriction réseau, et idéalement un mode lecture-seule.
  • Le projet est jeune et bouge vite. Suivez le dépôt GitHub alexandre-daubois/ember pour les évolutions.

🎉 Conclusion

Ember illustre une tendance que j’aime beaucoup dans l’écosystème PHP moderne : des outils ciblés, qui font une chose et la font bien, qui s’installent en une commande et qui s’intègrent naturellement avec le reste de la stack. Avec FrankenPHP qui gagne du terrain comme runtime par défaut sur les nouveaux projets Laravel et Symfony, avoir un outil d’observabilité aussi simple et aligné sur la stack Caddy est un vrai cadeau.

Si vous testez FrankenPHP en production ou même juste en local, installez Ember dans la foulée. Le rapport effort / valeur est imbattable.

🔗 Liens utiles