Changeset c6d83bbfb23e3a87bbd661cc601af89380951a49
- Timestamp:
- 09/06/11 21:29:58 (2 years ago)
- git-parent:
[b1133af9f85966fc31d2bee8a38cb7a8561807fe], [049b332a85e8942742b92f21d6b7653574cfb54f]
- Files:
-
- src/java/com/omniti/jezebel/check/jmx.java (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
src/java/com/omniti/jezebel/check/jmx.java
rb553f9a r049b332 39 39 import java.util.Arrays; 40 40 import java.util.ArrayList; 41 import java.util. regex.Pattern;42 import java.util. regex.Matcher;41 import java.util.List; 42 import java.util.Iterator; 43 43 44 44 import javax.management.MBeanServerConnection; … … 50 50 import javax.management.remote.JMXConnectorFactory; 51 51 import javax.management.remote.JMXServiceURL; 52 import javax.management.AttributeList; 53 import javax.management.Attribute; 54 import javax.management.openmbean.CompositeData; 55 import javax.management.openmbean.CompositeDataSupport; 56 import javax.management.openmbean.CompositeType; 57 import javax.management.openmbean.OpenType; 58 import javax.management.openmbean.SimpleType; 59 import javax.management.openmbean.TabularDataSupport; 60 import java.lang.management.MemoryUsage; 52 61 53 62 import com.omniti.jezebel.ResmonResult; … … 88 97 } 89 98 90 Pattern space = Pattern.compile("\\s");91 92 99 for (ObjectName objectName : allObjectNames) { 93 100 if ( ! domains.isEmpty() && ! domains.contains(objectName.getDomain()) ) { … … 97 104 MBeanInfo mbi = mbsc.getMBeanInfo(objectName); 98 105 MBeanAttributeInfo[] attribs = mbi.getAttributes(); 99 String oname = ""; 100 101 Hashtable<String,String> objectPropList = objectName.getKeyPropertyList(); 102 if ( objectPropList.containsKey("name") ) { 103 oname += objectPropList.get("name"); 104 } 105 if ( objectPropList.containsKey("type") ) { 106 if ( ! oname.equals("") ) { 107 oname += "`"; 108 } 109 oname += objectPropList.get("type"); 110 } 111 112 Matcher m = space.matcher(oname); 113 oname = m.replaceAll("_"); 114 115 for (MBeanAttributeInfo attr : attribs) 116 { 117 try { 118 String mname = attr.getName(); 119 Matcher m2 = space.matcher(mname); 120 mname = m2.replaceAll("_"); 121 122 if ( attr.getType().equals("java.lang.String") ) { 123 String val = (String)mbsc.getAttribute(objectName, attr.getName()); 124 if ( val.length() <= 256 ) { 125 rr.set(oname + "`" + mname, val); 126 } 127 } 128 else if ( attr.getType().equals("int") ) { 129 rr.set(oname + "`" + mname, (Integer)mbsc.getAttribute(objectName, attr.getName())); 130 } 131 else if ( attr.getType().equals("long") ) { 132 rr.set(oname + "`" + mname, (Long)mbsc.getAttribute(objectName, attr.getName())); 133 } 134 else if ( attr.getType().equals("boolean") ) { 135 Boolean val = (Boolean)mbsc.getAttribute(objectName, attr.getName()); 136 rr.set(oname + "`" + mname, (val)?1:0); 137 } 138 } 139 catch (Exception e) {} 106 String oname = objectName.getDomain() + ":" + objectName.getCanonicalKeyPropertyListString(); 107 108 String[] attributes = new String[attribs.length]; 109 int i = 0; 110 for (MBeanAttributeInfo attr : attribs) { 111 attributes[i] = attr.getName(); 112 ++i; 113 } 114 115 AttributeList al = mbsc.getAttributes(objectName, attributes); 116 List<Attribute> aal = al.asList(); 117 118 for (Attribute a : aal ) { 119 getMetric(oname, a.getName(), a.getValue(), rr); 140 120 } 141 121 } … … 147 127 } 148 128 } 129 130 private void getMetric (String objectName, String metricName, Object value, ResmonResult rr) { 131 try { 132 if ( value == null ) return; 133 134 if ( value instanceof String ) { 135 String val = (String)value; 136 if ( val != null && val.length() <= 256 ) { 137 rr.set(objectName + "`" + metricName, val); 138 } 139 } 140 else if ( value instanceof Integer ) { 141 rr.set(objectName + "`" + metricName, (Integer)value); 142 } 143 else if ( value instanceof Long ) { 144 rr.set(objectName + "`" + metricName, (Long)value); 145 } 146 else if ( value instanceof Boolean ) { 147 Boolean val = (Boolean)value; 148 rr.set(objectName + "`" + metricName, (val)?1:0); 149 } 150 else if ( value instanceof Double ) { 151 rr.set(objectName + "`" + metricName, (Double)value); 152 } 153 else if ( value instanceof Float ) { 154 rr.set(objectName + "`" + metricName, (Float)value); 155 } 156 else if ( value instanceof CompositeDataSupport ) { 157 CompositeDataSupport data = (CompositeDataSupport)value; 158 CompositeType type = data.getCompositeType(); 159 Set keys = type.keySet(); 160 for ( Iterator it = keys.iterator(); it.hasNext(); ) { 161 String key = (String)it.next(); 162 getMetric(objectName, metricName + "`" + key, data.get(key), rr); 163 } 164 } 165 else if ( value instanceof TabularDataSupport ) { 166 TabularDataSupport data = (TabularDataSupport)value; 167 Set keys = data.keySet(); 168 for ( Iterator it = keys.iterator(); it.hasNext(); ) { 169 Object key = it.next(); 170 for ( Iterator ki = ((List) key).iterator(); ki.hasNext(); ) { 171 Object key2 = ki.next(); 172 CompositeData cd = data.get(new Object[] {key2}); 173 getMetric(objectName, metricName + "`" + key2, cd.get("value"), rr); 174 } 175 } 176 } 177 else if ( value.getClass().isArray() ) { 178 String t = value.getClass().getName().substring(1,2); 179 if ( t.equals("L") ) { 180 Object[] vals = (Object[])value; 181 for ( int i = 0, len = vals.length; i < len; ++i ) { 182 getMetric(objectName, metricName + "`" + i, vals[i], rr); 183 } 184 } 185 else { 186 ArrayList<Object> list = new ArrayList<Object>(0); 187 if ( t.equals("Z") ) { 188 boolean[] vals = (boolean[])value; 189 list = new ArrayList<Object>(vals.length); 190 for ( boolean v : vals ) { list.add(v); } 191 } 192 else if ( t.equals("B") ) { 193 byte[] vals = (byte[])value; 194 list = new ArrayList<Object>(vals.length); 195 for ( byte v : vals ) { list.add(v); } 196 } 197 else if ( t.equals("C") ) { 198 char[] vals = (char[])value; 199 list = new ArrayList<Object>(vals.length); 200 for ( char v : vals ) { list.add(v); } 201 } 202 else if ( t.equals("D") ) { 203 double[] vals = (double[])value; 204 list = new ArrayList<Object>(vals.length); 205 for ( double v : vals ) { list.add(v); } 206 } 207 else if ( t.equals("F") ) { 208 float[] vals = (float[])value; 209 list = new ArrayList<Object>(vals.length); 210 for ( float v : vals ) { list.add(v); } 211 } 212 else if ( t.equals("I") ) { 213 int[] vals = (int[])value; 214 list = new ArrayList<Object>(vals.length); 215 for ( int v : vals ) { list.add(v); } 216 } 217 else if ( t.equals("J") ) { 218 long[] vals = (long[])value; 219 list = new ArrayList<Object>(vals.length); 220 for ( long v : vals ) { list.add(v); } 221 } 222 else if ( t.equals("S") ) { 223 short[] vals = (short[])value; 224 list = new ArrayList<Object>(vals.length); 225 for ( short v : vals ) { list.add(v); } 226 } 227 228 for ( int i = 0, len = list.size(); i < len; ++i ) { 229 getMetric(objectName, metricName + "`" + i, list.get(i), rr); 230 } 231 } 232 } 233 else { 234 System.err.println("Error, could not handle. name: " + objectName+"`"+metricName + " type: " + value.getClass().getName()); 235 } 236 } 237 catch (Exception e) { System.err.println("Exception: " + objectName+"`"+metricName + " " + e.getMessage()); } 238 } 149 239 }
