DalaDev.Observer (dala_dev v0.1.2)

Copy Markdown View Source

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.

Summary

Functions

Get comprehensive system information from a node.

Get detailed process list with statistics.

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

Types

process_info()

@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()

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

Functions

call_remote(node, fun)

ets_tables(node \\ Node.self(), timeout \\ 10000)

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

Get ETS tables information.

observe(node \\ Node.self(), opts \\ [])

@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(node \\ Node.self(), timeout \\ 10000)

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

Get detailed process list with statistics.

system_info(node \\ Node.self(), timeout \\ 10000)

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

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