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/Disk__Monitor.java
(Generate patch)

Comparing projects/cms/source/server/uk/org/iscream/cms/server/client/monitors/Disk__Monitor.java (file contents):
Revision 1.8 by tdb, Fri Mar 23 02:32:49 2001 UTC vs.
Revision 1.12 by tdb, Wed Nov 7 17:55:40 2001 UTC

# Line 1 | Line 1
1   //---PACKAGE DECLARATION---
2 < package uk.org.iscream.client.monitors;
2 > package uk.org.iscream.cms.server.client.monitors;
3  
4   //---IMPORTS---
5   import java.util.HashMap;
# Line 7 | Line 7 | import java.util.ArrayList;
7   import java.util.Set;
8   import java.util.Iterator;
9   import java.text.NumberFormat;
10 < import uk.org.iscream.client.*;
11 < import uk.org.iscream.core.*;
12 < import uk.org.iscream.util.*;
13 < import uk.org.iscream.componentmanager.*;
10 > import uk.org.iscream.cms.server.client.*;
11 > import uk.org.iscream.cms.server.core.*;
12 > import uk.org.iscream.cms.server.util.*;
13 > import uk.org.iscream.cms.server.componentmanager.*;
14  
15   /**
16   * This Monitor watches the Disks for all machines
# Line 55 | Line 55 | public class Disk__Monitor extends MonitorSkeleton {
55          // key prefix
56          String keyPrefix = "packet.disk.p";
57          
58 <        // a tempory holder for all the disk attributes we find
58 >        // a temporary holder for all the disk attributes we find
59          ArrayList disks = new ArrayList();
60  
61          // unfortunatly we need to check the whole packet
# Line 99 | Line 99 | public class Disk__Monitor extends MonitorSkeleton {
99  
100                      // check if we've seen this disk before on a previous run
101                      // if not, we need to create a register for it
102 <                    if(!diskRegisters.containsKey(diskNumber)) {
103 <                        diskRegisters.put(diskNumber, new Register(source, _name, mount));
102 >                    //   nb. use the device as the key as this is unlikely to change,
103 >                    //       unlike diskNumber which could easily change
104 >                    //         (diskNumber is based on the order of df's output!)
105 >                    if(!diskRegisters.containsKey(device)) {
106 >                        diskRegisters.put(device, new Register(source, _name, mount));
107                      }
108  
109                      // get the register for this disk
110 <                    Register reg = (Register) diskRegisters.get(diskNumber);
110 >                    Register reg = (Register) diskRegisters.get(device);
111  
112                      // get the packet data
113                      double diskTotal, diskAvail;
# Line 133 | Line 136 | public class Disk__Monitor extends MonitorSkeleton {
136  
137                      // this  bit determines if the disk check is a % check
138                      // or a kb check
136                    double diskInUse;
139                      String type;
140 +                    double curValue;
141 +                    int newThreshold;
142                      if(useValue) {
143 <                        // kb disk in use
144 <                        diskInUse = diskTotal - diskAvail;
143 >                        // kb disk available
144 >                        curValue = diskAvail;
145 >                        // negate check
146 >                        newThreshold = checkAttributeThreshold(curValue, reg, true);
147                          type = "kb";
148                      } else {
149                          // % disk in use
150 <                        diskInUse = (1 - (diskAvail / diskTotal)) * 100;
150 >                        curValue = (1 - (diskAvail / diskTotal)) * 100;
151 >                        // normal check
152 >                        newThreshold = checkAttributeThreshold(curValue, reg, false);
153                          type = "%";
154                      }
155  
148
149
150                    int newThreshold = checkAttributeThreshold(diskInUse, reg);
151
156                      // format the diskInUse to a String
157                      NumberFormat nf = NumberFormat.getInstance();
158                      nf.setMaximumFractionDigits(2);
159                      nf.setMinimumFractionDigits(2);
160 <                    String strDiskInUse = nf.format(diskInUse);
160 >                    String strCurValue = nf.format(curValue);
161  
162                      // say which disk had the problem
163                      String attributeName = "Disk in use " + type + " on " + mount + " (" + device + ")";
164  
165 <                    processAlert(newThreshold, attributeName, reg, source, strDiskInUse);
165 >                    processAlert(newThreshold, attributeName, reg, source, strCurValue);
166                  }
167              }
168          }
# Line 168 | Line 172 | public class Disk__Monitor extends MonitorSkeleton {
172       * Overrides the {@link java.lang.Object#toString() Object.toString()}
173       * method to provide clean logging (every class should have this).
174       *
175 <     * This uses the uk.org.iscream.util.NameFormat class
175 >     * This uses the uk.org.iscream.cms.server.util.NameFormat class
176       * to format the toString()
177       *
178       * @return the name of this class and its CVS revision
# Line 193 | Line 197 | public class Disk__Monitor extends MonitorSkeleton {
197       * Checks a piece of current data, and returns the
198       * threshold it breaches, if any.
199       *
200 <     * @param diskInUse the amount of space in use
200 >     * The option to negate the check can be used in
201 >     * situations where being *below* the threshold
202 >     * is an 'alertable' situation. In this specific
203 >     * case, we'd do this with kb disk checks.
204 >     *
205 >     * @param value the current value
206       * @param reg the Register for the host
207 +     * @param negateCheck whether to negate the check
208       * @return the threshold level breached, if any
209       */
210 <    private int checkAttributeThreshold(double diskInUse, Register reg) {
210 >    private int checkAttributeThreshold(double diskInUse, Register reg, boolean negateCheck) {
211          for(int thresholdLevel = Alert.thresholdLevels.length - 1; thresholdLevel >= 0; thresholdLevel--) {
212              if (reg.getThreshold(thresholdLevel) != -1.0) {
213 <                if(((double) reg.getThreshold(thresholdLevel)) < diskInUse) {
214 <                    return thresholdLevel;
213 >                if(!negateCheck) {
214 >                    // normal check - has the value gone *over* the threshold
215 >                    if(((double) reg.getThreshold(thresholdLevel)) < diskInUse) {
216 >                        return thresholdLevel;
217 >                    }
218 >                }
219 >                else {
220 >                    // negated check - has the value gone *under* the threshold
221 >                    if(((double) reg.getThreshold(thresholdLevel)) > diskInUse) {
222 >                        return thresholdLevel;
223 >                    }
224                  }
225              }
226          }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines