You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by sw...@apache.org on 2017/09/21 20:06:33 UTC

ambari git commit: AMBARI-220334. AMS: Add smart configs support for service. (swagle)

Repository: ambari
Updated Branches:
  refs/heads/trunk f1b53000c -> f095b9590


AMBARI-220334. AMS: Add smart configs support for service. (swagle)


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

Branch: refs/heads/trunk
Commit: f095b9590afe5657b560defb3e3d5e9294c1e65d
Parents: f1b5300
Author: Siddharth Wagle <sw...@hortonworks.com>
Authored: Thu Sep 21 12:56:35 2017 -0700
Committer: Siddharth Wagle <sw...@hortonworks.com>
Committed: Thu Sep 21 13:03:21 2017 -0700

----------------------------------------------------------------------
 .../timeline/TimelineMetricConfiguration.java   |  13 +
 .../metrics/timeline/TimelineMetricsFilter.java |  24 +-
 .../timeline/TimelineMetricsFilterTest.java     |   3 +
 .../0.1.0/configuration/ams-env.xml             |   4 +
 .../0.1.0/configuration/ams-hbase-env.xml       |  16 ++
 .../0.1.0/configuration/ams-hbase-site.xml      |  24 +-
 .../0.1.0/configuration/ams-site.xml            |  70 ++++-
 .../AMBARI_METRICS/0.1.0/metainfo.xml           |   7 +
 .../AMBARI_METRICS/0.1.0/themes/theme.json      | 288 +++++++++++++++++++
 9 files changed, 423 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/f095b959/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricConfiguration.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricConfiguration.java b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricConfiguration.java
index 44073ab..899928a 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricConfiguration.java
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricConfiguration.java
@@ -254,9 +254,15 @@ public class TimelineMetricConfiguration {
   public static final String TIMELINE_METRICS_AGGREGATE_TABLES_DURABILITY =
       "timeline.metrics.aggregate.tables.durability";
 
+  public static final String TIMELINE_METRICS_WHITELIST_ENABLED =
+    "timeline.metrics.whitelisting.enabled";
+
   public static final String TIMELINE_METRICS_WHITELIST_FILE =
     "timeline.metrics.whitelist.file";
 
+  public static final String TIMELINE_METRICS_WHITELIST_FILE_LOCATION_DEFAULT =
+    "/etc/ambari-metrics-collector/conf/metrics_whitelist";
+
   public static final String TIMELINE_METRIC_METADATA_FILTERS =
     "timeline.metrics.service.metadata.filters";
 
@@ -518,4 +524,11 @@ public class TimelineMetricConfiguration {
       return false;
     }
   }
+
+  public boolean isWhitelistingEnabled() {
+    if (metricsConf != null) {
+      return Boolean.parseBoolean(metricsConf.get(TIMELINE_METRICS_WHITELIST_ENABLED, "false"));
+    }
+    return false;
+  }
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/f095b959/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricsFilter.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricsFilter.java b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricsFilter.java
index 1446ec2..63cc510 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricsFilter.java
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricsFilter.java
@@ -18,17 +18,14 @@
 
 package org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline;
 
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.metrics2.sink.timeline.TimelineMetric;
+import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.TIMELINE_METRICS_APPS_BLACKLIST;
+import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.TIMELINE_METRICS_APPS_WHITELIST;
+import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.TIMELINE_METRICS_WHITELIST_FILE;
+import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.TIMELINE_METRICS_WHITELIST_FILE_LOCATION_DEFAULT;
 
 import java.io.BufferedReader;
 import java.io.FileInputStream;
 import java.io.IOException;
-import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.util.Arrays;
 import java.util.HashSet;
@@ -36,9 +33,12 @@ import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.TIMELINE_METRICS_WHITELIST_FILE;
-import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.TIMELINE_METRICS_APPS_BLACKLIST;
-import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.TIMELINE_METRICS_APPS_WHITELIST;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.metrics2.sink.timeline.TimelineMetric;
 
 public class TimelineMetricsFilter {
 
@@ -67,8 +67,8 @@ public class TimelineMetricsFilter {
     whitelistedApps = new HashSet<>();
     amshbaseWhitelist = new HashSet<>();
 
-    String whitelistFile = metricsConf.get(TIMELINE_METRICS_WHITELIST_FILE, "");
-    if (!StringUtils.isEmpty(whitelistFile)) {
+    if (configuration.isWhitelistingEnabled()) {
+      String whitelistFile = metricsConf.get(TIMELINE_METRICS_WHITELIST_FILE, TIMELINE_METRICS_WHITELIST_FILE_LOCATION_DEFAULT);
       readMetricWhitelistFromFile(whitelistFile);
     }
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/f095b959/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricsFilterTest.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricsFilterTest.java b/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricsFilterTest.java
index 81da5c8..a308248 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricsFilterTest.java
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricsFilterTest.java
@@ -61,6 +61,7 @@ public class TimelineMetricsFilterTest {
     Configuration metricsConf = new Configuration();
     TimelineMetricConfiguration configuration = EasyMock.createNiceMock(TimelineMetricConfiguration.class);
     expect(configuration.getMetricsConf()).andReturn(metricsConf).once();
+    expect(configuration.isWhitelistingEnabled()).andReturn(true).anyTimes();
     replay(configuration);
 
     URL fileUrl = ClassLoader.getSystemResource("test_data/metric_whitelist.dat");
@@ -170,6 +171,8 @@ public class TimelineMetricsFilterTest {
     whitelist.add("regionserver.Server.Delete_mean");
     expect(configuration.getAmshbaseWhitelist()).andReturn(whitelist).once();
 
+    expect(configuration.isWhitelistingEnabled()).andReturn(true).anyTimes();
+
     replay(configuration);
 
     TimelineMetricsFilter.initializeMetricFilter(configuration);

http://git-wip-us.apache.org/repos/asf/ambari/blob/f095b959/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-env.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-env.xml b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-env.xml
index 4d33661..ee7067c 100644
--- a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-env.xml
+++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-env.xml
@@ -74,9 +74,13 @@
     <name>metrics_collector_heapsize</name>
     <value>512</value>
     <description>Metrics Collector Heap Size</description>
+    <display-name>Metrics Collector Heap Size</display-name>
     <value-attributes>
       <type>int</type>
       <unit>MB</unit>
+      <minimum>512</minimum>
+      <maximum>16384</maximum>
+      <increment-step>256</increment-step>
     </value-attributes>
     <on-ambari-upgrade add="true"/>
   </property>

http://git-wip-us.apache.org/repos/asf/ambari/blob/f095b959/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-env.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-env.xml b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-env.xml
index 9c4fc02..e31f2a6 100644
--- a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-env.xml
+++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-env.xml
@@ -60,9 +60,13 @@
         HBase RegionServer Heap Size. In embedded mode, total heap size is
         sum of master and regionserver heap sizes.
     </description>
+    <display-name>HBase RegionServer Maximum Memory</display-name>
     <value-attributes>
       <type>int</type>
+      <minimum>512</minimum>
+      <maximum>32768</maximum>
       <unit>MB</unit>
+      <increment-step>256</increment-step>
     </value-attributes>
     <depends-on>
       <property>
@@ -80,9 +84,13 @@
     <name>regionserver_xmn_size</name>
     <value>128</value>
     <description>HBase RegionServer maximum value for young generation heap size.</description>
+    <display-name>HBase RegionServer maximum value for Xmn</display-name>
     <value-attributes>
       <type>int</type>
+      <minimum>128</minimum>
+      <maximum>8192</maximum>
       <unit>MB</unit>
+      <increment-step>128</increment-step>
     </value-attributes>
     <depends-on>
       <property>
@@ -98,9 +106,13 @@
     <description>
       HBase Master maximum value for young generation heap size.
     </description>
+    <display-name>HBase Master maximum value for Xmn</display-name>
     <value-attributes>
       <type>int</type>
+      <minimum>64</minimum>
+      <maximum>1024</maximum>
       <unit>MB</unit>
+      <increment-step>64</increment-step>
     </value-attributes>
     <depends-on>
       <property>
@@ -133,9 +145,13 @@
         HBase Master Heap Size. In embedded mode, total heap size is
         sum of master and regionserver heap sizes.
     </description>
+    <display-name>HBase Master Maximum Memory</display-name>
     <value-attributes>
       <type>int</type>
+      <minimum>256</minimum>
+      <maximum>4096</maximum>
       <unit>MB</unit>
+      <increment-step>256</increment-step>
     </value-attributes>
     <depends-on>
       <property>

http://git-wip-us.apache.org/repos/asf/ambari/blob/f095b959/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-site.xml b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-site.xml
index 2c9378e..5f80df4 100644
--- a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-site.xml
+++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-site.xml
@@ -29,6 +29,7 @@
       HBase to either local filesystem path if using Ambari Metrics in embedded mode or
       to a HDFS dir, example: hdfs://namenode.example.org:8020/amshbase.
     </description>
+    <display-name>HBase root directory</display-name>
     <depends-on>
       <property>
         <type>core-site</type>
@@ -44,6 +45,7 @@
   <property>
     <name>hbase.tmp.dir</name>
     <value>/var/lib/ambari-metrics-collector/hbase-tmp</value>
+    <display-name>HBase tmp directory</display-name>
     <description>
       Temporary directory on the local filesystem.
       Change this setting to point to a location more permanent
@@ -165,9 +167,13 @@
       Threshold size in bytes after which results from parallelly executed
       query results are spooled to disk. Default is 20 mb.
     </description>
+    <display-name>Phoenix Spool threshold</display-name>
     <value-attributes>
       <type>int</type>
-      <unit>Bytes</unit>
+      <unit>B</unit>
+      <minimum>12582912</minimum>
+      <maximum>31457280</maximum>
+      <increment-step>1048576</increment-step>
     </value-attributes>
     <on-ambari-upgrade add="true"/>
   </property>
@@ -266,12 +272,16 @@
     <name>hbase.hregion.max.filesize</name>
     <value>4294967296</value>
     <description>
-      Maximum HFile size. If the sum of the sizes of a region&#x2019;s HFiles has grown
-      to exceed this value, the region is split in two. Default is 40Gb.
+      Maximum HFile size. If the sum of the sizes of a region HFiles has grown
+      to exceed this value, the region is split in two. Default is 4 GB.
     </description>
+    <display-name>Maximum Region File Size</display-name>
     <value-attributes>
       <type>int</type>
-      <unit>Bytes</unit>
+      <minimum>1073741824</minimum>
+      <maximum>107374182400</maximum>
+      <unit>B</unit>
+      <increment-step>1073741824</increment-step>
     </value-attributes>
     <on-ambari-upgrade add="true"/>
   </property>
@@ -432,9 +442,13 @@
       number of bytes. Value is checked by a thread that runs every
       hbase.server.thread.wakefrequency.
     </description>
+    <display-name>Memstore Flush Size</display-name>
     <value-attributes>
       <type>int</type>
-      <unit>Bytes</unit>
+      <minimum>33554432</minimum>
+      <maximum>536870912</maximum>
+      <increment-step>1048576</increment-step>
+      <unit>B</unit>
     </value-attributes>
     <on-ambari-upgrade add="true"/>
   </property>

http://git-wip-us.apache.org/repos/asf/ambari/blob/f095b959/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-site.xml b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-site.xml
index 1b085f6..ab14f18 100644
--- a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-site.xml
+++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-site.xml
@@ -31,6 +31,23 @@
       2) distributed: HBase daemons writing to HDFS
     </description>
     <on-ambari-upgrade add="true"/>
+    <display-name>Operation Mode</display-name>
+    <description>Metrics service Operation mode</description>
+    <value-attributes>
+      <overridable>false</overridable>
+      <type>value-list</type>
+      <entries>
+        <entry>
+          <value>embedded</value>
+          <label>Embedded</label>
+        </entry>
+        <entry>
+          <value>distributed</value>
+          <label>Distributed</label>
+        </entry>
+      </entries>
+      <selection-cardinality>1</selection-cardinality>
+    </value-attributes>
   </property>
   <property>
     <name>timeline.metrics.service.webapp.address</name>
@@ -510,6 +527,11 @@
       List of application ids to use for aggregating host level metrics for
       an application. Example: bytes_read across Yarn Nodemanagers.
     </description>
+    <display-name>AppIds for aggregating System metrics</display-name>
+    <value-attributes>
+      <empty-value-valid>true</empty-value-valid>
+      <overridable>false</overridable>
+    </value-attributes>
     <on-ambari-upgrade add="true"/>
   </property>
   <property>
@@ -589,14 +611,6 @@
     <on-ambari-upgrade add="true"/>
   </property>
   <property>
-    <name>timeline.metrics.sink.collection.period</name>
-    <value>10</value>
-    <description>
-      The interval between two service metrics data exports.
-    </description>
-    <on-ambari-upgrade add="true"/>
-  </property>
-  <property>
     <name>timeline.metrics.service.watcher.disabled</name>
     <value>false</value>
     <description>
@@ -675,7 +689,7 @@
     <name>timeline.metrics.cache.size</name>
     <value>150</value>
     <description>
-      Size of array blocking queue used to cache metrics
+      Size of array blocking queue used to cache metrics before flush to DB
     </description>
     <value-attributes>
       <type>int</type>
@@ -791,6 +805,22 @@
     <name>timeline.metrics.host.inmemory.aggregation</name>
     <value>false</value>
     <description>if set to "true" host metrics will be aggregated in memory on each host</description>
+    <display-name>Enable in-memory aggreation on monitors</display-name>
+    <value-attributes>
+      <overridable>false</overridable>
+      <type>value-list</type>
+      <entries>
+        <entry>
+          <value>true</value>
+          <label>True</label>
+        </entry>
+        <entry>
+          <value>false</value>
+          <label>False</label>
+        </entry>
+      </entries>
+      <selection-cardinality>1</selection-cardinality>
+    </value-attributes>
     <on-ambari-upgrade add="true"/>
   </property>
   <property>
@@ -798,4 +828,26 @@
     <value>61888</value>
     <on-ambari-upgrade add="true"/>
   </property>
+  <property>
+    <name>timeline.metrics.whitelisting.enabled</name>
+    <value>false</value>
+    <description>Enable/Disable metric whitelisting</description>
+    <display-name>Enable only whitelisted metrics</display-name>
+    <on-ambari-upgrade add="true"/>
+    <value-attributes>
+      <overridable>false</overridable>
+      <type>value-list</type>
+      <entries>
+        <entry>
+          <value>true</value>
+          <label>True</label>
+        </entry>
+        <entry>
+          <value>false</value>
+          <label>False</label>
+        </entry>
+      </entries>
+      <selection-cardinality>1</selection-cardinality>
+    </value-attributes>
+  </property>
 </configuration>

http://git-wip-us.apache.org/repos/asf/ambari/blob/f095b959/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/metainfo.xml b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/metainfo.xml
index 43c3685..d563bec 100644
--- a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/metainfo.xml
+++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/metainfo.xml
@@ -123,6 +123,13 @@
         </logs>
       </components>
 
+      <themes>
+        <theme>
+          <fileName>theme.json</fileName>
+          <default>true</default>
+        </theme>
+      </themes>
+
       <osSpecifics>
         <osSpecific>
           <osFamily>redhat7,amazon2015,redhat6,suse11,suse12</osFamily>

http://git-wip-us.apache.org/repos/asf/ambari/blob/f095b959/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/themes/theme.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/themes/theme.json b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/themes/theme.json
new file mode 100644
index 0000000..9316a6e
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/themes/theme.json
@@ -0,0 +1,288 @@
+{
+  "name": "default",
+  "description": "Default theme for AMS service",
+  "configuration": {
+    "layouts": [
+      {
+        "name": "default",
+        "tabs": [
+          {
+            "name": "settings",
+            "display-name": "Settings",
+            "layout": {
+              "tab-columns": "2",
+              "tab-rows": "1",
+              "sections": [
+                {
+                  "name": "section-collector",
+                  "display-name": "Collector",
+                  "row-index": "0",
+                  "column-index": "0",
+                  "row-span": "1",
+                  "column-span": "1",
+                  "section-columns": "1",
+                  "section-rows": "1",
+                  "subsections": [
+                    {
+                      "name": "subsection-collector-col1",
+                      "row-index": "0",
+                      "column-index": "0",
+                      "row-span": "1",
+                      "column-span": "1"
+                    }
+                  ]
+                },
+                {
+                  "name": "section-hbase",
+                  "display-name": "AMS HBase",
+                  "row-index": "0",
+                  "column-index": "2",
+                  "row-span": "1",
+                  "column-span": "2",
+                  "section-columns": "2",
+                  "section-rows": "1",
+                  "subsections": [
+                    {
+                      "name": "subsection-hbase-col1",
+                      "row-index": "0",
+                      "column-index": "0",
+                      "row-span": "1",
+                      "column-span": "1"
+                    },
+                    {
+                      "name": "subsection-hbase-col2",
+                      "row-index": "0",
+                      "column-index": "0",
+                      "row-span": "1",
+                      "column-span": "1"
+                    }
+                  ]
+                },
+                {
+                  "name": "section-hbase-disk",
+                  "display-name": "Storage",
+                  "row-index": "1",
+                  "column-index": "0",
+                  "row-span": "1",
+                  "column-span": "3",
+                  "section-columns": "3",
+                  "section-rows": "1",
+                  "subsections": [
+                    {
+                      "name": "subsection-hbase-disk-col1",
+                      "row-index": "0",
+                      "column-index": "0",
+                      "row-span": "1",
+                      "column-span": "1"
+                    },
+                    {
+                      "name": "subsection-hbase-disk-col2",
+                      "row-index": "0",
+                      "column-index": "1",
+                      "row-span": "1",
+                      "column-span": "1"
+                    },
+                    {
+                      "name": "subsection-hbase-disk-col3",
+                      "row-index": "0",
+                      "column-index": "1",
+                      "row-span": "1",
+                      "column-span": "1"
+                    }
+                  ]
+                }
+              ]
+            }
+          }
+        ]
+      }
+    ],
+    "placement": {
+      "configuration-layout": "default",
+      "configs": [
+        {
+          "config": "ams-site/timeline.metrics.service.operation.mode",
+          "subsection-name": "subsection-collector-col1"
+        },
+        {
+          "config": "ams-env/metrics_collector_heapsize",
+          "subsection-name": "subsection-collector-col1"
+        },
+        {
+          "config": "ams-site/timeline.metrics.whitelisting.enabled",
+          "subsection-name": "subsection-collector-col1"
+        },
+        {
+          "config": "ams-site/timeline.metrics.host.inmemory.aggregation",
+          "subsection-name": "subsection-collector-col1"
+        },
+        {
+          "config": "ams-site/timeline.metrics.service.cluster.aggregator.appIds",
+          "subsection-name": "subsection-collector-col1"
+        },
+        {
+          "config": "ams-hbase-env/hbase_master_heapsize",
+          "subsection-name": "subsection-hbase-col1"
+        },
+        {
+          "config": "ams-hbase-env/hbase_master_xmn_size",
+          "subsection-name": "subsection-hbase-col1"
+        },
+        {
+          "config": "ams-hbase-env/hbase_regionserver_heapsize",
+          "subsection-name": "subsection-hbase-col1"
+        },
+        {
+          "config": "ams-hbase-env/regionserver_xmn_size",
+          "subsection-name": "subsection-hbase-col1"
+        },
+        {
+          "config": "ams-hbase-site/hbase.hregion.memstore.flush.size",
+          "subsection-name": "subsection-hbase-col2"
+        },
+        {
+          "config": "ams-hbase-site/phoenix.query.spoolThresholdBytes",
+          "subsection-name": "subsection-hbase-col2"
+        },
+        {
+          "config": "ams-hbase-site/hbase.rootdir",
+          "subsection-name": "subsection-hbase-disk-col1"
+        },
+        {
+          "config": "ams-hbase-site/hbase.tmp.dir",
+          "subsection-name": "subsection-hbase-disk-col2"
+        },
+        {
+          "config": "ams-hbase-site/hbase.hregion.max.filesize",
+          "subsection-name": "subsection-hbase-disk-col3"
+        }
+      ]
+    },
+    "widgets": [
+      {
+        "config": "ams-site/timeline.metrics.service.operation.mode",
+        "widget": {
+          "type": "combo"
+        }
+      },
+      {
+        "config": "ams-env/metrics_collector_heapsize",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "GB"
+            }
+          ]
+        }
+      },
+      {
+        "config": "ams-site/timeline.metrics.host.inmemory.aggregation",
+        "widget": {
+          "type": "toggle"
+        }
+      },
+      {
+        "config": "ams-site/timeline.metrics.whitelisting.enabled",
+        "widget": {
+          "type": "toggle"
+        }
+      },
+      {
+        "config": "ams-site/timeline.metrics.service.cluster.aggregator.appIds",
+        "widget": {
+          "type": "text-field"
+        }
+      },
+      {
+        "config": "ams-hbase-env/hbase_master_heapsize",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "GB"
+            }
+          ]
+        }
+      },
+      {
+        "config": "ams-hbase-env/hbase_master_xmn_size",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "MB"
+            }
+          ]
+        }
+      },
+      {
+        "config": "ams-hbase-env/hbase_regionserver_heapsize",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "GB"
+            }
+          ]
+        }
+      },
+      {
+        "config": "ams-hbase-env/regionserver_xmn_size",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "MB"
+            }
+          ]
+        }
+      },
+      {
+        "config": "ams-hbase-site/hbase.hregion.memstore.flush.size",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "MB"
+            }
+          ]
+        }
+      },
+      {
+        "config": "ams-hbase-site/phoenix.query.spoolThresholdBytes",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "MB"
+            }
+          ]
+        }
+      },
+      {
+        "config": "ams-hbase-site/hbase.rootdir",
+        "widget": {
+          "type": "text-field"
+        }
+      },
+      {
+        "config": "ams-hbase-site/hbase.tmp.dir",
+        "widget": {
+          "type": "text-field"
+        }
+      },
+      {
+        "config": "ams-hbase-site/hbase.hregion.max.filesize",
+        "widget": {
+          "type": "slider",
+          "units": [
+            {
+              "unit-name": "GB"
+            }
+          ]
+        }
+      }
+    ]
+  }
+}
\ No newline at end of file