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).
|