Monitorex - Real-time HTTP telemetry dashboard for Phoenix apps, no database required

Monitorex gives you a live-updating dark-theme dashboard to monitor all HTTP traffic in your Phoenix application — outbound (Tesla, Finch) and inbound (Phoenix router) — without needing a database. Everything runs on ETS, auto-prunes old events, and updates every 2 seconds via LiveView.

Key Features

Zero-database architecture
No Postgres, no Redis, no SQLite. All events are stored in ETS with configurable TTL pruning. Just add the dependency and mount the dashboard.

def deps do
  [`
    {:monitorex, "~> 0.4.0"}
  ]
end

Mount in your router:

scope "/monitoring" do
  pipe_through :browser
  http_dashboard []
end

Visit /monitoring — you’re done.

Multi-client outbound monitoring
Track every HTTP request your app makes, regardless of the client:

config :monitorex, :sources, [:tesla, :finch, :phoenix]

Tesla, Finch telemetry events are normalized into a unified event stream. Also handles deduplication when both Tesla and Finch observe the same request.

Inbound Phoenix traffic
Monitorex hooks into Phoenix router dispatch and gives you per-route and per-consumer breakdowns. Identify callers by Basic Auth username, API key header, or a custom function.

Live dashboard (8 pages)

Outbound Overview

• Page: Outbound Overview
• Description: Summary cards + host table

Host Detail

• Page: Host Detail
• Description: Per-endpoint breakdown

Timeline Inspector

• Page: Timeline Inspector
• Description: Time-grouped events with search, filters, and request/response detail viewer

Inbound Overview

• Page: Inbound Overview
• Description: Route table + summary

Inbound Consumers

• Page: Inbound Consumers
• Description: Per-consumer stats

Route Detail

• Page: Route Detail
• Description: Consumer breakdown + recent requests

All pages feature sortable tables, URL-persisted filters/pagination, and auto-refresh.

Production features

  • Health checkGET /monitorex/health with Collector status, queue depths, ETS sizes
  • Prometheus metricsGET /monitorex/metrics for requests, errors, latency
  • Alert webhooks — configurable thresholds (error_rate, host_down, high_latency) with debounced dispatch
  • Cluster support — aggregate data across multiple BEAM nodes with merge strategies
  • Authentication — extensible Monitorex.Resolver behaviour; bring your own auth
  • Header redaction — sensitive headers (authorization, set-cookie, etc.) auto-masked
  • Responsive — works on mobile with collapsible sidebar and card-layout tables

Installation

{:monitorex, "~> 0.4.0"}

Then configure your sources, mount the dashboard, and you’re live.

Current Status

Version 0.4.0 is out on Hex with:

  • Timeline revamp with time-grouped sections, search bar, and status/method filters (#51)
  • 363 tests, Dialyzer-clean, Credo-clean
  • Full CI pipeline (Elixir 1.15 & 1.17, OTP 26 & 27)
  • Published docs on hexdocs.pm/monitorex

Up next on the roadmap: Req adapter, ExDoc guide pages, and configurable event memory limits for production hardening.

Questions for the community

  • How are you currently monitoring HTTP traffic in your Phoenix apps?
  • What telemetry data do you wish you had but can’t easily capture today?
  • Would a full ExDoc guide + Getting Started tutorial make adoption easier?
10 Likes