phoenix_live_dashboard is a free, open source monitoring & observability project written in Elixir and released under MIT. It has 2,176 GitHub stars, 206 forks and 17 open issues, and was last pushed 2 months ago. On this registry it ranks #167 of 270 tracked projects in Monitoring & Observability, with 5 head-to-head comparisons available. It gained 4 stars over the last 30 tracked days.

What is phoenix_live_dashboard?

Phoenix LiveDashboard is a real-time performance monitoring and debugging dashboard for Phoenix developers, delivered as an Elixir library that renders metrics, request logging, and OS, VM, and storage insights inside an existing Phoenix application.

What it is

Phoenix LiveDashboard is an Elixir package built on top of Phoenix LiveView. It ships by default as part of Phoenix alongside LiveView, and it is also installable on its own through Hex. It lives in the Elixir and Phoenix ecosystem and is published under the MIT licence. The project presents a set of modules inside a single dashboard route: Home, OS Data, Metrics, Request logging, Applications, Processes, Ports, Sockets, ETS, and Ecto Stats.

The concrete problem it solves is that inspecting a running Phoenix node normally means reaching for external tooling, separate profilers, or ad-hoc console inspection. LiveDashboard replaces that by rendering the node's own runtime state as a browsable interface, driven by :telemetry events and Erlang runtime introspection. It also works across nodes: when nodes are connected via Distributed Erlang, information from node B can be viewed from a dashboard accessed on node A.

Key capabilities

  • Metrics module visualizes :telemetry events as real-time charts so application behaviour is visible under different conditions.
  • Request logging module shows everything that was logged for a given request.
  • OS Data module reports general information about the operating system, including CPU, memory, and disk usage.
  • Applications, Processes, Ports, Sockets, and ETS modules each support filtering and searching, and processes can be viewed in a supervision tree.
  • Ecto Stats module shows index, table, and general usage information about the underlying Ecto Repo storage.
  • Cross-node inspection through Distributed Erlang, so one dashboard instance can read state from connected nodes.
  • Router integration through import Phoenix.LiveDashboard.Router with a live_dashboard "/dashboard" route.

Who uses it and how

  • Development workflows, where the README shows the dashboard mounted behind an if Mix.env() == :dev guard with no authentication layer.
  • Production deployments, where the README explicitly recommends putting authentication in front of the dashboard rather than exposing it directly.
  • Teams using mix phx.gen.auth to generate an Admin resource can gate the route with an :admins_only pipeline using plug :fetch_current_admin and plug :require_authenticated_admin.
  • Quick setups can use HTTP Basic Authentication through Plug.BasicAuth.basic_auth with AUTH_USERNAME and AUTH_PASSWORD read from the environment.
  • Applications running behind a proxy or webserver, which must be configured to allow WebSocket upgrades for the LiveView connection.
  • Clustered deployments connected by Distributed Erlang, where a single dashboard view spans multiple nodes.

Getting started

Add {:phoenix_live_dashboard, "~> 0.7"} to mix.exs and run mix deps.get, set live_view: [signing_salt: "SECRET_SALT"] in the endpoint configuration, declare socket "/live", Phoenix.LiveView.Socket, and mount the dashboard in the router. Then run mix phx.server and open /dashboard.

How it compares

The provided facts list no paid products that this project replaces, and no comparable tools are named either. On the facts available, Phoenix LiveDashboard stands alone in this registry.

When to use it — and when not to

A self-hoster must run a Phoenix application with LiveView configured, supply a signing salt, and add an authentication pipeline before exposing the dashboard outside development; a proxy in front of the application must also permit WebSocket upgrades. It is not a fit for non-Elixir or non-Phoenix stacks, since the dashboard introspects BEAM runtime state and Ecto repositories directly. The README excerpt supplied here is truncated mid-link and provides no sizing, retention, or persistence guidance, so operators needing long-term metric storage should look beyond what these facts describe.

project readme (upstream, from github) — read inline

Phoenix LiveDashboard

CI

Online Documentation.

LiveDashboard provides real-time performance monitoring and debugging tools for Phoenix developers. It provides the following modules:

  • Home - See general information about the system

  • OS Data - See general information about OS, such as CPU, Memory and Disk usage

  • Metrics - See how your application performs under different conditions by visualizing :telemetry events with real-time charts

  • Request logging - See everything that was logged for certain requests

  • Applications - See, filter, and search applications in the current node and view their processes in a supervision tree

  • Processes - See, filter, and search processes in the current node

  • Ports - See, filter, and search ports (responsible for I/O) in the current node

  • Sockets - See, filter, and search sockets (responsible for tcp/udp) in the current node

  • ETS - See, filter, and search ETS tables (in-memory storage) in the current node

  • Ecto Stats - Shows index, table, and general usage about the underlying Ecto Repo storage

The dashboard also works across nodes. If your nodes are connected via Distributed Erlang, then you can access information from node B while accessing the dashboard on node A.

screenshot

Installation

The LiveDashboard is built on top of LiveView. Both LiveView and LiveDashboard ship by default as part of Phoenix. But if you skipped them, you can LiveDashboard in three steps:

  1. Add the phoenix_live_dashboard dependency
  2. Configure LiveView
  3. Add dashboard access

1. Add the phoenix_live_dashboard dependency

Add the following to your mix.exs and run mix deps.get:

def deps do
  [
    {:phoenix_live_dashboard, "~> 0.7"}
  ]
end

2. Configure LiveView

First, update your endpoint's configuration to include a signing salt:

# config/config.exs
config :my_app, MyAppWeb.Endpoint,
  live_view: [signing_salt: "SECRET_SALT"]

Then add the Phoenix.LiveView.Socket declaration to your endpoint:

socket "/live", Phoenix.LiveView.Socket

And you are good to go!

3. Add dashboard access for development-only usage

Once installed, update your router's configuration to forward requests to a LiveDashboard with a unique name of your choosing:

# lib/my_app_web/router.ex
use MyAppWeb, :router
import Phoenix.LiveDashboard.Router

...

if Mix.env() == :dev do
  scope "/" do
    pipe_through :browser
    live_dashboard "/dashboard"
  end
end

This is all. Run mix phx.server and access the "/dashboard" to configure the necessary modules.

Extra: Add dashboard access on all environments (including production)

If you want to use the LiveDashboard in production, you should put authentication in front of it. For example, if you use mix phx.gen.auth to generate an Admin resource, you could use the following code:

# lib/my_app_web/router.ex
use MyAppWeb, :router
import Phoenix.LiveDashboard.Router

...

pipeline :admins_only do
  plug :fetch_current_admin
  plug :require_authenticated_admin
end

scope "/" do
  pipe_through [:browser, :admins_only]
  live_dashboard "/dashboard"
end

If you'd rather have some quick and dirty HTTP Authentication, the following code can be used as a starting point:

# lib/my_app_web/router.ex
use MyAppWeb, :router
import Phoenix.LiveDashboard.Router

...

pipeline :admins_only do
  plug :admin_basic_auth
end

scope "/" do
  pipe_through [:browser, :admins_only]
  live_dashboard "/dashboard"
end

defp admin_basic_auth(conn, _opts) do
  username = System.fetch_env!("AUTH_USERNAME")
  password = System.fetch_env!("AUTH_PASSWORD")
  Plug.BasicAuth.basic_auth(conn, username: username, password: password)
end

If you are running your application behind a proxy or a webserver, you also have to make sure they are configured for allowing WebSocket upgrades. For example, here is an article on how to configure Nginx with Phoenix and WebSockets.

Contributing

For those planning to contribute to this project, you can run a dev version of the dashboard with the following commands:

$ mix setup
$ mix dev

Additionally, you may pass some options to enable Ecto testing. For example, to enable the PostgreSQL repo:

$ mix dev --postgres

...and to enable the MySQL repo:

$ mix dev --mysql

...and to enable the SQLite repo:

$ mix dev --sqlite

Alternatively, run iex -S mix dev [flags] if you also want a shell.

Before submitting a pull request, discard any changes that were made to the dist directory.

For example, to rollback using git restore:

$ git restore dist

License

MIT License. Copyright (c) 2019 Michael Crumm, Chris McCord, José Valim.

Frequently asked questions

Is phoenix_live_dashboard free to use?

phoenix_live_dashboard is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does phoenix_live_dashboard do?

Realtime dashboard with metrics, request logging, plus storage, OS and VM insights

What is phoenix_live_dashboard written in?

phoenix_live_dashboard is primarily written in Elixir. Its source is publicly available at https://github.com/phoenixframework/phoenix_live_dashboard, and it has 2,176 GitHub stars.