You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by jo...@apache.org on 2016/10/03 18:21:43 UTC

[01/18] ambari git commit: AMBARI-18490. Need to click Cancel twice to dismiss Set Rack dialog when no value entered (alexantonenko)

Repository: ambari
Updated Branches:
  refs/heads/branch-feature-AMBARI-18456 d53c9e2ee -> aee49b67f


AMBARI-18490. Need to click Cancel twice to dismiss Set Rack dialog when no value entered (alexantonenko)


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

Branch: refs/heads/branch-feature-AMBARI-18456
Commit: 84c172cb84da6b3ad3c855bfdb94fc6ff528f191
Parents: 5fa2d9b
Author: Alex Antonenko <hi...@gmail.com>
Authored: Thu Sep 29 22:38:36 2016 +0300
Committer: Alex Antonenko <hi...@gmail.com>
Committed: Thu Sep 29 22:38:47 2016 +0300

----------------------------------------------------------------------
 ambari-web/app/utils/hosts.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/84c172cb/ambari-web/app/utils/hosts.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/hosts.js b/ambari-web/app/utils/hosts.js
index e4a437c..0aebe89 100644
--- a/ambari-web/app/utils/hosts.js
+++ b/ambari-web/app/utils/hosts.js
@@ -228,7 +228,7 @@ module.exports = {
     return App.ModalPopup.show({
       header: Em.I18n.t('hosts.host.details.setRackId'),
       disablePrimary: true,
-      rackId: rackId,
+      rackId: rackId ? rackId : "",
       bodyClass: Em.View.extend({
         templateName: require('templates/main/host/rack_id_popup'),
         errorMessage: null,


[17/18] ambari git commit: AMBARI-18514. Graph details popup: file formats dropdown isn't collapsed on text link click (alexantonenko)

Posted by jo...@apache.org.
AMBARI-18514. Graph details popup: file formats dropdown isn't collapsed on text link click (alexantonenko)


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

Branch: refs/heads/branch-feature-AMBARI-18456
Commit: f2bcbbe70008303afdefd7c218b4954127ebe978
Parents: 7b15e38
Author: Alex Antonenko <hi...@gmail.com>
Authored: Mon Oct 3 15:34:23 2016 +0300
Committer: Alex Antonenko <hi...@gmail.com>
Committed: Mon Oct 3 20:20:56 2016 +0300

----------------------------------------------------------------------
 ambari-web/app/views/common/chart/linear_time.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/f2bcbbe7/ambari-web/app/views/common/chart/linear_time.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/chart/linear_time.js b/ambari-web/app/views/common/chart/linear_time.js
index 80a30d5..8eaf6f3 100644
--- a/ambari-web/app/views/common/chart/linear_time.js
+++ b/ambari-web/app/views/common/chart/linear_time.js
@@ -974,7 +974,7 @@ App.ChartLinearTimeView = Ember.View.extend(App.ExportMetricsMixin, {
             title: Em.I18n.t('common.export')
           });
           this.$().closest('.modal').on('click', function (event) {
-            if (!($(event.target).is('.corner-icon, .icon-save, .export-graph-list-container, .export-graph-list-container *'))) {
+            if (!($(event.target).is('.corner-icon, .corner-icon span, .icon-save, .export-graph-list-container, .export-graph-list-container *'))) {
               popupBody.set('isExportMenuHidden', true);
             }
           });


[06/18] ambari git commit: AMBARI-18497 - [Grafana] Replicate HBase dashboards for System(AMS) HBase (prajwal)

Posted by jo...@apache.org.
AMBARI-18497 - [Grafana] Replicate HBase dashboards for System(AMS) HBase (prajwal)


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

Branch: refs/heads/branch-feature-AMBARI-18456
Commit: 4170ff49f72eae596fe1e9f0a4afd03649b98e16
Parents: d8cd374
Author: Prajwal Rao <pr...@gmail.com>
Authored: Thu Sep 29 14:23:34 2016 -0700
Committer: Prajwal Rao <pr...@gmail.com>
Committed: Thu Sep 29 14:23:34 2016 -0700

----------------------------------------------------------------------
 .../default/grafana-ams-hbase-home.json         | 2558 +++++
 .../default/grafana-ams-hbase-misc.json         | 1680 ++++
 .../grafana-ams-hbase-regionservers.json        | 9063 ++++++++++++++++++
 3 files changed, 13301 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/4170ff49/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/files/grafana-dashboards/default/grafana-ams-hbase-home.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/files/grafana-dashboards/default/grafana-ams-hbase-home.json b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/files/grafana-dashboards/default/grafana-ams-hbase-home.json
new file mode 100644
index 0000000..c9edd62
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/files/grafana-dashboards/default/grafana-ams-hbase-home.json
@@ -0,0 +1,2558 @@
+{
+  "id": null,
+  "title": "AMS HBase - Home",
+  "originalTitle": "AMS HBase - Home",
+  "tags": [
+    "ams-hbase"
+  ],
+  "style": "dark",
+  "timezone": "browser",
+  "editable": true,
+  "hideControls": false,
+  "sharedCrosshair": false,
+  "rows": [
+    {
+      "collapse": false,
+      "editable": true,
+      "height": "25px",
+      "panels": [
+        {
+          "content": "<h4 align=\"center\">Metrics to see the overall status of AMS-HBase. Click on each row title to expand on demand to look at various metrics. </h4>\n<h6 style=\"color:red;\" align=\"center\">This dashboard is managed by Ambari.  You may lose any changes made to this dashboard.  If you want to customize, make your own copy.</h6>",
+          "editable": true,
+          "error": false,
+          "id": 22,
+          "isNew": true,
+          "links": [],
+          "mode": "html",
+          "span": 12,
+          "style": {},
+          "title": "",
+          "type": "text"
+        }
+      ],
+      "showTitle": false,
+      "title": "Description"
+    },
+    {
+      "collapse": false,
+      "editable": true,
+      "height": "25px",
+      "panels": [
+        {
+          "cacheTimeout": null,
+          "colorBackground": false,
+          "colorValue": false,
+          "colors": [
+            "rgba(245, 54, 54, 0.9)",
+            "rgba(237, 129, 40, 0.89)",
+            "rgba(50, 172, 45, 0.97)"
+          ],
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "format": "none",
+          "hideTimeOverride": true,
+          "id": 2,
+          "interval": null,
+          "isNew": true,
+          "links": [],
+          "maxDataPoints": 100,
+          "nullPointMode": "connected",
+          "nullText": null,
+          "postfix": "",
+          "postfixFontSize": "100%",
+          "prefix": "",
+          "prefixFontSize": "100%",
+          "span": 3,
+          "sparkline": {
+            "fillColor": "rgba(31, 118, 189, 0.18)",
+            "full": true,
+            "lineColor": "rgb(31, 120, 193)",
+            "show": true
+          },
+          "targets": [
+            {
+              "aggregator": "max",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "master.Server.numRegionServers",
+              "precision": "default",
+              "refId": "A"
+            }
+          ],
+          "thresholds": "",
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Num RegionServers",
+          "type": "singlestat",
+          "valueFontSize": "100%",
+          "valueMaps": [
+            {
+              "op": "=",
+              "text": "N/A",
+              "value": "null"
+            }
+          ],
+          "valueName": "current"
+        },
+        {
+          "cacheTimeout": null,
+          "colorBackground": false,
+          "colorValue": false,
+          "colors": [
+            "rgba(245, 54, 54, 0.9)",
+            "rgba(237, 129, 40, 0.89)",
+            "rgba(50, 172, 45, 0.97)"
+          ],
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "format": "none",
+          "hideTimeOverride": true,
+          "id": 3,
+          "interval": null,
+          "isNew": true,
+          "links": [],
+          "maxDataPoints": 100,
+          "nullPointMode": "connected",
+          "nullText": null,
+          "postfix": "",
+          "postfixFontSize": "100%",
+          "prefix": "",
+          "prefixFontSize": "100%",
+          "span": 3,
+          "sparkline": {
+            "fillColor": "rgba(31, 118, 189, 0.18)",
+            "full": true,
+            "lineColor": "rgb(31, 120, 193)",
+            "show": true
+          },
+          "targets": [
+            {
+              "aggregator": "max",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "master.Server.numDeadRegionServers",
+              "precision": "default",
+              "refId": "A"
+            }
+          ],
+          "thresholds": "",
+          "timeFrom": null,
+          "title": "Num Dead RegionServers",
+          "type": "singlestat",
+          "valueFontSize": "100%",
+          "valueMaps": [
+            {
+              "op": "=",
+              "text": "N/A",
+              "value": "null"
+            }
+          ],
+          "valueName": "current"
+        },
+        {
+          "cacheTimeout": null,
+          "colorBackground": false,
+          "colorValue": false,
+          "colors": [
+            "rgba(245, 54, 54, 0.9)",
+            "rgba(237, 129, 40, 0.89)",
+            "rgba(50, 172, 45, 0.97)"
+          ],
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "format": "none",
+          "hideTimeOverride": true,
+          "id": 5,
+          "interval": null,
+          "isNew": true,
+          "links": [],
+          "maxDataPoints": 100,
+          "nullPointMode": "connected",
+          "nullText": null,
+          "postfix": "",
+          "postfixFontSize": "50%",
+          "prefix": "",
+          "prefixFontSize": "50%",
+          "span": 3,
+          "sparkline": {
+            "fillColor": "rgba(31, 118, 189, 0.18)",
+            "full": true,
+            "lineColor": "rgb(31, 120, 193)",
+            "show": true
+          },
+          "targets": [
+            {
+              "aggregator": "sum",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "hosts": "",
+              "metric": "regionserver.Server.regionCount",
+              "precision": "default",
+              "refId": "A"
+            }
+          ],
+          "thresholds": "",
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Num Regions",
+          "type": "singlestat",
+          "valueFontSize": "100%",
+          "valueMaps": [
+            {
+              "op": "=",
+              "text": "N/A",
+              "value": "null"
+            }
+          ],
+          "valueName": "current"
+        },
+        {
+          "cacheTimeout": null,
+          "colorBackground": false,
+          "colorValue": false,
+          "colors": [
+            "rgba(245, 54, 54, 0.9)",
+            "rgba(237, 129, 40, 0.89)",
+            "rgba(50, 172, 45, 0.97)"
+          ],
+          "datasource": null,
+          "decimals": 1,
+          "editable": true,
+          "error": false,
+          "format": "none",
+          "hideTimeOverride": true,
+          "id": 4,
+          "interval": null,
+          "isNew": true,
+          "links": [],
+          "maxDataPoints": 100,
+          "nullPointMode": "connected",
+          "nullText": null,
+          "postfix": "",
+          "postfixFontSize": "50%",
+          "prefix": "",
+          "prefixFontSize": "50%",
+          "span": 3,
+          "sparkline": {
+            "fillColor": "rgba(31, 118, 189, 0.18)",
+            "full": true,
+            "lineColor": "rgb(31, 120, 193)",
+            "show": true
+          },
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "hosts": "",
+              "metric": "master.Server.averageLoad",
+              "precision": "default",
+              "refId": "A"
+            }
+          ],
+          "thresholds": "",
+          "timeFrom": null,
+          "title": "Avg Num Regions per RegionServer",
+          "type": "singlestat",
+          "valueFontSize": "100%",
+          "valueMaps": [
+            {
+              "op": "=",
+              "text": "N/A",
+              "value": "null"
+            }
+          ],
+          "valueName": "current"
+        }
+      ],
+      "showTitle": false,
+      "title": "RegionServers / Regions"
+    },
+    {
+      "collapse": true,
+      "editable": true,
+      "height": "200px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 1,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "sum",
+              "alias": "regionCount",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "hosts": "",
+              "metric": "regionserver.Server.regionCount",
+              "precision": "default",
+              "refId": "A"
+            },
+            {
+              "aggregator": "sum",
+              "alias": "storeCount",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.storeCount",
+              "precision": "default",
+              "refId": "B"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Num Regions / Stores - Total",
+          "tooltip": {
+            "shared": true,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 6,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "storeFileCount",
+              "yaxis": 2
+            }
+          ],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "sum",
+              "alias": "storeFileSize",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.storeFileSize",
+              "precision": "default",
+              "refId": "A"
+            },
+            {
+              "aggregator": "sum",
+              "alias": "storeFileCount",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.storeFileCount",
+              "precision": "default",
+              "refId": "B"
+            },
+            {
+              "aggregator": "sum",
+              "alias": "storeFileIndexSize",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.storeFileIndexSize",
+              "precision": "default",
+              "refId": "C"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "staticIndexSize",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.staticIndexSize",
+              "precision": "default",
+              "refId": "D"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "staticBloomSize",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.staticBloomSize",
+              "precision": "default",
+              "refId": "E"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Store File Size / Count - Total",
+          "tooltip": {
+            "shared": true,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "bytes",
+            "short"
+          ]
+        }
+      ],
+      "showTitle": true,
+      "title": "Num Regions / Stores"
+    },
+    {
+      "collapse": true,
+      "editable": true,
+      "height": "250px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 7,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "alias": "totalRequestCount",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.totalRequestCount",
+              "precision": "default",
+              "refId": "B",
+              "transform": "rate"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "readRequestCount",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.readRequestCount",
+              "precision": "default",
+              "refId": "C",
+              "transform": "rate"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "writeRequestCount",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.writeRequestCount",
+              "precision": "default",
+              "refId": "D",
+              "transform": "rate"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "rpcCount",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.RegionServer.TotalCallTime_num_ops",
+              "precision": "default",
+              "refId": "E",
+              "transform": "rate"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Num Requests - Total",
+          "tooltip": {
+            "shared": true,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ops",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 8,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "hideEmpty": false,
+            "hideZero": false,
+            "max": false,
+            "min": false,
+            "rightSide": false,
+            "show": true,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": true,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "alias": "getCount",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Get_num_ops",
+              "precision": "default",
+              "refId": "A",
+              "transform": "rate"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "scanNextCount",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.ScanNext_num_ops",
+              "precision": "default",
+              "refId": "B",
+              "transform": "rate"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "mutateCount",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Mutate_num_ops",
+              "precision": "default",
+              "refId": "C",
+              "transform": "rate"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "deleteCount",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Delete_num_ops",
+              "precision": "default",
+              "refId": "D",
+              "transform": "rate"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "incrementCount",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Increment_num_ops",
+              "precision": "default",
+              "refId": "E",
+              "transform": "rate"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "appendCount",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Append_num_ops",
+              "precision": "default",
+              "refId": "F",
+              "transform": "rate"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "replayCount",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Replay_num_ops",
+              "precision": "default",
+              "refId": "H",
+              "transform": "rate"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Num Request - Breakdown - Total",
+          "tooltip": {
+            "shared": true,
+            "value_type": "individual"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ops",
+            "short"
+          ]
+        }
+      ],
+      "showTitle": true,
+      "title": "Num Requests"
+    },
+    {
+      "collapse": true,
+      "editable": true,
+      "height": "200px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 10,
+          "isNew": true,
+          "leftYAxisLabel": "",
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "alias": "MemHeapMax",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "hosts": "",
+              "metric": "jvm.RegionServer.JvmMetrics.MemHeapMaxM",
+              "precision": "default",
+              "refId": "A"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "MemHeapUsed",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "hosts": "",
+              "metric": "jvm.RegionServer.JvmMetrics.MemHeapUsedM",
+              "precision": "default",
+              "refId": "B"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "MemHeapCommitted",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "hosts": "",
+              "metric": "jvm.RegionServer.JvmMetrics.MemHeapCommittedM",
+              "precision": "default",
+              "refId": "C"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "MemNonHeapMax",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "hosts": "",
+              "metric": "jvm.RegionServer.JvmMetrics.MemNonHeapMaxM",
+              "precision": "default",
+              "refId": "D"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "MemNonHeapUsed",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "hosts": "",
+              "metric": "jvm.RegionServer.JvmMetrics.MemNonHeapUsedM",
+              "precision": "default",
+              "refId": "E"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "MemNonHeapCommitted",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "jvm.RegionServer.JvmMetrics.MemNonHeapCommittedM",
+              "precision": "default",
+              "refId": "F"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "RegionServer Memory - Average",
+          "tooltip": {
+            "shared": true,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "mbytes",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 11,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "alias": "MemNonHeapMax",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "jvm.RegionServer.JvmMetrics.MemNonHeapMaxM",
+              "precision": "default",
+              "refId": "A"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "MemNonHeapUsed",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "jvm.RegionServer.JvmMetrics.MemNonHeapUsedM",
+              "precision": "default",
+              "refId": "B"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "MemNonHeapCommitted",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "jvm.RegionServer.JvmMetrics.MemNonHeapCommittedM",
+              "precision": "default",
+              "refId": "C"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "RegionServer Offheap Memory - Average",
+          "tooltip": {
+            "shared": true,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "mbytes",
+            "short"
+          ]
+        }
+      ],
+      "showTitle": true,
+      "title": "RegionServer Memory"
+    },
+    {
+      "collapse": true,
+      "editable": true,
+      "height": "250px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 12,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": true,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "alias": "memStoreSize",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.memStoreSize",
+              "precision": "default",
+              "refId": "A"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "blockCacheSize",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "hosts": "",
+              "metric": "regionserver.Server.blockCacheSize",
+              "precision": "default",
+              "refId": "B"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "blockCacheFreeSize",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "hosts": "",
+              "metric": "regionserver.Server.blockCacheFreeSize",
+              "precision": "default",
+              "refId": "C"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Memstore / BlockCache - Average",
+          "tooltip": {
+            "shared": true,
+            "value_type": "individual"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "bytes",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 24,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "sum",
+              "alias": "blochCacheCount",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.blockCacheCount",
+              "precision": "default",
+              "refId": "A"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Num Blocks in BlockCache - Total",
+          "tooltip": {
+            "shared": true,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ]
+        }
+      ],
+      "showTitle": true,
+      "title": "Memory - MemStore / BlockCache"
+    },
+    {
+      "collapse": true,
+      "editable": true,
+      "height": "250px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": 0,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 13,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "sum",
+              "alias": "blockCacheHitCount",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.blockCacheHitCount",
+              "precision": "default",
+              "refId": "D",
+              "transform": "rate"
+            },
+            {
+              "aggregator": "sum",
+              "alias": "blockCacheMissCount",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.blockCacheMissCount",
+              "precision": "default",
+              "refId": "E",
+              "transform": "rate"
+            },
+            {
+              "aggregator": "sum",
+              "alias": "blockCacheEvictionCount",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.blockCacheEvictionCount",
+              "precision": "default",
+              "refId": "A",
+              "transform": "rate"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "BlockCache Hit / Miss /s - Total",
+          "tooltip": {
+            "shared": true,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ops",
+            "percent"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": 0,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 23,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "alias": "blockCacheExpressHitPercent",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.blockCacheExpressHitPercent",
+              "precision": "default",
+              "refId": "C"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "blockCacheCountHitPercent",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.blockCacheCountHitPercent",
+              "precision": "default",
+              "refId": "B"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "BlockCache Hit Percent - Average",
+          "tooltip": {
+            "shared": true,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "percent",
+            "percent"
+          ]
+        }
+      ],
+      "showTitle": true,
+      "title": "BlockCache"
+    },
+    {
+      "collapse": true,
+      "editable": true,
+      "height": "250px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 10,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": 0,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 14,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "regionserver.Server.Get_num_ops",
+              "yaxis": 2
+            }
+          ],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "alias": "Get_mean",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Get_mean",
+              "precision": "default",
+              "refId": "A"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Get_median",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Get_median",
+              "precision": "default",
+              "refId": "B"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Get_75th_percentile",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Get_75th_percentile",
+              "precision": "default",
+              "refId": "E"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Get_95th_percentile",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Get_95th_percentile",
+              "precision": "default",
+              "refId": "D"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Get_99th_percentile",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Get_99th_percentile",
+              "precision": "default",
+              "refId": "C"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Get_max",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Get_max",
+              "precision": "default",
+              "refId": "G"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Get_min",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Get_min",
+              "precision": "default",
+              "refId": "F"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Get_num_ops",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "hosts": "",
+              "metric": "regionserver.Server.Get_num_ops",
+              "precision": "default",
+              "refId": "H",
+              "transform": "rate"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Get Latencies - Average",
+          "tooltip": {
+            "shared": true,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ms",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 10,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": 0,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 15,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "regionserver.Server.Mutate_num_ops",
+              "yaxis": 2
+            }
+          ],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "alias": "Mutate_mean",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Mutate_mean",
+              "precision": "default",
+              "refId": "A"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Mutate_median",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Mutate_median",
+              "precision": "default",
+              "refId": "B"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Mutate_75th_percentile",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Mutate_75th_percentile",
+              "precision": "default",
+              "refId": "E"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Mutate_95th_percentile",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Mutate_95th_percentile",
+              "precision": "default",
+              "refId": "D"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Mutate_99th_percentile",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Mutate_99th_percentile",
+              "precision": "default",
+              "refId": "C"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Mutate_max",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Mutate_max",
+              "precision": "default",
+              "refId": "G"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Mutate_min",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Mutate_min",
+              "precision": "default",
+              "refId": "F"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Mutate_num_ops",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Mutate_num_ops",
+              "precision": "default",
+              "refId": "H",
+              "transform": "rate"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Mutate Latencies - Average",
+          "tooltip": {
+            "shared": true,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ms",
+            "short"
+          ]
+        }
+      ],
+      "showTitle": true,
+      "title": "Operation Latencies - Get / Mutate"
+    },
+    {
+      "collapse": true,
+      "editable": true,
+      "height": "250px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 10,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": 0,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 16,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "regionserver.Server.Delete_num_ops",
+              "yaxis": 2
+            }
+          ],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "alias": "Delete_mean",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Delete_mean",
+              "precision": "default",
+              "refId": "A"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Delete_median",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Delete_median",
+              "precision": "default",
+              "refId": "B"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Delete_75th_percentile",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Delete_75th_percentile",
+              "precision": "default",
+              "refId": "E"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Delete_95th_percentile",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Delete_95th_percentile",
+              "precision": "default",
+              "refId": "D"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Delete_99th_percentile",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Delete_99th_percentile",
+              "precision": "default",
+              "refId": "C"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Delete_max",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Delete_max",
+              "precision": "default",
+              "refId": "G"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Delete_min",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Delete_min",
+              "precision": "default",
+              "refId": "F"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Delete_num_ops",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Delete_num_ops",
+              "precision": "default",
+              "refId": "H",
+              "transform": "rate"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Delete Latencies - Average",
+          "tooltip": {
+            "shared": true,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ms",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 10,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": 0,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 17,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "regionserver.Server.Increment_num_ops",
+              "yaxis": 2
+            }
+          ],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "alias": "Increment_mean",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Increment_mean",
+              "precision": "default",
+              "refId": "A"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Increment_median",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Increment_median",
+              "precision": "default",
+              "refId": "B"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Increment_75th_percentile",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Increment_75th_percentile",
+              "precision": "default",
+              "refId": "E"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Increment_95th_percentile",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Increment_95th_percentile",
+              "precision": "default",
+              "refId": "D"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Increment_99th_percentile",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Increment_99th_percentile",
+              "precision": "default",
+              "refId": "C"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Increment_max",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Increment_max",
+              "precision": "default",
+              "refId": "G"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Increment_min",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Increment_min",
+              "precision": "default",
+              "refId": "F"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Increment_num_ops",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Increment_num_ops",
+              "precision": "default",
+              "refId": "H",
+              "transform": "rate"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Increment Latencies - Average",
+          "tooltip": {
+            "shared": true,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ms",
+            "short"
+          ]
+        }
+      ],
+      "showTitle": true,
+      "title": "Operation Latencies - Delete / Increment"
+    },
+    {
+      "collapse": true,
+      "editable": true,
+      "height": "250px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 10,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": 0,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 18,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "regionserver.Server.Append_num_ops",
+              "yaxis": 2
+            }
+          ],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "alias": "Append_mean",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Append_mean",
+              "precision": "default",
+              "refId": "A"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Append_median",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Append_median",
+              "precision": "default",
+              "refId": "B"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Append_75th_percentile",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Append_75th_percentile",
+              "precision": "default",
+              "refId": "E"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Append_95th_percentile",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Append_95th_percentile",
+              "precision": "default",
+              "refId": "D"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Append_99th_percentile",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Append_99th_percentile",
+              "precision": "default",
+              "refId": "C"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Append_max",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Append_max",
+              "precision": "default",
+              "refId": "G"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Append_min",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Append_min",
+              "precision": "default",
+              "refId": "F"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Append_num_ops",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Append_num_ops",
+              "precision": "default",
+              "refId": "H",
+              "transform": "rate"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Append Latencies - Average",
+          "tooltip": {
+            "shared": true,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ms",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 10,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": 0,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 19,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "regionserver.Server.Replay_num_ops",
+              "yaxis": 2
+            }
+          ],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "alias": "Replay_mean",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Replay_mean",
+              "precision": "default",
+              "refId": "A"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Replay_median",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Replay_median",
+              "precision": "default",
+              "refId": "B"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Replay_75th_percentile",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Replay_75th_percentile",
+              "precision": "default",
+              "refId": "E"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Replay_95th_percentile",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Replay_95th_percentile",
+              "precision": "default",
+              "refId": "D"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Replay_99th_percentile",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Replay_99th_percentile",
+              "precision": "default",
+              "refId": "C"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Replay_max",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Replay_max",
+              "precision": "default",
+              "refId": "G"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Replay_min",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Replay_min",
+              "precision": "default",
+              "refId": "F"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "Replay_num_ops",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Replay_num_ops",
+              "precision": "default",
+              "refId": "H",
+              "transform": "rate"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Replay Latencies - Average",
+          "tooltip": {
+            "shared": true,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ms",
+            "short"
+          ]
+        }
+      ],
+      "showTitle": true,
+      "title": "Operation Latencies - Append / Replay"
+    },
+    {
+      "collapse": true,
+      "editable": true,
+      "height": "250px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 20,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "regionserver.RegionServer.queueSize",
+              "yaxis": 2
+            }
+          ],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "sum",
+              "alias": "rpcCount",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "hide": false,
+              "metric": "master.Master.TotalCallTime_num_ops",
+              "precision": "default",
+              "refId": "C",
+              "transform": "rate"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "numActiveHandler",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.RegionServer.numActiveHandler",
+              "precision": "default",
+              "refId": "A"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "numOpenConnections",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.RegionServer.numOpenConnections",
+              "precision": "default",
+              "refId": "B"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "RegionServer RPC - Average",
+          "tooltip": {
+            "shared": true,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "bytes"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 25,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "queueSize",
+              "yaxis": 2
+            }
+          ],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "alias": "numCallsInGeneralQueue",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.RegionServer.numCallsInGeneralQueue",
+              "precision": "default",
+              "refId": "C"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "numCallsInPriorityQueue",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "hide": false,
+              "metric": "regionserver.RegionServer.numCallsInPriorityQueue",
+              "precision": "default",
+              "refId": "D"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "numCallsInReplicationQueue",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.RegionServer.numCallsInReplicationQueue",
+              "precision": "default",
+              "refId": "E"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "queueSize",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.RegionServer.queueSize",
+              "precision": "default",
+              "refId": "G"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "RegionServer RPC Queues - Average",
+          "tooltip": {
+            "shared": true,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "bytes"
+          ]
+        }
+      ],
+      "showTitle": true,
+      "title": "RegionServer RPC"
+    },
+    {
+      "collapse": true,
+      "editable": true,
+      "height": "250px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 21,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "numActiveHandler",
+              "yaxis": 2
+            }
+          ],
+          "span": 12,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "alias": "receivedBytes",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.RegionServer.receivedBytes",
+              "precision": "default",
+              "refId": "A",
+              "transform": "rate"
+            },
+            {
+              "aggregator": "avg",
+              "alias": "sentBytes",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.RegionServer.sentBytes",
+              "precision": "default",
+              "refId": "B",
+              "transform": "rate"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "RegionServer RPC Throughput - Average",
+          "tooltip": {
+            "shared": true,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "Bps",
+            "short"
+          ]
+        }
+      ],
+      "showTitle": true,
+      "title": "RegionServer RPC"
+    }
+  ],
+  "time": {
+    "from": "now-6h",
+    "to": "now"
+  },
+  "timepicker": {
+    "now": true,
+    "refresh_intervals": [
+      "5s",
+      "10s",
+      "30s",
+      "1m",
+      "5m",
+      "15m",
+      "30m",
+      "1h",
+      "2h",
+      "1d"
+    ],
+    "time_options": [
+      "5m",
+      "15m",
+      "1h",
+      "6h",
+      "12h",
+      "24h",
+      "2d",
+      "7d",
+      "30d"
+    ]
+  },
+  "templating": {
+    "list": []
+  },
+  "annotations": {
+    "list": []
+  },
+  "schemaVersion": 8,
+  "version": 0,
+  "links": [
+    {
+      "asDropdown": true,
+      "icon": "external link",
+      "keepTime": true,
+      "tags": [
+        "ams-hbase"
+      ],
+      "title": "AMS-HBase Dashboards",
+      "type": "dashboards"
+    }
+  ]
+}
\ No newline at end of file


[13/18] ambari git commit: AMBARI-18505. Ambari Status commands should enforce a timeout < heartbeat interval (aonishuk)

Posted by jo...@apache.org.
AMBARI-18505. Ambari Status commands should enforce a timeout < heartbeat interval (aonishuk)


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

Branch: refs/heads/branch-feature-AMBARI-18456
Commit: dfa16136d0ceaba1e2fdb67fbc4d9dc3e3ec49f5
Parents: 324107d
Author: Andrew Onishuk <ao...@hortonworks.com>
Authored: Mon Oct 3 12:28:46 2016 +0300
Committer: Andrew Onishuk <ao...@hortonworks.com>
Committed: Mon Oct 3 12:28:46 2016 +0300

----------------------------------------------------------------------
 ambari-agent/conf/unix/ambari-agent.ini         |  1 +
 .../src/main/python/ambari_agent/ActionQueue.py | 22 ++++++++++++++++-
 .../ambari_agent/PythonReflectiveExecutor.py    | 25 +++++++++++++++-----
 .../test/python/ambari_agent/TestActionQueue.py |  3 ++-
 4 files changed, 43 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/dfa16136/ambari-agent/conf/unix/ambari-agent.ini
----------------------------------------------------------------------
diff --git a/ambari-agent/conf/unix/ambari-agent.ini b/ambari-agent/conf/unix/ambari-agent.ini
index 914e09a..1c39c24 100644
--- a/ambari-agent/conf/unix/ambari-agent.ini
+++ b/ambari-agent/conf/unix/ambari-agent.ini
@@ -32,6 +32,7 @@ tolerate_download_failures=true
 run_as_user=root
 parallel_execution=0
 alert_grace_period=5
+status_command_timeout=2
 alert_kinit_timeout=14400000
 system_resource_overrides=/etc/resource_overrides
 ; memory_threshold_soft_mb=400

http://git-wip-us.apache.org/repos/asf/ambari/blob/dfa16136/ambari-agent/src/main/python/ambari_agent/ActionQueue.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/python/ambari_agent/ActionQueue.py b/ambari-agent/src/main/python/ambari_agent/ActionQueue.py
index f104939..86918e5 100644
--- a/ambari-agent/src/main/python/ambari_agent/ActionQueue.py
+++ b/ambari-agent/src/main/python/ambari_agent/ActionQueue.py
@@ -29,6 +29,7 @@ import time
 import signal
 
 from AgentException import AgentException
+from PythonReflectiveExecutor import PythonReflectiveExecutor
 from LiveStatus import LiveStatus
 from ActualConfigHandler import ActualConfigHandler
 from CommandStatusDict import CommandStatusDict
@@ -82,9 +83,11 @@ class ActionQueue(threading.Thread):
     self.controller = controller
     self.configTags = {}
     self._stop = threading.Event()
+    self.hangingStatusCommands = {}
     self.tmpdir = config.get('agent', 'prefix')
     self.customServiceOrchestrator = CustomServiceOrchestrator(config, controller)
     self.parallel_execution = config.get_parallel_exec_option()
+    self.status_command_timeout = int(self.config.get('agent', 'status_command_timeout', 5))
     if self.parallel_execution == 1:
       logger.info("Parallel execution is enabled, will execute agent commands in parallel")
 
@@ -225,7 +228,24 @@ class ActionQueue(threading.Thread):
           if self.controller.recovery_manager.enabled():
             self.controller.recovery_manager.stop_execution_command()
       elif commandType == self.STATUS_COMMAND:
-        self.execute_status_command(command)
+        component_name = command['componentName']
+
+        if component_name in self.hangingStatusCommands and not self.hangingStatusCommands[component_name].isAlive():
+          del self.hangingStatusCommands[component_name]
+
+        if not component_name in self.hangingStatusCommands:
+          thread = threading.Thread(target = self.execute_status_command, args = (command,))
+          thread.daemon = True # hanging status commands should not be prevent ambari-agent from stopping
+          thread.start()
+          thread.join(timeout=self.status_command_timeout)
+
+          if thread.isAlive():
+            # Force context to reset to normal. By context we mean sys.path, imports, logger setting, etc. They are set by specific status command, and are not relevant to ambari-agent.
+            PythonReflectiveExecutor.last_context.revert()
+            logger.warn("Command {0} for {1} is running for more than {2} seconds. Skipping it for current pack of status commands.".format(commandType, component_name, self.status_command_timeout))
+            self.hangingStatusCommands[component_name] = thread
+        else:
+          logger.info("Not running {0} for {1}, because previous one is still running.".format(commandType, component_name))
       else:
         logger.error("Unrecognized command " + pprint.pformat(command))
     except Exception:

http://git-wip-us.apache.org/repos/asf/ambari/blob/dfa16136/ambari-agent/src/main/python/ambari_agent/PythonReflectiveExecutor.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/python/ambari_agent/PythonReflectiveExecutor.py b/ambari-agent/src/main/python/ambari_agent/PythonReflectiveExecutor.py
index 655b2fc..b476671 100644
--- a/ambari-agent/src/main/python/ambari_agent/PythonReflectiveExecutor.py
+++ b/ambari-agent/src/main/python/ambari_agent/PythonReflectiveExecutor.py
@@ -53,7 +53,9 @@ class PythonReflectiveExecutor(PythonExecutor):
     returncode = 1
 
     try:
-      with PythonContext(script_dir, pythonCommand):
+      current_context = PythonContext(script_dir, pythonCommand)
+      PythonReflectiveExecutor.last_context = current_context
+      with current_context:
         imp.load_source('__main__', script)
     except SystemExit as e:
       returncode = e.code
@@ -62,7 +64,10 @@ class PythonReflectiveExecutor(PythonExecutor):
     except (ClientComponentHasNoStatus, ComponentIsNotRunning):
       logger.debug("Reflective command failed with exception:", exc_info=1)
     except Exception:
-      logger.info("Reflective command failed with exception:", exc_info=1)
+      if current_context.is_forced_revert:
+        logger.info("Hanging status command finished its execution")
+      else:
+        logger.info("Reflective command failed with exception:", exc_info=1)
     else: 
       returncode = 0
       
@@ -76,6 +81,8 @@ class PythonContext:
   def __init__(self, script_dir, pythonCommand):
     self.script_dir = script_dir
     self.pythonCommand = pythonCommand
+    self.is_reverted = False
+    self.is_forced_revert = False
     
   def __enter__(self):
     self.old_sys_path = copy.copy(sys.path)
@@ -88,12 +95,18 @@ class PythonContext:
     sys.argv = self.pythonCommand[1:]
 
   def __exit__(self, exc_type, exc_val, exc_tb):
-    sys.path = self.old_sys_path
-    sys.argv = self.old_agv
-    logging.disable(self.old_logging_disable)
-    self.revert_sys_modules(self.old_sys_modules)
+    self.revert(is_forced_revert=False)
     return False
   
+  def revert(self, is_forced_revert=True):
+    if not self.is_reverted:
+      self.is_forced_revert = is_forced_revert
+      self.is_reverted = True
+      sys.path = self.old_sys_path
+      sys.argv = self.old_agv
+      logging.disable(self.old_logging_disable)
+      self.revert_sys_modules(self.old_sys_modules)
+
   def revert_sys_modules(self, value):
     sys.modules.update(value)
     

http://git-wip-us.apache.org/repos/asf/ambari/blob/dfa16136/ambari-agent/src/test/python/ambari_agent/TestActionQueue.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/test/python/ambari_agent/TestActionQueue.py b/ambari-agent/src/test/python/ambari_agent/TestActionQueue.py
index 7d04d42..32773b8 100644
--- a/ambari-agent/src/test/python/ambari_agent/TestActionQueue.py
+++ b/ambari-agent/src/test/python/ambari_agent/TestActionQueue.py
@@ -225,6 +225,7 @@ class TestActionQueue(TestCase):
   retryable_command = {
     'commandType': 'EXECUTION_COMMAND',
     'role': 'NAMENODE',
+    'componentName': 'NAMENODE',
     'roleCommand': 'INSTALL',
     'commandId': '1-1',
     'taskId': 19,
@@ -322,6 +323,7 @@ class TestActionQueue(TestCase):
     }
     status_command = {
       'commandType' : ActionQueue.STATUS_COMMAND,
+      'componentName': 'NAMENODE'
     }
     wrong_command = {
       'commandType' : "SOME_WRONG_COMMAND",
@@ -1126,7 +1128,6 @@ class TestActionQueue(TestCase):
     self.assertTrue(runCommand_mock.called)
     self.assertEqual(2, runCommand_mock.call_count)
     self.assertEqual(1, sleep_mock.call_count)
-    sleep_mock.assert_has_calls([call(1)], False)
     runCommand_mock.assert_has_calls([
       call(command, os.sep + 'tmp' + os.sep + 'ambari-agent' + os.sep + 'output-19.txt',
            os.sep + 'tmp' + os.sep + 'ambari-agent' + os.sep + 'errors-19.txt', override_output_files=True, retry=False),


[05/18] ambari git commit: AMBARI-18497 - [Grafana] Replicate HBase dashboards for System(AMS) HBase (prajwal)

Posted by jo...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/4170ff49/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/files/grafana-dashboards/default/grafana-ams-hbase-misc.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/files/grafana-dashboards/default/grafana-ams-hbase-misc.json b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/files/grafana-dashboards/default/grafana-ams-hbase-misc.json
new file mode 100644
index 0000000..4820ae3
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/files/grafana-dashboards/default/grafana-ams-hbase-misc.json
@@ -0,0 +1,1680 @@
+{
+  "id": null,
+  "title": "AMS HBase - Misc",
+  "originalTitle": "AMS HBase - Misc",
+  "tags": [
+    "ams-hbase"
+  ],
+  "style": "dark",
+  "timezone": "browser",
+  "editable": true,
+  "hideControls": false,
+  "sharedCrosshair": false,
+  "rows": [
+    {
+      "collapse": false,
+      "editable": true,
+      "height": "25px",
+      "panels": [
+        {
+          "content": "<h4 align=\"center\">Miscellaneous metrics related to AMS-HBase for troubleshooting and other purposes. Click on each row title to expand on demand to look at various metrics. </h4>\n<h6 style=\"color:red;\" align=\"center\">This dashboard is managed by Ambari.  You may lose any changes made to this dashboard.  If you want to customize, make your own copy.</h6>",
+          "editable": true,
+          "error": false,
+          "id": 1,
+          "isNew": true,
+          "links": [],
+          "mode": "html",
+          "span": 12,
+          "style": {},
+          "title": "",
+          "type": "text"
+        }
+      ],
+      "showTitle": false,
+      "title": "Description"
+    },
+    {
+      "collapse": false,
+      "editable": true,
+      "height": "250px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 19,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 4,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "master.AssignmentManger.ritCount",
+              "precision": "default",
+              "refId": "A",
+              "templatedHost": "%"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Master - Regions In Transition",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 20,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 4,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "master.AssignmentManger.ritCountOverThreshold",
+              "precision": "default",
+              "refId": "A",
+              "templatedHost": "%"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Master - Regions In Transition Longer Than Threshold Time",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 22,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 4,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "master.AssignmentManger.ritOldestAge",
+              "precision": "default",
+              "refId": "A",
+              "templatedHost": "%"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Regions In Transition Oldest Age",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ms",
+            "short"
+          ]
+        }
+      ],
+      "showTitle": true,
+      "title": "Regions In Transition"
+    },
+    {
+      "collapse": true,
+      "editable": true,
+      "height": "250px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 6,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "max",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "jvm.Master.JvmMetrics.ThreadsRunnable",
+              "precision": "default",
+              "refId": "A",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Master Num Threads - Runnable",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 13,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "max",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "jvm.RegionServer.JvmMetrics.ThreadsRunnable",
+              "precision": "default",
+              "refId": "A",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "RegionServer Num Threads - Runnable",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ]
+        }
+      ],
+      "showTitle": true,
+      "title": "Num Threads - Runnable"
+    },
+    {
+      "collapse": true,
+      "editable": true,
+      "height": "250px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 5,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "max",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "jvm.Master.JvmMetrics.ThreadsBlocked",
+              "precision": "default",
+              "refId": "A",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Master Num Threads - Blocked",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 14,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "max",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "jvm.RegionServer.JvmMetrics.ThreadsBlocked",
+              "precision": "default",
+              "refId": "A",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "RegionServer Num Threads - Blocked",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ]
+        }
+      ],
+      "showTitle": true,
+      "title": "Num Threads - Blocked"
+    },
+    {
+      "collapse": true,
+      "editable": true,
+      "height": "250px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 8,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "max",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "jvm.Master.JvmMetrics.ThreadsWaiting",
+              "precision": "default",
+              "refId": "A",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Master Num Threads - Waiting",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 15,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "max",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "jvm.RegionServer.JvmMetrics.ThreadsWaiting",
+              "precision": "default",
+              "refId": "A",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "RegionServer Num Threads - Waiting",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ]
+        }
+      ],
+      "showTitle": true,
+      "title": "Num Threads - Waiting"
+    },
+    {
+      "collapse": true,
+      "editable": true,
+      "height": "250px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 9,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "max",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "jvm.Master.JvmMetrics.ThreadsTimedWaiting",
+              "precision": "default",
+              "refId": "A",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Master Num Threads - Timed Waiting",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 16,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "max",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "jvm.RegionServer.JvmMetrics.ThreadsTimedWaiting",
+              "precision": "default",
+              "refId": "A",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "RegionServer Num Threads - Timed Waiting",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ]
+        }
+      ],
+      "showTitle": true,
+      "title": "Num Threads - Timed Waiting"
+    },
+    {
+      "collapse": true,
+      "editable": true,
+      "height": "250px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 7,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "max",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "jvm.Master.JvmMetrics.ThreadsNew",
+              "precision": "default",
+              "refId": "A",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Master Num Threads - New",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 17,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "max",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "jvm.RegionServer.JvmMetrics.ThreadsNew",
+              "precision": "default",
+              "refId": "A",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "RegionServer Num Threads - New",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ]
+        }
+      ],
+      "showTitle": true,
+      "title": "Num Threads - New"
+    },
+    {
+      "collapse": true,
+      "editable": true,
+      "height": "250px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 10,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "max",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "jvm.Master.JvmMetrics.ThreadsTerminated",
+              "precision": "default",
+              "refId": "A",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Master Num Threads - Terminated",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 18,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "max",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "jvm.RegionServer.JvmMetrics.ThreadsTerminated",
+              "precision": "default",
+              "refId": "A",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "RegionServer Num Threads - Terminated",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ]
+        }
+      ],
+      "showTitle": true,
+      "title": "Num Threads - Terminated"
+    },
+    {
+      "collapse": true,
+      "editable": true,
+      "height": "250px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 23,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.RegionServer.authenticationSuccesses",
+              "precision": "default",
+              "refId": "A",
+              "templatedHost": "",
+              "transform": "rate"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "RegionServer RPC Authentication Successes /s",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 24,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.RegionServer.authenticationFailures",
+              "precision": "default",
+              "refId": "A",
+              "templatedHost": "",
+              "transform": "rate"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "RegionServer RPC Authentication Failures /s",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ]
+        }
+      ],
+      "showTitle": true,
+      "title": "RPC Authentication"
+    },
+    {
+      "collapse": true,
+      "editable": true,
+      "height": "250px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 3,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.RegionServer.authorizationSuccesses",
+              "precision": "default",
+              "refId": "A",
+              "templatedHost": "",
+              "transform": "rate"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "RegionServer RPC Authorization Successes /s",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 4,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.RegionServer.authorizationFailures",
+              "precision": "default",
+              "refId": "A",
+              "templatedHost": "",
+              "transform": "rate"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "RegionServer RPC Authorization Failures /s",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ]
+        }
+      ],
+      "showTitle": true,
+      "title": "RPC Authorization"
+    },
+    {
+      "collapse": true,
+      "editable": true,
+      "height": "250px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 12,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "master.Master.exceptions",
+              "precision": "default",
+              "refId": "A",
+              "templatedHost": "",
+              "transform": "rate"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Master Exceptions /s",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 11,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.RegionServer.exceptions",
+              "precision": "default",
+              "refId": "A",
+              "templatedHost": "",
+              "transform": "rate"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "RegionServers Exceptions /s",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ]
+        }
+      ],
+      "showTitle": true,
+      "title": "Exceptions"
+    }
+  ],
+  "time": {
+    "from": "now-6h",
+    "to": "now"
+  },
+  "timepicker": {
+    "now": true,
+    "refresh_intervals": [
+      "5s",
+      "10s",
+      "30s",
+      "1m",
+      "5m",
+      "15m",
+      "30m",
+      "1h",
+      "2h",
+      "1d"
+    ],
+    "time_options": [
+      "5m",
+      "15m",
+      "1h",
+      "6h",
+      "12h",
+      "24h",
+      "2d",
+      "7d",
+      "30d"
+    ]
+  },
+  "templating": {
+    "list": [
+      {
+        "allFormat": "glob",
+        "current": {
+          "text": "ams-hbase",
+          "value": "ams-hbase"
+        },
+        "datasource": null,
+        "hideLabel": true,
+        "includeAll": false,
+        "multi": false,
+        "multiFormat": "glob",
+        "name": "components",
+        "options": [
+          {
+            "selected": true,
+            "text": "ams-hbase",
+            "value": "ams-hbase"
+          }
+        ],
+        "query": "ams-hbase",
+        "refresh": false,
+        "type": "custom"
+      },
+      {
+        "allFormat": "glob",
+        "current": {
+          "text": "All",
+          "value": ""
+        },
+        "datasource": null,
+        "hideLabel": true,
+        "includeAll": true,
+        "multi": true,
+        "multiFormat": "glob",
+        "name": "hosts",
+        "options": [
+          {
+            "text": "All",
+            "value": "",
+            "selected": true
+          }
+        ],
+        "query": "hosts",
+        "refresh": true,
+        "regex": "",
+        "type": "query"
+      }
+    ]
+  },
+  "annotations": {
+    "list": []
+  },
+  "schemaVersion": 8,
+  "version": 2,
+  "links": [
+    {
+      "asDropdown": true,
+      "icon": "external link",
+      "keepTime": true,
+      "tags": [
+        "ams-hbase"
+      ],
+      "title": "AMS-HBase Dashboards",
+      "type": "dashboards"
+    }
+  ]
+}
\ No newline at end of file


[10/18] ambari git commit: AMBARI-18494 Js error when changing config group via dropdown. (ababiichuk)

Posted by jo...@apache.org.
AMBARI-18494 Js error when changing config group via dropdown. (ababiichuk)


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

Branch: refs/heads/branch-feature-AMBARI-18456
Commit: 120505f9a2b4da35604564f0ab066ad67fecd86a
Parents: 013b7bd
Author: ababiichuk <ab...@hortonworks.com>
Authored: Thu Sep 29 17:09:42 2016 +0300
Committer: ababiichuk <ab...@hortonworks.com>
Committed: Fri Sep 30 10:33:49 2016 +0300

----------------------------------------------------------------------
 .../app/mixins/common/configs/config_recommendation_parser.js    | 2 +-
 .../mixins/common/configs/config_recommendation_parser_test.js   | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/120505f9/ambari-web/app/mixins/common/configs/config_recommendation_parser.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mixins/common/configs/config_recommendation_parser.js b/ambari-web/app/mixins/common/configs/config_recommendation_parser.js
index b88cf62..d07d108 100644
--- a/ambari-web/app/mixins/common/configs/config_recommendation_parser.js
+++ b/ambari-web/app/mixins/common/configs/config_recommendation_parser.js
@@ -82,7 +82,7 @@ App.ConfigRecommendationParser = Em.Mixin.create(App.ConfigRecommendations, {
                 propertiesToDelete.push(config);
               } else if (attr === 'visible' || stackProperty) {
                 /** update config boundaries **/
-                updateBoundariesCallback(stackProperty, attr, propertyAttributes[attr], name, fileName, configGroup);
+                updateBoundariesCallback(stackProperty, attr, propertyAttributes[attr], configGroup);
               }
             }
           }

http://git-wip-us.apache.org/repos/asf/ambari/blob/120505f9/ambari-web/test/mixins/common/configs/config_recommendation_parser_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/mixins/common/configs/config_recommendation_parser_test.js b/ambari-web/test/mixins/common/configs/config_recommendation_parser_test.js
index f08bbad..c7c24d4 100644
--- a/ambari-web/test/mixins/common/configs/config_recommendation_parser_test.js
+++ b/ambari-web/test/mixins/common/configs/config_recommendation_parser_test.js
@@ -102,12 +102,12 @@ describe('App.ConfigRecommendationParser', function() {
 
       it('updateBoundariesCallback maximum', function() {
         expect(instanceObject.updateBoundariesCallback.calledWith({ name: 'p3', filename: 'fileName1' },
-          'maximum', 100, 'p3', 'fileName1', null)).to.be.true;
+          'maximum', 100, null)).to.be.true;
       });
 
       it('updateBoundariesCallback minimum', function() {
         expect(instanceObject.updateBoundariesCallback.calledWith({ name: 'p3', filename: 'fileName1' },
-          'minimum', 1, 'p3', 'fileName1', null)).to.be.true;
+          'minimum', 1, null)).to.be.true;
       });
     });
 


[03/18] ambari git commit: AMBARI-18308. Ambari UI: Memory leak while adding and removing property. (jaimin)

Posted by jo...@apache.org.
AMBARI-18308. Ambari UI: Memory leak while adding and removing property. (jaimin)


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

Branch: refs/heads/branch-feature-AMBARI-18456
Commit: d8cd374baa7afca9cdb9e682a28ac1563870baa6
Parents: b8e3c10
Author: Jaimin Jetly <ja...@hortonworks.com>
Authored: Thu Sep 29 12:08:23 2016 -0700
Committer: Jaimin Jetly <ja...@hortonworks.com>
Committed: Thu Sep 29 13:02:39 2016 -0700

----------------------------------------------------------------------
 .../configs/service_configs_by_category_view.js | 535 +++++++++++--------
 .../service_configs_by_category_view_test.js    |   7 +-
 2 files changed, 311 insertions(+), 231 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/d8cd374b/ambari-web/app/views/common/configs/service_configs_by_category_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/configs/service_configs_by_category_view.js b/ambari-web/app/views/common/configs/service_configs_by_category_view.js
index 579348a..3eebfea 100644
--- a/ambari-web/app/views/common/configs/service_configs_by_category_view.js
+++ b/ambari-web/app/views/common/configs/service_configs_by_category_view.js
@@ -52,27 +52,102 @@ App.ServiceConfigsByCategoryView = Em.View.extend(App.UserPref, App.ConfigOverri
    * and sorted by <code>displayType</code> and <code>index</code>
    * @type {App.ServiceConfigProperty[]}
    */
-  categoryConfigs: function () {
-    // sort content type configs, sort the rest of configs based on index and then add content array at the end (as intended)
-    var categoryConfigs = this.get('categoryConfigsAll'),
-      contentOrderedArray = this.orderContentAtLast(categoryConfigs.filterProperty('displayType','content')),
-      contentFreeConfigs = categoryConfigs.filter(function(config) {return config.get('displayType')!=='content';}),
-      indexOrdered = this.sortByIndex(contentFreeConfigs);
-
-    return indexOrdered.concat(contentOrderedArray).filterProperty('isVisible', true);
-  }.property('categoryConfigsAll.@each.isVisible').cacheable(),
+  categoryConfigs: [],
 
   /**
-   * This method provides all the properties which apply
+   * This is array of all the properties which apply
    * to this category, irrespective of visibility. This
    * is helpful in Oozie/Hive database configuration, where
    * MySQL etc. database options don't show up, because
    * they were not visible initially.
    * @type {App.ServiceConfigProperty[]}
    */
-   categoryConfigsAll: function () {
-     return this.get('serviceConfigs').filterProperty('category', this.get('category.name'));
-   }.property('serviceConfigs.@each').cacheable(),
+  categoryConfigsAll: [],
+
+  didInsertElement: function () {
+    var self = this;
+    this.setCategoryConfigs();
+    this.setVisibleCategoryConfigs();
+    var isCollapsed = this.calcIsCollapsed();
+    this.set('category.isCollapsed', isCollapsed);
+    if (isCollapsed) {
+      this.$('.accordion-body').hide();
+    }
+    else {
+      this.$('.accordion-body').show();
+    }
+    $('#serviceConfig').tooltip({
+      selector: '[data-toggle=tooltip]',
+      placement: 'top'
+    });
+    this.filteredCategoryConfigs();
+    Em.run.next(function () {
+      self.updateReadOnlyFlags();
+    });
+  },
+
+  willDestroyElement: function () {
+    $('[data-toggle=tooltip]').tooltip('destroy');
+  },
+
+  setVisibleCategoryConfigsOnce: function () {
+    Em.run.once(this, 'addConfigToCategoryConfigs');
+  }.observes('categoryConfigsAll.@each.isVisible'),
+
+  setCategoryConfigs: function () {
+    var categoryConfigsAll = this.get('serviceConfigs').filterProperty('category', this.get('category.name'));
+    if (categoryConfigsAll && categoryConfigsAll.length) {
+      this.set('categoryConfigsAll',categoryConfigsAll);
+    }
+  },
+
+  setVisibleCategoryConfigs: function () {
+    var orderedCategoryConfigs = this.getOrderedCategoryConfigs();
+    this.set('categoryConfigs', orderedCategoryConfigs);
+  },
+
+  /**
+   * This method is invoked when any change in visibility of items of `categoryConfigsAll` array happens and accordingly sets `categoryConfigs` array
+   * Instead of completely resetting `categoryConfigs` array whenever this function is invoked , items are added/removed in `categoryConfigs` (which is binded in template)
+   * Doing so is observed to avoid memory leak
+   */
+  addConfigToCategoryConfigs: function () {
+    var orderedCategoryConfigs = this.getOrderedCategoryConfigs();
+    var categoryConfigs = this.get('categoryConfigs');
+    var configsToAdd = [];
+    var configsToRemove = [];
+    // If property is added or made visible then add it to visible categoryconfigs
+    orderedCategoryConfigs.forEach(function(item){
+      var isPresent = categoryConfigs.filterProperty('name', item.get('name')).findProperty('filename',item.get('filename'));
+      if (!isPresent) {
+        configsToAdd.pushObject(item);
+      }
+    }, this);
+
+    // If property is removed or made invisible, then remove it from visible categoryconfigs
+    categoryConfigs.forEach(function(item){
+      var orderedCategoryConfig = orderedCategoryConfigs.filterProperty('name', item.get('name')).findProperty('filename',item.get('filename'));
+      if (!orderedCategoryConfig) {
+        configsToRemove.pushObject(item);
+      }
+    }, this);
+
+    categoryConfigs.pushObjects(configsToAdd);
+    categoryConfigs.removeObjects(configsToRemove);
+  },
+
+  getOrderedCategoryConfigs: function() {
+    var categoryConfigsAll = this.get('categoryConfigsAll');
+    var orderedCategoryConfigs = [];
+    if (categoryConfigsAll) {
+      var contentOrderedArray = this.orderContentAtLast(categoryConfigsAll.filterProperty('displayType','content')),
+        contentFreeConfigs = categoryConfigsAll.filter(function(config) {return config.get('displayType')!=='content';}),
+        indexOrdered = this.sortByIndex(contentFreeConfigs);
+      orderedCategoryConfigs = indexOrdered.concat(contentOrderedArray).filterProperty('isVisible', true);
+    }
+    return orderedCategoryConfigs;
+  },
+
 
   /**
    * If added/removed a serverConfigObject, this property got updated.
@@ -304,30 +379,6 @@ App.ServiceConfigsByCategoryView = Em.View.extend(App.UserPref, App.ConfigOverri
     return Em.isNone(this.get('category.isCollapsed')) ? (this.get('category.name').indexOf('Advanced') != -1 || this.get('category.name').indexOf('CapacityScheduler') != -1 || this.get('category.name').indexOf('Custom') != -1) : this.get('category.isCollapsed');
   },
 
-  didInsertElement: function () {
-    var isCollapsed = this.calcIsCollapsed();
-    var self = this;
-    this.set('category.isCollapsed', isCollapsed);
-    if (isCollapsed) {
-      this.$('.accordion-body').hide();
-    }
-    else {
-      this.$('.accordion-body').show();
-    }
-    $('#serviceConfig').tooltip({
-      selector: '[data-toggle=tooltip]',
-      placement: 'top'
-    });
-    this.filteredCategoryConfigs();
-    Em.run.next(function () {
-      self.updateReadOnlyFlags();
-    });
-  },
-
-  willDestroyElement: function () {
-    $('[data-toggle=tooltip]').tooltip('destroy');
-  },
-
   /**
    * @returns {string}
    */
@@ -360,224 +411,243 @@ App.ServiceConfigsByCategoryView = Em.View.extend(App.UserPref, App.ConfigOverri
         isNotSaved: true
       }, selectedConfigGroup);
     }
-    this.get('serviceConfigs').pushObject(App.ServiceConfigProperty.create(config));
+    var serviceConfigProperty = App.ServiceConfigProperty.create(config);
+    this.get('serviceConfigs').pushObject(serviceConfigProperty);
+    this.get('categoryConfigsAll').pushObject(serviceConfigProperty);
   },
 
   /**
-   * Show popup for adding new config-properties
-   * @method showAddPropertyWindow
-   */
-  showAddPropertyWindow: function () {
-    var persistController = this;
-    var modePersistKey = this.persistKey();
-    var selectedConfigGroup = this.get('controller.selectedConfigGroup');
-
-    persistController.getUserPref(modePersistKey).pipe(function (data) {
-      return !!data;
-    },function () {
-      return false;
-    }).always((function (isBulkMode) {
-
-        var category = this.get('category');
-        var siteFileName = category.get('siteFileName');
-
-        var service = this.get('service');
-        var serviceName = service.get('serviceName');
-
-        var configsOfFile = service.get('configs').filterProperty('filename', siteFileName);
-
-        /**
-         * Find duplications within the same confType
-         * Result in error, as no duplicated property keys are allowed in the same configType
-         * */
-        function isDuplicatedConfigKey(name) {
-          return configsOfFile.findProperty('name', name);
-        }
+   * Find duplications within the same confType
+   * Result in error, as no duplicated property keys are allowed in the same configType
+   * */
+  isDuplicatedConfigKey: function(name) {
+    var category = this.get('category');
+    var siteFileName = category.get('siteFileName');
+
+    var service = this.get('service');
+    var serviceName = service.get('serviceName');
+
+    var configsOfFile = service.get('configs').filterProperty('filename', siteFileName);
+    return configsOfFile.findProperty('name', name);
+  },
 
-        /**
-         * find duplications in all confTypes of the service
-         * Result in warning, to remind user the existence of a same-named property
-         * */
-        function isDuplicatedConfigKeyinConfigs(name) {
-          var files = [];
-          var configFiles = service.get('configs').mapProperty('filename').uniq();
-          configFiles.forEach(function(configFile){
-            var configsOfFile = service.get('configs').filterProperty('filename', configFile);
-            if(configsOfFile.findProperty('name', name)){
-              files.push(configFile);
-            }
-          }, this);
-          return files;
-        }
+  /**
+   * find duplications in all confTypes of the service
+   * Result in warning, to remind user the existence of a same-named property
+   * */
+  isDuplicatedConfigKeyinConfigs: function(name) {
+    var files = [];
+    var service = this.get('service');
+    var configFiles = service.get('configs').mapProperty('filename').uniq();
+    configFiles.forEach(function (configFile) {
+      var configsOfFile = service.get('configs').filterProperty('filename', configFile);
+      if (configsOfFile.findProperty('name', name)) {
+        files.push(configFile);
+      }
+    }, this);
+    return files;
+  },
 
-        var serviceConfigObj = Ember.Object.create({
-          isBulkMode: isBulkMode,
-          bulkConfigValue: '',
-          bulkConfigError: false,
-          bulkConfigErrorMessage: '',
-
-          name: '',
-          value: '',
-          propertyType: [],
-          content: ['PASSWORD', 'USER', 'GROUP', 'TEXT', 'ADDITIONAL_USER_PROPERTY', 'NOT_MANAGED_HDFS_PATH', 'VALUE_FROM_PROPERTY_FILE'],
-          isKeyError: false,
-          showFilterLink: false,
-          errorMessage: '',
-          observeAddPropertyValue: function () {
-            var name = this.get('name');
-            if (name.trim() != '') {
-              if (validator.isValidConfigKey(name)) {
-                if (!isDuplicatedConfigKey(name)) { //no duplication within the same confType
-                  var files = isDuplicatedConfigKeyinConfigs(name);
-                  if (files.length > 0) {
-                    //still check for a warning, if there are duplications across confTypes
-                    this.set('showFilterLink', true);
-                    this.set('isKeyWarning', true);
-                    this.set('isKeyError', false);
-                    this.set('warningMessage', Em.I18n.t('services.service.config.addPropertyWindow.error.derivedKey.location').format(files.join(" ")));
-                  } else {
-                    this.set('showFilterLink', false);
-                    this.set('isKeyError', false);
-                    this.set('isKeyWarning', false);
-                    this.set('errorMessage', '');
-                  }
-                } else {
-                  this.set('showFilterLink', true);
-                  this.set('isKeyError', true);
-                  this.set('isKeyWarning', false);
-                  this.set('errorMessage', Em.I18n.t('services.service.config.addPropertyWindow.error.derivedKey.infile'));
-                }
+  processAddPropertyWindow: function(isBulkMode, modePersistKey) {
+    var self = this;
+    var category = this.get('category');
+    var siteFileName = category.get('siteFileName');
+
+    var service = this.get('service');
+    var serviceName = service.get('serviceName');
+
+    var serviceConfigObj = Em.Object.create({
+      isBulkMode: isBulkMode,
+      bulkConfigValue: '',
+      bulkConfigError: false,
+      bulkConfigErrorMessage: '',
+
+      name: '',
+      value: '',
+      isKeyError: false,
+      showFilterLink: false,
+      errorMessage: '',
+      observeAddPropertyValue: function () {
+        var name = this.get('name');
+        if (name.trim() != '') {
+          if (validator.isValidConfigKey(name)) {
+            if (!self.isDuplicatedConfigKey(name)) { //no duplication within the same confType
+              var files = self.isDuplicatedConfigKeyinConfigs(name);
+              if (files.length > 0) {
+                //still check for a warning, if there are duplications across confTypes
+                this.set('showFilterLink', true);
+                this.set('isKeyWarning', true);
+                this.set('isKeyError', false);
+                this.set('warningMessage', Em.I18n.t('services.service.config.addPropertyWindow.error.derivedKey.location').format(files.join(" ")));
               } else {
                 this.set('showFilterLink', false);
-                this.set('isKeyError', true);
+                this.set('isKeyError', false);
                 this.set('isKeyWarning', false);
-                this.set('errorMessage', Em.I18n.t('form.validator.configKey'));
+                this.set('errorMessage', '');
               }
             } else {
-              this.set('showFilterLink', false);
+              this.set('showFilterLink', true);
               this.set('isKeyError', true);
               this.set('isKeyWarning', false);
-              this.set('errorMessage', Em.I18n.t('services.service.config.addPropertyWindow.error.required'));
+              this.set('errorMessage', Em.I18n.t('services.service.config.addPropertyWindow.error.derivedKey.infile'));
             }
-          }.observes('name')
-        });
-
-        function processConfig(config, callback) {
-          var lines = config.split('\n');
-          var errorMessages = [];
-          var parsedConfig = {};
-          var propertyCount = 0;
-
-          function lineNumber(index) {
-            return Em.I18n.t('services.service.config.addPropertyWindow.error.lineNumber').format(index + 1);
+          } else {
+            this.set('showFilterLink', false);
+            this.set('isKeyError', true);
+            this.set('isKeyWarning', false);
+            this.set('errorMessage', Em.I18n.t('form.validator.configKey'));
           }
+        } else {
+          this.set('showFilterLink', false);
+          this.set('isKeyError', true);
+          this.set('isKeyWarning', false);
+          this.set('errorMessage', Em.I18n.t('services.service.config.addPropertyWindow.error.required'));
+        }
+      }
+    });
 
-          lines.forEach(function (line, index) {
-            if (line.trim() === '') {
-              return;
-            }
-            var delimiter = '=';
-            var delimiterPosition = line.indexOf(delimiter);
-            if (delimiterPosition === -1) {
-              errorMessages.push(lineNumber(index) + Em.I18n.t('services.service.config.addPropertyWindow.error.format'));
-              return;
-            }
-            var key = Em.Handlebars.Utils.escapeExpression(line.slice(0, delimiterPosition).trim());
-            var value = line.slice(delimiterPosition + 1);
-            if (validator.isValidConfigKey(key)) {
-              if (!isDuplicatedConfigKey(key) && !(key in parsedConfig)) {
-                parsedConfig[key] = value;
-                propertyCount++;
-              } else {
-                errorMessages.push(lineNumber(index) + Em.I18n.t('services.service.config.addPropertyWindow.error.derivedKey.specific').format(key));
-              }
+    App.ModalPopup.show({
+      classNames: ['sixty-percent-width-modal'],
+      header: Em.I18n.t('installer.step7.config.addProperty'),
+      primary: Em.I18n.t('add'),
+      secondary: Em.I18n.t('common.cancel'),
+      onPrimary: function () {
+        var propertyObj = {
+          filename: siteFileName,
+          serviceName: serviceName,
+          categoryName: category.get('name')
+        };
+        if (serviceConfigObj.isBulkMode) {
+          var popup = this;
+          this.processConfig(serviceConfigObj.bulkConfigValue, function (error, parsedConfig) {
+            if (error) {
+              serviceConfigObj.set('bulkConfigError', true);
+              serviceConfigObj.set('bulkConfigErrorMessage', error);
             } else {
-              errorMessages.push(lineNumber(index) + Em.I18n.t('form.validator.configKey.specific').format(key));
+              for (var key in parsedConfig) {
+                if (parsedConfig.hasOwnProperty(key)) {
+                  propertyObj.name = key;
+                  propertyObj.value = parsedConfig[key];
+                  self.createProperty(propertyObj);
+                }
+              }
+              popup.hide();
             }
           });
-
-          if (errorMessages.length > 0) {
-            callback(errorMessages.join('<br>'), parsedConfig);
+        } else {
+          serviceConfigObj.observeAddPropertyValue();
+          /**
+           * For the first entrance use this if (serviceConfigObj.name.trim() != '')
+           */
+          if (!serviceConfigObj.isKeyError) {
+            propertyObj.name = serviceConfigObj.get('name');
+            propertyObj.value = serviceConfigObj.get('value');
+            self.createProperty(propertyObj);
+            this.hide();
           }
-          else if (propertyCount === 0) {
-            callback(Em.I18n.t('services.service.config.addPropertyWindow.propertiesPlaceholder', parsedConfig));
+        }
+      },
+
+      lineNumber: function(index) {
+        return Em.I18n.t('services.service.config.addPropertyWindow.error.lineNumber').format(index + 1);
+      },
+
+      processConfig: function(config, callback) {
+        var lines = config.split('\n');
+        var errorMessages = [];
+        var parsedConfig = {};
+        var propertyCount = 0;
+        lines.forEach(function (line, index) {
+          if (line.trim() === '') {
+            return;
           }
-          else {
-            callback(null, parsedConfig);
+          var delimiter = '=';
+          var delimiterPosition = line.indexOf(delimiter);
+          if (delimiterPosition === -1) {
+            errorMessages.push(this.lineNumber(index) + Em.I18n.t('services.service.config.addPropertyWindow.error.format'));
+            return;
           }
-        }
-
-        App.ModalPopup.show({
-          classNames: ['sixty-percent-width-modal'],
-          header: Em.I18n.t('installer.step7.config.addProperty'),
-          primary: Em.I18n.t('add'),
-          secondary: Em.I18n.t('common.cancel'),
-          onPrimary: function () {
-            var propertyObj = {
-              filename: siteFileName,
-              serviceName: serviceName,
-              categoryName: category.get('name')
-            };
-            if (serviceConfigObj.isBulkMode) {
-              var popup = this;
-              processConfig(serviceConfigObj.bulkConfigValue, function (error, parsedConfig) {
-                if (error) {
-                  serviceConfigObj.set('bulkConfigError', true);
-                  serviceConfigObj.set('bulkConfigErrorMessage', error);
-                } else {
-                  for (var key in parsedConfig) {
-                    if (parsedConfig.hasOwnProperty(key)) {
-                      propertyObj.name = key;
-                      propertyObj.value = parsedConfig[key];
-                      persistController.createProperty(propertyObj);
-                    }
-                  }
-                  popup.hide();
-                }
-              });
-            }
-            else {
-              serviceConfigObj.observeAddPropertyValue();
-              /**
-               * For the first entrance use this if (serviceConfigObj.name.trim() != '')
-               */
-              if (!serviceConfigObj.isKeyError) {
-                propertyObj.name = serviceConfigObj.get('name');
-                propertyObj.value = serviceConfigObj.get('value');
-                propertyObj.propertyType = serviceConfigObj.get('propertyType');
-                persistController.createProperty(propertyObj);
-                this.hide();
-              }
-            }
-          },
-          bodyClass: Em.View.extend({
-            fileName: siteFileName,
-            notMisc: serviceName !== 'MISC',
-            templateName: require('templates/common/configs/addPropertyWindow'),
-            controllerBinding: 'App.router.mainServiceInfoConfigsController',
-            serviceConfigObj: serviceConfigObj,
-            didInsertElement: function () {
-              App.tooltip(this.$("[data-toggle=tooltip]"), {
-                placement: "top"
-              });
-            },
-            toggleBulkMode: function () {
-              this.toggleProperty('serviceConfigObj.isBulkMode');
-              persistController.postUserPref(modePersistKey, this.get('serviceConfigObj.isBulkMode'));
-            },
-            filterByKey: function (event) {
-              var controller = (App.router.get('currentState.name') == 'configs')
-                ? App.router.get('mainServiceInfoConfigsController')
-                : App.router.get('wizardStep7Controller');
-              this.get('parentView').onClose();
-              controller.set('filter', event.view.get('serviceConfigObj.name'));
+          var key = Em.Handlebars.Utils.escapeExpression(line.slice(0, delimiterPosition).trim());
+          var value = line.slice(delimiterPosition + 1);
+          if (validator.isValidConfigKey(key)) {
+            if (!self.isDuplicatedConfigKey(key) && !(key in parsedConfig)) {
+              parsedConfig[key] = value;
+              propertyCount++;
+            } else {
+              errorMessages.push(this.lineNumber(index) + Em.I18n.t('services.service.config.addPropertyWindow.error.derivedKey.specific').format(key));
             }
-          })
+          } else {
+            errorMessages.push(this.lineNumber(index) + Em.I18n.t('form.validator.configKey.specific').format(key));
+          }
         });
 
-      }).bind(this));
+        if (errorMessages.length > 0) {
+          callback(errorMessages.join('<br>'), parsedConfig);
+        }
+        else if (propertyCount === 0) {
+          callback(Em.I18n.t('services.service.config.addPropertyWindow.propertiesPlaceholder', parsedConfig));
+        }
+        else {
+          callback(null, parsedConfig);
+        }
+      },
+      willDestroyElement: function () {
+        serviceConfigObj.destroy();
+        this._super();
+      },
+      bodyClass: Em.View.extend({
+        fileName: siteFileName,
+        notMisc: serviceName !== 'MISC',
+        templateName: require('templates/common/configs/addPropertyWindow'),
+        serviceConfigObj: serviceConfigObj,
+        didInsertElement: function () {
+          this._super();
+          serviceConfigObj.addObserver('name', serviceConfigObj, 'observeAddPropertyValue');
+          App.tooltip(this.$("[data-toggle=tooltip]"), {
+            placement: "top"
+          });
+        },
+        willDestroyElement: function () {
+          this.$().popover('destroy');
+          serviceConfigObj.removeObserver('name', serviceConfigObj, 'observeAddPropertyValue');
+          this.set('serviceConfigObj', null);
+          this._super();
+        },
+        toggleBulkMode: function () {
+          this.toggleProperty('serviceConfigObj.isBulkMode');
+          self.postUserPref(modePersistKey, this.get('serviceConfigObj.isBulkMode'));
+        },
+        filterByKey: function (event) {
+          var controller = (App.router.get('currentState.name') == 'configs')
+            ? App.router.get('mainServiceInfoConfigsController')
+            : App.router.get('wizardStep7Controller');
+          this.get('parentView').onClose();
+          controller.set('filter', event.view.get('serviceConfigObj.name'));
+        }
+      })
+    });
+  },
+
+  /**
+   * Show popup for adding new config-properties
+   * @method showAddPropertyWindow
+   */
+  showAddPropertyWindow: function () {
+    var persistController = this;
+    var modePersistKey = this.persistKey();
+    var selectedConfigGroup = this.get('controller.selectedConfigGroup');
+
+    persistController.getUserPref(modePersistKey).then(function (data) {
+      return !!data;
+    },function () {
+      return false;
+    }).always((function (isBulkMode) {
+      persistController.processAddPropertyWindow(isBulkMode, modePersistKey);
+    }));
   },
 
+
+
   /**
    * Toggle <code>isFinal</code> for selected config-property if <code>isNotEditable</code> is false
    * @param {object} event
@@ -589,6 +659,7 @@ App.ServiceConfigsByCategoryView = Em.View.extend(App.UserPref, App.ConfigOverri
       return;
     }
     serviceConfigProperty.toggleProperty('isFinal');
+    serviceConfigProperty = null;
   },
 
   /**
@@ -598,7 +669,6 @@ App.ServiceConfigsByCategoryView = Em.View.extend(App.UserPref, App.ConfigOverri
    */
   removeProperty: function (event) {
     var serviceConfigProperty = event.contexts[0];
-    this.get('serviceConfigs').removeObject(serviceConfigProperty);
     // push config's file name if this config was stored on server
     if (!serviceConfigProperty.get('isNotSaved')) {
       var modifiedFileNames = this.get('controller.modifiedFileNames'),
@@ -614,6 +684,9 @@ App.ServiceConfigsByCategoryView = Em.View.extend(App.UserPref, App.ConfigOverri
         }
       }
     }
+    this.get('serviceConfigs').removeObject(serviceConfigProperty);
+    this.get('categoryConfigsAll').removeObject(serviceConfigProperty);
+    serviceConfigProperty = null;
     Em.$('body>.tooltip').remove(); //some tooltips get frozen when their owner's DOM element is removed
   },
 
@@ -625,6 +698,7 @@ App.ServiceConfigsByCategoryView = Em.View.extend(App.UserPref, App.ConfigOverri
   setRecommendedValue: function (event) {
     var serviceConfigProperty = event.contexts[0];
     serviceConfigProperty.set('value', serviceConfigProperty.get('recommendedValue'));
+    serviceConfigProperty = null;
   },
 
   /**
@@ -649,6 +723,7 @@ App.ServiceConfigsByCategoryView = Em.View.extend(App.UserPref, App.ConfigOverri
       serviceConfigProperty.set('isFinal', savedIsFinal);
     }
     this.configChangeObserver(serviceConfigProperty);
+    serviceConfigProperty = null;
     Em.$('body>.tooltip').remove(); //some tooltips get frozen when their owner's DOM element is removed
   }
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/d8cd374b/ambari-web/test/views/common/configs/service_configs_by_category_view_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/common/configs/service_configs_by_category_view_test.js b/ambari-web/test/views/common/configs/service_configs_by_category_view_test.js
index 7b6c451..9b49653 100644
--- a/ambari-web/test/views/common/configs/service_configs_by_category_view_test.js
+++ b/ambari-web/test/views/common/configs/service_configs_by_category_view_test.js
@@ -308,9 +308,14 @@ describe('App.ServiceConfigsByCategoryView', function () {
           category: {
             name: item.categoryNname
           },
-          serviceConfigs: item.serviceConfigs
+          serviceConfigs: item.serviceConfigs,
+          filteredCategoryConfigs: Em.K,
+          collapseCategory: Em.K
         });
+        view.setCategoryConfigs();
+        view.setVisibleCategoryConfigs();
         expect(view.get('categoryConfigs').mapProperty('resultId')).to.deep.equal(result);
+        view.destroy();
       });
     });
   });


[04/18] ambari git commit: AMBARI-18497 - [Grafana] Replicate HBase dashboards for System(AMS) HBase (prajwal)

Posted by jo...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/4170ff49/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/files/grafana-dashboards/default/grafana-ams-hbase-regionservers.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/files/grafana-dashboards/default/grafana-ams-hbase-regionservers.json b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/files/grafana-dashboards/default/grafana-ams-hbase-regionservers.json
new file mode 100644
index 0000000..4ec784e
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/files/grafana-dashboards/default/grafana-ams-hbase-regionservers.json
@@ -0,0 +1,9063 @@
+{
+  "id": null,
+  "title": "AMS HBase - RegionServers",
+  "originalTitle": "AMS HBase - RegionServers",
+  "tags": [
+    "ams-hbase"
+  ],
+  "style": "dark",
+  "timezone": "browser",
+  "editable": true,
+  "hideControls": false,
+  "sharedCrosshair": false,
+  "rows": [
+    {
+      "collapse": false,
+      "editable": true,
+      "height": "25px",
+      "panels": [
+        {
+          "content": "<h4 align=\"center\">Performance related metrics for AMS-HBase. Click on each row title to expand on demand to look at various metrics per regionserver. </h4>\n<h6 style=\"color:red;\" align=\"center\">This dashboard is managed by Ambari.  You may lose any changes made to this dashboard.  If you want to customize, make your own copy.</h6>",
+          "editable": true,
+          "error": false,
+          "id": 99,
+          "isNew": true,
+          "links": [],
+          "mode": "html",
+          "span": 12,
+          "style": {},
+          "title": "",
+          "type": "text"
+        }
+      ],
+      "title": "Description"
+    },
+    {
+      "collapse": false,
+      "editable": true,
+      "height": "250px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 1,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 12,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "max",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "hosts": "",
+              "metric": "regionserver.Server.regionCount",
+              "precision": "default",
+              "refId": "A",
+              "templatedHost": "%"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Num Regions",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ]
+        }
+      ],
+      "showTitle": true,
+      "title": "Num Regions"
+    },
+    {
+      "collapse": true,
+      "editable": true,
+      "height": "200px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 6,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "regionserver.Server.storeFileCount",
+              "yaxis": 2
+            }
+          ],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.storeFileSize",
+              "precision": "default",
+              "refId": "A",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Store File Size",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "bytes",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 23,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "regionserver.Server.storeFileCount"
+            }
+          ],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.storeFileCount",
+              "precision": "default",
+              "refId": "B",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Store File Count",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ]
+        }
+      ],
+      "showTitle": true,
+      "title": "Store Files"
+    },
+    {
+      "collapse": true,
+      "editable": true,
+      "height": "250px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 7,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 12,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.totalRequestCount",
+              "precision": "default",
+              "refId": "C",
+              "templatedHost": "",
+              "transform": "rate"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Num Total Requests /s",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ops",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 24,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.writeRequestCount",
+              "precision": "default",
+              "refId": "D",
+              "templatedHost": "",
+              "transform": "rate"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Num Write Requests /s",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "wps",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 101,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.readRequestCount",
+              "precision": "default",
+              "refId": "C",
+              "templatedHost": "",
+              "transform": "rate"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Num Read Requests /s",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "rps",
+            "short"
+          ]
+        }
+      ],
+      "showTitle": true,
+      "title": "Num Requests"
+    },
+    {
+      "collapse": true,
+      "editable": true,
+      "height": "250px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 8,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Get_num_ops",
+              "precision": "default",
+              "refId": "A",
+              "templatedHost": "",
+              "transform": "rate"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Num Get Requests /s",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ops",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 25,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.ScanNext_num_ops",
+              "precision": "default",
+              "refId": "B",
+              "templatedHost": "",
+              "transform": "rate"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Num Scan Next Requests /s",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ops",
+            "short"
+          ]
+        }
+      ],
+      "showTitle": true,
+      "title": "Num Requests - Get / Scan"
+    },
+    {
+      "collapse": true,
+      "editable": true,
+      "height": "250px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 26,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Mutate_num_ops",
+              "precision": "default",
+              "refId": "C",
+              "templatedHost": "",
+              "transform": "rate"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Num Mutate Requests /s",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ops",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 27,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Delete_num_ops",
+              "precision": "default",
+              "refId": "D",
+              "templatedHost": "",
+              "transform": "rate"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Num Delete Requests /s",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ops",
+            "short"
+          ]
+        }
+      ],
+      "showTitle": true,
+      "title": "Num Requests - Mutate / Delete"
+    },
+    {
+      "collapse": true,
+      "editable": true,
+      "height": "250px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 29,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 4,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Append_num_ops",
+              "precision": "default",
+              "refId": "F",
+              "templatedHost": "",
+              "transform": "rate"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Num Append Requests /s",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ops",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 28,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 4,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Increment_num_ops",
+              "precision": "default",
+              "refId": "E",
+              "templatedHost": "",
+              "transform": "rate"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Num Increment Requests /s",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ops",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 30,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 4,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Replay_num_ops",
+              "precision": "default",
+              "refId": "H",
+              "templatedHost": "",
+              "transform": "rate"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Num Replay Requests /s",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ops",
+            "short"
+          ]
+        }
+      ],
+      "showTitle": true,
+      "title": "Num Requests - Append / Increment"
+    },
+    {
+      "collapse": true,
+      "editable": true,
+      "height": "200px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 10,
+          "isNew": true,
+          "leftYAxisLabel": "",
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "hosts": "",
+              "metric": "jvm.RegionServer.JvmMetrics.MemHeapUsedM",
+              "precision": "default",
+              "refId": "B",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "RegionServer Memory Used",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "mbytes",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 11,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "jvm.RegionServer.JvmMetrics.MemNonHeapUsedM",
+              "precision": "default",
+              "refId": "B",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "RegionServer Offheap Memory Used",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "mbytes",
+            "short"
+          ]
+        }
+      ],
+      "showTitle": true,
+      "title": "Memory"
+    },
+    {
+      "collapse": true,
+      "editable": true,
+      "height": "250px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 34,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 12,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.memStoreSize",
+              "precision": "default",
+              "refId": "A",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Memstore Size",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "bytes",
+            "short"
+          ]
+        }
+      ],
+      "showTitle": true,
+      "title": "Memstore"
+    },
+    {
+      "collapse": true,
+      "editable": true,
+      "height": "250px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 35,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.blockCacheSize",
+              "precision": "default",
+              "refId": "A",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "BlockCache Size",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "bytes",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 131,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.blockCacheFreeSize",
+              "precision": "default",
+              "refId": "A",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "BlockCache Free Size",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "bytes",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 130,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 12,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.blockCacheCount",
+              "precision": "default",
+              "refId": "A",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Num Blocks in Cache",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ]
+        }
+      ],
+      "showTitle": true,
+      "title": "BlockCache - Overview"
+    },
+    {
+      "collapse": true,
+      "editable": true,
+      "height": "250px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": 0,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 13,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "regionserver.Server.blockCacheCountHitPercent",
+              "yaxis": 2
+            },
+            {
+              "alias": "regionserver.Server.blockCacheExpressHitPercent",
+              "yaxis": 2
+            }
+          ],
+          "span": 4,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.blockCacheHitCount",
+              "precision": "default",
+              "refId": "D",
+              "templatedHost": "",
+              "transform": "rate"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Num BlockCache Hits /s",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ops",
+            "percent"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": 0,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 32,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "regionserver.Server.blockCacheCountHitPercent",
+              "yaxis": 2
+            },
+            {
+              "alias": "regionserver.Server.blockCacheExpressHitPercent",
+              "yaxis": 2
+            }
+          ],
+          "span": 4,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.blockCacheMissCount",
+              "precision": "default",
+              "refId": "E",
+              "templatedHost": "",
+              "transform": "rate"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Num BlockCache Misses /s",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ops",
+            "percent"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": 0,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 36,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "regionserver.Server.blockCacheCountHitPercent",
+              "yaxis": 2
+            },
+            {
+              "alias": "regionserver.Server.blockCacheExpressHitPercent",
+              "yaxis": 2
+            }
+          ],
+          "span": 4,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.blockCacheEvictionCount",
+              "precision": "default",
+              "refId": "A",
+              "templatedHost": "",
+              "transform": "rate"
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Num BlockCache Evictions /s",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ops",
+            "percent"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": 0,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 38,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.blockCacheExpressHitPercent",
+              "precision": "default",
+              "refId": "C",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "BlockCache Caching Hit Percent",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "percent",
+            "percent"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": 0,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 37,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.blockCacheCountHitPercent",
+              "precision": "default",
+              "refId": "B",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "BlockCache Hit Percent",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "percent",
+            "percent"
+          ]
+        }
+      ],
+      "showTitle": true,
+      "title": "BlockCache - Hits/Misses"
+    },
+    {
+      "collapse": true,
+      "editable": true,
+      "height": "250px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 10,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": 0,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 14,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "regionserver.Server.Get_num_ops",
+              "yaxis": 2
+            }
+          ],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Get_mean",
+              "precision": "default",
+              "refId": "A",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Get Latencies - Mean",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ms",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 10,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": 0,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 39,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "regionserver.Server.Get_num_ops",
+              "yaxis": 2
+            }
+          ],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Get_median",
+              "precision": "default",
+              "refId": "B",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Get Latencies - Median",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ms",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 10,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": 0,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 40,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "regionserver.Server.Get_num_ops",
+              "yaxis": 2
+            }
+          ],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Get_75th_percentile",
+              "precision": "default",
+              "refId": "B",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Get Latencies - 75th Percentile",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ms",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 10,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": 0,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 41,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "regionserver.Server.Get_num_ops",
+              "yaxis": 2
+            }
+          ],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Get_95th_percentile",
+              "precision": "default",
+              "refId": "B",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Get Latencies - 95th Percentile",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ms",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 10,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": 0,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 42,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "regionserver.Server.Get_num_ops",
+              "yaxis": 2
+            }
+          ],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Get_99th_percentile",
+              "precision": "default",
+              "refId": "B",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Get Latencies - 99th Percentile",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ms",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 10,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": 0,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 43,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "regionserver.Server.Get_num_ops",
+              "yaxis": 2
+            }
+          ],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Get_max",
+              "precision": "default",
+              "refId": "B",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Get Latencies - Max",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ms",
+            "short"
+          ]
+        }
+      ],
+      "showTitle": true,
+      "title": "Operation Latencies - Get"
+    },
+    {
+      "collapse": true,
+      "editable": true,
+      "height": "250px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 10,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": 0,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 75,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.ScanTime_mean",
+              "precision": "default",
+              "refId": "A",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Scan Next Latencies - Mean",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ms",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 10,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": 0,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 76,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.ScanTime_median",
+              "precision": "default",
+              "refId": "B",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Scan Next Latencies - Median",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ms",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 10,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": 0,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 77,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.ScanTime_75th_percentile",
+              "precision": "default",
+              "refId": "B",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Scan Next Latencies - 75th Percentile",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ms",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 10,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": 0,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 78,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.ScanTime_95th_percentile",
+              "precision": "default",
+              "refId": "B",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Scan Next Latencies - 95th Percentile",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ms",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 10,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": 0,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 79,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.ScanTime_99th_percentile",
+              "precision": "default",
+              "refId": "B",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Scan Next Latencies - 99th Percentile",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ms",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 10,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": 0,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 80,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.ScanTime_max",
+              "precision": "default",
+              "refId": "B",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Scan Next Latencies - Max",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ms",
+            "short"
+          ]
+        }
+      ],
+      "showTitle": true,
+      "title": "Operation Latencies - Scan Next"
+    },
+    {
+      "collapse": true,
+      "editable": true,
+      "height": "250px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 10,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": 0,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 50,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Mutate_mean",
+              "precision": "default",
+              "refId": "A",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Mutate Latencies - Mean",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ms",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 10,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": 0,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 45,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Mutate_median",
+              "precision": "default",
+              "refId": "B",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Mutate Latencies - Median",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ms",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 10,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": 0,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 46,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Mutate_75th_percentile",
+              "precision": "default",
+              "refId": "B",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Mutate Latencies - 75th Percentile",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ms",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 10,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": 0,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 47,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Mutate_95th_percentile",
+              "precision": "default",
+              "refId": "B",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Mutate Latencies - 95th Percentile",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ms",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 10,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": 0,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 48,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+              "metric": "regionserver.Server.Mutate_99th_percentile",
+              "precision": "default",
+              "refId": "B",
+              "templatedHost": ""
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Mutate Latencies - 99th Percentile",
+          "tooltip": {
+            "shared": false,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ms",
+            "short"
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": null,
+          "editable": true,
+          "error": false,
+          "fill": 0,
+          "grid": {
+            "leftLogBase": 10,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": 0,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 49,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": false,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "aggregator": "avg",
+              "app": "ams-hbase",
+              "downsampleAggregator": "avg",
+              "errors": {},
+             

<TRUNCATED>

[14/18] ambari git commit: AMBARI-18505. Ambari Status commands should enforce a timeout < heartbeat interval (aonishuk)

Posted by jo...@apache.org.
AMBARI-18505. Ambari Status commands should enforce a timeout < heartbeat interval (aonishuk)


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

Branch: refs/heads/branch-feature-AMBARI-18456
Commit: d6d5df5c47f28916fbeec1d019f07d615a4e8d4d
Parents: dfa1613
Author: Andrew Onishuk <ao...@hortonworks.com>
Authored: Mon Oct 3 12:39:28 2016 +0300
Committer: Andrew Onishuk <ao...@hortonworks.com>
Committed: Mon Oct 3 12:39:28 2016 +0300

----------------------------------------------------------------------
 ambari-agent/src/main/python/ambari_agent/ActionQueue.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/d6d5df5c/ambari-agent/src/main/python/ambari_agent/ActionQueue.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/python/ambari_agent/ActionQueue.py b/ambari-agent/src/main/python/ambari_agent/ActionQueue.py
index 86918e5..c03ee4f 100644
--- a/ambari-agent/src/main/python/ambari_agent/ActionQueue.py
+++ b/ambari-agent/src/main/python/ambari_agent/ActionQueue.py
@@ -87,7 +87,7 @@ class ActionQueue(threading.Thread):
     self.tmpdir = config.get('agent', 'prefix')
     self.customServiceOrchestrator = CustomServiceOrchestrator(config, controller)
     self.parallel_execution = config.get_parallel_exec_option()
-    self.status_command_timeout = int(self.config.get('agent', 'status_command_timeout', 5))
+    self.status_command_timeout = int(self.config.get('agent', 'status_command_timeout', 2))
     if self.parallel_execution == 1:
       logger.info("Parallel execution is enabled, will execute agent commands in parallel")
 


[18/18] ambari git commit: Merge branch 'trunk' into branch-feature-AMBARI-18456

Posted by jo...@apache.org.
Merge branch 'trunk' into branch-feature-AMBARI-18456


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

Branch: refs/heads/branch-feature-AMBARI-18456
Commit: aee49b67f5daf558e0dfa2091bb97c2619e3c097
Parents: d53c9e2 f2bcbbe
Author: Jonathan Hurley <jh...@hortonworks.com>
Authored: Mon Oct 3 14:04:20 2016 -0400
Committer: Jonathan Hurley <jh...@hortonworks.com>
Committed: Mon Oct 3 14:04:20 2016 -0400

----------------------------------------------------------------------
 .../ui/admin-web/app/views/groups/edit.html     |    4 +-
 ambari-agent/conf/unix/ambari-agent.ini         |    1 +
 .../src/main/python/ambari_agent/ActionQueue.py |   22 +-
 .../src/main/python/ambari_agent/HostCleanup.py |    6 +-
 .../ambari_agent/PythonReflectiveExecutor.py    |   25 +-
 .../test/python/ambari_agent/TestActionQueue.py |    3 +-
 .../ambari/logfeeder/LogFeederAMSClient.java    |    9 +-
 .../logsearch/solr/metrics/SolrAmsClient.java   |    9 +-
 .../timeline/AbstractTimelineMetricsSink.java   |   59 +-
 .../availability/MetricCollectorHATest.java     |   22 +-
 .../cache/HandleConnectExceptionTest.java       |   12 +-
 .../sink/flume/FlumeTimelineMetricsSink.java    |   14 +-
 .../timeline/HadoopTimelineMetricsSink.java     |   27 +-
 .../timeline/HadoopTimelineMetricsSinkTest.java |   12 +-
 .../kafka/KafkaTimelineMetricsReporter.java     |   14 +-
 .../storm/StormTimelineMetricsReporter.java     |   14 +-
 .../sink/storm/StormTimelineMetricsSink.java    |   15 +-
 .../storm/StormTimelineMetricsReporter.java     |   13 +-
 .../sink/storm/StormTimelineMetricsSink.java    |   15 +-
 .../system/impl/AmbariMetricSinkImpl.java       |   12 +-
 .../org/apache/ambari/server/state/Alert.java   |    7 +-
 .../1.6.1.2.2.0/package/scripts/params.py       |    5 -
 .../hadoop-metrics2-accumulo.properties.j2      |   12 +-
 .../default/grafana-ams-hbase-home.json         | 2558 +++++
 .../default/grafana-ams-hbase-misc.json         | 1680 ++++
 .../grafana-ams-hbase-regionservers.json        | 9063 ++++++++++++++++++
 .../hadoop-metrics2-hbase.properties.j2         |   14 +-
 .../FLUME/1.4.0.2.0/package/scripts/flume.py    |    1 +
 .../FLUME/1.4.0.2.0/package/scripts/params.py   |    7 -
 .../templates/flume-metrics2.properties.j2      |    2 +-
 .../0.96.0.2.0/package/scripts/params_linux.py  |   12 -
 ...-metrics2-hbase.properties-GANGLIA-MASTER.j2 |   15 +-
 ...doop-metrics2-hbase.properties-GANGLIA-RS.j2 |   15 +-
 .../hadoop-metrics2.properties.xml              |   18 +-
 .../0.12.0.2.0/package/scripts/params_linux.py  |    5 -
 .../hadoop-metrics2-hivemetastore.properties.j2 |    3 +-
 .../hadoop-metrics2-hiveserver2.properties.j2   |    4 +-
 .../templates/hadoop-metrics2-llapdaemon.j2     |    3 +-
 .../hadoop-metrics2-llaptaskscheduler.j2        |    3 +-
 .../KAFKA/0.8.1/configuration/kafka-broker.xml  |    2 +-
 .../KAFKA/0.8.1/package/scripts/kafka.py        |    2 +-
 .../KAFKA/0.8.1/package/scripts/params.py       |    7 -
 .../common-services/KAFKA/0.9.0/widgets.json    |   18 +-
 .../STORM/0.9.1/package/scripts/params_linux.py |   11 -
 .../0.9.1/package/templates/config.yaml.j2      |    6 +-
 .../templates/storm-metrics2.properties.j2      |    2 +-
 .../2.0.6/hooks/before-START/scripts/params.py  |    7 -
 .../templates/hadoop-metrics2.properties.j2     |   18 +-
 .../stacks/HDP/2.0.6/services/stack_advisor.py  |   10 +-
 .../apache/ambari/server/state/AlertTest.java   |   53 +
 .../service/manage_config_groups_controller.js  |    2 +-
 .../configs/config_recommendation_parser.js     |    2 +-
 ambari-web/app/utils/hosts.js                   |    2 +-
 .../app/views/common/chart/linear_time.js       |    2 +-
 .../configs/service_configs_by_category_view.js |  535 +-
 .../config_recommendation_parser_test.js        |    4 +-
 .../service_configs_by_category_view_test.js    |    7 +-
 57 files changed, 13991 insertions(+), 434 deletions(-)
----------------------------------------------------------------------



[09/18] ambari git commit: AMBARI-18493 Error on manage group popup. (ababiichuk)

Posted by jo...@apache.org.
AMBARI-18493 Error on manage group popup. (ababiichuk)


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

Branch: refs/heads/branch-feature-AMBARI-18456
Commit: 013b7bd08117abc082400279f7b24d33a9819e34
Parents: 32ab17b
Author: ababiichuk <ab...@hortonworks.com>
Authored: Thu Sep 29 15:40:22 2016 +0300
Committer: ababiichuk <ab...@hortonworks.com>
Committed: Fri Sep 30 10:33:49 2016 +0300

----------------------------------------------------------------------
 .../controllers/main/service/manage_config_groups_controller.js    | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/013b7bd0/ambari-web/app/controllers/main/service/manage_config_groups_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/service/manage_config_groups_controller.js b/ambari-web/app/controllers/main/service/manage_config_groups_controller.js
index ad44b9c..539d03e 100644
--- a/ambari-web/app/controllers/main/service/manage_config_groups_controller.js
+++ b/ambari-web/app/controllers/main/service/manage_config_groups_controller.js
@@ -931,7 +931,7 @@ App.ManageConfigGroupsController = Em.Controller.extend(App.ConfigOverridable, {
         var errors = [];
         var self = this;
         var finishFunction = function (xhr, text, errorThrown) {
-          if (xhr && errorThrown) {
+          if (xhr && typeof (errorThrown) === 'string') {
             var error = xhr.status + "(" + errorThrown + ") ";
             try {
               var json = $.parseJSON(xhr.responseText);


[16/18] ambari git commit: AMBARI-18499 Ability to remove broken symbolic links via HostCleanup.py (dili)

Posted by jo...@apache.org.
AMBARI-18499 Ability to remove broken symbolic links via HostCleanup.py (dili)


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

Branch: refs/heads/branch-feature-AMBARI-18456
Commit: 7b15e388c37cd2cabf224568760ab127d07412ca
Parents: 30eadbf
Author: Di Li <di...@apache.org>
Authored: Mon Oct 3 11:44:52 2016 -0400
Committer: Di Li <di...@apache.org>
Committed: Mon Oct 3 11:44:52 2016 -0400

----------------------------------------------------------------------
 ambari-agent/src/main/python/ambari_agent/HostCleanup.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/7b15e388/ambari-agent/src/main/python/ambari_agent/HostCleanup.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/python/ambari_agent/HostCleanup.py b/ambari-agent/src/main/python/ambari_agent/HostCleanup.py
index e9ae8e5..a3c72e6 100644
--- a/ambari-agent/src/main/python/ambari_agent/HostCleanup.py
+++ b/ambari-agent/src/main/python/ambari_agent/HostCleanup.py
@@ -405,13 +405,13 @@ class HostCleanup:
   def do_erase_files_silent(self, pathList):
     if pathList:
       for path in pathList:
-        if path and os.path.exists(path):
+        if path and ( os.path.exists(path) or os.path.islink(path) ):
           try:
             os.remove(path)
           except:
-            logger.warn("Failed to delete file: " + path + ", error: " + str(sys.exc_info()[0]))
+            logger.warn("Failed to delete file: {0}, error: {1}".format(path, str(sys.exc_info()[0])))
         else:
-          logger.info("File doesn't exists: " + path)
+          logger.info("File doesn't exists: {0}".format(path))
     return 0
 
   def do_delete_group(self):


[02/18] ambari git commit: AMBARI-18485 - Kafka Widgets show incorrect values - Ambari Web (prajwal)

Posted by jo...@apache.org.
AMBARI-18485 - Kafka Widgets show incorrect values - Ambari Web (prajwal)


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

Branch: refs/heads/branch-feature-AMBARI-18456
Commit: b8e3c10abf1c49506481b35c2ecf2ed081289ecf
Parents: 84c172c
Author: Prajwal Rao <pr...@gmail.com>
Authored: Thu Sep 29 12:43:20 2016 -0700
Committer: Prajwal Rao <pr...@gmail.com>
Committed: Thu Sep 29 12:43:20 2016 -0700

----------------------------------------------------------------------
 .../common-services/KAFKA/0.9.0/widgets.json      | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/b8e3c10a/ambari-server/src/main/resources/common-services/KAFKA/0.9.0/widgets.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/KAFKA/0.9.0/widgets.json b/ambari-server/src/main/resources/common-services/KAFKA/0.9.0/widgets.json
index 7237236..d513075 100644
--- a/ambari-server/src/main/resources/common-services/KAFKA/0.9.0/widgets.json
+++ b/ambari-server/src/main/resources/common-services/KAFKA/0.9.0/widgets.json
@@ -56,8 +56,8 @@
           "is_visible": true,
           "metrics": [
             {
-              "name": "kafka.controller.KafkaController.ActiveControllerCount",
-              "metric_path": "metrics/kafka/controller/KafkaController/ActiveControllerCount",
+              "name": "kafka.controller.KafkaController.ActiveControllerCount._sum",
+              "metric_path": "metrics/kafka/controller/KafkaController/ActiveControllerCount._sum",
               "service_name": "KAFKA",
               "component_name": "KAFKA_BROKER"
             }
@@ -65,7 +65,7 @@
           "values": [
             {
               "name": "Active Controller Count",
-              "value": "${kafka.controller.KafkaController.ActiveControllerCount}"
+              "value": "${kafka.controller.KafkaController.ActiveControllerCount._sum}"
             }
           ],
           "properties": {
@@ -138,8 +138,8 @@
           "is_visible": true,
           "metrics": [
             {
-              "name": "kafka.server.ReplicaManager.PartitionCount",
-              "metric_path": "metrics/kafka/server/ReplicaManager/PartitionCount",
+              "name": "kafka.server.ReplicaManager.PartitionCount._sum",
+              "metric_path": "metrics/kafka/server/ReplicaManager/PartitionCount._sum",
               "service_name": "KAFKA",
               "component_name": "KAFKA_BROKER"
             },
@@ -150,8 +150,8 @@
               "component_name": "KAFKA_BROKER"
             },
             {
-              "name": "kafka.server.ReplicaManager.LeaderCount",
-              "metric_path": "metrics/kafka/server/ReplicaManager/LeaderCount",
+              "name": "kafka.server.ReplicaManager.LeaderCount._sum",
+              "metric_path": "metrics/kafka/server/ReplicaManager/LeaderCount._sum",
               "service_name": "KAFKA",
               "component_name": "KAFKA_BROKER"
             }
@@ -159,7 +159,7 @@
           "values": [
             {
               "name": "Partitions count",
-              "value": "${kafka.server.ReplicaManager.PartitionCount}"
+              "value": "${kafka.server.ReplicaManager.PartitionCount._sum}"
             },
             {
               "name": "Under Replicated Partitions",
@@ -167,7 +167,7 @@
             },
             {
               "name": "Leader Count",
-              "value": "${kafka.server.ReplicaManager.LeaderCount}"
+              "value": "${kafka.server.ReplicaManager.LeaderCount._sum}"
             }
           ],
           "properties": {


[15/18] ambari git commit: AMBARI-18488. Delete group button always shows tooltip "Cannot Delete Group" (alexantonenko)

Posted by jo...@apache.org.
AMBARI-18488. Delete group button always shows tooltip "Cannot Delete Group" (alexantonenko)


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

Branch: refs/heads/branch-feature-AMBARI-18456
Commit: 30eadbf07fe601931e9029c4a7007218b62194ad
Parents: d6d5df5
Author: Alex Antonenko <hi...@gmail.com>
Authored: Mon Oct 3 15:22:34 2016 +0300
Committer: Alex Antonenko <hi...@gmail.com>
Committed: Mon Oct 3 15:22:57 2016 +0300

----------------------------------------------------------------------
 .../src/main/resources/ui/admin-web/app/views/groups/edit.html   | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/30eadbf0/ambari-admin/src/main/resources/ui/admin-web/app/views/groups/edit.html
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/groups/edit.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/groups/edit.html
index 8271432..78a6884 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/views/groups/edit.html
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/views/groups/edit.html
@@ -24,7 +24,7 @@
   <div class="pull-right top-margin-4">
     <div ng-switch="group.ldap_group">
       <button ng-switch-when="true" class="btn disabled deletegroup-btn deleteuser-btn" tooltip="{{'common.cannotDelete' | translate: '{term: constants.group}'}}">{{'common.delete' | translate: '{term: constants.group}'}}</button>
-      <button ng-switch-when="false" class="btn btn-danger deletegroup-btn" ng-click="deleteGroup(group)" tooltip="{{'common.cannotDelete' | translate: '{term: constants.group}'}}">{{'common.delete' | translate: '{term: constants.group}'}}</button>
+      <button ng-switch-when="false" class="btn btn-danger deletegroup-btn" ng-click="deleteGroup(group)">{{'common.delete' | translate: '{term: constants.group}'}}</button>
     </div>
       
   </div>
@@ -92,4 +92,4 @@
         <div class="alert alert-info hide-soft" ng-class="{'visible' : !privileges}">{{'common.alerts.noPrivilegesDescription' | translate: '{term: constants.group.toLowerCase()}'}}</div>
       </div>
     </div>
-</form>
\ No newline at end of file
+</form>


[08/18] ambari git commit: Revert "Test Commit (avijayan)"

Posted by jo...@apache.org.
Revert "Test Commit (avijayan)"

This reverts commit 908f6e861ee242766a7bc1b3c09a3e9a0faeee87.


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

Branch: refs/heads/branch-feature-AMBARI-18456
Commit: 32ab17b33bd9c75fada71f1e85871e55f287937e
Parents: 908f6e8
Author: Aravindan Vijayan <av...@hortonworks.com>
Authored: Thu Sep 29 14:47:26 2016 -0700
Committer: Aravindan Vijayan <av...@hortonworks.com>
Committed: Thu Sep 29 14:47:26 2016 -0700

----------------------------------------------------------------------
 .../metrics/timeline/PhoenixHBaseAccessor.java                     | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/32ab17b3/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/PhoenixHBaseAccessor.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/PhoenixHBaseAccessor.java b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/PhoenixHBaseAccessor.java
index 8fa8c84..1174554 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/PhoenixHBaseAccessor.java
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/PhoenixHBaseAccessor.java
@@ -723,7 +723,7 @@ public class PhoenixHBaseAccessor {
                                               TimelineMetrics metrics, boolean skipCache) throws SQLException, IOException {
     List<TimelineMetric> timelineMetrics = metrics.getMetrics();
     if (timelineMetrics == null || timelineMetrics.isEmpty()) {
-      LOG.debug("Empty Metrics insert request.");
+      LOG.debug("Empty metrics insert request.");
       return;
     }
     for (Iterator<TimelineMetric> iterator = timelineMetrics.iterator(); iterator.hasNext();) {


[11/18] ambari git commit: AMBARI-18362 Update sinks to read multiple collector hostnames from configs (dsen)

Posted by jo...@apache.org.
AMBARI-18362 Update sinks to read multiple collector hostnames from configs (dsen)


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

Branch: refs/heads/branch-feature-AMBARI-18456
Commit: 113d51e15ab0cbd6d342023a0a0d470e51dc1a62
Parents: 120505f
Author: Dmytro Sen <ds...@apache.org>
Authored: Fri Sep 30 12:47:19 2016 +0300
Committer: Dmytro Sen <ds...@apache.org>
Committed: Fri Sep 30 12:47:19 2016 +0300

----------------------------------------------------------------------
 .../ambari/logfeeder/LogFeederAMSClient.java    |  9 ++-
 .../logsearch/solr/metrics/SolrAmsClient.java   |  9 ++-
 .../timeline/AbstractTimelineMetricsSink.java   | 59 ++++++++++++++------
 .../availability/MetricCollectorHATest.java     | 22 +++++---
 .../cache/HandleConnectExceptionTest.java       | 12 +++-
 .../sink/flume/FlumeTimelineMetricsSink.java    | 14 +++--
 .../timeline/HadoopTimelineMetricsSink.java     | 27 +++++++--
 .../timeline/HadoopTimelineMetricsSinkTest.java | 12 ++--
 .../kafka/KafkaTimelineMetricsReporter.java     | 14 +++--
 .../storm/StormTimelineMetricsReporter.java     | 14 +++--
 .../sink/storm/StormTimelineMetricsSink.java    | 15 +++--
 .../storm/StormTimelineMetricsReporter.java     | 13 +++--
 .../sink/storm/StormTimelineMetricsSink.java    | 15 +++--
 .../system/impl/AmbariMetricSinkImpl.java       | 12 +++-
 .../1.6.1.2.2.0/package/scripts/params.py       |  5 --
 .../hadoop-metrics2-accumulo.properties.j2      | 12 ++--
 .../hadoop-metrics2-hbase.properties.j2         | 14 +++--
 .../FLUME/1.4.0.2.0/package/scripts/flume.py    |  1 +
 .../FLUME/1.4.0.2.0/package/scripts/params.py   |  7 ---
 .../templates/flume-metrics2.properties.j2      |  2 +-
 .../0.96.0.2.0/package/scripts/params_linux.py  | 12 ----
 ...-metrics2-hbase.properties-GANGLIA-MASTER.j2 | 15 +++--
 ...doop-metrics2-hbase.properties-GANGLIA-RS.j2 | 15 +++--
 .../hadoop-metrics2.properties.xml              | 18 +++---
 .../0.12.0.2.0/package/scripts/params_linux.py  |  5 --
 .../hadoop-metrics2-hivemetastore.properties.j2 |  3 +-
 .../hadoop-metrics2-hiveserver2.properties.j2   |  4 +-
 .../templates/hadoop-metrics2-llapdaemon.j2     |  3 +-
 .../hadoop-metrics2-llaptaskscheduler.j2        |  3 +-
 .../KAFKA/0.8.1/configuration/kafka-broker.xml  |  2 +-
 .../KAFKA/0.8.1/package/scripts/kafka.py        |  2 +-
 .../KAFKA/0.8.1/package/scripts/params.py       |  7 ---
 .../STORM/0.9.1/package/scripts/params_linux.py | 11 ----
 .../0.9.1/package/templates/config.yaml.j2      |  6 +-
 .../templates/storm-metrics2.properties.j2      |  2 +-
 .../2.0.6/hooks/before-START/scripts/params.py  |  7 ---
 .../templates/hadoop-metrics2.properties.j2     | 18 +++---
 .../stacks/HDP/2.0.6/services/stack_advisor.py  | 10 +---
 38 files changed, 257 insertions(+), 174 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/ambari-logsearch/ambari-logsearch-logfeeder/src/main/java/org/apache/ambari/logfeeder/LogFeederAMSClient.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-logfeeder/src/main/java/org/apache/ambari/logfeeder/LogFeederAMSClient.java b/ambari-logsearch/ambari-logsearch-logfeeder/src/main/java/org/apache/ambari/logfeeder/LogFeederAMSClient.java
index da61d83..133646a 100644
--- a/ambari-logsearch/ambari-logsearch-logfeeder/src/main/java/org/apache/ambari/logfeeder/LogFeederAMSClient.java
+++ b/ambari-logsearch/ambari-logsearch-logfeeder/src/main/java/org/apache/ambari/logfeeder/LogFeederAMSClient.java
@@ -23,6 +23,8 @@ import org.apache.hadoop.metrics2.sink.timeline.AbstractTimelineMetricsSink;
 import org.apache.hadoop.metrics2.sink.timeline.TimelineMetrics;
 import org.apache.log4j.Logger;
 
+import java.util.Collection;
+
 // TODO: Refactor for failover
 public class LogFeederAMSClient extends AbstractTimelineMetricsSink {
   private static final Logger logger = Logger.getLogger(LogFeederAMSClient.class);
@@ -58,7 +60,7 @@ public class LogFeederAMSClient extends AbstractTimelineMetricsSink {
   }
 
   @Override
-  protected String getConfiguredCollectors() {
+  protected Collection<String> getConfiguredCollectorHosts() {
     return null;
   }
 
@@ -77,4 +79,9 @@ public class LogFeederAMSClient extends AbstractTimelineMetricsSink {
     return null;
   }
 
+  @Override
+  protected String getCollectorPort() {
+    return null;
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/solr/metrics/SolrAmsClient.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/solr/metrics/SolrAmsClient.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/solr/metrics/SolrAmsClient.java
index 85ea69d..0d4deab 100644
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/solr/metrics/SolrAmsClient.java
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/solr/metrics/SolrAmsClient.java
@@ -22,6 +22,8 @@ package org.apache.ambari.logsearch.solr.metrics;
 import org.apache.hadoop.metrics2.sink.timeline.AbstractTimelineMetricsSink;
 import org.apache.hadoop.metrics2.sink.timeline.TimelineMetrics;
 
+import java.util.Collection;
+
 // TODO: Refactor for failover
 public class SolrAmsClient extends AbstractTimelineMetricsSink {
   private final String collectorHost;
@@ -46,7 +48,7 @@ public class SolrAmsClient extends AbstractTimelineMetricsSink {
   }
 
   @Override
-  protected String getConfiguredCollectors() {
+  protected Collection<String> getConfiguredCollectorHosts() {
     return null;
   }
 
@@ -64,4 +66,9 @@ public class SolrAmsClient extends AbstractTimelineMetricsSink {
   protected String getCollectorProtocol() {
     return null;
   }
+
+  @Override
+  protected String getCollectorPort() {
+    return null;
+  }
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/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 426eb42..fa5b694 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
@@ -51,8 +51,10 @@ import java.net.URL;
 import java.security.KeyStore;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Random;
+import java.util.Set;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 
@@ -61,7 +63,7 @@ public abstract class AbstractTimelineMetricsSink {
   public static final String MAX_METRIC_ROW_CACHE_SIZE = "maxRowCacheSize";
   public static final String METRICS_SEND_INTERVAL = "sendInterval";
   public static final String METRICS_POST_TIMEOUT_SECONDS = "timeout";
-  public static final String COLLECTOR_PROPERTY = "collector";
+  public static final String COLLECTOR_HOSTS_PROPERTY = "collector.hosts";
   public static final String COLLECTOR_PROTOCOL = "protocol";
   public static final String COLLECTOR_PORT = "port";
   public static final String ZOOKEEPER_QUORUM = "zookeeper.quorum";
@@ -211,6 +213,7 @@ public abstract class AbstractTimelineMetricsSink {
 
     String connectUrl = getCollectorUri(collectorHost);
     String jsonData = null;
+    LOG.debug("EmitMetrics connectUrl = "  + connectUrl);
     try {
       jsonData = mapper.writeValueAsString(metrics);
     } catch (IOException e) {
@@ -326,22 +329,16 @@ public abstract class AbstractTimelineMetricsSink {
       }
     }
 
-    String collectorHosts = getConfiguredCollectors();
+    Collection<String> collectorHosts = getConfiguredCollectorHosts();
+
+    LOG.debug("Trying to find live collector host from : " + collectorHosts);
     // Reach out to all configured collectors before Zookeeper
     if (collectorHosts != null && !collectorHosts.isEmpty()) {
-      String[] hosts = collectorHosts.split(",");
-      for (String hostPortStr : hosts) {
-        if (hostPortStr != null && !hostPortStr.isEmpty()) {
-          String[] hostPortPair = hostPortStr.split(":");
-          if (hostPortPair.length < 2) {
-            LOG.warn("Collector port is missing from the configuration.");
-            continue;
-          }
-          String hostStr = hostPortPair[0].trim();
-          String portStr = hostPortPair[1].trim();
-          // Check liveliness and get known instances
+      for (String hostStr : collectorHosts) {
+        hostStr = hostStr.trim();
+        if (!hostStr.isEmpty()) {
           try {
-            Collection<String> liveHosts = findLiveCollectorHostsFromKnownCollector(hostStr, portStr);
+            Collection<String> liveHosts = findLiveCollectorHostsFromKnownCollector(hostStr, getCollectorPort());
             // Update live Hosts - current host will already be a part of this
             for (String host : liveHosts) {
               allKnownLiveCollectors.add(host);
@@ -377,6 +374,7 @@ public abstract class AbstractTimelineMetricsSink {
 
       return targetCollectorHostSupplier.get();
     }
+    LOG.warn("Couldn't find any live collectors. Returning null");
     return null;
   }
 
@@ -455,6 +453,31 @@ public abstract class AbstractTimelineMetricsSink {
     sb.append(WS_V1_TIMELINE_METRICS);
     return sb.toString();
   }
+  /**
+   * Parses input Sting of format "['host1', 'host2']" into Collection of hostnames
+   */
+  protected Collection<String> parseHostsStringIntoCollection(String hostsString) {
+    Set<String> hosts = new HashSet<>();
+
+    if (hostsString == null) {
+      LOG.error("No Metric collector configured.");
+      return hosts;
+    }
+
+    hostsString = hostsString.replace("[", "");
+    hostsString = hostsString.replace("]", "");
+    hostsString = hostsString.replace("'", "");
+
+    String [] hostNamesWithApostrophes  = hostsString.split(",");
+
+    for (String host : hostNamesWithApostrophes) {
+      host = host.trim();
+      if (host.equals("")) continue;
+      hosts.add(host);
+    }
+
+    return hosts;
+  }
 
   /**
    * Get a pre-formatted URI for the collector
@@ -463,6 +486,8 @@ public abstract class AbstractTimelineMetricsSink {
 
   abstract protected String getCollectorProtocol();
 
+  abstract protected String getCollectorPort();
+
   /**
    * How soon to timeout on the emit calls in seconds.
    */
@@ -475,10 +500,10 @@ public abstract class AbstractTimelineMetricsSink {
   abstract protected String getZookeeperQuorum();
 
   /**
-   * Get pre-configured list of collectors available
-   * @return String "host1:port,host2:port"
+   * Get pre-configured list of collectors hosts available
+   * @return Collection<String> host1,host2
    */
-  abstract protected String getConfiguredCollectors();
+  abstract protected Collection<String> getConfiguredCollectorHosts();
 
   /**
    * Get hostname used for calculating write shard.

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/ambari-metrics/ambari-metrics-common/src/test/java/org/apache/hadoop/metrics2/sink/timeline/availability/MetricCollectorHATest.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-common/src/test/java/org/apache/hadoop/metrics2/sink/timeline/availability/MetricCollectorHATest.java b/ambari-metrics/ambari-metrics-common/src/test/java/org/apache/hadoop/metrics2/sink/timeline/availability/MetricCollectorHATest.java
index 7fadeb2..ac1f52d 100644
--- a/ambari-metrics/ambari-metrics-common/src/test/java/org/apache/hadoop/metrics2/sink/timeline/availability/MetricCollectorHATest.java
+++ b/ambari-metrics/ambari-metrics-common/src/test/java/org/apache/hadoop/metrics2/sink/timeline/availability/MetricCollectorHATest.java
@@ -27,11 +27,12 @@ import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.powermock.modules.junit4.PowerMockRunner;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.OutputStream;
 import java.net.HttpURLConnection;
 import java.net.URL;
 import java.util.ArrayList;
-import java.util.HashSet;
+import java.util.Arrays;
+import java.util.Collection;
+
 import static org.easymock.EasyMock.expect;
 import static org.powermock.api.easymock.PowerMock.createNiceMock;
 import static org.powermock.api.easymock.PowerMock.expectNew;
@@ -49,7 +50,8 @@ public class MetricCollectorHATest {
     URL url = createNiceMock(URL.class);
     MetricCollectorHAHelper haHelper = createNiceMock(MetricCollectorHAHelper.class);
 
-    expectNew(URL.class, "http://localhost:2181/ws/v1/timeline/metrics/livenodes").andReturn(url).anyTimes();
+    expectNew(URL.class, "http://localhost1:2181/ws/v1/timeline/metrics/livenodes").andReturn(url).anyTimes();
+    expectNew(URL.class, "http://localhost2:2181/ws/v1/timeline/metrics/livenodes").andReturn(url).anyTimes();
     expect(url.openConnection()).andReturn(connection).anyTimes();
     expect(connection.getInputStream()).andReturn(is).anyTimes();
     expect(connection.getResponseCode()).andThrow(new IOException()).anyTimes();
@@ -82,7 +84,8 @@ public class MetricCollectorHATest {
     output.add("h3");
     InputStream is = IOUtils.toInputStream(gson.toJson(output));
 
-    expectNew(URL.class, "http://localhost:2181/ws/v1/timeline/metrics/livenodes").andReturn(url).anyTimes();
+    expectNew(URL.class, "http://localhost1:2181/ws/v1/timeline/metrics/livenodes").andReturn(url).anyTimes();
+    expectNew(URL.class, "http://localhost2:2181/ws/v1/timeline/metrics/livenodes").andReturn(url).anyTimes();
     expect(url.openConnection()).andReturn(connection).anyTimes();
     expect(connection.getInputStream()).andReturn(is).anyTimes();
     expect(connection.getResponseCode()).andReturn(200).anyTimes();
@@ -127,18 +130,23 @@ public class MetricCollectorHATest {
     }
 
     @Override
+    protected String getCollectorPort() {
+      return "2181";
+    }
+
+    @Override
     protected int getTimeoutSeconds() {
       return 10;
     }
 
     @Override
     protected String getZookeeperQuorum() {
-      return "localhost:2181";
+      return "localhost1:2181";
     }
 
     @Override
-    protected String getConfiguredCollectors() {
-      return "localhost:2181";
+    protected Collection<String> getConfiguredCollectorHosts() {
+      return Arrays.asList("localhost1",  "localhost2");
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/ambari-metrics/ambari-metrics-common/src/test/java/org/apache/hadoop/metrics2/sink/timeline/cache/HandleConnectExceptionTest.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-common/src/test/java/org/apache/hadoop/metrics2/sink/timeline/cache/HandleConnectExceptionTest.java b/ambari-metrics/ambari-metrics-common/src/test/java/org/apache/hadoop/metrics2/sink/timeline/cache/HandleConnectExceptionTest.java
index ccaa574..36ec074 100644
--- a/ambari-metrics/ambari-metrics-common/src/test/java/org/apache/hadoop/metrics2/sink/timeline/cache/HandleConnectExceptionTest.java
+++ b/ambari-metrics/ambari-metrics-common/src/test/java/org/apache/hadoop/metrics2/sink/timeline/cache/HandleConnectExceptionTest.java
@@ -21,9 +21,10 @@ import java.io.IOException;
 import java.io.OutputStream;
 import java.net.HttpURLConnection;
 import java.net.URL;
+import java.util.Arrays;
+import java.util.Collection;
 
 import org.apache.hadoop.metrics2.sink.timeline.AbstractTimelineMetricsSink;
-import org.apache.hadoop.metrics2.sink.timeline.TimelineMetric;
 import org.apache.hadoop.metrics2.sink.timeline.TimelineMetrics;
 import org.apache.hadoop.metrics2.sink.timeline.UnableToConnectException;
 import org.junit.Assert;
@@ -99,6 +100,11 @@ public class HandleConnectExceptionTest {
     }
 
     @Override
+    protected String getCollectorPort() {
+      return "2181";
+    }
+
+    @Override
     protected int getTimeoutSeconds() {
       return 10;
     }
@@ -109,8 +115,8 @@ public class HandleConnectExceptionTest {
     }
 
     @Override
-    protected String getConfiguredCollectors() {
-      return "localhost:2181";
+    protected Collection<String> getConfiguredCollectorHosts() {
+      return Arrays.asList("localhost");
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/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 1b36e9a..c1b684b 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
@@ -34,6 +34,7 @@ import java.io.IOException;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -55,7 +56,7 @@ public class FlumeTimelineMetricsSink extends AbstractTimelineMetricsSink implem
   private long pollFrequency;
   private String hostname;
   private String port;
-  private String collectors;
+  private Collection<String> collectorHosts;
   private String zookeeperQuorum;
   private final static String COUNTER_METRICS_PROPERTY = "counters";
   private final Set<String> counterMetrics = new HashSet<String>();
@@ -99,7 +100,7 @@ public class FlumeTimelineMetricsSink extends AbstractTimelineMetricsSink implem
     metricsSendInterval = Integer.parseInt(configuration.getProperty(METRICS_SEND_INTERVAL,
         String.valueOf(TimelineMetricsCache.MAX_EVICTION_TIME_MILLIS)));
     metricsCaches = new HashMap<String, TimelineMetricsCache>();
-    collectors = configuration.getProperty(COLLECTOR_PROPERTY);
+    collectorHosts = parseHostsStringIntoCollection(configuration.getProperty(COLLECTOR_HOSTS_PROPERTY));
     zookeeperQuorum = configuration.getProperty("zookeeper.quorum");
     protocol = configuration.getProperty(COLLECTOR_PROTOCOL, "http");
     port = configuration.getProperty(COLLECTOR_PORT, "6188");
@@ -130,6 +131,11 @@ public class FlumeTimelineMetricsSink extends AbstractTimelineMetricsSink implem
   }
 
   @Override
+  protected String getCollectorPort() {
+    return port;
+  }
+
+  @Override
   protected int getTimeoutSeconds() {
     return timeoutSeconds;
   }
@@ -140,8 +146,8 @@ public class FlumeTimelineMetricsSink extends AbstractTimelineMetricsSink implem
   }
 
   @Override
-  protected String getConfiguredCollectors() {
-    return collectors;
+  protected Collection<String> getConfiguredCollectorHosts() {
+    return collectorHosts;
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/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 b720ba9..d81187e 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
@@ -52,7 +52,7 @@ public class HadoopTimelineMetricsSink extends AbstractTimelineMetricsSink imple
   private TimelineMetricsCache metricsCache;
   private String hostName = "UNKNOWN.example.com";
   private String serviceName = "";
-  private String collectors;
+  private Collection<String> collectorHosts;
   private String collectorUri;
   private String containerMetricsUri;
   private String protocol;
@@ -101,10 +101,10 @@ public class HadoopTimelineMetricsSink extends AbstractTimelineMetricsSink imple
 
     // Load collector configs
     protocol = conf.getString(COLLECTOR_PROTOCOL, "http");
-    collectors = conf.getString(COLLECTOR_PROPERTY, "").trim();
+    collectorHosts = parseHostsStringArrayIntoCollection(conf.getStringArray(COLLECTOR_HOSTS_PROPERTY));
     port = conf.getString(COLLECTOR_PORT, "6188");
 
-    if (StringUtils.isEmpty(collectors)) {
+    if (collectorHosts.isEmpty()) {
       LOG.error("No Metric collector configured.");
     } else {
       String preferredCollectorHost = findPreferredCollectHost();
@@ -119,6 +119,7 @@ public class HadoopTimelineMetricsSink extends AbstractTimelineMetricsSink imple
     }
 
     LOG.info("Collector Uri: " + collectorUri);
+    LOG.info("Container Metrics Uri: " + containerMetricsUri);
 
     timeoutSeconds = conf.getInt(METRICS_POST_TIMEOUT_SECONDS, DEFAULT_POST_TIMEOUT_SECONDS);
 
@@ -192,6 +193,18 @@ public class HadoopTimelineMetricsSink extends AbstractTimelineMetricsSink imple
     return conf.getPrefix();
   }
 
+  /**
+   * Parses input Stings array of format "['host1'", '"host2']" into Collection of hostnames
+   */
+  protected Collection<String> parseHostsStringArrayIntoCollection(String[] hostStrings) {
+    Collection<String> result = new HashSet<>();
+    if (hostStrings == null) return result;
+    for (String s : hostStrings) {
+      result.addAll(parseHostsStringIntoCollection(s));
+    }
+    return result;
+  }
+
   @Override
   protected String getCollectorUri(String host) {
     return constructTimelineMetricUri(protocol, host, port);
@@ -213,11 +226,15 @@ public class HadoopTimelineMetricsSink extends AbstractTimelineMetricsSink imple
   }
 
   @Override
-  protected String getConfiguredCollectors() {
-    return collectors;
+  protected Collection<String> getConfiguredCollectorHosts() {
+    return collectorHosts;
   }
 
   @Override
+  protected String getCollectorPort() {
+    return port;
+  }
+  @Override
   protected String getHostname() {
     return hostName;
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/ambari-metrics/ambari-metrics-hadoop-sink/src/test/java/org/apache/hadoop/metrics2/sink/timeline/HadoopTimelineMetricsSinkTest.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-hadoop-sink/src/test/java/org/apache/hadoop/metrics2/sink/timeline/HadoopTimelineMetricsSinkTest.java b/ambari-metrics/ambari-metrics-hadoop-sink/src/test/java/org/apache/hadoop/metrics2/sink/timeline/HadoopTimelineMetricsSinkTest.java
index f44ca35..3259c18 100644
--- a/ambari-metrics/ambari-metrics-hadoop-sink/src/test/java/org/apache/hadoop/metrics2/sink/timeline/HadoopTimelineMetricsSinkTest.java
+++ b/ambari-metrics/ambari-metrics-hadoop-sink/src/test/java/org/apache/hadoop/metrics2/sink/timeline/HadoopTimelineMetricsSinkTest.java
@@ -52,7 +52,7 @@ import java.util.List;
 import java.util.Set;
 
 import static org.apache.hadoop.metrics2.sink.timeline.AbstractTimelineMetricsSink.COLLECTOR_PORT;
-import static org.apache.hadoop.metrics2.sink.timeline.AbstractTimelineMetricsSink.COLLECTOR_PROPERTY;
+import static org.apache.hadoop.metrics2.sink.timeline.AbstractTimelineMetricsSink.COLLECTOR_HOSTS_PROPERTY;
 import static org.apache.hadoop.metrics2.sink.timeline.AbstractTimelineMetricsSink.COLLECTOR_PROTOCOL;
 import static org.apache.hadoop.metrics2.sink.timeline.AbstractTimelineMetricsSink.MAX_METRIC_ROW_CACHE_SIZE;
 import static org.apache.hadoop.metrics2.sink.timeline.AbstractTimelineMetricsSink.METRICS_SEND_INTERVAL;
@@ -99,7 +99,7 @@ public class HadoopTimelineMetricsSinkTest {
     expect(conf.getString("slave.host.name")).andReturn("localhost").anyTimes();
     expect(conf.getParent()).andReturn(null).anyTimes();
     expect(conf.getPrefix()).andReturn("service").anyTimes();
-    expect(conf.getString(eq(COLLECTOR_PROPERTY), eq(""))).andReturn("localhost:6188").anyTimes();
+    expect(conf.getStringArray(eq(COLLECTOR_HOSTS_PROPERTY))).andReturn(new String[]{"['localhost", "'localhost2']"}).anyTimes();
     expect(conf.getString(eq("serviceName-prefix"), eq(""))).andReturn("").anyTimes();
     expect(conf.getString(eq(COLLECTOR_PROTOCOL), eq("http"))).andReturn("http").anyTimes();
     expect(conf.getString(eq(COLLECTOR_PORT), eq("6188"))).andReturn("6188").anyTimes();
@@ -171,7 +171,7 @@ public class HadoopTimelineMetricsSinkTest {
     expect(conf.getString("slave.host.name")).andReturn("localhost").anyTimes();
     expect(conf.getParent()).andReturn(null).anyTimes();
     expect(conf.getPrefix()).andReturn("service").anyTimes();
-    expect(conf.getString(eq(COLLECTOR_PROPERTY), eq(""))).andReturn("localhost:6188").anyTimes();
+    expect(conf.getStringArray(eq(COLLECTOR_HOSTS_PROPERTY))).andReturn(new String[]{"['localhost", "'localhost2']"}).anyTimes();
     expect(conf.getString(eq("serviceName-prefix"), eq(""))).andReturn("").anyTimes();
     expect(conf.getString(eq(COLLECTOR_PROTOCOL), eq("http"))).andReturn("http").anyTimes();
     expect(conf.getString(eq(COLLECTOR_PORT), eq("6188"))).andReturn("6188").anyTimes();
@@ -183,6 +183,8 @@ public class HadoopTimelineMetricsSinkTest {
 
     expect(sink.findLiveCollectorHostsFromKnownCollector("localhost", "6188"))
       .andReturn(Collections.singletonList("localhost")).anyTimes();
+    expect(sink.findLiveCollectorHostsFromKnownCollector("localhost2", "6188"))
+            .andReturn(Collections.singletonList("localhost2")).anyTimes();
 
     conf.setListDelimiter(eq(','));
     expectLastCall().anyTimes();
@@ -299,13 +301,15 @@ public class HadoopTimelineMetricsSinkTest {
     expect(conf.getString("slave.host.name")).andReturn("localhost").anyTimes();
     expect(conf.getParent()).andReturn(null).anyTimes();
     expect(conf.getPrefix()).andReturn("service").anyTimes();
-    expect(conf.getString(eq(COLLECTOR_PROPERTY), eq(""))).andReturn("localhost:6188").anyTimes();
+    expect(conf.getStringArray(eq(COLLECTOR_HOSTS_PROPERTY))).andReturn(new String[]{"['localhost", "'localhost2']"}).anyTimes();
     expect(conf.getString(eq("serviceName-prefix"), eq(""))).andReturn("").anyTimes();
     expect(conf.getString(eq(COLLECTOR_PROTOCOL), eq("http"))).andReturn("http").anyTimes();
     expect(conf.getString(eq(COLLECTOR_PORT), eq("6188"))).andReturn("6188").anyTimes();
 
     expect(sink.findLiveCollectorHostsFromKnownCollector("localhost", "6188"))
       .andReturn(Collections.singletonList("localhost")).anyTimes();
+    expect(sink.findLiveCollectorHostsFromKnownCollector("localhost2", "6188"))
+            .andReturn(Collections.singletonList("localhost2")).anyTimes();
 
     expect(conf.getInt(eq(MAX_METRIC_ROW_CACHE_SIZE), anyInt())).andReturn(10).anyTimes();
     expect(conf.getInt(eq(METRICS_SEND_INTERVAL), anyInt())).andReturn(10).anyTimes();

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/ambari-metrics/ambari-metrics-kafka-sink/src/main/java/org/apache/hadoop/metrics2/sink/kafka/KafkaTimelineMetricsReporter.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-kafka-sink/src/main/java/org/apache/hadoop/metrics2/sink/kafka/KafkaTimelineMetricsReporter.java b/ambari-metrics/ambari-metrics-kafka-sink/src/main/java/org/apache/hadoop/metrics2/sink/kafka/KafkaTimelineMetricsReporter.java
index 9c16564..fef1f24 100644
--- a/ambari-metrics/ambari-metrics-kafka-sink/src/main/java/org/apache/hadoop/metrics2/sink/kafka/KafkaTimelineMetricsReporter.java
+++ b/ambari-metrics/ambari-metrics-kafka-sink/src/main/java/org/apache/hadoop/metrics2/sink/kafka/KafkaTimelineMetricsReporter.java
@@ -45,6 +45,7 @@ import org.apache.hadoop.metrics2.sink.timeline.cache.TimelineMetricsCache;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map.Entry;
@@ -76,7 +77,7 @@ public class KafkaTimelineMetricsReporter extends AbstractTimelineMetricsSink
   private final Object lock = new Object();
   private String hostname;
   private String metricCollectorPort;
-  private String collectors;
+  private Collection<String> collectorHosts;
   private String metricCollectorProtocol;
   private TimelineScheduledReporter reporter;
   private TimelineMetricsCache metricsCache;
@@ -99,6 +100,11 @@ public class KafkaTimelineMetricsReporter extends AbstractTimelineMetricsSink
   }
 
   @Override
+  protected String getCollectorPort() {
+    return metricCollectorPort;
+  }
+
+  @Override
   protected int getTimeoutSeconds() {
     return timeoutSeconds;
   }
@@ -109,8 +115,8 @@ public class KafkaTimelineMetricsReporter extends AbstractTimelineMetricsSink
   }
 
   @Override
-  protected String getConfiguredCollectors() {
-    return collectors;
+  protected Collection<String> getConfiguredCollectorHosts() {
+    return collectorHosts;
   }
 
   @Override
@@ -147,7 +153,7 @@ public class KafkaTimelineMetricsReporter extends AbstractTimelineMetricsSink
 
         zookeeperQuorum = props.getString("zookeeper.connect");
         metricCollectorPort = props.getString(TIMELINE_PORT_PROPERTY, TIMELINE_DEFAULT_PORT);
-        collectors = props.getString(TIMELINE_HOSTS_PROPERTY, TIMELINE_DEFAULT_HOST + ":" + metricCollectorPort);
+        collectorHosts = parseHostsStringIntoCollection(props.getString(TIMELINE_HOSTS_PROPERTY, TIMELINE_DEFAULT_HOST));
         metricCollectorProtocol = props.getString(TIMELINE_PROTOCOL_PROPERTY, TIMELINE_DEFAULT_PROTOCOL);
 
         setMetricsCache(new TimelineMetricsCache(maxRowCacheSize, metricsSendInterval));

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/ambari-metrics/ambari-metrics-storm-sink-legacy/src/main/java/org/apache/hadoop/metrics2/sink/storm/StormTimelineMetricsReporter.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-storm-sink-legacy/src/main/java/org/apache/hadoop/metrics2/sink/storm/StormTimelineMetricsReporter.java b/ambari-metrics/ambari-metrics-storm-sink-legacy/src/main/java/org/apache/hadoop/metrics2/sink/storm/StormTimelineMetricsReporter.java
index 73381d9..ef73a0e 100644
--- a/ambari-metrics/ambari-metrics-storm-sink-legacy/src/main/java/org/apache/hadoop/metrics2/sink/storm/StormTimelineMetricsReporter.java
+++ b/ambari-metrics/ambari-metrics-storm-sink-legacy/src/main/java/org/apache/hadoop/metrics2/sink/storm/StormTimelineMetricsReporter.java
@@ -33,6 +33,7 @@ import org.apache.hadoop.metrics2.sink.timeline.UnableToConnectException;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 
@@ -45,7 +46,7 @@ public class StormTimelineMetricsReporter extends AbstractTimelineMetricsSink
   private String hostname;
   private String collectorUri;
   private String port;
-  private String collectors;
+  private Collection<String> collectorHosts;
   private String zkQuorum;
   private String protocol;
   private NimbusClient nimbusClient;
@@ -77,8 +78,13 @@ public class StormTimelineMetricsReporter extends AbstractTimelineMetricsSink
   }
 
   @Override
-  protected String getConfiguredCollectors() {
-    return collectors;
+  protected Collection<String> getConfiguredCollectorHosts() {
+    return collectorHosts;
+  }
+
+  @Override
+  protected String getCollectorPort() {
+    return port;
   }
 
   @Override
@@ -105,7 +111,7 @@ public class StormTimelineMetricsReporter extends AbstractTimelineMetricsSink
       Map stormConf = Utils.readStormConfig();
       this.nimbusClient = NimbusClient.getConfiguredClient(stormConf);
 
-      collectors = cf.get(COLLECTOR_PROPERTY).toString();
+      collectorHosts = parseHostsStringIntoCollection(cf.get(COLLECTOR_HOSTS_PROPERTY).toString());
       protocol = cf.get(COLLECTOR_PROTOCOL) != null ? cf.get(COLLECTOR_PROTOCOL).toString() : "http";
       port = cf.get(COLLECTOR_PORT) != null ? cf.get(COLLECTOR_PORT).toString() : "6188";
       zkQuorum = cf.get(ZOOKEEPER_QUORUM) != null ? cf.get(ZOOKEEPER_QUORUM).toString() : null;

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/ambari-metrics/ambari-metrics-storm-sink-legacy/src/main/java/org/apache/hadoop/metrics2/sink/storm/StormTimelineMetricsSink.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-storm-sink-legacy/src/main/java/org/apache/hadoop/metrics2/sink/storm/StormTimelineMetricsSink.java b/ambari-metrics/ambari-metrics-storm-sink-legacy/src/main/java/org/apache/hadoop/metrics2/sink/storm/StormTimelineMetricsSink.java
index 0d3b770..60c1427 100644
--- a/ambari-metrics/ambari-metrics-storm-sink-legacy/src/main/java/org/apache/hadoop/metrics2/sink/storm/StormTimelineMetricsSink.java
+++ b/ambari-metrics/ambari-metrics-storm-sink-legacy/src/main/java/org/apache/hadoop/metrics2/sink/storm/StormTimelineMetricsSink.java
@@ -53,7 +53,7 @@ public class StormTimelineMetricsSink extends AbstractTimelineMetricsSink implem
   private TimelineMetricsCache metricsCache;
   private String hostname;
   private int timeoutSeconds;
-  private String collectors;
+  private Collection<String> collectorHosts;
   private String zkQuorum;
   private String protocol;
   private String port;
@@ -81,8 +81,13 @@ public class StormTimelineMetricsSink extends AbstractTimelineMetricsSink implem
   }
 
   @Override
-  protected String getConfiguredCollectors() {
-    return collectors;
+  protected Collection<String> getConfiguredCollectorHosts() {
+    return collectorHosts;
+  }
+
+  @Override
+  protected String getCollectorPort() {
+    return port;
   }
 
   @Override
@@ -112,7 +117,7 @@ public class StormTimelineMetricsSink extends AbstractTimelineMetricsSink implem
         String.valueOf(MAX_EVICTION_TIME_MILLIS)));
     applicationId = configuration.getProperty(CLUSTER_REPORTER_APP_ID, DEFAULT_CLUSTER_REPORTER_APP_ID);
     metricsCache = new TimelineMetricsCache(maxRowCacheSize, metricsSendInterval);
-    collectors = configuration.getProperty(COLLECTOR_PROPERTY);
+    collectorHosts = parseHostsStringIntoCollection(configuration.getProperty(COLLECTOR_HOSTS_PROPERTY));
     zkQuorum = configuration.getProperty("zookeeper.quorum");
     protocol = configuration.getProperty(COLLECTOR_PROTOCOL, "http");
     port = configuration.getProperty(COLLECTOR_PORT, "6188");
@@ -296,4 +301,4 @@ public class StormTimelineMetricsSink extends AbstractTimelineMetricsSink implem
     this.metricsCache = metricsCache;
   }
 
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/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 9082e70..802e57d 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,7 @@ public class StormTimelineMetricsReporter extends AbstractTimelineMetricsSink
 
   private String hostname;
   private String port;
-  private String collectors;
+  private Collection<String> collectorHosts;
   private String zkQuorum;
   private String protocol;
   private String applicationId;
@@ -73,8 +73,13 @@ public class StormTimelineMetricsReporter extends AbstractTimelineMetricsSink
   }
 
   @Override
-  protected String getConfiguredCollectors() {
-    return collectors;
+  protected String getCollectorPort() {
+    return port;
+  }
+
+  @Override
+  protected Collection<String> getConfiguredCollectorHosts() {
+    return collectorHosts;
   }
 
   @Override
@@ -98,7 +103,7 @@ public class StormTimelineMetricsReporter extends AbstractTimelineMetricsSink
       }
 
       Configuration configuration = new Configuration("/storm-metrics2.properties");
-      collectors = configuration.getProperty(COLLECTOR_PROPERTY);
+      collectorHosts = parseHostsStringIntoCollection(configuration.getProperty(COLLECTOR_HOSTS_PROPERTY));
       protocol = configuration.getProperty(COLLECTOR_PROTOCOL, "http");
       port = configuration.getProperty(COLLECTOR_PORT, "6188");
       zkQuorum = configuration.getProperty(ZOOKEEPER_QUORUM);

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/ambari-metrics/ambari-metrics-storm-sink/src/main/java/org/apache/hadoop/metrics2/sink/storm/StormTimelineMetricsSink.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-storm-sink/src/main/java/org/apache/hadoop/metrics2/sink/storm/StormTimelineMetricsSink.java b/ambari-metrics/ambari-metrics-storm-sink/src/main/java/org/apache/hadoop/metrics2/sink/storm/StormTimelineMetricsSink.java
index f6531c8..5a3eac1 100644
--- a/ambari-metrics/ambari-metrics-storm-sink/src/main/java/org/apache/hadoop/metrics2/sink/storm/StormTimelineMetricsSink.java
+++ b/ambari-metrics/ambari-metrics-storm-sink/src/main/java/org/apache/hadoop/metrics2/sink/storm/StormTimelineMetricsSink.java
@@ -61,7 +61,7 @@ public class StormTimelineMetricsSink extends AbstractTimelineMetricsSink implem
   private TimelineMetricsCache metricsCache;
   private String hostname;
   private int timeoutSeconds;
-  private String collectors;
+  private Collection<String> collectorHosts;
   private String zkQuorum;
   private String protocol;
   private String port;
@@ -89,8 +89,13 @@ public class StormTimelineMetricsSink extends AbstractTimelineMetricsSink implem
   }
 
   @Override
-  protected String getConfiguredCollectors() {
-    return collectors;
+  protected Collection<String> getConfiguredCollectorHosts() {
+    return collectorHosts;
+  }
+
+  @Override
+  protected String getCollectorPort() {
+    return port;
   }
 
   @Override
@@ -120,7 +125,7 @@ public class StormTimelineMetricsSink extends AbstractTimelineMetricsSink implem
         String.valueOf(MAX_EVICTION_TIME_MILLIS)));
     applicationId = configuration.getProperty(CLUSTER_REPORTER_APP_ID, DEFAULT_CLUSTER_REPORTER_APP_ID);
     metricsCache = new TimelineMetricsCache(maxRowCacheSize, metricsSendInterval);
-    collectors = configuration.getProperty(COLLECTOR_PROPERTY);
+    collectorHosts = parseHostsStringIntoCollection(configuration.getProperty(COLLECTOR_HOSTS_PROPERTY));
     zkQuorum = configuration.getProperty("zookeeper.quorum");
     protocol = configuration.getProperty(COLLECTOR_PROTOCOL, "http");
     port = configuration.getProperty(COLLECTOR_PORT, "6188");
@@ -381,4 +386,4 @@ public class StormTimelineMetricsSink extends AbstractTimelineMetricsSink implem
     this.metricsCache = metricsCache;
   }
 
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/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 4618618..00d205a 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.io.IOException;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 
@@ -101,6 +102,11 @@ public class AmbariMetricSinkImpl extends AbstractTimelineMetricsSink implements
   }
 
   @Override
+  protected String getCollectorPort() {
+    return null;
+  }
+
+  @Override
   protected int getTimeoutSeconds() {
       return timeoutSeconds;
   }
@@ -118,10 +124,10 @@ public class AmbariMetricSinkImpl extends AbstractTimelineMetricsSink implements
   /**
    * Get pre-configured list of collectors available
    *
-   * @return String "host1:port,host2:port"
+   * @return Collection<String> host1,host2
    */
   @Override
-  protected String getConfiguredCollectors() {
+  protected Collection<String> getConfiguredCollectorHosts() {
     return null;
   }
 
@@ -158,4 +164,4 @@ public class AmbariMetricSinkImpl extends AbstractTimelineMetricsSink implements
       timelineMetric.getMetricValues().put(currentTimeMillis, attributeValue.doubleValue());
       return timelineMetric;
   }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/params.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/params.py b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/params.py
index a8a7327..e00c1f5 100644
--- a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/params.py
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/params.py
@@ -126,11 +126,6 @@ ams_collector_hosts = default("/clusterHostInfo/metrics_collector_hosts", [])
 has_metric_collector = not len(ams_collector_hosts) == 0
 if has_metric_collector:
   if 'cluster-env' in config['configurations'] and \
-      'metrics_collector_vip_host' in config['configurations']['cluster-env']:
-    metric_collector_host = config['configurations']['cluster-env']['metrics_collector_vip_host']
-  else:
-    metric_collector_host = select_metric_collector_hosts_from_hostnames(ams_collector_hosts)
-  if 'cluster-env' in config['configurations'] and \
       'metrics_collector_vip_port' in config['configurations']['cluster-env']:
     metric_collector_port = config['configurations']['cluster-env']['metrics_collector_vip_port']
   else:

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/templates/hadoop-metrics2-accumulo.properties.j2
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/templates/hadoop-metrics2-accumulo.properties.j2 b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/templates/hadoop-metrics2-accumulo.properties.j2
index 3cd535e..f7926d0 100644
--- a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/templates/hadoop-metrics2-accumulo.properties.j2
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/templates/hadoop-metrics2-accumulo.properties.j2
@@ -22,20 +22,24 @@
 *.sink.timeline.slave.host.name={{hostname}}
 accumulo.class=org.apache.hadoop.metrics2.sink.timeline.HadoopTimelineMetricsSink
 accumulo.period={{metrics_collection_period}}
-accumulo.collector={{metric_collector_host}}:{{metric_collector_port}}
+accumulo.collector.hosts={{ams_collector_hosts}}
+accumulo.port={{metric_collector_port}}
 
 jvm.class=org.apache.hadoop.metrics2.sink.timeline.HadoopTimelineMetricsSink
 jvm.period={{metrics_collection_period}}
-jvm.collector={{metric_collector_host}}:{{metric_collector_port}}
+jvm.collector.hosts={{ams_collector_hosts}}
+jvm.port={{metric_collector_port}}
 
 rpc.class=org.apache.hadoop.metrics2.sink.timeline.HadoopTimelineMetricsSink
 rpc.period={{metrics_collection_period}}
-rpc.collector={{metric_collector_host}}:{{metric_collector_port}}
+rpc.collector.hosts={{ams_collector_hosts}}
+rpc.port={{metric_collector_port}}
 
 accumulo.sink.timeline.class=org.apache.hadoop.metrics2.sink.timeline.HadoopTimelineMetricsSink
 accumulo.sink.timeline.period={{metrics_collection_period}}
 accumulo.sink.timeline.sendInterval={{metrics_report_interval}}000
-accumulo.sink.timeline.collector={{metric_collector_host}}:{{metric_collector_port}}
+accumulo.sink.timeline.collector.hosts={{ams_collector_hosts}}
+accumulo.sink.timeline.port={{metric_collector_port}}
 
 # HTTPS properties
 accumulo.sink.timeline.truststore.path = {{metric_truststore_path}}

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/templates/hadoop-metrics2-hbase.properties.j2
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/templates/hadoop-metrics2-hbase.properties.j2 b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/templates/hadoop-metrics2-hbase.properties.j2
index 586cd47..8c20f2b 100644
--- a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/templates/hadoop-metrics2-hbase.properties.j2
+++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/templates/hadoop-metrics2-hbase.properties.j2
@@ -40,22 +40,26 @@ hbase.extendedperiod = 3600
 
 hbase.class=org.apache.hadoop.metrics2.sink.timeline.HadoopTimelineMetricsSink
 hbase.period=30
-hbase.collector={{metric_collector_host}}:{{metric_collector_port}}
+hbase.collector.hosts={{ams_collector_hosts}}
+hbase.port={{metric_collector_port}}
 
 jvm.class=org.apache.hadoop.metrics2.sink.timeline.HadoopTimelineMetricsSink
 jvm.period=30
-jvm.collector={{metric_collector_host}}:{{metric_collector_port}}
+jvm.collector.hosts={{ams_collector_hosts}}
+jvm.port={{metric_collector_port}}
 
 rpc.class=org.apache.hadoop.metrics2.sink.timeline.HadoopTimelineMetricsSink
 rpc.period=30
-rpc.collector={{metric_collector_host}}:{{metric_collector_port}}
+rpc.collector.hosts={{ams_collector_hosts}}
+rpc.port={{metric_collector_port}}
 
 *.timeline.plugin.urls=file:///usr/lib/ambari-metrics-hadoop-sink/ambari-metrics-hadoop-sink.jar
 *.sink.timeline.slave.host.name={{hostname}}
 hbase.sink.timeline.class=org.apache.hadoop.metrics2.sink.timeline.HadoopTimelineMetricsSink
 hbase.sink.timeline.period={{metrics_collection_period}}
 hbase.sink.timeline.sendInterval={{metrics_report_interval}}000
-hbase.sink.timeline.collector={{metric_collector_host}}:{{metric_collector_port}}
+hbase.sink.timeline.collector.hosts={{ams_collector_hosts}}
+hbase.sink.timeline.port={{metric_collector_port}}
 hbase.sink.timeline.serviceName-prefix=ams
 
 # HTTPS properties
@@ -65,4 +69,4 @@ hbase.sink.timeline.truststore.password = {{metric_truststore_password}}
 
 # Switch off metrics generation on a per region basis
 *.source.filter.class=org.apache.hadoop.metrics2.filter.RegexFilter
-hbase.*.source.filter.exclude=.*(Regions|Users|Tables).*
\ No newline at end of file
+hbase.*.source.filter.exclude=.*(Regions|Users|Tables).*

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/flume.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/flume.py b/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/flume.py
index b839eb8..5823271 100644
--- a/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/flume.py
+++ b/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/flume.py
@@ -184,6 +184,7 @@ def flume(action = None):
         if params.has_metric_collector:
           extra_args = '-Dflume.monitoring.type=org.apache.hadoop.metrics2.sink.flume.FlumeTimelineMetricsSink ' \
                        '-Dflume.monitoring.node={0}:{1}'
+          # TODO check if this is used.
           extra_args = extra_args.format(params.metric_collector_host, params.metric_collector_port)
 
         flume_cmd = flume_base.format(agent, flume_agent_conf_dir,

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/params.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/params.py b/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/params.py
index 9c79909..008e9d6 100644
--- a/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/params.py
+++ b/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/params.py
@@ -114,13 +114,6 @@ if has_metric_collector:
 metrics_report_interval = default("/configurations/ams-site/timeline.metrics.sink.report.interval", 60)
 metrics_collection_period = default("/configurations/ams-site/timeline.metrics.sink.collection.period", 10)
 
-#Collector hosts
-metric_collector_hosts = ""
-if ams_collector_hosts:
-  for host in ams_collector_hosts:
-    metric_collector_hosts += host + ':' + metric_collector_port + ','
-  metric_collector_hosts = metric_collector_hosts[:-1]
-
 # Cluster Zookeeper quorum
 zookeeper_quorum = None
 if not len(default("/clusterHostInfo/zookeeper_hosts", [])) == 0:

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/templates/flume-metrics2.properties.j2
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/templates/flume-metrics2.properties.j2 b/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/templates/flume-metrics2.properties.j2
index b960296..cf2bd6c 100644
--- a/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/templates/flume-metrics2.properties.j2
+++ b/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/templates/flume-metrics2.properties.j2
@@ -16,7 +16,7 @@
 # limitations under the License.
 #}
 
-collector={{metric_collector_hosts}}
+collector.hosts={{ams_collector_hosts}}
 protocol={{metric_collector_protocol}}
 zookeeper.quorum={{zookeeper_quorum}}
 port={{metric_collector_port}}

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/params_linux.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/params_linux.py b/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/params_linux.py
index 49b684b..3eb6991 100644
--- a/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/params_linux.py
+++ b/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/params_linux.py
@@ -155,11 +155,6 @@ ams_collector_hosts = default("/clusterHostInfo/metrics_collector_hosts", [])
 has_metric_collector = not len(ams_collector_hosts) == 0
 if has_metric_collector:
   if 'cluster-env' in config['configurations'] and \
-      'metrics_collector_vip_host' in config['configurations']['cluster-env']:
-    metric_collector_host = config['configurations']['cluster-env']['metrics_collector_vip_host']
-  else:
-    metric_collector_host = select_metric_collector_hosts_from_hostnames(ams_collector_hosts)
-  if 'cluster-env' in config['configurations'] and \
       'metrics_collector_vip_port' in config['configurations']['cluster-env']:
     metric_collector_port = config['configurations']['cluster-env']['metrics_collector_vip_port']
   else:
@@ -180,13 +175,6 @@ if has_metric_collector:
 metrics_report_interval = default("/configurations/ams-site/timeline.metrics.sink.report.interval", 60)
 metrics_collection_period = default("/configurations/ams-site/timeline.metrics.sink.collection.period", 10)
 
-#Collector hosts
-metric_collector_hosts = ""
-if ams_collector_hosts:
-  for host in ams_collector_hosts:
-    metric_collector_hosts += host + ':' + metric_collector_port + ','
-  metric_collector_hosts = metric_collector_hosts[:-1]
-
 # if hbase is selected the hbase_rs_hosts, should not be empty, but still default just in case
 if 'slave_hosts' in config['clusterHostInfo']:
   rs_hosts = default('/clusterHostInfo/hbase_rs_hosts', '/clusterHostInfo/slave_hosts') #if hbase_rs_hosts not given it is assumed that region servers on same nodes as slaves

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/templates/hadoop-metrics2-hbase.properties-GANGLIA-MASTER.j2
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/templates/hadoop-metrics2-hbase.properties-GANGLIA-MASTER.j2 b/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/templates/hadoop-metrics2-hbase.properties-GANGLIA-MASTER.j2
index e62ce9e..e808f5d 100644
--- a/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/templates/hadoop-metrics2-hbase.properties-GANGLIA-MASTER.j2
+++ b/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/templates/hadoop-metrics2-hbase.properties-GANGLIA-MASTER.j2
@@ -54,21 +54,28 @@ hbase.extendedperiod = 3600
 
 hbase.class=org.apache.hadoop.metrics2.sink.timeline.HadoopTimelineMetricsSink
 hbase.period={{metrics_collection_period}}
-hbase.collector={{metric_collector_host}}:{{metric_collector_port}}
+hbase.collector.hosts={{ams_collector_hosts}}
+hbase.protocol={{metric_collector_protocol}}
+hbase.port={{metric_collector_port}}
 
 jvm.class=org.apache.hadoop.metrics2.sink.timeline.HadoopTimelineMetricsSink
 jvm.period={{metrics_collection_period}}
-jvm.collector={{metric_collector_host}}:{{metric_collector_port}}
+jvm.collector.hosts={{ams_collector_hosts}}
+jvm.protocol={{metric_collector_protocol}}
+jvm.port={{metric_collector_port}}
 
 rpc.class=org.apache.hadoop.metrics2.sink.timeline.HadoopTimelineMetricsSink
 rpc.period={{metrics_collection_period}}
-rpc.collector={{metric_collector_host}}:{{metric_collector_port}}
+rpc.collector.hosts={{ams_collector_hosts}}
+rpc.protocol={{metric_collector_protocol}}
+rpc.port={{metric_collector_port}}
 
 hbase.sink.timeline.class=org.apache.hadoop.metrics2.sink.timeline.HadoopTimelineMetricsSink
 hbase.sink.timeline.period={{metrics_collection_period}}
 hbase.sink.timeline.sendInterval={{metrics_report_interval}}000
-hbase.sink.timeline.collector={{metric_collector_hosts}}
+hbase.sink.timeline.collector.hosts={{ams_collector_hosts}}
 hbase.sink.timeline.protocol={{metric_collector_protocol}}
+hbase.sink.timeline.port={{metric_collector_port}}
 
 # HTTPS properties
 hbase.sink.timeline.truststore.path = {{metric_truststore_path}}

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/templates/hadoop-metrics2-hbase.properties-GANGLIA-RS.j2
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/templates/hadoop-metrics2-hbase.properties-GANGLIA-RS.j2 b/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/templates/hadoop-metrics2-hbase.properties-GANGLIA-RS.j2
index 8183333..7e1abbc 100644
--- a/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/templates/hadoop-metrics2-hbase.properties-GANGLIA-RS.j2
+++ b/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/templates/hadoop-metrics2-hbase.properties-GANGLIA-RS.j2
@@ -52,21 +52,28 @@ hbase.extendedperiod = 3600
 *.sink.timeline.slave.host.name={{hostname}}
 hbase.class=org.apache.hadoop.metrics2.sink.timeline.HadoopTimelineMetricsSink
 hbase.period={{metrics_collection_period}}
-hbase.collector={{metric_collector_host}}:{{metric_collector_port}}
+hbase.collector.hosts={{ams_collector_hosts}}
+hbase.protocol={{metric_collector_protocol}}
+hbase.port={{metric_collector_port}}
 
 jvm.class=org.apache.hadoop.metrics2.sink.timeline.HadoopTimelineMetricsSink
 jvm.period={{metrics_collection_period}}
-jvm.collector={{metric_collector_host}}:{{metric_collector_port}}
+jvm.collector.hosts={{ams_collector_hosts}}
+jvm.protocol={{metric_collector_protocol}}
+jvm.port={{metric_collector_port}}
 
 rpc.class=org.apache.hadoop.metrics2.sink.timeline.HadoopTimelineMetricsSink
 rpc.period={{metrics_collection_period}}
-rpc.collector={{metric_collector_host}}:{{metric_collector_port}}
+rpc.collector.hosts={{ams_collector_hosts}}
+rpc.protocol={{metric_collector_protocol}}
+rpc.port={{metric_collector_port}}
 
 hbase.sink.timeline.class=org.apache.hadoop.metrics2.sink.timeline.HadoopTimelineMetricsSink
 hbase.sink.timeline.period={{metrics_collection_period}}
 hbase.sink.timeline.sendInterval={{metrics_report_interval}}000
-hbase.sink.timeline.collector={{metric_collector_hosts}}
+hbase.sink.timeline.collector.hosts={{ams_collector_hosts}}
 hbase.sink.timeline.protocol={{metric_collector_protocol}}
+hbase.sink.timeline.port={{metric_collector_port}}
 
 
 # HTTPS properties

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/configuration/hadoop-metrics2.properties.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/configuration/hadoop-metrics2.properties.xml b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/configuration/hadoop-metrics2.properties.xml
index 2b9964b..6b45e84 100644
--- a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/configuration/hadoop-metrics2.properties.xml
+++ b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/configuration/hadoop-metrics2.properties.xml
@@ -92,15 +92,15 @@ resourcemanager.sink.ganglia.tagsForPrefix.yarn=Queue
 *.sink.timeline.truststore.type = {{metric_truststore_type}}
 *.sink.timeline.truststore.password = {{metric_truststore_password}}
 
-datanode.sink.timeline.collector={{metric_collector_hosts}}
-namenode.sink.timeline.collector={{metric_collector_hosts}}
-resourcemanager.sink.timeline.collector={{metric_collector_hosts}}
-nodemanager.sink.timeline.collector={{metric_collector_hosts}}
-jobhistoryserver.sink.timeline.collector={{metric_collector_hosts}}
-journalnode.sink.timeline.collector={{metric_collector_hosts}}
-maptask.sink.timeline.collector={{metric_collector_hosts}}
-reducetask.sink.timeline.collector={{metric_collector_hosts}}
-applicationhistoryserver.sink.timeline.collector={{metric_collector_hosts}}
+datanode.sink.timeline.collector.hosts={{ams_collector_hosts}}
+namenode.sink.timeline.collector.hosts={{ams_collector_hosts}}
+resourcemanager.sink.timeline.collector.hosts={{ams_collector_hosts}}
+nodemanager.sink.timeline.collector.hosts={{ams_collector_hosts}}
+jobhistoryserver.sink.timeline.collector.hosts={{ams_collector_hosts}}
+journalnode.sink.timeline.collector.hosts={{ams_collector_hosts}}
+maptask.sink.timeline.collector.hosts={{ams_collector_hosts}}
+reducetask.sink.timeline.collector.hosts={{ams_collector_hosts}}
+applicationhistoryserver.sink.timeline.collector.hosts={{ams_collector_hosts}}
 
 resourcemanager.sink.timeline.tagsForPrefix.yarn=Queue
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/params_linux.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/params_linux.py b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/params_linux.py
index 558aa95..3caaefc 100644
--- a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/params_linux.py
+++ b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/params_linux.py
@@ -494,11 +494,6 @@ ams_collector_hosts = default("/clusterHostInfo/metrics_collector_hosts", [])
 has_metric_collector = not len(ams_collector_hosts) == 0
 if has_metric_collector:
   if 'cluster-env' in config['configurations'] and \
-      'metrics_collector_vip_host' in config['configurations']['cluster-env']:
-    metric_collector_host = config['configurations']['cluster-env']['metrics_collector_vip_host']
-  else:
-    metric_collector_host = select_metric_collector_hosts_from_hostnames(ams_collector_hosts)
-  if 'cluster-env' in config['configurations'] and \
       'metrics_collector_vip_port' in config['configurations']['cluster-env']:
     metric_collector_port = config['configurations']['cluster-env']['metrics_collector_vip_port']
   else:

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/templates/hadoop-metrics2-hivemetastore.properties.j2
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/templates/hadoop-metrics2-hivemetastore.properties.j2 b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/templates/hadoop-metrics2-hivemetastore.properties.j2
index 88be81b..d2e43e9 100644
--- a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/templates/hadoop-metrics2-hivemetastore.properties.j2
+++ b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/templates/hadoop-metrics2-hivemetastore.properties.j2
@@ -48,7 +48,8 @@
   *.sink.timeline.truststore.type = {{metric_truststore_type}}
   *.sink.timeline.truststore.password = {{metric_truststore_password}}
 
-  hivemetastore.sink.timeline.collector={{metric_collector_host}}:{{metric_collector_port}}
+  hivemetastore.sink.timeline.collector.hosts={{ams_collector_hosts}}
+  hivemetastore.sink.timeline.port={{metric_collector_port}}
 
 
 {% endif %}

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/templates/hadoop-metrics2-hiveserver2.properties.j2
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/templates/hadoop-metrics2-hiveserver2.properties.j2 b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/templates/hadoop-metrics2-hiveserver2.properties.j2
index 3d71867..ed89679 100644
--- a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/templates/hadoop-metrics2-hiveserver2.properties.j2
+++ b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/templates/hadoop-metrics2-hiveserver2.properties.j2
@@ -48,7 +48,7 @@
   *.sink.timeline.truststore.type = {{metric_truststore_type}}
   *.sink.timeline.truststore.password = {{metric_truststore_password}}
 
-  hiveserver2.sink.timeline.collector={{metric_collector_host}}:{{metric_collector_port}}
-
+  hiveserver2.sink.timeline.collector.hosts={{ams_collector_hosts}}
+  hiveserver2.sink.timeline.port={{metric_collector_port}}
 
 {% endif %}

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/templates/hadoop-metrics2-llapdaemon.j2
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/templates/hadoop-metrics2-llapdaemon.j2 b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/templates/hadoop-metrics2-llapdaemon.j2
index ba44af5..6b609dd 100644
--- a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/templates/hadoop-metrics2-llapdaemon.j2
+++ b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/templates/hadoop-metrics2-llapdaemon.j2
@@ -47,6 +47,7 @@
   *.sink.timeline.truststore.type = {{metric_truststore_type}}
   *.sink.timeline.truststore.password = {{metric_truststore_password}}
 
-  llapdaemon.sink.timeline.collector={{metric_collector_host}}:{{metric_collector_port}}
+  llapdaemon.sink.timeline.collector.hosts={{ams_collector_hosts}}
+  llapdaemon.sink.timeline.port={{metric_collector_port}}
 
 {% endif %}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/templates/hadoop-metrics2-llaptaskscheduler.j2
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/templates/hadoop-metrics2-llaptaskscheduler.j2 b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/templates/hadoop-metrics2-llaptaskscheduler.j2
index 77f128b..c229b75 100644
--- a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/templates/hadoop-metrics2-llaptaskscheduler.j2
+++ b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/templates/hadoop-metrics2-llaptaskscheduler.j2
@@ -47,6 +47,7 @@
   *.sink.timeline.truststore.type = {{metric_truststore_type}}
   *.sink.timeline.truststore.password = {{metric_truststore_password}}
 
-  llaptaskscheduler.sink.timeline.collector={{metric_collector_host}}:{{metric_collector_port}}
+  llaptaskscheduler.sink.timeline.collector.hosts={{ams_collector_hosts}}
+  llaptaskscheduler.sink.timeline.port={{metric_collector_port}}
 
 {% endif %}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/ambari-server/src/main/resources/common-services/KAFKA/0.8.1/configuration/kafka-broker.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/KAFKA/0.8.1/configuration/kafka-broker.xml b/ambari-server/src/main/resources/common-services/KAFKA/0.8.1/configuration/kafka-broker.xml
index ab4d701..96b7750 100644
--- a/ambari-server/src/main/resources/common-services/KAFKA/0.8.1/configuration/kafka-broker.xml
+++ b/ambari-server/src/main/resources/common-services/KAFKA/0.8.1/configuration/kafka-broker.xml
@@ -358,7 +358,7 @@
   </property>
   <property>
     <name>kafka.timeline.metrics.hosts</name>
-    <value>{{metric_collector_hosts}}</value>
+    <value>{{ams_collector_hosts}}</value>
     <description>Timeline host</description>
     <on-ambari-upgrade add="true"/>
   </property>

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/ambari-server/src/main/resources/common-services/KAFKA/0.8.1/package/scripts/kafka.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/KAFKA/0.8.1/package/scripts/kafka.py b/ambari-server/src/main/resources/common-services/KAFKA/0.8.1/package/scripts/kafka.py
index 6cc85f4..88d8a9b 100644
--- a/ambari-server/src/main/resources/common-services/KAFKA/0.8.1/package/scripts/kafka.py
+++ b/ambari-server/src/main/resources/common-services/KAFKA/0.8.1/package/scripts/kafka.py
@@ -94,7 +94,7 @@ def kafka(upgrade_type=None):
       kafka_server_config['host.name'] = params.hostname
 
     if params.has_metric_collector:
-      kafka_server_config['kafka.timeline.metrics.hosts'] = params.metric_collector_hosts
+      kafka_server_config['kafka.timeline.metrics.hosts'] = params.ams_collector_hosts
       kafka_server_config['kafka.timeline.metrics.port'] = params.metric_collector_port
       kafka_server_config['kafka.timeline.metrics.protocol'] = params.metric_collector_protocol
       kafka_server_config['kafka.timeline.metrics.truststore.path'] = params.metric_truststore_path

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/ambari-server/src/main/resources/common-services/KAFKA/0.8.1/package/scripts/params.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/KAFKA/0.8.1/package/scripts/params.py b/ambari-server/src/main/resources/common-services/KAFKA/0.8.1/package/scripts/params.py
index a18c295..107bf6e 100644
--- a/ambari-server/src/main/resources/common-services/KAFKA/0.8.1/package/scripts/params.py
+++ b/ambari-server/src/main/resources/common-services/KAFKA/0.8.1/package/scripts/params.py
@@ -137,13 +137,6 @@ if has_metric_collector:
     metric_collector_protocol = 'http'
   pass
 
-  # Collector hosts
-  metric_collector_hosts = ""
-  if ams_collector_hosts:
-    for host in ams_collector_hosts:
-      metric_collector_hosts += host + ':' + metric_collector_port + ','
-    metric_collector_hosts = metric_collector_hosts[:-1]
-
 # Security-related params
 security_enabled = config['configurations']['cluster-env']['security_enabled']
 kafka_kerberos_enabled = (('security.inter.broker.protocol' in config['configurations']['kafka-broker']) and

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/scripts/params_linux.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/scripts/params_linux.py b/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/scripts/params_linux.py
index f96aeeb..e753e98 100644
--- a/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/scripts/params_linux.py
+++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/scripts/params_linux.py
@@ -175,11 +175,6 @@ has_metric_collector = not len(ams_collector_hosts) == 0
 metric_collector_port = None
 if has_metric_collector:
   if 'cluster-env' in config['configurations'] and \
-      'metrics_collector_vip_host' in config['configurations']['cluster-env']:
-    metric_collector_host = config['configurations']['cluster-env']['metrics_collector_vip_host']
-  else:
-    metric_collector_host = select_metric_collector_hosts_from_hostnames(ams_collector_hosts)
-  if 'cluster-env' in config['configurations'] and \
       'metrics_collector_vip_port' in config['configurations']['cluster-env']:
     metric_collector_port = config['configurations']['cluster-env']['metrics_collector_vip_port']
   else:
@@ -204,12 +199,6 @@ metrics_collection_period = default("/configurations/ams-site/timeline.metrics.s
 metric_collector_sink_jar = "/usr/lib/storm/lib/ambari-metrics-storm-sink-with-common-*.jar"
 metric_collector_legacy_sink_jar = "/usr/lib/storm/lib/ambari-metrics-storm-sink-legacy-with-common-*.jar"
 
-# Collector hosts
-metric_collector_hosts = ""
-if ams_collector_hosts:
-  for host in ams_collector_hosts:
-    metric_collector_hosts += host + ':' + metric_collector_port + ','
-  metric_collector_hosts = metric_collector_hosts[:-1]
 
 # Cluster Zookeeper quorum
 zookeeper_quorum = ""

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/templates/config.yaml.j2
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/templates/config.yaml.j2 b/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/templates/config.yaml.j2
index a9760cb..f2a75cf 100644
--- a/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/templates/config.yaml.j2
+++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/templates/config.yaml.j2
@@ -57,7 +57,9 @@ enableMetricsSink: True
 metrics_collector:
 
   reportInterval: {{metric_collector_report_interval}}
-  collector: "{{metric_collector_protocol}}://{{metric_collector_host}}:{{metric_collector_port}}"
+  collector.hosts: "{{ams_collector_hosts}}"
+  protocol: "{{metric_collector_protocol}}"
+  port: "{{metric_collector_port}}"
   appId: "{{metric_collector_app_id}}"
 
   # HTTPS settings
@@ -65,4 +67,4 @@ metrics_collector:
   truststore.type : "{{metric_truststore_type}}"
   truststore.password : "{{metric_truststore_password}}"
 
-{% endif %}
\ No newline at end of file
+{% endif %}

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/templates/storm-metrics2.properties.j2
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/templates/storm-metrics2.properties.j2 b/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/templates/storm-metrics2.properties.j2
index 1f0875f..001ff73 100644
--- a/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/templates/storm-metrics2.properties.j2
+++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/templates/storm-metrics2.properties.j2
@@ -16,7 +16,7 @@
 # limitations under the License.
 #}
 
-collector={{metric_collector_hosts}}
+collector.hosts={{ams_collector_hosts}}
 protocol={{metric_collector_protocol}}
 port={{metric_collector_port}}
 zookeeper.quorum={{zookeeper_quorum}}

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/ambari-server/src/main/resources/stacks/HDP/2.0.6/hooks/before-START/scripts/params.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.6/hooks/before-START/scripts/params.py b/ambari-server/src/main/resources/stacks/HDP/2.0.6/hooks/before-START/scripts/params.py
index c678a72..4603c8b 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.6/hooks/before-START/scripts/params.py
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.6/hooks/before-START/scripts/params.py
@@ -136,13 +136,6 @@ if has_metric_collector:
 metrics_report_interval = default("/configurations/ams-site/timeline.metrics.sink.report.interval", 60)
 metrics_collection_period = default("/configurations/ams-site/timeline.metrics.sink.collection.period", 10)
 
-#Collector hosts
-metric_collector_hosts = ""
-if ams_collector_hosts:
-  for host in ams_collector_hosts:
-    metric_collector_hosts += host + ':' + metric_collector_port + ','
-  metric_collector_hosts = metric_collector_hosts[:-1]
-
 # Cluster Zookeeper quorum
 zookeeper_quorum = None
 if has_zk_host:

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/ambari-server/src/main/resources/stacks/HDP/2.0.6/hooks/before-START/templates/hadoop-metrics2.properties.j2
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.6/hooks/before-START/templates/hadoop-metrics2.properties.j2 b/ambari-server/src/main/resources/stacks/HDP/2.0.6/hooks/before-START/templates/hadoop-metrics2.properties.j2
index 374795f..100cb98 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.6/hooks/before-START/templates/hadoop-metrics2.properties.j2
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.6/hooks/before-START/templates/hadoop-metrics2.properties.j2
@@ -81,15 +81,15 @@ resourcemanager.sink.ganglia.tagsForPrefix.yarn=Queue
 *.sink.timeline.truststore.type = {{metric_truststore_type}}
 *.sink.timeline.truststore.password = {{metric_truststore_password}}
 
-datanode.sink.timeline.collector={{metric_collector_hosts}}
-namenode.sink.timeline.collector={{metric_collector_hosts}}
-resourcemanager.sink.timeline.collector={{metric_collector_hosts}}
-nodemanager.sink.timeline.collector={{metric_collector_hosts}}
-jobhistoryserver.sink.timeline.collector={{metric_collector_hosts}}
-journalnode.sink.timeline.collector={{metric_collector_hosts}}
-maptask.sink.timeline.collector={{metric_collector_hosts}}
-reducetask.sink.timeline.collector={{metric_collector_hosts}}
-applicationhistoryserver.sink.timeline.collector={{metric_collector_hosts}}
+datanode.sink.timeline.collector.hosts={{ams_collector_hosts}}
+namenode.sink.timeline.collector.hosts={{ams_collector_hosts}}
+resourcemanager.sink.timeline.collector.hosts={{ams_collector_hosts}}
+nodemanager.sink.timeline.collector.hosts={{ams_collector_hosts}}
+jobhistoryserver.sink.timeline.collector.hosts={{ams_collector_hosts}}
+journalnode.sink.timeline.collector.hosts={{ams_collector_hosts}}
+maptask.sink.timeline.collector.hosts={{ams_collector_hosts}}
+reducetask.sink.timeline.collector.hosts={{ams_collector_hosts}}
+applicationhistoryserver.sink.timeline.collector.hosts={{ams_collector_hosts}}
 
 resourcemanager.sink.timeline.tagsForPrefix.yarn=Queue
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/113d51e1/ambari-server/src/main/resources/stacks/HDP/2.0.6/services/stack_advisor.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.6/services/stack_advisor.py b/ambari-server/src/main/resources/stacks/HDP/2.0.6/services/stack_advisor.py
index 6cec585..897a654 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.6/services/stack_advisor.py
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.6/services/stack_advisor.py
@@ -581,14 +581,10 @@ class HDP206StackAdvisor(DefaultStackAdvisor):
 
     amsCollectorHosts = self.getComponentHostNames(services, "AMBARI_METRICS", "METRICS_COLLECTOR")
 
-    if 'cluster-env' in services['configurations'] and \
-        'metrics_collector_vip_host' in services['configurations']['cluster-env']['properties']:
-      metric_collector_host = services['configurations']['cluster-env']['properties']['metrics_collector_vip_host']
-    else:
-      # TODO set "timeline.metrics.service.webapp.address" to 0.0.0.0:port in upgrade catalog
-      metric_collector_host = '0.0.0.0'
+    # TODO set "timeline.metrics.service.webapp.address" to 0.0.0.0:port in upgrade catalog
+    timeline_metrics_service_webapp_address = '0.0.0.0'
 
-    putAmsSiteProperty("timeline.metrics.service.webapp.address", str(metric_collector_host) + ":6188")
+    putAmsSiteProperty("timeline.metrics.service.webapp.address", str(timeline_metrics_service_webapp_address) + ":6188")
 
     log_dir = "/var/log/ambari-metrics-collector"
     if "ams-env" in services["configurations"]:


[12/18] ambari git commit: AMBARI-18492 Clusters With Many Hosts Can Create Alerts With Text Too Large To Be Stored (dsen)

Posted by jo...@apache.org.
AMBARI-18492 Clusters With Many Hosts Can Create Alerts With Text Too Large To Be Stored (dsen)


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

Branch: refs/heads/branch-feature-AMBARI-18456
Commit: 324107d1b5783ac971a14a8f1fe920a98aaff298
Parents: 113d51e
Author: Dmytro Sen <ds...@apache.org>
Authored: Fri Sep 30 15:42:52 2016 +0300
Committer: Dmytro Sen <ds...@apache.org>
Committed: Fri Sep 30 15:42:52 2016 +0300

----------------------------------------------------------------------
 .../org/apache/ambari/server/state/Alert.java   |  7 ++-
 .../apache/ambari/server/state/AlertTest.java   | 53 ++++++++++++++++++++
 2 files changed, 59 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/324107d1/ambari-server/src/main/java/org/apache/ambari/server/state/Alert.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/Alert.java b/ambari-server/src/main/java/org/apache/ambari/server/state/Alert.java
index 8252e0d..f6d5557 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/Alert.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/Alert.java
@@ -17,6 +17,7 @@
  */
 package org.apache.ambari.server.state;
 
+import org.apache.commons.lang.StringUtils;
 import org.codehaus.jackson.annotate.JsonProperty;
 /**
  * An alert represents a problem or notice for a cluster.
@@ -33,6 +34,9 @@ public class Alert {
   private String text = null;
   private long timestamp = 0L;
 
+  // Maximum string size for MySql TEXT (utf8) column data type
+  protected final static int MAX_ALERT_TEXT_SIZE = 32617;
+
 
   /**
    * Constructor.
@@ -127,7 +131,8 @@ public class Alert {
    */
   @JsonProperty("text")
   public void setText(String alertText) {
-    text = alertText;
+    // middle-ellipsize the text to reduce the size to 32617 characters
+    text = StringUtils.abbreviateMiddle(alertText, "\u2026", MAX_ALERT_TEXT_SIZE);
   }
 
   @JsonProperty("instance")

http://git-wip-us.apache.org/repos/asf/ambari/blob/324107d1/ambari-server/src/test/java/org/apache/ambari/server/state/AlertTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/AlertTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/AlertTest.java
new file mode 100644
index 0000000..4a04818
--- /dev/null
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/AlertTest.java
@@ -0,0 +1,53 @@
+/**
+ * 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.server.state;
+
+
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Tests {@link Alert}.
+ */
+public class AlertTest extends Alert{
+
+  @Test
+  public void testSetTextMiddleEllipsizing() throws Exception {
+    Alert alert = new Alert();
+
+    String shortText = "Short alert text";
+    String longText = "Not so short" + new String(new char[MAX_ALERT_TEXT_SIZE]) + "alert text";
+
+    // Normal alert text
+    alert.setText(shortText);
+    assertEquals(shortText.length(), alert.getText().length());
+    assertEquals(shortText, alert.getText());
+
+    //Toooo long alert text
+    alert.setText(longText);
+    assertFalse(shortText.length() == alert.getText().length());
+    assertEquals(MAX_ALERT_TEXT_SIZE, alert.getText().length());
+    assertTrue(alert.getText().startsWith("Not so short"));
+    assertTrue(alert.getText().endsWith("alert text"));
+    assertTrue(alert.getText().contains("\u2026"));
+  }
+}


[07/18] ambari git commit: Test Commit (avijayan)

Posted by jo...@apache.org.
Test Commit (avijayan)


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

Branch: refs/heads/branch-feature-AMBARI-18456
Commit: 908f6e861ee242766a7bc1b3c09a3e9a0faeee87
Parents: 4170ff4
Author: Aravindan Vijayan <av...@hortonworks.com>
Authored: Thu Sep 29 14:47:12 2016 -0700
Committer: Aravindan Vijayan <av...@hortonworks.com>
Committed: Thu Sep 29 14:47:12 2016 -0700

----------------------------------------------------------------------
 .../metrics/timeline/PhoenixHBaseAccessor.java                     | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/908f6e86/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/PhoenixHBaseAccessor.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/PhoenixHBaseAccessor.java b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/PhoenixHBaseAccessor.java
index 1174554..8fa8c84 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/PhoenixHBaseAccessor.java
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/PhoenixHBaseAccessor.java
@@ -723,7 +723,7 @@ public class PhoenixHBaseAccessor {
                                               TimelineMetrics metrics, boolean skipCache) throws SQLException, IOException {
     List<TimelineMetric> timelineMetrics = metrics.getMetrics();
     if (timelineMetrics == null || timelineMetrics.isEmpty()) {
-      LOG.debug("Empty metrics insert request.");
+      LOG.debug("Empty Metrics insert request.");
       return;
     }
     for (Iterator<TimelineMetric> iterator = timelineMetrics.iterator(); iterator.hasNext();) {