GustavoZiaugra
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 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?
Popular in Announcing
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #advent-of-code
- #elixirconf-us
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #performance








