ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/server/uk/org/iscream/cms/server/client/monitors/CPU__Monitor.java
Revision: 1.4
Committed: Fri Mar 2 01:01:41 2001 UTC (23 years, 3 months ago) by ajm
Branch: MAIN
Changes since 1.3: +6 -3 lines
Log Message:
Now catches configuration errors and handles properly

File Contents

# Content
1 //---PACKAGE DECLARATION---
2 package uk.ac.ukc.iscream.client.monitors;
3
4 //---IMPORTS---
5 import uk.ac.ukc.iscream.client.*;
6 import uk.ac.ukc.iscream.core.*;
7 import uk.ac.ukc.iscream.util.*;
8 import uk.ac.ukc.iscream.componentmanager.*;
9
10 /**
11 * This Monitor watches the CPU load for all machines
12 *
13 * @author $Author: tdb1 $
14 * @version $Id: CPU__Monitor.java,v 1.3 2001/03/02 00:35:52 tdb1 Exp $
15 */
16 public class CPU__Monitor implements Monitor {
17
18 //---FINAL ATTRIBUTES---
19
20 /**
21 * The current CVS revision of this class
22 */
23 public final String REVISION = "$Revision: 1.3 $";
24
25 public final String DESC = "Monitors CPU.";
26
27 //---STATIC METHODS---
28
29 //---CONSTRUCTORS---
30
31 public CPU__Monitor() {
32 _alerterQueue = ClientMain._alerterQueue;
33 // get the configuration for this plug-in
34 Configuration config = _refman.getCM().getConfiguration(_name);
35 _levels = new double[(Alert.alerts).length];
36 for (int x = 0; x < Alert.alerts.length; x++) {
37 try {
38 _levels[x] = Double.parseDouble(config.getProperty("Monitor.CPU.level." + x));
39 } catch (NumberFormatException e) {
40 _levels[x] = -1;
41 } catch (org.omg.CORBA.MARSHAL e2) {
42 _levels[x] = -1;
43 }
44
45 }
46 }
47 //---PUBLIC METHODS---
48
49 public void analysePacket(XMLPacket packet) {
50 String source = packet.getParam("packet.attributes.hostname");
51 for(int x=0; x < _levels.length; x++) {
52 if (_levels[x] != -1) {
53 double idle = Double.parseDouble(packet.getParam("packet.cpu.idle"));
54 if (_levels[x] < idle) fireAlert(x, source, idle, "idle");
55 double user = Double.parseDouble(packet.getParam("packet.cpu.user"));
56 if (_levels[x] < user) fireAlert(x, source, user, "user");
57 double kernel = Double.parseDouble(packet.getParam("packet.cpu.kernel"));
58 if (_levels[x] < kernel) fireAlert(x, source, kernel, "kernel");
59 double iowait = Double.parseDouble(packet.getParam("packet.cpu.iowait"));
60 if (_levels[x] < iowait) fireAlert(x, source, iowait, "iowait");
61 double swap = Double.parseDouble(packet.getParam("packet.cpu.swap"));
62 if (_levels[x] < swap) fireAlert(x, source, swap, "swap");
63 }
64 }
65 }
66
67 /**
68 * Overrides the {@link java.lang.Object#toString() Object.toString()}
69 * method to provide clean logging (every class should have this).
70 *
71 * This uses the uk.ac.ukc.iscream.util.NameFormat class
72 * to format the toString()
73 *
74 * @return the name of this class and its CVS revision
75 */
76 public String toString() {
77 return FormatName.getName(
78 _name,
79 getClass().getName(),
80 REVISION);
81 }
82
83 /**
84 * return the String representation of what the filter does
85 */
86 public String getDescription(){
87 return DESC;
88 }
89
90 //---PRIVATE METHODS---
91
92 private void fireAlert(int alertLevel, String source, double currentValue, String type) {
93 String value = Double.toString(currentValue);
94 String thresholdValue = Double.toString(_levels[alertLevel]);
95 String attributeName = "CPU " + type;
96 Alert alert = new Alert(alertLevel, source, thresholdValue, value, attributeName);
97 _alerterQueue.add(alert);
98 }
99
100 //---ACCESSOR/MUTATOR METHODS---
101
102 //---ATTRIBUTES---
103
104 /**
105 * This is the friendly identifier of the
106 * component this class is running in.
107 * eg, a Filter may be called "filter1",
108 * If this class does not have an owning
109 * component, a name from the configuration
110 * can be placed here. This name could also
111 * be changed to null for utility classes.
112 */
113 private String _name = ClientMain.NAME;
114
115 /**
116 * This holds a reference to the
117 * system logger that is being used.
118 */
119 private Logger _logger = ReferenceManager.getInstance().getLogger();
120
121 private double[] _levels;
122
123 private Queue _alerterQueue;
124
125 /**
126 * A reference to the reference manager in use
127 */
128 private ReferenceManager _refman = ReferenceManager.getInstance();
129
130 //---STATIC ATTRIBUTES---
131
132 }