You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by sm...@apache.org on 2014/05/29 19:55:13 UTC
git commit: AMBARI-5924. Add basic ganglia metrics support for Slider
view.
Repository: ambari
Updated Branches:
refs/heads/branch-1.6.0.slider 79f3a1a3d -> a1a9c4598
AMBARI-5924. Add basic ganglia metrics support for Slider view.
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/a1a9c459
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/a1a9c459
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/a1a9c459
Branch: refs/heads/branch-1.6.0.slider
Commit: a1a9c4598e927a4110f72d40da8d106fa4ec38f1
Parents: 79f3a1a
Author: Sumit Mohanty <sm...@hortonworks.com>
Authored: Thu May 29 00:51:15 2014 -0700
Committer: Sumit Mohanty <sm...@hortonworks.com>
Committed: Thu May 29 10:55:06 2014 -0700
----------------------------------------------------------------------
.../apache/ambari/view/slider/SliderApp.java | 6 +-
.../slider/SliderAppsViewControllerImpl.java | 64 +++---
.../rest/client/SliderAppGangliaHelper.java | 196 +++++++++++++++++++
.../rest/client/SliderAppMasterClient.java | 132 +++++++++----
4 files changed, 337 insertions(+), 61 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/a1a9c459/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderApp.java
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderApp.java b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderApp.java
index 9d748fa..db42484 100644
--- a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderApp.java
+++ b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderApp.java
@@ -38,7 +38,7 @@ public class SliderApp {
private Map<String, String> urls;
private Map<String, Map<String, String>> configs;
private Map<String, SliderAppComponent> components;
- private Map<String, Object> metrics;
+ private Map<String, Number[][]> metrics;
public String getName() {
return name;
@@ -128,11 +128,11 @@ public class SliderApp {
this.components = components;
}
- public Map<String, Object> getMetrics() {
+ public Map<String, Number[][]> getMetrics() {
return metrics;
}
- public void setMetrics(Map<String, Object> metrics) {
+ public void setMetrics(Map<String, Number[][]> metrics) {
this.metrics = metrics;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/a1a9c459/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderAppsViewControllerImpl.java
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderAppsViewControllerImpl.java b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderAppsViewControllerImpl.java
index 7ff7b82..e4cd15e 100644
--- a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderAppsViewControllerImpl.java
+++ b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderAppsViewControllerImpl.java
@@ -88,6 +88,7 @@ public class SliderAppsViewControllerImpl implements SliderAppsViewController {
private static final Logger logger = Logger
.getLogger(SliderAppsViewControllerImpl.class);
+ private static String METRICS_PREFIX = "metrics/";
@Inject
private ViewContext viewContext;
@Inject
@@ -307,10 +308,24 @@ public class SliderAppsViewControllerImpl implements SliderAppsViewController {
}
}
if (properties != null && !properties.isEmpty()) {
+ SliderAppType matchedAppType = null;
+ List<SliderAppType> matchingAppTypes = getSliderAppTypes(null);
+ if (matchingAppTypes != null && matchingAppTypes.size() > 0) {
+ for (SliderAppType appType : matchingAppTypes) {
+ if ((appType.getTypeName() != null && appType.getTypeName().equalsIgnoreCase(app.getType())) &&
+ (appType.getTypeVersion() != null
+ && appType.getTypeVersion().equalsIgnoreCase(app.getAppVersion()))) {
+ matchedAppType = appType;
+ break;
+ }
+ }
+ }
+
SliderAppMasterClient sliderAppClient = yarnApp.getTrackingUrl() == null ? null
: new SliderAppMasterClient(yarnApp.getTrackingUrl());
SliderAppMasterData appMasterData = null;
Map<String, String> quickLinks = new HashMap<String, String>();
+ Set<String> gangliaMetrics = new HashSet<String>();
for (String property : properties) {
if ("RUNNING".equals(app.getState())) {
if (sliderAppClient != null) {
@@ -334,23 +349,8 @@ public class SliderAppsViewControllerImpl implements SliderAppsViewController {
}
if (quickLinks != null && quickLinks.containsKey("JMX")) {
String jmxUrl = quickLinks.get("JMX");
- List<SliderAppType> appTypes = getSliderAppTypes(null);
- if (appTypes != null && appTypes.size() > 0) {
- for (SliderAppType appType : appTypes) {
- logger.info("TYPE: " + appType.getTypeName() + " "
- + app.getType());
- logger.info("VERSION: " + appType.getTypeVersion() + " "
- + app.getAppVersion());
- if ((appType.getTypeName() != null && appType.getTypeName()
- .equalsIgnoreCase(app.getType()))
- && (appType.getTypeVersion() != null && appType
- .getTypeVersion().equalsIgnoreCase(
- app.getAppVersion()))) {
- app.setJmx(sliderAppClient.getJmx(jmxUrl, viewContext,
- appType));
- break;
- }
- }
+ if (matchedAppType != null) {
+ app.setJmx(sliderAppClient.getJmx(jmxUrl, viewContext, matchedAppType));
}
}
Map<String, Map<String, String>> configs = sliderAppClient
@@ -426,10 +426,23 @@ public class SliderAppsViewControllerImpl implements SliderAppsViewController {
+ yarnApp.getName(), e);
throw new RuntimeException(e.getMessage(), e);
}
+ } else if (property.startsWith(METRICS_PREFIX)) {
+ gangliaMetrics.add(property.substring(METRICS_PREFIX.length()));
}
}
}
}
+ if (gangliaMetrics.size() > 0) {
+ if (quickLinks.isEmpty()) {
+ quickLinks = sliderAppClient
+ .getQuickLinks(appMasterData.publisherUrl);
+ }
+ if (quickLinks != null && quickLinks.containsKey("Metrics")) {
+ String metricsUrl = quickLinks.get("Metrics");
+ app.setMetrics(
+ sliderAppClient.getGangliaMetrics(metricsUrl, gangliaMetrics, null, viewContext, matchedAppType));
+ }
+ }
}
return app;
}
@@ -552,7 +565,7 @@ public class SliderAppsViewControllerImpl implements SliderAppsViewController {
if (sliderAppObject != null) {
if (sliderAppsMap.containsKey(sliderAppObject.getName())) {
if (sliderAppsMap.get(sliderAppObject.getName()).getId()
- .compareTo(sliderAppObject.getId()) < 0) {
+ .compareTo(sliderAppObject.getId()) < 0) {
sliderAppsMap.put(sliderAppObject.getName(), sliderAppObject);
}
} else {
@@ -560,8 +573,9 @@ public class SliderAppsViewControllerImpl implements SliderAppsViewController {
}
}
}
- if (sliderAppsMap.size() > 0)
+ if (sliderAppsMap.size() > 0) {
sliderApps.addAll(sliderAppsMap.values());
+ }
} finally {
Thread.currentThread().setContextClassLoader(currentClassLoader);
}
@@ -713,7 +727,7 @@ public class SliderAppsViewControllerImpl implements SliderAppsViewController {
Map<String, Map<String, Map<String, Metric>>> metrics = null;
try {
InputStream inputStream = zipFile.getInputStream(zipFile
- .getEntry("jmx_metrics.json"));
+ .getEntry(fileName));
ObjectMapper mapper = new ObjectMapper();
metrics = mapper.readValue(inputStream,
@@ -874,11 +888,12 @@ public class SliderAppsViewControllerImpl implements SliderAppsViewController {
properties.add("id");
properties.add("name");
final SliderApp sliderApp = getSliderApp(appId, properties);
- if (sliderApp == null)
+ if (sliderApp == null) {
throw new ApplicationNotFoundException(appId);
+ }
ApplicationId applicationId = UserGroupInformation.getBestUGI(null,
- "yarn").doAs(new PrivilegedExceptionAction<ApplicationId>() {
+ "yarn").doAs(new PrivilegedExceptionAction<ApplicationId>() {
public ApplicationId run() throws IOException, YarnException {
SliderClient sliderClient = getSliderClient();
ActionFreezeArgs freezeArgs = new ActionFreezeArgs();
@@ -903,10 +918,11 @@ public class SliderAppsViewControllerImpl implements SliderAppsViewController {
properties.add("id");
properties.add("name");
final SliderApp sliderApp = getSliderApp(appId, properties);
- if (sliderApp == null)
+ if (sliderApp == null) {
throw new ApplicationNotFoundException(appId);
+ }
ApplicationId applicationId = UserGroupInformation.getBestUGI(null,
- "yarn").doAs(new PrivilegedExceptionAction<ApplicationId>() {
+ "yarn").doAs(new PrivilegedExceptionAction<ApplicationId>() {
public ApplicationId run() throws IOException, YarnException {
SliderClient sliderClient = getSliderClient();
ActionThawArgs thawArgs = new ActionThawArgs();
http://git-wip-us.apache.org/repos/asf/ambari/blob/a1a9c459/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/SliderAppGangliaHelper.java
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/SliderAppGangliaHelper.java b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/SliderAppGangliaHelper.java
new file mode 100644
index 0000000..34c4c90
--- /dev/null
+++ b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/SliderAppGangliaHelper.java
@@ -0,0 +1,196 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ambari.view.slider.rest.client;
+
+import org.apache.ambari.server.controller.ganglia.GangliaMetric;
+import org.apache.ambari.server.controller.spi.SystemException;
+import org.apache.ambari.server.controller.spi.TemporalInfo;
+import org.apache.ambari.view.ViewContext;
+import org.apache.http.client.utils.URIBuilder;
+import org.apache.log4j.Logger;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+public class SliderAppGangliaHelper {
+
+ private static final Logger logger = Logger
+ .getLogger(SliderAppGangliaHelper.class);
+
+ private static String getSetString(Set<String> set, int limit) {
+ StringBuilder sb = new StringBuilder();
+
+ if (limit == -1 || set.size() <= limit) {
+ for (String cluster : set) {
+ if (sb.length() > 0) {
+ sb.append(",");
+ }
+ sb.append(cluster);
+ }
+ }
+ return sb.toString();
+ }
+
+ private static Number convertToNumber(String s) {
+ return s.contains(".") ? Double.parseDouble(s) : Long.parseLong(s);
+ }
+
+ public static Map<String, GangliaMetric> getGangliaMetrics(ViewContext context,
+ String spec,
+ String params) throws IOException {
+ Map<String, GangliaMetric> receivedMetrics = new HashMap<String, GangliaMetric>();
+ Map<String, String> headers = new HashMap<String, String>();
+ BufferedReader reader = new BufferedReader(new InputStreamReader(
+ context.getURLStreamProvider().readFrom(spec, "POST", params, headers)));
+
+ String feedStart = reader.readLine();
+ if (feedStart == null || feedStart.isEmpty()) {
+ logger.info("Empty feed while getting ganglia metrics for spec => " +
+ spec);
+ return null;
+ }
+ int startTime = convertToNumber(feedStart).intValue();
+
+ String dsName = reader.readLine();
+ if (dsName == null || dsName.isEmpty()) {
+ logger.info("Feed without body while reading ganglia metrics for spec " +
+ "=> " + spec);
+ return null;
+ }
+
+ while (!"[~EOF]".equals(dsName)) {
+ GangliaMetric metric = new GangliaMetric();
+ List<GangliaMetric.TemporalMetric> listTemporalMetrics =
+ new ArrayList<GangliaMetric.TemporalMetric>();
+
+ metric.setDs_name(dsName);
+ metric.setCluster_name(reader.readLine());
+ metric.setHost_name(reader.readLine());
+ metric.setMetric_name(reader.readLine());
+
+ String timeStr = reader.readLine();
+ String stepStr = reader.readLine();
+ if (timeStr == null || timeStr.isEmpty() || stepStr == null
+ || stepStr.isEmpty()) {
+ logger.info("Unexpected end of stream reached while getting ganglia " +
+ "metrics for spec => " + spec);
+ return null;
+ }
+ int time = convertToNumber(timeStr).intValue();
+ int step = convertToNumber(stepStr).intValue();
+
+ String val = reader.readLine();
+ String lastVal = null;
+
+ while (val != null && !"[~EOM]".equals(val)) {
+ if (val.startsWith("[~r]")) {
+ Integer repeat = Integer.valueOf(val.substring(4)) - 1;
+ for (int i = 0; i < repeat; ++i) {
+ if (!"[~n]".equals(lastVal)) {
+ GangliaMetric.TemporalMetric tm = new GangliaMetric.TemporalMetric(lastVal, time);
+ if (tm.isValid()) listTemporalMetrics.add(tm);
+ }
+ time += step;
+ }
+ } else {
+ if (!"[~n]".equals(val)) {
+ GangliaMetric.TemporalMetric tm = new GangliaMetric.TemporalMetric(val, time);
+ if (tm.isValid()) listTemporalMetrics.add(tm);
+ }
+ time += step;
+ }
+ lastVal = val;
+ val = reader.readLine();
+ }
+
+ metric.setDatapointsFromList(listTemporalMetrics);
+ receivedMetrics.put(metric.getMetric_name(), metric);
+
+ dsName = reader.readLine();
+ if (dsName == null || dsName.isEmpty()) {
+ logger.info("Unexpected end of stream reached while getting ganglia " +
+ "metrics for spec => " + spec);
+ return null;
+ }
+ }
+ String feedEnd = reader.readLine();
+ if (feedEnd == null || feedEnd.isEmpty()) {
+ logger.info("Error reading end of feed while getting ganglia metrics " +
+ "for spec => " + spec);
+ } else {
+
+ int endTime = convertToNumber(feedEnd).intValue();
+ int totalTime = endTime - startTime;
+ if (logger.isInfoEnabled() && totalTime > 3) {
+ logger.info("Ganglia resource population time: " + totalTime);
+ }
+ }
+ return receivedMetrics;
+ }
+
+ public static String getSpec(String gangliaUrl,
+ Set<String> metricSet,
+ TemporalInfo temporalInfo) throws SystemException, URISyntaxException {
+
+ String metrics = getSetString(metricSet, -1);
+
+ URIBuilder uriBuilder = new URIBuilder(gangliaUrl);
+
+ uriBuilder.setParameter("h", "__SummaryInfo__");
+
+ if (metrics.length() > 0) {
+ uriBuilder.setParameter("m", metrics);
+ } else {
+ // get all metrics
+ uriBuilder.setParameter("m", ".*");
+ }
+
+ if (temporalInfo != null) {
+ long startTime = temporalInfo.getStartTime();
+ if (startTime != -1) {
+ uriBuilder.setParameter("s", String.valueOf(startTime));
+ }
+
+ long endTime = temporalInfo.getEndTime();
+ if (endTime != -1) {
+ uriBuilder.setParameter("e", String.valueOf(endTime));
+ }
+
+ long step = temporalInfo.getStep();
+ if (step != -1) {
+ uriBuilder.setParameter("r", String.valueOf(step));
+ }
+ } else {
+ long endTime = System.currentTimeMillis()/1000;
+ long startTime = System.currentTimeMillis()/1000 - 60*60;
+ uriBuilder.setParameter("e", String.valueOf(endTime));
+ uriBuilder.setParameter("s", String.valueOf(startTime));
+ uriBuilder.setParameter("r", "15");
+ }
+
+ return uriBuilder.toString();
+ }
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/a1a9c459/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/SliderAppMasterClient.java
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/SliderAppMasterClient.java b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/SliderAppMasterClient.java
index d77c1c7..7cfc4b1 100644
--- a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/SliderAppMasterClient.java
+++ b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/SliderAppMasterClient.java
@@ -18,14 +18,10 @@
package org.apache.ambari.view.slider.rest.client;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import org.apache.ambari.server.controller.ganglia.GangliaMetric;
+import org.apache.ambari.server.controller.spi.TemporalInfo;
import org.apache.ambari.view.URLStreamProvider;
import org.apache.ambari.view.ViewContext;
import org.apache.ambari.view.slider.SliderAppType;
@@ -33,8 +29,15 @@ import org.apache.ambari.view.slider.SliderAppTypeComponent;
import org.apache.commons.httpclient.HttpException;
import org.apache.log4j.Logger;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
public class SliderAppMasterClient extends BaseHttpClient {
@@ -122,7 +125,7 @@ public class SliderAppMasterClient extends BaseHttpClient {
continue;
}
JsonElement entryJson = super.doGetJson(providerUrl, "/slider/"
- + entry.getKey());
+ + entry.getKey());
if (entryJson != null) {
JsonObject configsObj = entryJson.getAsJsonObject().get("entries")
.getAsJsonObject();
@@ -146,15 +149,74 @@ public class SliderAppMasterClient extends BaseHttpClient {
}
}
+ public Map<String, Number[][]> getGangliaMetrics(String gangliaUrl,
+ Set<String> metricsRequested,
+ TemporalInfo temporalInfo,
+ ViewContext context,
+ SliderAppType appType) {
+ Map<String, Number[][]> retVal = new HashMap<String, Number[][]>();
+ Map<String, GangliaMetric> receivedMetrics = null;
+ List<String> components = new ArrayList<String>();
+ for (SliderAppTypeComponent appTypeComponent : appType.getTypeComponents()) {
+ components.add(appTypeComponent.getName());
+ }
+
+ Map<String, Map<String, Map<String, Metric>>> metrics = appType.getGangliaMetrics();
+ Map<String, Metric> relevantMetrics = getRelevantMetrics(metrics, components);
+ Set<String> metricsToRead = new HashSet<String>();
+ Map<String, String> reverseNameLookup = new HashMap<String, String>();
+ for (String key : relevantMetrics.keySet()) {
+ if (metricsRequested.contains(key)) {
+ String metricName = relevantMetrics.get(key).getMetric();
+ metricsToRead.add(metricName);
+ reverseNameLookup.put(metricName, key);
+ }
+ }
+
+ if (metricsToRead.size() != 0) {
+ try {
+ String specWithParams = SliderAppGangliaHelper.getSpec(gangliaUrl, metricsToRead, temporalInfo);
+ logger.info("Using spec: " + specWithParams);
+ if (specWithParams != null) {
+
+ String spec = null;
+ String params = null;
+ String[] tokens = specWithParams.split("\\?", 2);
+
+ try {
+ spec = tokens[0];
+ params = tokens[1];
+ } catch (ArrayIndexOutOfBoundsException e) {
+ logger.info(e.toString());
+ }
+
+ receivedMetrics = SliderAppGangliaHelper.getGangliaMetrics(context, spec, params);
+ }
+ } catch (Exception e) {
+ logger.warn("Unable to retrieve ganglia metrics. " + e.getMessage());
+ }
+ }
+
+ if (receivedMetrics != null) {
+ for (GangliaMetric metric : receivedMetrics.values()) {
+ if (reverseNameLookup.containsKey(metric.getMetric_name())) {
+ retVal.put(reverseNameLookup.get(metric.getMetric_name()), metric.getDatapoints());
+ }
+ }
+ }
+
+ return retVal;
+ }
+
/**
* Provides only the interesting JMX metric names and values.
- *
+ *
* @param jmxUrl
- *
+ *
* @return
*/
public Map<String, String> getJmx(String jmxUrl, ViewContext context,
- SliderAppType appType) {
+ SliderAppType appType) {
Map<String, String> jmxProperties = new HashMap<String, String>();
if (appType == null || appType.getJmxMetrics() == null) {
logger
@@ -167,12 +229,14 @@ public class SliderAppMasterClient extends BaseHttpClient {
components.add(appTypeComponent.getName());
}
- Map<String, Map<String, Map<String, Metric>>> metrics = appType
- .getJmxMetrics();
- Map<String, Metric> relevantMetrics = getRelevantMetrics(metrics,
- components);
- SliderAppJmxHelper.JMXTypes jmxType = SliderAppJmxHelper
- .jmxTypeExpected(relevantMetrics);
+ Map<String, Map<String, Map<String, Metric>>> metrics = appType.getJmxMetrics();
+ Map<String, Metric> relevantMetrics = getRelevantMetrics(metrics, components);
+ if (relevantMetrics.size() == 0) {
+ logger.info("No metrics found for components defined in the app.");
+ return jmxProperties;
+ }
+
+ SliderAppJmxHelper.JMXTypes jmxType = SliderAppJmxHelper.jmxTypeExpected(relevantMetrics);
if (jmxType == null) {
logger
.info("jmx_metrics.json is malformed. It may have mixed metric key types of unsupported metric key types.");
@@ -193,20 +257,20 @@ public class SliderAppMasterClient extends BaseHttpClient {
if (jmxStream != null) {
switch (jmxType) {
- case JMX_BEAN:
- SliderAppJmxHelper.extractMetricsFromJmxBean(jmxStream, jmxUrl,
- jmxProperties, relevantMetrics);
- break;
- case JSON:
- SliderAppJmxHelper.extractMetricsFromJmxJson(jmxStream, jmxUrl,
- jmxProperties, relevantMetrics);
- break;
- case XML:
- SliderAppJmxHelper.extractMetricsFromJmxXML(jmxStream, jmxUrl,
- jmxProperties, relevantMetrics);
- break;
- default:
- logger.info("Unsupported jmx type.");
+ case JMX_BEAN:
+ SliderAppJmxHelper.extractMetricsFromJmxBean(jmxStream, jmxUrl,
+ jmxProperties, relevantMetrics);
+ break;
+ case JSON:
+ SliderAppJmxHelper.extractMetricsFromJmxJson(jmxStream, jmxUrl,
+ jmxProperties, relevantMetrics);
+ break;
+ case XML:
+ SliderAppJmxHelper.extractMetricsFromJmxXML(jmxStream, jmxUrl,
+ jmxProperties, relevantMetrics);
+ break;
+ default:
+ logger.info("Unsupported jmx type.");
}
}
} catch (Exception e) {