AMBARI-19825 : Metrics data is not getting collected for different services when AMS HTTPS is enabled. (avijayan)
(cherry picked from commit d2837f7864ddd0a961c1213761580576a772cedd) Change-Id: I94b6416ce791cefb2345a99a0609536242a9c6c3 Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/fcd422c3 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/fcd422c3 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/fcd422c3 Branch: refs/heads/branch-feature-BUG-74026 Commit: fcd422c3b63c89444fb33ba646f8524ca71c9e1c Parents: 6999527 Author: Aravindan Vijayan <[email protected]> Authored: Thu Feb 2 10:19:52 2017 -0800 Committer: Zuul <[email protected]> Committed: Tue Feb 7 07:11:05 2017 -0800 ---------------------------------------------------------------------- .../metrics2/sink/flume/FlumeTimelineMetricsSink.java | 3 ++- .../metrics2/sink/timeline/HadoopTimelineMetricsSink.java | 6 +++--- .../metrics2/sink/storm/StormTimelineMetricsReporter.java | 5 +---- .../server/metrics/system/impl/AmbariMetricSinkImpl.java | 10 ++++++++++ 4 files changed, 16 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/fcd422c3/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 c1b684b..86e092a 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 @@ -107,13 +107,14 @@ public class FlumeTimelineMetricsSink extends AbstractTimelineMetricsSink implem // Initialize the collector write strategy super.init(); - collectorUri = constructTimelineMetricUri(protocol, findPreferredCollectHost(), port); if (protocol.contains("https")) { String trustStorePath = configuration.getProperty(SSL_KEYSTORE_PATH_PROPERTY).trim(); String trustStoreType = configuration.getProperty(SSL_KEYSTORE_TYPE_PROPERTY).trim(); String trustStorePwd = configuration.getProperty(SSL_KEYSTORE_PASSWORD_PROPERTY).trim(); loadTruststore(trustStorePath, trustStoreType, trustStorePwd); } + collectorUri = constructTimelineMetricUri(protocol, findPreferredCollectHost(), port); + pollFrequency = Long.parseLong(configuration.getProperty("collectionFrequency")); String[] metrics = configuration.getProperty(COUNTER_METRICS_PROPERTY).trim().split(","); http://git-wip-us.apache.org/repos/asf/ambari/blob/fcd422c3/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 b2ca52e..1936977 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 @@ -107,15 +107,15 @@ public class HadoopTimelineMetricsSink extends AbstractTimelineMetricsSink imple if (collectorHosts.isEmpty()) { LOG.error("No Metric collector configured."); } else { - String preferredCollectorHost = findPreferredCollectHost(); - collectorUri = constructTimelineMetricUri(protocol, preferredCollectorHost, port); - containerMetricsUri = constructContainerMetricUri(protocol, preferredCollectorHost, port); if (protocol.contains("https")) { String trustStorePath = conf.getString(SSL_KEYSTORE_PATH_PROPERTY).trim(); String trustStoreType = conf.getString(SSL_KEYSTORE_TYPE_PROPERTY).trim(); String trustStorePwd = conf.getString(SSL_KEYSTORE_PASSWORD_PROPERTY).trim(); loadTruststore(trustStorePath, trustStoreType, trustStorePwd); } + String preferredCollectorHost = findPreferredCollectHost(); + collectorUri = constructTimelineMetricUri(protocol, preferredCollectorHost, port); + containerMetricsUri = constructContainerMetricUri(protocol, preferredCollectorHost, port); } LOG.info("Collector Uri: " + collectorUri); http://git-wip-us.apache.org/repos/asf/ambari/blob/fcd422c3/ambari-metrics/ambari-metrics-storm-sink/src/main/java/org/apache/hadoop/metrics2/sink/storm/StormTimelineMetricsReporter.java ---------------------------------------------------------------------- diff --git a/ambari-metrics/ambari-metrics-storm-sink/src/main/java/org/apache/hadoop/metrics2/sink/storm/StormTimelineMetricsReporter.java b/ambari-metrics/ambari-metrics-storm-sink/src/main/java/org/apache/hadoop/metrics2/sink/storm/StormTimelineMetricsReporter.java index 53250ee..b716c7e 100644 --- a/ambari-metrics/ambari-metrics-storm-sink/src/main/java/org/apache/hadoop/metrics2/sink/storm/StormTimelineMetricsReporter.java +++ b/ambari-metrics/ambari-metrics-storm-sink/src/main/java/org/apache/hadoop/metrics2/sink/storm/StormTimelineMetricsReporter.java @@ -42,7 +42,6 @@ public class StormTimelineMetricsReporter extends AbstractTimelineMetricsSink public static final String DEFAULT_CLUSTER_REPORTER_APP_ID = "nimbus"; private String hostname; - private String collectorUri; private String applicationId; private int timeoutSeconds; private String port; @@ -117,9 +116,7 @@ public class StormTimelineMetricsReporter extends AbstractTimelineMetricsSink DEFAULT_POST_TIMEOUT_SECONDS; applicationId = conf.getProperty(CLUSTER_REPORTER_APP_ID, DEFAULT_CLUSTER_REPORTER_APP_ID); - collectorUri = constructTimelineMetricUri(protocol, findPreferredCollectHost(), port); - - if (collectorUri.toLowerCase().startsWith("https://")) { + if (protocol.contains("https")) { String trustStorePath = conf.getProperty(SSL_KEYSTORE_PATH_PROPERTY).toString().trim(); String trustStoreType = conf.getProperty(SSL_KEYSTORE_TYPE_PROPERTY).toString().trim(); String trustStorePwd = conf.getProperty(SSL_KEYSTORE_PASSWORD_PROPERTY).toString().trim(); http://git-wip-us.apache.org/repos/asf/ambari/blob/fcd422c3/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 358b8fa..58d36c3 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 @@ -28,6 +28,7 @@ import java.util.Map; import java.util.Set; import java.util.TreeMap; +import org.apache.ambari.server.configuration.ComponentSSLConfiguration; import org.apache.ambari.server.controller.AmbariManagementController; import org.apache.ambari.server.controller.internal.AbstractControllerResourceProvider; import org.apache.ambari.server.controller.internal.ServiceConfigVersionResourceProvider; @@ -156,6 +157,15 @@ public class AmbariMetricSinkImpl extends AbstractTimelineMetricsSink implements hostName = configuration.getProperty("ambariserver.hostname.override", getDefaultLocalHostName()); LOG.info("Hostname used for ambari server metrics : " + hostName); + + if (protocol.contains("https")) { + ComponentSSLConfiguration sslConfiguration = ComponentSSLConfiguration.instance(); + String trustStorePath = sslConfiguration.getTruststorePath(); + String trustStoreType = sslConfiguration.getTruststoreType(); + String trustStorePwd = sslConfiguration.getTruststorePassword(); + loadTruststore(trustStorePath, trustStoreType, trustStorePwd); + } + collectorUri = getCollectorUri(findPreferredCollectHost()); int maxRowCacheSize = Integer.parseInt(configuration.getProperty(MAX_METRIC_ROW_CACHE_SIZE,
