GustavoZiaugra

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 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?

https://github.com/GustavoZiaugra/monitorex

Where Next?

Popular in Announcing Top

tmbb
PhoenixWS - Websockets over Phoenix Channels Source code on Github here: GitHub - tmbb/phoenix_ws: Websockets implemented over Phoenix Ch...
New
devonestes
Introducing assertions, the library that helps you write really great test assertions! GitHub: GitHub - devonestes/assertions: Helpful a...
New
mikehostetler
I’m excited to announce Jido, a framework providing foundational primitives for building autonomous agent systems in Elixir. While develo...
New
aesmail
Hello guys, I have finally made it. I created an admin interface for a framework. It’s been on my todo list for years and with the curre...
New
zorbash
I created Kitto a framework for dashboards inspired by Dashing. The distributed characteristics of Elixir and the low memory footprint...
New
Crowdhailer
Experimenting with this code. OK.try do user <- fetch_user(1) cart <- fetch_cart(1) order = checkout(cart, user) save_orde...
New
versilov
Could not wait for the missing Elixir ML libraries to appear, so, I wrote one myself, taking https://github.com/sdwolfz/exlearn as a foun...
New
Hal9000
Here is my first stab at this. README pasted below. https://github.com/Hal9000/elixir_random Comments and critiques are welcome. Thank...
New
markmark206
simple_feature_flags is a tiny package that lets you turn features on or off based on which environment (e.g. localhost, staging, product...
New
anshuman23
Hello all, I have been working on my proposed project called Tensorflex as part of Google Summer of Code 2018.. Tensorflex can be used f...
New

Other popular topics Top

aadeshere1
I have a another noob question about loop. Since elixir is immutable, while loop is not directly possible. total = 10 while total != 0 ...
New
New
JeremM34
Hello, how can I check the Phoenix version ? Thanks !
New
Fl4m3Ph03n1x
About me? ( if you have nothing better to do than reading about some random guy in the internet :stuck_out_tongue: ) Hello all, this is ...
New
msaraiva
Surface is an experimental library built on top of Phoenix LiveView and its new LiveComponent API that aims to provide a more declarative...
564 43622 214
New
pmjoe
I have a relationship of love and hate with Elixir. Lots of things are just absolutely right, but there are some things that are kind of ...
New
bsollish-terakeet
Credo is smart enough to check for (something like) this: assert length(the_list) == 0 with this response: Checking if an enum is empt...
New
shijith.k
I am trying to start a new phoenix project with elixir 1.9, but mix phx.new does not work. It says that ** (Mix) The task "phx.new" could...
New
axelson
This post is a wiki (feel free to hit the edit button near the bottom right of this post to add your own changes!) This post collects co...
239 47930 226
New
openscript
Hello! Sorry for this astonishing simple question, but I’m really stuck. I try to set up the intellij-elixir plugin, but I don’t know ho...
New

We're in Beta

About us Mission Statement