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/MonitorSkeleton.java
Revision: 1.1
Committed: Tue Mar 6 22:33:54 2001 UTC (23 years, 3 months ago) by tdb
Branch: MAIN
Log Message:
New Skeleton class that all monitor's now extend.

File Contents

# Content
1 //---PACKAGE DECLARATION---
2 package uk.ac.ukc.iscream.client.monitors;
3
4 //---IMPORTS---
5 import java.util.HashMap;
6 import uk.ac.ukc.iscream.client.*;
7 import uk.ac.ukc.iscream.core.*;
8 import uk.ac.ukc.iscream.util.*;
9 import uk.ac.ukc.iscream.componentmanager.*;
10
11 /**
12 * Skeleton class for Monitors
13 *
14 * @author $Author: ajm4 $
15 * @version $Id: CPU__Monitor.java,v 1.15 2001/03/06 02:33:55 ajm4 Exp $
16 */
17 public abstract class MonitorSkeleton implements PluginMonitor {
18
19 //---FINAL ATTRIBUTES---
20
21 //---STATIC METHODS---
22
23 //---CONSTRUCTORS---
24
25 //---PUBLIC METHODS---
26
27 public abstract void analysePacket(XMLPacket packet);
28
29 public void processAlert(int newThreshold, int attributeNum, String attributeName, Register reg, String source, String currentValue) {
30 // decide what threshold level we're on, if we've changed, record that
31 if (newThreshold != reg.getLastThresholdLevel(attributeNum)) {
32 reg.setLastThresholdLevel(attributeNum, newThreshold);
33 }
34 // as long as this isn't a normal level
35 if(reg.getLastThresholdLevel(attributeNum) != Alert.thresholdNORMAL) {
36 // if the time since the last alert is more than the time for
37 // its timeout, fire an alert, escalate the alert
38 long timeout = reg.getLastAlertTimeout(attributeNum);
39 if ((timeout > 0) && (reg.getTimeLastSent(attributeNum) > 0)) {
40 if((System.currentTimeMillis() - reg.getTimeLastSent(attributeNum)) > timeout) {
41 int lastAlert = reg.getLastAlertLevel(attributeNum);
42 reg.escalateAlert(attributeNum);
43 reg.setTimeLastSent(attributeNum, System.currentTimeMillis());
44 reg.setLastAlertTimeout(attributeNum, reg.getAlertTimeout(reg.getLastAlertLevel(attributeNum), attributeNum));
45 fireAlert(reg, lastAlert, attributeNum, source, currentValue, attributeName);
46 }
47 // if we don't have a timeout configured...we got STRAIGHT to the next level
48 } else {
49 int lastAlert = reg.getLastAlertLevel(attributeNum);
50 reg.escalateAlert(attributeNum);
51 reg.setTimeLastSent(attributeNum, System.currentTimeMillis());
52 reg.setLastAlertTimeout(attributeNum, reg.getAlertTimeout(reg.getLastAlertLevel(attributeNum), attributeNum));
53 fireAlert(reg, lastAlert, attributeNum, source, currentValue, attributeName);
54 }
55
56 // we must be on ok, check the timeout value for this
57 } else {
58 // if we were on an OK alert before, then we don't do anything
59 // but if we weren't we only set OK, once the timout of the last
60 // alert has occourd
61 if (reg.getLastAlertLevel(attributeNum) != Alert.alertOK) {
62 long timeout = reg.getLastAlertTimeout(attributeNum);
63 if ((timeout > 0) && (reg.getTimeLastSent(attributeNum) > 0)) {
64 if ((System.currentTimeMillis() - reg.getTimeLastSent(attributeNum)) > timeout) {
65 int lastAlert = reg.getLastAlertLevel(attributeNum);
66 reg.setLastAlertLevel(attributeNum, Alert.alertOK);
67 reg.setTimeLastSent(attributeNum, System.currentTimeMillis());
68 reg.setLastAlertTimeout(attributeNum, timeout);
69 fireAlert(reg, lastAlert, attributeNum, source, currentValue, attributeName);
70 }
71 }
72 }
73 }
74 }
75
76 /**
77 * return the String representation of what the monitor does
78 */
79 public abstract String getDescription();
80
81
82 //---PRIVATE METHODS---
83
84 protected void fireAlert(Register reg, int lastAlert, int attributeNum, String source, String currentValue, String attributeName) {
85 int alertLevel = reg.getLastAlertLevel(attributeNum);
86 int thresholdLevel = reg.getLastThresholdLevel(attributeNum);
87 String thresholdValue = String.valueOf(reg.getThreshold(thresholdLevel));
88 String timeout = String.valueOf(reg.getAlertTimeout(reg.getLastAlertLevel(attributeNum), attributeNum) / 1000);
89 if (thresholdLevel == Alert.thresholdNORMAL) {
90 thresholdValue = "-";
91 }
92 if (alertLevel == Alert.alertOK) {
93 timeout = "0";
94 }
95 Alert alert = new Alert(alertLevel, lastAlert, thresholdLevel, source, thresholdValue, currentValue, attributeName, timeout, reg.getInitialAlertTime(attributeNum));
96 _alerterQueue.add(alert);
97 _logger.write(toString(), Logger.DEBUG, "Fired alert for source:" + source + " at alert level:" + Alert.alertLevels[alertLevel] + " on:" + attributeName + " for threshold level:" + Alert.thresholdLevels[thresholdLevel] + " at:" + currentValue + " exceeding threshold of:" +thresholdValue + " next alert sent in:" + timeout + "secs");
98 }
99
100 //---ACCESSOR/MUTATOR METHODS---
101
102 //---ATTRIBUTES---
103
104 protected Logger _logger = ReferenceManager.getInstance().getLogger();
105
106 protected Queue _alerterQueue = ClientMain._alerterQueue;
107
108 //---STATIC ATTRIBUTES---
109
110 }