You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Replaced external image URLs in README.md with local paths under docs/images for improved reliability and maintainability. Added all referenced images to the repository to ensure documentation visuals are available offline and versioned with the project. Expanded Application panel documentation for clarity.
Copy file name to clipboardExpand all lines: README.md
+21-11Lines changed: 21 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,7 +11,7 @@
11
11
12
12
Observer CLI is a library to be dropped into any beam nodes, to be used to assist DevOps people diagnose problems in production nodes. Based on [recon](https://github.com/ferd/recon).
The Home panel provides a comprehensive overview of your Erlang node:
102
102
@@ -151,15 +151,15 @@ Scheduler utilization by [`erlang:statistics(scheduler_wall_time)`](http://erlan
151
151
152
152
When looking for high memory usage, for example it's interesting to be able to list all of a node's processes and find the top N consumers. Enter `m` then press `Enter` will use the `recon:proc_count(memory, N)` function, and you will get output like the following. On OTP 27+ nodes, process rows also display any label set through [`proc_lib:set_label/1`](https://www.erlang.org/doc/apps/stdlib/proc_lib.html#set_label/1), which helps correlate supervised jobs with their metrics.
[`recon:proc_count/2`](http://ferd.github.io/recon/recon.html#proc_count-2) and [`recon:proc_window/3`](http://ferd.github.io/recon/recon.html#proc_window-3) are to be used when you require information about processes in a larger sense: biggest consumers of given process `memory`, `reductions`, `binary`, `total_heap_size`, `message_queue_len`, either absolutely or over a sliding time window, respectively.
157
157
158
158
More detail about sliding time windows see [`recon:proc_window/3`](http://ferd.github.io/recon/recon.html#proc_window-3)
159
159
160
160
When an abnormal process is found, enter the suspected process sequence(Integer) then press `Enter` will use [`erlang:process_info/2`](http://erlang.org/doc/man/erlang.html#process_info-2) to show a lot of information available (which is safe to use in production) about processes.
***registered_name**: if the process has a name (as registered with `erlang:register/2`), it is given here.
165
165
***trap_exit**: set `trap_exit` to true, exit signals arriving to a process are converted to `{EXIT,From,Reason}` messages, which can be received as ordinary messages. If `trap_exit` is set to false, the process exits if it receives an exit signal other than normal and the exit signal is propagated to its linked processes. Application processes are normally not to trap exits.
@@ -184,7 +184,7 @@ When an abnormal process is found, enter the suspected process sequence(Integer)
***Byte input/output**: The byte of growth input/output during the refresh interval.
190
190
***Total input/output**: [`erlang:statistics(io)`](http://erlang.org/doc/man/erlang.html#statistics-1) returns `Input`, which is the total number of bytes received through ports, and `Output`, which is the total number of bytes output to ports.
@@ -200,7 +200,7 @@ Fetches a given attribute from all inet ports (`TCP, UDP, SCTP`) and returns the
200
200
201
201
When find out who is slowly but surely eating up all your bandwidth, enter the suspected port sequence(Integer) then press `Enter` will use [`recon:port_info/2`](http://ferd.github.io/recon/recon.html#port_info-2) to show a lot of information available about port.
***System Info**: [`erlang:system_info/1`](http://erlang.org/doc/man/erlang.html#system_info-1) returns various information about the allocators of the current system (emulator).
223
223
***Allocator Info**: [`recon_alloc:average_block_sizes(current|max)`](https://ferd.github.io/recon/recon_alloc.html#average_block_sizes-1) check all allocators in `allocator` and returns the average block sizes being used for mbcs and sbcs. This value is interesting to use because it will tell us how large most blocks are. This can be related to the VM's largest multiblock carrier size (lmbcs) and smallest multiblock carrier size (smbcs) to specify allocation strategies regarding the carrier sizes to be used.
@@ -226,20 +226,30 @@ When find out who is slowly but surely eating up all your bandwidth, enter the s
ETS tables are never garbage collected, and will maintain their memory usage as long as records will be left undeleted in a table. Only removing records manually (or deleting the table) will reclaim memory.
232
232
233
233
Top N list sort by memory size, all items defined in [`ets:info/2`](http://erlang.org/doc/man/ets.html#info-2)
Find application debug information by [`application_controller:info()`](https://github.com/erlang/otp/blob/master/lib/kernel/src/application_controller.erl#L280).
245
+
The Application panel aggregates supervision data from [`application_controller:info()`](https://github.com/erlang/otp/blob/master/lib/kernel/src/application_controller.erl#L280), groups processes by their application master, and shows their live resource usage. Each row includes:
246
+
247
+
-**No/App**: position in the table and the OTP application name. `no_group` collects processes that do not belong to any application supervisor.
248
+
-**ProcessCount** (`p`): number of processes currently owned by that application. Toggle sorting with `p` to track churn.
249
+
-**Memory** (`m`): total heap/stack memory used by those processes, formatted via `{byte, Size}`.
250
+
-**Reductions** (`r`): cumulative reduction count, useful to spot CPU-heavy apps.
251
+
-**MsgQ** (`mq`): total pending messages across the application’s processes.
252
+
-**Status**: lifecycle state derived from `application_controller` (one of `Loading`, `Loaded`, `Starting`, `Started`, `StartPFalse`, or `Unknown`).
253
+
-**Version**: semantic version reported by the application specification when available.
254
+
255
+
Shortcuts follow the same pattern as other panels: `p/m/r/mq` switch the primary sort column, `F/B` paginate large installations, numeric input jumps to a row, and entering a PID delegates to the process view. Use `{interval, Milliseconds}` to adjust the refresh cadence.
0 commit comments