{"id":25118973,"url":"https://github.com/thiagoesteves/observer_web","last_synced_at":"2026-02-13T10:21:42.092Z","repository":{"id":275352381,"uuid":"923722875","full_name":"thiagoesteves/observer_web","owner":"thiagoesteves","description":"Phoenix Liveview Dashboard for Observability including Ports and Processes details, Tracing with erlang debugger, Beam VM metrics and much more","archived":false,"fork":false,"pushed_at":"2025-04-03T18:27:30.000Z","size":695,"stargazers_count":17,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-19T12:43:54.343Z","etag":null,"topics":["elixir","elixir-lang","elixir-phoenix","elixir-phoenix-framework","erlang","erlang-distribution","erlang-otp","gleam","library","liveview","observability"],"latest_commit_sha":null,"homepage":"https://deployex.pro","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thiagoesteves.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"thiagoesteves"}},"created_at":"2025-01-28T18:27:05.000Z","updated_at":"2025-04-13T14:18:34.000Z","dependencies_parsed_at":"2025-03-18T17:41:44.480Z","dependency_job_id":null,"html_url":"https://github.com/thiagoesteves/observer_web","commit_stats":null,"previous_names":["thiagoesteves/tracing_web","thiagoesteves/observer_web"],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thiagoesteves%2Fobserver_web","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thiagoesteves%2Fobserver_web/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thiagoesteves%2Fobserver_web/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thiagoesteves%2Fobserver_web/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thiagoesteves","download_url":"https://codeload.github.com/thiagoesteves/observer_web/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250301364,"owners_count":21408152,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["elixir","elixir-lang","elixir-phoenix","elixir-phoenix-framework","erlang","erlang-distribution","erlang-otp","gleam","library","liveview","observability"],"created_at":"2025-02-08T04:23:36.184Z","updated_at":"2026-02-13T10:21:42.083Z","avatar_url":"https://github.com/thiagoesteves.png","language":"Elixir","readme":"[![Hex.pm Version](http://img.shields.io/hexpm/v/observer_web.svg?style=flat)](https://hex.pm/packages/observer_web)\n\n# Observer Web\n\nObserver Web is an easy-to-use tool that integrates into your application, providing\nenhanced observability. Leveraging OTP distribution, it offers tracing through the\n[Erlang debugger][edb], along with detailed insights into process/port statuses\nand Beam VM statistics.\n\nPowered by [Phoenix LiveView][liv], it is distributed, lightweight, fully real-time and __safe to use in production__. This\nlibrary is part of the [DeployEx][dye] project.\n\n## Check out some of the available features\n\n### Distributed tracing safe to use in production\n![Tracing Dashboard](./guides/static/tracing_dash.png)\n\n### Application topology view with processes, ports, references, links and relations.\n![Applications Dashboard](./guides/static/applications_tree.png)\n\n### Process inspector with actions (send messages, kill, GC, memory monitoring)\n![Process Inspector](./guides/static/process_dash.png)\n\n### LiveView-specific debugging and state inspection\n![Inspector for Liveview](./guides/static/liveview.png)\n\n### Port inspector with close and memory monitoring capabilities\n![Port Inspector](./guides/static/port.png)\n\n### Real-time VM metrics across all distributed nodes\n![Metrics Dashboard](./guides/static/metrics_dash.png)\n\n## Installation in your App\n\nSee the [installation guide](https://hexdocs.pm/observer_web/installation.html) for details on installing and Configuring.\n\n## Running Observer Web as standalone (for testing and development)\n\n### Download dependencies\n\n```console\nmix deps.get\n```\n\n### Fetch and Compile assets\n\n```console\nmkdir -p priv/static \u0026\u0026 touch priv/static/app.css \u0026\u0026 touch priv/static/app.js\ncd assets/\nnpm install\ncd ..\nmix assets.build\n```\n\n### Run the application for development\n\nSince Observer Web uses the OTP distribution, it is required to have a name when running.\n\n```console\nelixir --sname observer -S mix run --no-halt dev.exs\n```\n\nNow you can visit [`localhost:4000/observer`](http://localhost:4000/observer) from your browser.\n\n### Run multiple nodes with Metric Hub configuration\n\n1. Start the nodes\n\nOpen a new terminal (Terminal 1) and run the application in `observer` mode:\n\n```console\nexport PORT=4000\nexport OBSERVER_WEB_TELEMETRY_MODE=observer\nelixir --sname observer --cookie cookie -S mix run --no-halt dev.exs\n```\n\nOpen a new terminal (Terminal 2) and run the application in `broadcast` mode:\n\n```console\nexport PORT=4001\nexport OBSERVER_WEB_TELEMETRY_MODE=broadcast\nelixir --sname broadcast --cookie cookie -S mix run --no-halt dev.exs\n```\n\n2. Connect the nodes\n\nOpen a new terminal (Terminal 3) and run:\n\n```console\niex --sname hub --cookie cookie -S mix phx.server\n```\n\nAfter the Phoenix server starts, you'll see the Elixir interactive shell prompt. Connect\nthe nodes by executing these commands:\n\n```elixir\n# Connect to the observer node\n{:ok, hostname} = :inet.gethostname()\nNode.connect(:\"observer@#{hostname}\")\n# Should return: true\n\n# Connect to the broadcast node\n{:ok, hostname} = :inet.gethostname()\nNode.connect(:\"broadcast@#{hostname}\")\n# Should return: true\n```\n\nYou can close the Terminal 3 if you want, this terminal is only for supporting the node connection.\n\nTo verify everything is working properly:\n\n- Visit [`localhost:4000/observer/metrics`](http://localhost:4000/observer/metrics) in your browser to confirm\n  the application is running in `observer` mode.\n- Visit [`localhost:4001/observer/metrics`](http://localhost:4001/observer/metrics) to confirm the application\n  is running in `broadcast` mode.\n\nYou can now explore the `observer` mode, checking that the data is persisted even if the other app in\nbroadcast mode restarts.\n\n[dye]: https://github.com/thiagoesteves/deployex\n[edb]: https://www.erlang.org/doc/apps/runtime_tools/dbg.html\n[liv]: https://github.com/phoenixframework/phoenix_live_view\n","funding_links":["https://github.com/sponsors/thiagoesteves"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthiagoesteves%2Fobserver_web","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthiagoesteves%2Fobserver_web","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthiagoesteves%2Fobserver_web/lists"}