Repository: ambari
Updated Branches:
  refs/heads/trunk b13467fb4 -> c4fce5383


AMBARI-20403 : Yarn Container metrics are not being collected by AMS (avijayan)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/c4fce538
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/c4fce538
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/c4fce538

Branch: refs/heads/trunk
Commit: c4fce5383b650dc6e2480b554cb6832876ced311
Parents: b13467f
Author: Aravindan Vijayan <avija...@hortonworks.com>
Authored: Sun Mar 12 16:11:02 2017 -0700
Committer: Aravindan Vijayan <avija...@hortonworks.com>
Committed: Sun Mar 12 16:11:02 2017 -0700

----------------------------------------------------------------------
 .../sink/timeline/AbstractTimelineMetricsSink.java  | 16 +++++-----------
 .../sink/timeline/HadoopTimelineMetricsSink.java    | 15 +++++++++++++--
 .../metrics/system/impl/AmbariMetricSinkImpl.java   |  2 +-
 .../system/impl/TestAmbariMetricsSinkImpl.java      |  2 +-
 4 files changed, 20 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/c4fce538/ambari-metrics/ambari-metrics-common/src/main/java/org/apache/hadoop/metrics2/sink/timeline/AbstractTimelineMetricsSink.java
----------------------------------------------------------------------
diff --git 
a/ambari-metrics/ambari-metrics-common/src/main/java/org/apache/hadoop/metrics2/sink/timeline/AbstractTimelineMetricsSink.java
 
b/ambari-metrics/ambari-metrics-common/src/main/java/org/apache/hadoop/metrics2/sink/timeline/AbstractTimelineMetricsSink.java
index a1fd008..46f32f9 100644
--- 
a/ambari-metrics/ambari-metrics-common/src/main/java/org/apache/hadoop/metrics2/sink/timeline/AbstractTimelineMetricsSink.java
+++ 
b/ambari-metrics/ambari-metrics-common/src/main/java/org/apache/hadoop/metrics2/sink/timeline/AbstractTimelineMetricsSink.java
@@ -209,7 +209,7 @@ public abstract class AbstractTimelineMetricsSink {
     }
   }
 
-  protected boolean emitMetrics(TimelineMetrics metrics) {
+  protected String getCurrentCollectorHost() {
     String collectorHost;
     // Get cached target
     if (targetCollectorHostSupplier != null) {
@@ -232,11 +232,14 @@ public abstract class AbstractTimelineMetricsSink {
       } else {
         
nullCollectorCounter.compareAndSet(NUMBER_OF_NULL_COLLECTOR_EXCEPTIONS, 0);
       }
-      return false;
     } else {
       nullCollectorCounter.set(0);
     }
+    return collectorHost;
+  }
 
+  protected boolean emitMetrics(TimelineMetrics metrics) {
+    String collectorHost = getCurrentCollectorHost();
     String connectUrl = getCollectorUri(collectorHost);
     String jsonData = null;
     LOG.debug("EmitMetrics connectUrl = "  + connectUrl);
@@ -499,15 +502,6 @@ public abstract class AbstractTimelineMetricsSink {
     return sb.toString();
   }
 
-  protected String constructContainerMetricUri(String protocol, String host, 
String port) {
-    StringBuilder sb = new StringBuilder(protocol);
-    sb.append("://");
-    sb.append(host);
-    sb.append(":");
-    sb.append(port);
-    sb.append(WS_V1_TIMELINE_METRICS);
-    return sb.toString();
-  }
   /**
    * Parses input Sting of format "host1,host2" into Collection of hostnames
    */

http://git-wip-us.apache.org/repos/asf/ambari/blob/c4fce538/ambari-metrics/ambari-metrics-hadoop-sink/src/main/java/org/apache/hadoop/metrics2/sink/timeline/HadoopTimelineMetricsSink.java
----------------------------------------------------------------------
diff --git 
a/ambari-metrics/ambari-metrics-hadoop-sink/src/main/java/org/apache/hadoop/metrics2/sink/timeline/HadoopTimelineMetricsSink.java
 
b/ambari-metrics/ambari-metrics-hadoop-sink/src/main/java/org/apache/hadoop/metrics2/sink/timeline/HadoopTimelineMetricsSink.java
index 6e0eba5..a112ef2 100644
--- 
a/ambari-metrics/ambari-metrics-hadoop-sink/src/main/java/org/apache/hadoop/metrics2/sink/timeline/HadoopTimelineMetricsSink.java
+++ 
b/ambari-metrics/ambari-metrics-hadoop-sink/src/main/java/org/apache/hadoop/metrics2/sink/timeline/HadoopTimelineMetricsSink.java
@@ -201,7 +201,7 @@ public class HadoopTimelineMetricsSink extends 
AbstractTimelineMetricsSink imple
   /**
    * Parses input Stings array of format "host1,host2" into Collection of 
hostnames
    */
-  protected Collection<String> parseHostsStringArrayIntoCollection(String[] 
hostStrings) {
+  protected Collection<String>  parseHostsStringArrayIntoCollection(String[] 
hostStrings) {
     Collection<String> result = new HashSet<>();
     if (hostStrings == null) return result;
     for (String s : hostStrings) {
@@ -428,11 +428,22 @@ public class HadoopTimelineMetricsSink extends 
AbstractTimelineMetricsSink imple
       LOG.error("Unable to parse container metrics ", e);
     }
     if (jsonData != null) {
-      // TODO: Container metrics should be able to utilize failover mechanism
+      String collectorHost = getCurrentCollectorHost();
+      containerMetricsUri = constructContainerMetricUri(protocol, 
collectorHost, port);
       emitMetricsJson(containerMetricsUri, jsonData);
     }
   }
 
+  protected String constructContainerMetricUri(String protocol, String host, 
String port) {
+    StringBuilder sb = new StringBuilder(protocol);
+    sb.append("://");
+    sb.append(host);
+    sb.append(":");
+    sb.append(port);
+    sb.append(WS_V1_CONTAINER_METRICS);
+    return sb.toString();
+  }
+
   // Taken as is from Ganglia30 implementation
   @InterfaceAudience.Private
   public void appendPrefix(MetricsRecord record, StringBuilder sb) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/c4fce538/ambari-server/src/main/java/org/apache/ambari/server/metrics/system/impl/AmbariMetricSinkImpl.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/metrics/system/impl/AmbariMetricSinkImpl.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/metrics/system/impl/AmbariMetricSinkImpl.java
index f066c3d..8b53c10 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/metrics/system/impl/AmbariMetricSinkImpl.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/metrics/system/impl/AmbariMetricSinkImpl.java
@@ -246,7 +246,7 @@ public class AmbariMetricSinkImpl extends 
AbstractTimelineMetricsSink implements
    */
   @Override
   protected String getCollectorUri(String host) {
-    return constructContainerMetricUri(protocol, host, port);
+    return constructTimelineMetricUri(protocol, host, port);
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/ambari/blob/c4fce538/ambari-server/src/test/java/org/apache/ambari/server/metric/system/impl/TestAmbariMetricsSinkImpl.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/metric/system/impl/TestAmbariMetricsSinkImpl.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/metric/system/impl/TestAmbariMetricsSinkImpl.java
index 996f3fc..4a60892 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/metric/system/impl/TestAmbariMetricsSinkImpl.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/metric/system/impl/TestAmbariMetricsSinkImpl.java
@@ -40,7 +40,7 @@ public class TestAmbariMetricsSinkImpl extends 
AbstractTimelineMetricsSink imple
 
   @Override
   protected String getCollectorUri(String host) {
-    return constructContainerMetricUri(getCollectorProtocol(), host, 
getCollectorPort());
+    return constructTimelineMetricUri(getCollectorProtocol(), host, 
getCollectorPort());
   }
 
   @Override

Reply via email to