aboutsummaryrefslogtreecommitdiffstats
path: root/lib/appmon/priv/appmon_help.txt
blob: f1685be4d879f3f5f4971f867d2f11a75533160e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
		Help for the application monitor system
		---------------------------------------





	The monitor system has two types of windows, the node window
	which opens when appmon:start() is evaluated, and the
	application window which opens when an application in the node
	window is clicked on. 

	All nodes that are known to appmon is shown in the node
	window, normally this is all Erlang nodes visible with the
	nodes() command.


The Node window
---------------

	The node window monitors nodes. At the top there is a menubar
	and below that, each known node is shown separated with a thin
	line from the others. A node is represented by its name as
	root of its application tree. The node name pictures the
	application controller on that node. The name itself is a menu
	where operations on the node can be performed (rebooting it
	for instance). To the far left is a load meter (like those on
	a tape deck) which measures the current load at the
	node. Below the node name (the application controller) is a
	tree with applications, clicking on these applications starts
	the application monitor.


	The top window menubar
	----------------------

	File:Quit	- Stop the monitor.

	Options:
	  Load: time	- Load is calculated (roughly) as processor time.
	  Load: queue	- Load is calculated as the length of the ready 
			  queue.
	  Load: prog	- A progressive scale is used for load values.
	  Load: linear	- A linear scale is used for load values.

	Help		- Prints this message.


	The application controller menu
	-------------------------------
	Reboot		- Reboot the node
	Restart		- Restart the node
	Stop		- Stop the node


	The load meter
	--------------

	Load can be measured as processor time / elapsed time or as
	the length of the runtime queue, depending on the setting in
	the Options menu.


The Application window
----------------------

	The application window monitors an application. It will
	automaticly update the window every other second or so if
	there are any changes in the process tree. At the top there is
	a menubar followed by a toolbar and then the application
	tree. Application trees come in two flavours: supervision
	view, where a strict supervision tree is shown, and process
	view, where all linked processes in the application is shown.


	The application window menubar
	------------------------------

	File:Quit	- Quit the application window.

	Options:Refresh - Update process information and refresh
			  screen.

	Options:Sup. view
		- Show strict supervision tree only.

	Options:Proc. view
		- Show all linked processes.

	Help	- Prints this message.


	The application window toolbar
	------------------------------

	The application toolbar controls the actions of the mouse
	pointer. Clicking on a process in the application window have
	different meaning depending on which tool is selected. The
	procedure is to first press a button (T for trace for example)
	and then click on the process that should be traced.

	Info - Process information is printed in the shell. This mode
	is default and automaticly returned to after a mouse click.

	Send - Send a message to the clicked process. A window will
	pop up where the message can be written (and you can also
	change the destination pid). Double clicking on this button
	pops up a window where pid and message can be filled in.

	Trace - Toggle trace on/off on the process. Note that not all
	processes respond to the sys:trace call.

	Kill - Send a non-trappable exit signal to the process.


Technical Detail
----------------

	Files and distribution
	----------------------

	Appmon is a distributed program but all graphics is handled on
	one node (the one it is started on) so GS need only to be
	loaded on that single node. All real monitoring is done in a
	single module (appmon_info) being run on each node which acts
	as an information centre. The various windows (node and
	application) then subscribe for information.

	In summary: only the appmon_info module must be accessible by
	the clients, the rest of the appmon files are only needed at
	the server.

	Trouble shooting
	----------------

	Q. Why doesn't all my nodes show up in the node window?

	A 1. Are the nodes visible with the nodes() command in the
	shell? If not you must do net:ping(NodeName) to add nodes to
	the Erlang distribution.

	A 2. Is the appmin_info module loadable at the missing
	node(s)?

	Q. Why doesn't the application window show my application
	supervision structure?

	A. Does your application have a real application master? It is
	absolutely necessary that your top process behaves as a
	supervisor should (a program is not supervised just because it
	is started with application:start).