# `DalaDev.Observer`
[🔗](https://github.com/manhvu/dala_dev/blob/main/lib/dala_dev/observer.ex#L1)

Remote node observer inspired by `:observer.start()`.

Collects comprehensive system information from remote nodes and provides
data structures suitable for LiveView rendering. This includes:

- System information (memory, CPU, uptime)
- Process list with detailed statistics
- ETS tables information
- Application controller state
- Loaded modules and memory
- Port information
- Node connectivity status

All data is collected via RPC calls to remote nodes, making it suitable
for monitoring dala Elixir nodes that don't have direct access to
`:observer`.

# `process_info`

```elixir
@type process_info() :: %{
  pid: String.t(),
  name: String.t() | nil,
  memory: integer(),
  reductions: integer(),
  message_queue_len: integer(),
  current_function: String.t(),
  status: atom(),
  registered_name: String.t() | nil
}
```

# `system_info`

```elixir
@type system_info() :: %{
  memory: map(),
  statistics: map(),
  system_version: String.t(),
  uptime_ms: integer(),
  process_count: integer(),
  ets_tables_count: integer()
}
```

# `call_remote`

# `ets_tables`

```elixir
@spec ets_tables(node(), integer()) :: [map()]
```

Get ETS tables information.

# `observe`

```elixir
@spec observe(
  node(),
  keyword()
) :: {:ok, map()} | {:error, term()}
```

Get comprehensive system information from a node.

Returns all observable data from the specified node.

# `process_list`

```elixir
@spec process_list(node(), integer()) :: [process_info()]
```

Get detailed process list with statistics.

# `system_info`

```elixir
@spec system_info(node(), integer()) :: system_info()
```

Get system-level information (memory, stats, version).

---

*Consult [api-reference.md](api-reference.md) for complete listing*
