Observer Web is an easy-to-use tool that integrates into your application, providing enhanced observability. Leveraging OTP distribution, it offers tracing through the Erlang debugger, along with detailed insights into process/port statuses and Beam VM statistics.
Powered by Phoenix LiveView, it is distributed, lightweight, and fully real-time. This library is part of the DeployEx project.
A preview of the Dashboard (Click to see the video):
See the installation guide for details on installing and Configuring.
mix deps.get
mkdir -p priv/static && touch priv/static/app.css && touch priv/static/app.js
cd assets/
npm install
cd ..
mix assets.build
Since Observer Web uses the OTP distribution, it is required to have a name when running.
elixir --sname observer -S mix run --no-halt dev.exs
Now you can visit localhost:4000/observer from your browser.
- Start the nodes
Open a new terminal (Terminal 1) and run the application in observer mode:
export PORT=4000
export OBSERVER_WEB_TELEMETRY_MODE=observer
elixir --sname observer --cookie cookie -S mix run --no-halt dev.exs
Open a new terminal (Terminal 2) and run the application in broadcast mode:
export PORT=4001
export OBSERVER_WEB_TELEMETRY_MODE=broadcast
elixir --sname broadcast --cookie cookie -S mix run --no-halt dev.exs
- Connect the nodes
Open a new terminal (Terminal 3) and run:
iex --sname hub --cookie cookie -S mix phx.server
After the Phoenix server starts, you'll see the Elixir interactive shell prompt. Connect the nodes by executing these commands:
# Connect to the observer node
{:ok, hostname} = :inet.gethostname()
Node.connect(:"observer@#{hostname}")
# Should return: true
# Connect to the broadcast node
{:ok, hostname} = :inet.gethostname()
Node.connect(:"broadcast@#{hostname}")
# Should return: trueyou can close the Terminal 3 if you want, this terminal is only for supporting the node connection.
To verify everything is working properly:
- Visit
localhost:4000/observer/metricsin your browser to confirm the application is running inobservermode. - Visit
localhost:4001/observer/metricsto confirm the application is running inbroadcastmode.
You can now explore the observer mode, checking that the data is persisted even if the other app in
broadcast mode restarts.