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 check —
GET /monitorex/healthwith Collector status, queue depths, ETS sizes - Prometheus metrics —
GET /monitorex/metricsfor 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.Resolverbehaviour; 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?






















