Return-Path: X-Original-To: apmail-ambari-commits-archive@www.apache.org Delivered-To: apmail-ambari-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 87A6E18B11 for ; Mon, 12 Oct 2015 13:03:10 +0000 (UTC) Received: (qmail 18855 invoked by uid 500); 12 Oct 2015 13:02:48 -0000 Delivered-To: apmail-ambari-commits-archive@ambari.apache.org Received: (qmail 18824 invoked by uid 500); 12 Oct 2015 13:02:48 -0000 Mailing-List: contact commits-help@ambari.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: ambari-dev@ambari.apache.org Delivered-To: mailing list commits@ambari.apache.org Received: (qmail 18815 invoked by uid 99); 12 Oct 2015 13:02:48 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 12 Oct 2015 13:02:48 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id D8658E0200; Mon, 12 Oct 2015 13:02:47 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: dsen@apache.org To: commits@ambari.apache.org Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: ambari git commit: AMBARI-13336 Flume agent specific metrics not showing up as graphs (dsen) Date: Mon, 12 Oct 2015 13:02:47 +0000 (UTC) Repository: ambari Updated Branches: refs/heads/trunk aef3af9b3 -> 633242cce AMBARI-13336 Flume agent specific metrics not showing up as graphs (dsen) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/633242cc Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/633242cc Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/633242cc Branch: refs/heads/trunk Commit: 633242ccebf45b9516debefde04f146f6a173fed Parents: aef3af9 Author: Dmytro Sen Authored: Mon Oct 12 16:02:34 2015 +0300 Committer: Dmytro Sen Committed: Mon Oct 12 16:02:34 2015 +0300 ---------------------------------------------------------------------- .../timeline/cache/TimelineMetricsCache.java | 2 +- .../sink/flume/FlumeTimelineMetricsSink.java | 21 +++-- .../flume/FlumeTimelineMetricsSinkTest.java | 2 +- .../internal/AbstractPropertyProvider.java | 11 ++- .../metrics/timeline/AMSPropertyProvider.java | 14 +++- .../FLUME/1.4.0.2.0/metrics.json | 81 ++++++++++---------- 6 files changed, 75 insertions(+), 56 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/633242cc/ambari-metrics/ambari-metrics-common/src/main/java/org/apache/hadoop/metrics2/sink/timeline/cache/TimelineMetricsCache.java ---------------------------------------------------------------------- diff --git a/ambari-metrics/ambari-metrics-common/src/main/java/org/apache/hadoop/metrics2/sink/timeline/cache/TimelineMetricsCache.java b/ambari-metrics/ambari-metrics-common/src/main/java/org/apache/hadoop/metrics2/sink/timeline/cache/TimelineMetricsCache.java index 224b490..77a5499 100644 --- a/ambari-metrics/ambari-metrics-common/src/main/java/org/apache/hadoop/metrics2/sink/timeline/cache/TimelineMetricsCache.java +++ b/ambari-metrics/ambari-metrics-common/src/main/java/org/apache/hadoop/metrics2/sink/timeline/cache/TimelineMetricsCache.java @@ -78,7 +78,7 @@ public class TimelineMetricsCache { } // TODO: Change to ConcurentHashMap with weighted eviction - class TimelineMetricHolder extends LinkedHashMap { + class TimelineMetricHolder extends LinkedHashMap {// private static final long serialVersionUID = 1L; private boolean gotOverflow = false; // To avoid duplication at the end of the buffer and beginning of the next http://git-wip-us.apache.org/repos/asf/ambari/blob/633242cc/ambari-metrics/ambari-metrics-flume-sink/src/main/java/org/apache/hadoop/metrics2/sink/flume/FlumeTimelineMetricsSink.java ---------------------------------------------------------------------- diff --git a/ambari-metrics/ambari-metrics-flume-sink/src/main/java/org/apache/hadoop/metrics2/sink/flume/FlumeTimelineMetricsSink.java b/ambari-metrics/ambari-metrics-flume-sink/src/main/java/org/apache/hadoop/metrics2/sink/flume/FlumeTimelineMetricsSink.java index 1d4c739..530c8c1 100644 --- a/ambari-metrics/ambari-metrics-flume-sink/src/main/java/org/apache/hadoop/metrics2/sink/flume/FlumeTimelineMetricsSink.java +++ b/ambari-metrics/ambari-metrics-flume-sink/src/main/java/org/apache/hadoop/metrics2/sink/flume/FlumeTimelineMetricsSink.java @@ -36,6 +36,7 @@ import java.net.InetAddress; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -46,7 +47,10 @@ import java.util.concurrent.TimeUnit; public class FlumeTimelineMetricsSink extends AbstractTimelineMetricsSink implements MonitorService { private String collectorUri; - private TimelineMetricsCache metricsCache; + // Key - component(instance_id) + private Map metricsCaches; + private int maxRowCacheSize; + private int metricsSendInterval; private ScheduledExecutorService scheduledExecutorService; private long pollFrequency; private String hostname; @@ -83,11 +87,11 @@ public class FlumeTimelineMetricsSink extends AbstractTimelineMetricsSink implem Configuration configuration = new Configuration("/flume-metrics2.properties"); timeoutSeconds = Integer.parseInt(configuration.getProperty(METRICS_POST_TIMEOUT_SECONDS, String.valueOf(DEFAULT_POST_TIMEOUT_SECONDS))); - int maxRowCacheSize = Integer.parseInt(configuration.getProperty(MAX_METRIC_ROW_CACHE_SIZE, + maxRowCacheSize = Integer.parseInt(configuration.getProperty(MAX_METRIC_ROW_CACHE_SIZE, String.valueOf(TimelineMetricsCache.MAX_RECS_PER_NAME_DEFAULT))); - int metricsSendInterval = Integer.parseInt(configuration.getProperty(METRICS_SEND_INTERVAL, + metricsSendInterval = Integer.parseInt(configuration.getProperty(METRICS_SEND_INTERVAL, String.valueOf(TimelineMetricsCache.MAX_EVICTION_TIME_MILLIS))); - metricsCache = new TimelineMetricsCache(maxRowCacheSize, metricsSendInterval); + metricsCaches = new HashMap(); String collectorHostname = configuration.getProperty(COLLECTOR_HOST_PROPERTY); String port = configuration.getProperty(COLLECTOR_PORT_PROPERTY); collectorUri = "http://" + collectorHostname + ":" + port + "/ws/v1/timeline/metrics"; @@ -111,8 +115,9 @@ public class FlumeTimelineMetricsSink extends AbstractTimelineMetricsSink implem this.pollFrequency = pollFrequency; } - public void setMetricsCache(TimelineMetricsCache metricsCache) { - this.metricsCache = metricsCache; + //Test hepler method + protected void setMetricsCaches(Map metricsCaches) { + this.metricsCaches = metricsCaches; } /** @@ -144,6 +149,10 @@ public class FlumeTimelineMetricsSink extends AbstractTimelineMetricsSink implem private void processComponentAttributes(long currentTimeMillis, String component, Map attributeMap) throws IOException { List metricList = new ArrayList(); + if (!metricsCaches.containsKey(component)) { + metricsCaches.put(component, new TimelineMetricsCache(maxRowCacheSize, metricsSendInterval)); + } + TimelineMetricsCache metricsCache = metricsCaches.get(component); for (String attributeName : attributeMap.keySet()) { String attributeValue = attributeMap.get(attributeName); if (NumberUtils.isNumber(attributeValue)) { http://git-wip-us.apache.org/repos/asf/ambari/blob/633242cc/ambari-metrics/ambari-metrics-flume-sink/src/test/java/org/apache/hadoop/metrics2/sink/flume/FlumeTimelineMetricsSinkTest.java ---------------------------------------------------------------------- diff --git a/ambari-metrics/ambari-metrics-flume-sink/src/test/java/org/apache/hadoop/metrics2/sink/flume/FlumeTimelineMetricsSinkTest.java b/ambari-metrics/ambari-metrics-flume-sink/src/test/java/org/apache/hadoop/metrics2/sink/flume/FlumeTimelineMetricsSinkTest.java index 647e026..fa1ca21 100644 --- a/ambari-metrics/ambari-metrics-flume-sink/src/test/java/org/apache/hadoop/metrics2/sink/flume/FlumeTimelineMetricsSinkTest.java +++ b/ambari-metrics/ambari-metrics-flume-sink/src/test/java/org/apache/hadoop/metrics2/sink/flume/FlumeTimelineMetricsSinkTest.java @@ -65,7 +65,7 @@ public class FlumeTimelineMetricsSinkTest { private TimelineMetricsCache getTimelineMetricsCache(FlumeTimelineMetricsSink flumeTimelineMetricsSink) { TimelineMetricsCache timelineMetricsCache = EasyMock.createNiceMock(TimelineMetricsCache.class); - flumeTimelineMetricsSink.setMetricsCache(timelineMetricsCache); + flumeTimelineMetricsSink.setMetricsCaches(Collections.singletonMap("SINK",timelineMetricsCache)); EasyMock.expect(timelineMetricsCache.getTimelineMetric("key1")) .andReturn(new TimelineMetric()).once(); timelineMetricsCache.putTimelineMetric(EasyMock.anyObject(TimelineMetric.class)); http://git-wip-us.apache.org/repos/asf/ambari/blob/633242cc/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractPropertyProvider.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractPropertyProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractPropertyProvider.java index f265c4f..4a0c44f 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractPropertyProvider.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractPropertyProvider.java @@ -181,6 +181,8 @@ public abstract class AbstractPropertyProvider extends BaseProvider implements P // find the argument in the property id int argStart = propertyId.indexOf(argName); + String value = val == null ? "" : val; + if (argStart > -1) { // get the string segment starting with the given argument String argSegment = propertyId.substring(argStart); @@ -212,15 +214,18 @@ public abstract class AbstractPropertyProvider extends BaseProvider implements P } try { - val = invokeArgumentMethod(val, methodName, argList, paramTypes); + value = invokeArgumentMethod(value, methodName, argList, paramTypes); } catch (Exception e) { throw new IllegalArgumentException("Can't apply method " + methodName + " for argument " + argName + " in " + propertyId, e); } } + if (value.equals(val)) { + return propertyId; + } } // Do the substitution - return propertyId.replace(argName, val); + return propertyId.replace(argName, value); } throw new IllegalArgumentException("Can't substitute " + val + " for argument " + argName + " in " + propertyId); } @@ -368,7 +373,7 @@ public abstract class AbstractPropertyProvider extends BaseProvider implements P * Get value from the given metric. * * @param metric the metric - * @param isTemporal indicates whether or not this a temporal metric + * @param temporalInfo indicates whether or not this a temporal metric * * @return a range of temporal data or a point in time value if not temporal */ http://git-wip-us.apache.org/repos/asf/ambari/blob/633242cc/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProvider.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProvider.java index 55b7349..f221dce 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProvider.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProvider.java @@ -399,13 +399,19 @@ public abstract class AMSPropertyProvider extends MetricsPropertyProvider { if (metricsMap.containsKey(propertyId)){ if (containsArguments(propertyId)) { int i = 1; - for (String param : parameterList) { - propertyId = substituteArgument(propertyId, "$" + i, param); - ++i; + //if nothing to substitute in metric name, then + //substitute $1 with an instanceId + if (!parameterList.isEmpty()) { + for (String param : parameterList) { + propertyId = substituteArgument(propertyId, "$" + i, param); + ++i; + } + } else { + propertyId = substituteArgument(propertyId, "$1", metric.getInstanceId()); } } Object value = getValue(metric, temporalInfo); - if (value != null) { + if (value != null && !containsArguments(propertyId)) { resource.setProperty(propertyId, value); } } http://git-wip-us.apache.org/repos/asf/ambari/blob/633242cc/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/metrics.json ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/metrics.json b/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/metrics.json index b0990ba..611a1b7 100644 --- a/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/metrics.json +++ b/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/metrics.json @@ -218,205 +218,204 @@ "type": "ganglia", "metrics": { "default": { - "metrics/flume/flume/CHANNEL/ChannelCapacity": { + "metrics/flume/flume/CHANNEL/$1.replaceAll(\"^CHANNEL\.\",\"\")/ChannelCapacity": { "metric": "ChannelCapacity", "pointInTime": true, "temporal": true }, - "metrics/flume/flume/CHANNEL/StartTime": { + "metrics/flume/flume/CHANNEL/$1.replaceAll(\"^CHANNEL\.\",\"\")/StartTime": { "metric": "StartTime", "pointInTime": true, "temporal": true }, - "metrics/flume/flume/CHANNEL/EventTakeAttemptCount": { + "metrics/flume/flume/CHANNEL/$1.replaceAll(\"^CHANNEL\.\",\"\")/EventTakeAttemptCount": { "metric": "EventTakeAttemptCount", "pointInTime": true, "temporal": true }, - "metrics/flume/flume/CHANNEL/EventTakeSuccessCount": { + "metrics/flume/flume/CHANNEL/$1.replaceAll(\"^CHANNEL\.\",\"\")/EventTakeSuccessCount": { "metric": "EventTakeSuccessCount", "pointInTime": true, "temporal": true }, - "metrics/flume/flume/CHANNEL/EventPutAttemptCount": { + "metrics/flume/flume/CHANNEL/$1.replaceAll(\"^CHANNEL\.\",\"\")/EventPutAttemptCount": { "metric": "EventPutAttemptCount", "pointInTime": true, "temporal": true }, - "metrics/flume/flume/CHANNEL/StopTime": { + "metrics/flume/flume/CHANNEL/$1.replaceAll(\"^CHANNEL\.\",\"\")/StopTime": { "metric": "StopTime", "pointInTime": true, "temporal": true }, - "metrics/flume/flume/CHANNEL/ChannelFillPercentage": { + "metrics/flume/flume/CHANNEL/$1.replaceAll(\"^CHANNEL\.\",\"\")/ChannelFillPercentage": { "metric": "ChannelFillPercentage", "pointInTime": true, "temporal": true }, - "metrics/flume/flume/CHANNEL/ChannelSize": { + "metrics/flume/flume/CHANNEL/$1.replaceAll(\"^CHANNEL\.\",\"\")/ChannelSize": { "metric": "ChannelSize", "pointInTime": true, "temporal": true }, - "metrics/flume/flume/CHANNEL/EventPutSuccessCount": { + "metrics/flume/flume/CHANNEL/$1.replaceAll(\"^CHANNEL\.\",\"\")/EventPutSuccessCount": { "metric": "EventPutSuccessCount", "pointInTime": true, "temporal": true }, - "metrics/flume/flume/SINK/ConnectionCreatedCount": { + "metrics/flume/flume/SINK/$1.replaceAll(\"^SINK\.\",\"\")/ConnectionCreatedCount": { "metric": "ConnectionCreatedCount", "pointInTime": true, "temporal": true }, - "metrics/flume/flume/SINK/BatchCompleteCount": { + "metrics/flume/flume/SINK/$1.replaceAll(\"^SINK\.\",\"\")/BatchCompleteCount": { "metric": "BatchCompleteCount", "pointInTime": true, "temporal": true }, - "metrics/flume/flume/SINK/EventDrainSuccessCount": { + "metrics/flume/flume/SINK/$1.replaceAll(\"^SINK\.\",\"\")/EventDrainSuccessCount": { "metric": "EventDrainSuccessCount", "pointInTime": true, "temporal": true }, - "metrics/flume/flume/SINK/StartTime": { + "metrics/flume/flume/SINK/$1.replaceAll(\"^SINK\.\",\"\")/StartTime": { "metric": "StartTime", "pointInTime": true, "temporal": true }, - "metrics/flume/flume/SINK/EventDrainAttemptCount": { + "metrics/flume/flume/SINK/$1.replaceAll(\"^SINK\.\",\"\")/EventDrainAttemptCount": { "metric": "EventDrainAttemptCount", "pointInTime": true, "temporal": true }, - "metrics/flume/flume/SINK/ConnectionFailedCount": { + "metrics/flume/flume/SINK/$1.replaceAll(\"^SINK\.\",\"\")/ConnectionFailedCount": { "metric": "ConnectionFailedCount", "pointInTime": true, "temporal": true }, - "metrics/flume/flume/SINK/BatchUnderflowCount": { + "metrics/flume/flume/SINK/$1.replaceAll(\"^SINK\.\",\"\")/BatchUnderflowCount": { "metric": "BatchUnderflowCount", "pointInTime": true, "temporal": true }, - "metrics/flume/flume/SINK/ConnectionClosedCount": { + "metrics/flume/flume/SINK/$1.replaceAll(\"^SINK\.\",\"\")/ConnectionClosedCount": { "metric": "ConnectionClosedCount", "pointInTime": true, "temporal": true }, - "metrics/flume/flume/SINK/StopTime": { + "metrics/flume/flume/SINK/$1.replaceAll(\"^SINK\.\",\"\")/StopTime": { "metric": "StopTime", "pointInTime": true, "temporal": true }, - "metrics/flume/flume/SINK/BatchEmptyCount": { + "metrics/flume/flume/SINK/$1.replaceAll(\"^SINK\.\",\"\")/BatchEmptyCount": { "metric": "BatchEmptyCount", "pointInTime": true, "temporal": true }, - "metrics/flume/flume/SOURCE/AppendBatchReceivedCount": { + "metrics/flume/flume/SOURCE/$1.replaceAll(\"^SOURCE\.\",\"\")/AppendBatchReceivedCount": { "metric": "AppendBatchReceivedCount", "pointInTime": true, "temporal": true }, - "metrics/flume/flume/SOURCE/AppendAcceptedCount": { + "metrics/flume/flume/SOURCE/$1.replaceAll(\"^SOURCE\.\",\"\")/AppendAcceptedCount": { "metric": "AppendAcceptedCount", "pointInTime": true, "temporal": true }, - "metrics/flume/flume/SOURCE/StartTime": { + "metrics/flume/flume/SOURCE/$1.replaceAll(\"^SOURCE\.\",\"\")/StartTime": { "metric": "StartTime", "pointInTime": true, "temporal": true }, - "metrics/flume/flume/SOURCE/OpenConnectionCount": { + "metrics/flume/flume/SOURCE/$1.replaceAll(\"^SOURCE\.\",\"\")/OpenConnectionCount": { "metric": "OpenConnectionCount", "pointInTime": true, "temporal": true }, - "metrics/flume/flume/SOURCE/AppendBatchAcceptedCount": { + "metrics/flume/flume/SOURCE/$1.replaceAll(\"^SOURCE\.\",\"\")/AppendBatchAcceptedCount": { "metric": "AppendBatchAcceptedCount", "pointInTime": true, "temporal": true }, - "metrics/flume/flume/SOURCE/AppendReceivedCount": { + "metrics/flume/flume/SOURCE/$1.replaceAll(\"^SOURCE\.\",\"\")/AppendReceivedCount": { "metric": "AppendReceivedCount", "pointInTime": true, "temporal": true }, - "metrics/flume/flume/SOURCE/EventReceivedCount": { + "metrics/flume/flume/SOURCE/$1.replaceAll(\"^SOURCE\.\",\"\")/EventReceivedCount": { "metric": "EventReceivedCount", "pointInTime": true, "temporal": true }, - "metrics/flume/flume/SOURCE/StopTime": { + "metrics/flume/flume/SOURCE/$1.replaceAll(\"^SOURCE\.\",\"\")/StopTime": { "metric": "StopTime", "pointInTime": true, "temporal": true }, - "metrics/flume/flume/SOURCE/EventAcceptedCount": { + "metrics/flume/flume/SOURCE/$1.replaceAll(\"^SOURCE\.\",\"\")/EventAcceptedCount": { "metric": "EventAcceptedCount", "pointInTime": true, "temporal": true }, - "metrics/flume/flume/CHANNEL/EventTakeSuccessCount/rate/avg": { + "metrics/flume/flume/CHANNEL/$1.replaceAll(\"^CHANNEL\.\",\"\")/EventTakeSuccessCount/rate/avg": { "metric": "EventTakeSuccessCount._rate._avg", "pointInTime": false, "temporal": true }, - "metrics/flume/flume/CHANNEL/EventTakeSuccessCount/rate/max": { + "metrics/flume/flume/CHANNEL/$1.replaceAll(\"^CHANNEL\.\",\"\")/EventTakeSuccessCount/rate/max": { "metric": "EventTakeSuccessCount._rate._max", "pointInTime": false, "temporal": true }, - "metrics/flume/flume/CHANNEL/EventTakeSuccessCount/rate/min": { + "metrics/flume/flume/CHANNEL/$1.replaceAll(\"^CHANNEL\.\",\"\")/EventTakeSuccessCount/rate/min": { "metric": "EventTakeSuccessCount._rate._min", "pointInTime": false, "temporal": true }, - "metrics/flume/flume/CHANNEL/EventTakeSuccessCount/rate/sum": { + "metrics/flume/flume/CHANNEL/$1.replaceAll(\"^CHANNEL\.\",\"\")/EventTakeSuccessCount/rate/sum": { "metric": "EventTakeSuccessCount._rate._sum", "pointInTime": false, "temporal": true }, - - "metrics/flume/flume/CHANNEL/EventPutSuccessCount/rate/avg": { + "metrics/flume/flume/CHANNEL/$1.replaceAll(\"^CHANNEL\.\",\"\")/EventPutSuccessCount/rate/avg": { "metric": "EventPutSuccessCount._rate._avg", "pointInTime": false, "temporal": true }, - "metrics/flume/flume/CHANNEL/EventPutSuccessCount/rate/max": { + "metrics/flume/flume/CHANNEL/$1.replaceAll(\"^CHANNEL\.\",\"\")/EventPutSuccessCount/rate/max": { "metric": "EventPutSuccessCount._rate._max", "pointInTime": false, "temporal": true }, - "metrics/flume/flume/CHANNEL/EventPutSuccessCount/rate/min": { + "metrics/flume/flume/CHANNEL/$1.replaceAll(\"^CHANNEL\.\",\"\")/EventPutSuccessCount/rate/min": { "metric": "EventPutSuccessCount._rate._min", "pointInTime": false, "temporal": true }, - "metrics/flume/flume/CHANNEL/EventPutSuccessCount/rate/sum": { + "metrics/flume/flume/CHANNEL/$1.replaceAll(\"^CHANNEL\.\",\"\")/EventPutSuccessCount/rate/sum": { "metric": "EventPutSuccessCount._rate._sum", "pointInTime": false, "temporal": true }, - "metrics/flume/flume/CHANNEL/ChannelSize/rate/avg": { + "metrics/flume/flume/CHANNEL/$1.replaceAll(\"^CHANNEL\.\",\"\")/ChannelSize/rate/avg": { "metric": "ChannelSize._rate._avg", "pointInTime": false, "temporal": true }, - "metrics/flume/flume/CHANNEL/ChannelSize/rate/max": { + "metrics/flume/flume/CHANNEL/$1.replaceAll(\"^CHANNEL\.\",\"\")/ChannelSize/rate/max": { "metric": "ChannelSize._rate._max", "pointInTime": false, "temporal": true }, - "metrics/flume/flume/CHANNEL/ChannelSize/rate/min": { + "metrics/flume/flume/CHANNEL/$1.replaceAll(\"^CHANNEL\.\",\"\")/ChannelSize/rate/min": { "metric": "ChannelSize._rate._min", "pointInTime": false, "temporal": true }, - "metrics/flume/flume/CHANNEL/ChannelSize/rate/sum": { + "metrics/flume/flume/CHANNEL/$1.replaceAll(\"^CHANNEL\.\",\"\")/ChannelSize/rate/sum": { "metric": "ChannelSize._rate._sum", "pointInTime": false, "temporal": true