Browse Source

AMBARI-7872 Create stack definitions for PHD-3.0.0.0 (vasanm, adenisso, tyu, Boxiong Ding, rpidva, rmeneses, Sourabh Bansod, Ashvin Agrawal, Sujeet Varakhedi via jaoki)

Jun Aoki 10 years ago
parent
commit
e7d0703033
100 changed files with 22521 additions and 0 deletions
  1. 2 0
      ambari-server/pom.xml
  2. 183 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/blueprints/multinode-default.json
  3. 137 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/blueprints/singlenode-default.json
  4. 56 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/configuration/cluster-env.xml
  5. 35 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/after-INSTALL/scripts/hook.py
  6. 73 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/after-INSTALL/scripts/params.py
  7. 38 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/after-INSTALL/scripts/shared_initialization.py
  8. 50 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-ANY/files/changeToSecureUid.sh
  9. 35 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-ANY/scripts/hook.py
  10. 134 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-ANY/scripts/params.py
  11. 114 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-ANY/scripts/shared_initialization.py
  12. 38 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-INSTALL/scripts/hook.py
  13. 122 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-INSTALL/scripts/params.py
  14. 57 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-INSTALL/scripts/repo_initialization.py
  15. 63 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-INSTALL/scripts/shared_initialization.py
  16. 7 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-INSTALL/templates/repo_suse_rhel.j2
  17. 1 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-INSTALL/templates/repo_ubuntu.j2
  18. 29 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-RESTART/scripts/hook.py
  19. 65 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-START/files/checkForFormat.sh
  20. 134 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-START/files/task-log4j.properties
  21. 37 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-START/scripts/hook.py
  22. 158 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-START/scripts/params.py
  23. 177 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-START/scripts/shared_initialization.py
  24. 43 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-START/templates/commons-logging.properties.j2
  25. 21 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-START/templates/exclude_hosts_list.j2
  26. 65 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-START/templates/hadoop-metrics2.properties.j2
  27. 81 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-START/templates/health_check-v2.j2
  28. 109 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-START/templates/health_check.j2
  29. 21 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-START/templates/include_hosts_list.j2
  30. 22 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/metainfo.xml
  31. 33 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/repos/repoinfo.xml
  32. 75 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/role_command_order.json
  33. 31 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/FLUME/configuration/flume-conf.xml
  34. 78 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/FLUME/configuration/flume-env.xml
  35. 31 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/FLUME/configuration/flume-log4j.xml
  36. 69 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/FLUME/metainfo.xml
  37. 716 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/FLUME/metrics.json
  38. 255 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/FLUME/package/scripts/flume.py
  39. 40 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/FLUME/package/scripts/flume_check.py
  40. 121 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/FLUME/package/scripts/flume_handler.py
  41. 70 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/FLUME/package/scripts/params.py
  42. 24 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/FLUME/package/templates/flume.conf.j2
  43. 67 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/FLUME/package/templates/log4j.properties.j2
  44. 77 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/configuration/ganglia-env.xml
  45. 127 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/metainfo.xml
  46. 37 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/files/checkGmetad.sh
  47. 62 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/files/checkGmond.sh
  48. 34 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/files/checkRrdcached.sh
  49. 73 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/files/gmetad.init
  50. 204 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/files/gmetadLib.sh
  51. 73 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/files/gmond.init
  52. 539 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/files/gmondLib.sh
  53. 47 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/files/rrdcachedLib.sh
  54. 141 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/files/setupGanglia.sh
  55. 68 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/files/startGmetad.sh
  56. 85 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/files/startGmond.sh
  57. 79 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/files/startRrdcached.sh
  58. 43 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/files/stopGmetad.sh
  59. 54 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/files/stopGmond.sh
  60. 41 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/files/stopRrdcached.sh
  61. 28 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/files/teardownGanglia.sh
  62. 31 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/scripts/functions.py
  63. 97 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/scripts/ganglia.py
  64. 236 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/scripts/ganglia_monitor.py
  65. 27 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/scripts/ganglia_monitor_service.py
  66. 119 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/scripts/ganglia_server.py
  67. 27 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/scripts/ganglia_server_service.py
  68. 160 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/scripts/params.py
  69. 25 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/scripts/status_params.py
  70. 34 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/templates/ganglia.conf.j2
  71. 43 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/templates/gangliaClusters.conf.j2
  72. 46 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/templates/gangliaEnv.sh.j2
  73. 85 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/templates/gangliaLib.sh.j2
  74. 361 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/templates/rrd.py.j2
  75. 133 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/configuration/hbase-env.xml
  76. 143 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/configuration/hbase-log4j.xml
  77. 53 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/configuration/hbase-policy.xml
  78. 331 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/configuration/hbase-site.xml
  79. 139 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/metainfo.xml
  80. 13635 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/metrics.json
  81. 164 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/files/draining_servers.rb
  82. 34 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/files/hbaseSmokeVerify.sh
  83. 19 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/scripts/__init__.py
  84. 40 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/scripts/functions.py
  85. 144 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/scripts/hbase.py
  86. 43 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/scripts/hbase_client.py
  87. 74 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/scripts/hbase_decommission.py
  88. 70 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/scripts/hbase_master.py
  89. 66 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/scripts/hbase_regionserver.py
  90. 51 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/scripts/hbase_service.py
  91. 138 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/scripts/params.py
  92. 79 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/scripts/service_check.py
  93. 26 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/scripts/status_params.py
  94. 81 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/templates/hadoop-metrics2-hbase.properties-GANGLIA-MASTER.j2
  95. 80 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/templates/hadoop-metrics2-hbase.properties-GANGLIA-RS.j2
  96. 44 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/templates/hbase-smoke.sh.j2
  97. 23 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/templates/hbase_client_jaas.conf.j2
  98. 39 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/templates/hbase_grant_permissions.j2
  99. 26 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/templates/hbase_master_jaas.conf.j2
  100. 26 0
      ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/templates/hbase_regionserver_jaas.conf.j2

+ 2 - 0
ambari-server/pom.xml

@@ -170,6 +170,8 @@
             <exclude>src/main/resources/stacks/HDP/2.0.6/services/HDFS/package/scripts/balancer-emulator/balancer.log</exclude>
             <exclude>src/main/resources/stacks/BIGTOP/0.8/services/HDFS/package/scripts/balancer-emulator/balancer.log</exclude>
             <exclude>src/main/resources/stacks/BIGTOP/0.8/services/HDFS/package/scripts/balancer-emulator/balancer-err.log</exclude>
+            <exclude>src/main/resources/stacks/PHD/3.0.0.0/services/HDFS/package/scripts/balancer-emulator/balancer.log</exclude>
+            <exclude>src/main/resources/stacks/PHD/3.0.0.0/services/HDFS/package/scripts/balancer-emulator/balancer-err.log</exclude>
             <exclude>conf/unix/ca.config</exclude>
             <exclude>conf/unix/krb5JAASLogin.conf</exclude>
             <exclude>conf/windows/ca.config</exclude>

+ 183 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/blueprints/multinode-default.json

@@ -0,0 +1,183 @@
+{
+    "Blueprints": {
+        "stack_name": "PHD", 
+        "stack_version": "3.0.0.0", 
+        "blueprint_name": "blueprint-multinode-default"
+    }, 
+    "host_groups": [
+        {
+            "cardinality": "1", 
+            "name": "master_1", 
+            "components": [
+                {
+                    "name": "NAMENODE"
+                }, 
+                {
+                    "name": "ZOOKEEPER_SERVER"
+                }, 
+                {
+                    "name": "HBASE_MASTER"
+                }, 
+                {
+                    "name": "GANGLIA_SERVER"
+                }, 
+                {
+                    "name": "HDFS_CLIENT"
+                }, 
+                {
+                    "name": "YARN_CLIENT"
+                }, 
+                {
+                    "name": "HCAT"
+                }, 
+                {
+                    "name": "GANGLIA_MONITOR"
+                }
+            ]
+        }, 
+        {
+            "cardinality": "1", 
+            "name": "master_2", 
+            "components": [
+                {
+                    "name": "ZOOKEEPER_CLIENT"
+                }, 
+                {
+                    "name": "HISTORYSERVER"
+                }, 
+                {
+                    "name": "HIVE_SERVER"
+                }, 
+                {
+                    "name": "SECONDARY_NAMENODE"
+                }, 
+                {
+                    "name": "HIVE_METASTORE"
+                }, 
+                {
+                    "name": "HDFS_CLIENT"
+                }, 
+                {
+                    "name": "HIVE_CLIENT"
+                }, 
+                {
+                    "name": "YARN_CLIENT"
+                }, 
+                {
+                    "name": "MYSQL_SERVER"
+                }, 
+                {
+                    "name": "POSTGRESQL_SERVER"
+                }, 
+                {
+                    "name": "GANGLIA_MONITOR"
+                }, 
+                {
+                    "name": "WEBHCAT_SERVER"
+                }
+            ]
+        }, 
+        {
+            "cardinality": "1", 
+            "name": "master_3", 
+            "components": [
+                {
+                    "name": "RESOURCEMANAGER"
+                }, 
+                {
+                    "name": "ZOOKEEPER_SERVER"
+                }, 
+                {
+                    "name": "GANGLIA_MONITOR"
+                }
+            ]
+        }, 
+        {
+            "cardinality": "1", 
+            "name": "master_4", 
+            "components": [
+                {
+                    "name": "OOZIE_SERVER"
+                }, 
+                {
+                    "name": "ZOOKEEPER_SERVER"
+                }, 
+                {
+                    "name": "GANGLIA_MONITOR"
+                }
+            ]
+        }, 
+        {
+            "cardinality": "${slavesCount}", 
+            "name": "slave", 
+            "components": [
+                {
+                    "name": "HBASE_REGIONSERVER"
+                }, 
+                {
+                    "name": "NODEMANAGER"
+                }, 
+                {
+                    "name": "DATANODE"
+                }, 
+                {
+                    "name": "GANGLIA_MONITOR"
+                }
+            ]
+        }, 
+        {
+            "cardinality": "1", 
+            "name": "gateway", 
+            "components": [
+                {
+                    "name": "AMBARI_SERVER"
+                }, 
+                {
+                    "name": "NAGIOS_SERVER"
+                }, 
+                {
+                    "name": "ZOOKEEPER_CLIENT"
+                }, 
+                {
+                    "name": "PIG"
+                }, 
+                {
+                    "name": "OOZIE_CLIENT"
+                }, 
+                {
+                    "name": "HBASE_CLIENT"
+                }, 
+                {
+                    "name": "HCAT"
+                }, 
+                {
+                    "name": "SQOOP"
+                }, 
+                {
+                    "name": "HDFS_CLIENT"
+                }, 
+                {
+                    "name": "HIVE_CLIENT"
+                }, 
+                {
+                    "name": "YARN_CLIENT"
+                }, 
+                {
+                    "name": "MAPREDUCE2_CLIENT"
+                }, 
+                {
+                    "name": "GANGLIA_MONITOR"
+                }
+            ]
+        }
+    ], 
+    "configurations": [
+        {
+            "nagios-env": {
+                "nagios_contact": "admin@localhost"
+            }
+        }
+    ]
+}
+    }
+}

+ 137 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/blueprints/singlenode-default.json

@@ -0,0 +1,137 @@
+{
+    "Blueprints": {
+        "stack_name": "PHD", 
+        "stack_version": "3.0.0.0", 
+        "blueprint_name": "blueprint-singlenode-default"
+    }, 
+    "host_groups": [
+        {
+            "cardinality": "1", 
+            "name": "host_group_1", 
+            "components": [
+                {
+                    "name": "STORM_REST_API"
+                }, 
+                {
+                    "name": "PIG"
+                }, 
+                {
+                    "name": "HISTORYSERVER"
+                }, 
+                {
+                    "name": "HBASE_REGIONSERVER"
+                }, 
+                {
+                    "name": "OOZIE_CLIENT"
+                }, 
+                {
+                    "name": "HBASE_CLIENT"
+                }, 
+                {
+                    "name": "NAMENODE"
+                }, 
+                {
+                    "name": "SUPERVISOR"
+                }, 
+                {
+                    "name": "FALCON_SERVER"
+                }, 
+                {
+                    "name": "HCAT"
+                }, 
+                {
+                    "name": "AMBARI_SERVER"
+                }, 
+                {
+                    "name": "APP_TIMELINE_SERVER"
+                }, 
+                {
+                    "name": "HDFS_CLIENT"
+                }, 
+                {
+                    "name": "HIVE_CLIENT"
+                }, 
+                {
+                    "name": "NODEMANAGER"
+                }, 
+                {
+                    "name": "DATANODE"
+                }, 
+                {
+                    "name": "WEBHCAT_SERVER"
+                }, 
+                {
+                    "name": "RESOURCEMANAGER"
+                }, 
+                {
+                    "name": "ZOOKEEPER_SERVER"
+                }, 
+                {
+                    "name": "ZOOKEEPER_CLIENT"
+                }, 
+                {
+                    "name": "STORM_UI_SERVER"
+                }, 
+                {
+                    "name": "HBASE_MASTER"
+                }, 
+                {
+                    "name": "HIVE_SERVER"
+                }, 
+                {
+                    "name": "OOZIE_SERVER"
+                }, 
+                {
+                    "name": "FALCON_CLIENT"
+                }, 
+                {
+                    "name": "NAGIOS_SERVER"
+                }, 
+                {
+                    "name": "SECONDARY_NAMENODE"
+                }, 
+                {
+                    "name": "TEZ_CLIENT"
+                }, 
+                {
+                    "name": "HIVE_METASTORE"
+                }, 
+                {
+                    "name": "GANGLIA_SERVER"
+                }, 
+                {
+                    "name": "SQOOP"
+                }, 
+                {
+                    "name": "YARN_CLIENT"
+                }, 
+                {
+                    "name": "MAPREDUCE2_CLIENT"
+                }, 
+                {
+                    "name": "MYSQL_SERVER"
+                }, 
+                {
+                    "name": "POSTGRESQL_SERVER"
+                }, 
+                {
+                    "name": "GANGLIA_MONITOR"
+                }, 
+                {
+                    "name": "DRPC_SERVER"
+                }, 
+                {
+                    "name": "NIMBUS"
+                }
+            ]
+        }
+    ], 
+    "configurations": [
+        {
+            "nagios-env": {
+                "nagios_contact": "admin@localhost"
+            }
+        }
+    ]
+}
+}

+ 56 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/configuration/cluster-env.xml

@@ -0,0 +1,56 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+/**
+ * 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.
+ */
+-->
+
+<configuration>
+    <property>
+        <name>security_enabled</name>
+        <value>false</value>
+        <description>Hadoop Security</description>
+    </property>
+    <property>
+        <name>kerberos_domain</name>
+        <value>EXAMPLE.COM</value>
+        <description>Kerberos realm.</description>
+    </property>
+    <property>
+        <name>ignore_groupsusers_create</name>
+        <value>false</value>
+        <description>Whether to ignore failures on users and group creation</description>
+    </property>
+    <property>
+        <name>smokeuser</name>
+        <value>ambari-qa</value>
+        <property-type>USER</property-type>
+        <description>User executing service checks</description>
+    </property>
+    <property>
+        <name>smokeuser_keytab</name>
+        <value>/etc/security/keytabs/smokeuser.headless.keytab</value>
+        <description>Path to smoke test user keytab file</description>
+    </property>
+    <property>
+        <name>user_group</name>
+        <value>hadoop</value>
+        <property-type>GROUP</property-type>
+        <description>Hadoop user group.</description>
+    </property>
+</configuration>

+ 35 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/after-INSTALL/scripts/hook.py

@@ -0,0 +1,35 @@
+"""
+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.
+
+"""
+
+import sys
+from resource_management import *
+from shared_initialization import *
+
+#Hook for hosts with only client without other components
+class AfterInstallHook(Hook):
+
+  def hook(self, env):
+    import params
+
+    env.set_params(params)
+    setup_phd_install_directory()
+    setup_config()
+
+if __name__ == "__main__":
+  AfterInstallHook().execute()

+ 73 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/after-INSTALL/scripts/params.py

@@ -0,0 +1,73 @@
+"""
+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.
+
+"""
+
+from resource_management import *
+from resource_management.core.system import System
+
+config = Script.get_config()
+
+#RPM versioning support
+rpm_version = default("/configurations/cluster-env/rpm_version", None)
+
+#hadoop params
+if rpm_version:
+  mapreduce_libs_path = "/usr/phd/current/hadoop-mapreduce-client/*"
+  hadoop_libexec_dir = "/usr/phd/current/hadoop-client/libexec"
+else:
+  mapreduce_libs_path = "/usr/lib/hadoop-mapreduce/*"
+  hadoop_libexec_dir = "/usr/lib/hadoop/libexec"
+
+hadoop_conf_dir = "/etc/hadoop/conf"
+hadoop_conf_empty_dir = "/etc/hadoop/conf.empty"
+versioned_phd_root = '/usr/phd/current'
+#security params
+security_enabled = config['configurations']['cluster-env']['security_enabled']
+#java params
+java_home = config['hostLevelParams']['java_home']
+#hadoop params
+hdfs_log_dir_prefix = config['configurations']['hadoop-env']['hdfs_log_dir_prefix']
+hadoop_pid_dir_prefix = config['configurations']['hadoop-env']['hadoop_pid_dir_prefix']
+hadoop_root_logger = config['configurations']['hadoop-env']['hadoop_root_logger']
+
+if str(config['hostLevelParams']['stack_version']).startswith('2.0') and System.get_instance().os_family != "suse":
+  # deprecated rhel jsvc_path
+  jsvc_path = "/usr/libexec/phd-utils"
+else:
+  jsvc_path = "/usr/lib/phd-utils"
+
+hadoop_heapsize = config['configurations']['hadoop-env']['hadoop_heapsize']
+namenode_heapsize = config['configurations']['hadoop-env']['namenode_heapsize']
+namenode_opt_newsize =  config['configurations']['hadoop-env']['namenode_opt_newsize']
+namenode_opt_maxnewsize =  config['configurations']['hadoop-env']['namenode_opt_maxnewsize']
+
+jtnode_opt_newsize = "200m"
+jtnode_opt_maxnewsize = "200m"
+jtnode_heapsize =  "1024m"
+ttnode_heapsize = "1024m"
+
+dtnode_heapsize = config['configurations']['hadoop-env']['dtnode_heapsize']
+mapred_pid_dir_prefix = default("/configurations/mapred-env/mapred_pid_dir_prefix","/var/run/hadoop-mapreduce")
+mapred_log_dir_prefix = default("/configurations/mapred-env/mapred_log_dir_prefix","/var/log/hadoop-mapreduce")
+
+#users and groups
+hdfs_user = config['configurations']['hadoop-env']['hdfs_user']
+user_group = config['configurations']['cluster-env']['user_group']
+
+namenode_host = default("/clusterHostInfo/namenode_host", [])
+has_namenode = not len(namenode_host) == 0

+ 38 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/after-INSTALL/scripts/shared_initialization.py

@@ -0,0 +1,38 @@
+"""
+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.
+
+"""
+import os
+from resource_management import *
+
+def setup_phd_install_directory():
+  import params
+  if params.rpm_version:
+    Execute(format('ambari-python-wrap /usr/bin/phd-select set all `ambari-python-wrap /usr/bin/phd-select versions | grep ^{rpm_version}- | tail -1`'),
+            only_if=format('ls -d /usr/phd/{rpm_version}-*')
+    )
+
+def setup_config():
+  import params
+  if params.has_namenode:
+    XmlConfig("core-site.xml",
+              conf_dir=params.hadoop_conf_dir,
+              configurations=params.config['configurations']['core-site'],
+              configuration_attributes=params.config['configuration_attributes']['core-site'],
+              owner=params.hdfs_user,
+              group=params.user_group
+    )

+ 50 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-ANY/files/changeToSecureUid.sh

@@ -0,0 +1,50 @@
+#!/usr/bin/env bash
+#
+#
+# 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.
+#
+
+username=$1
+directories=$2
+
+function find_available_uid() {
+ for ((i=1001; i<=2000; i++))
+ do
+   grep -q $i /etc/passwd
+   if [ "$?" -ne 0 ]
+   then
+    newUid=$i
+    break
+   fi
+ done
+}
+
+find_available_uid
+
+if [ $newUid -eq 0 ]
+then
+  echo "Failed to find Uid between 1000 and 2000"
+  exit 1
+fi
+
+dir_array=($(echo $directories | sed 's/,/\n/g'))
+old_uid=$(id -u $username)
+echo "Changing uid of $username from $old_uid to $newUid"
+echo "Changing directory permisions for ${dir_array[@]}"
+usermod -u $newUid $username && for dir in ${dir_array[@]} ; do chown -Rh $newUid $dir ; done
+exit 0

+ 35 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-ANY/scripts/hook.py

@@ -0,0 +1,35 @@
+"""
+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.
+
+"""
+
+from resource_management import *
+from shared_initialization import *
+
+class BeforeAnyHook(Hook):
+
+  def hook(self, env):
+    import params
+    env.set_params(params)
+    
+    setup_jce()
+    setup_users()
+    setup_hadoop_env()
+
+if __name__ == "__main__":
+  BeforeAnyHook().execute()
+

+ 134 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-ANY/scripts/params.py

@@ -0,0 +1,134 @@
+"""
+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.
+
+"""
+
+from resource_management import *
+import collections
+import json
+
+config = Script.get_config()
+tmp_dir = Script.get_tmp_dir()
+
+artifact_dir = format("{tmp_dir}/AMBARI-artifacts/")
+jce_policy_zip = default("/hostLevelParams/jce_name", None) # None when jdk is already installed by user
+jce_location = config['hostLevelParams']['jdk_location']
+jdk_name = default("/hostLevelParams/jdk_name", None)
+java_home = config['hostLevelParams']['java_home']
+
+ambari_server_hostname = config['clusterHostInfo']['ambari_server_host'][0]
+
+#RPM versioning support
+rpm_version = default("/configurations/cluster-env/rpm_version", None)
+
+#hadoop params
+if rpm_version:
+  mapreduce_libs_path = "/usr/phd/current/hadoop-mapreduce-client/*"
+  hadoop_libexec_dir = "/usr/phd/current/hadoop-client/libexec"
+  hadoop_home = "/usr/phd/current/hadoop-client"
+else:
+  mapreduce_libs_path = "/usr/lib/hadoop-mapreduce/*"
+  hadoop_libexec_dir = "/usr/lib/hadoop/libexec"
+  hadoop_home = "/usr/lib/hadoop"
+
+hadoop_conf_dir = "/etc/hadoop/conf"
+hadoop_conf_empty_dir = "/etc/hadoop/conf.empty"
+versioned_phd_root = '/usr/phd/current'
+#security params
+security_enabled = config['configurations']['cluster-env']['security_enabled']
+
+#hadoop params
+hdfs_log_dir_prefix = config['configurations']['hadoop-env']['hdfs_log_dir_prefix']
+hadoop_pid_dir_prefix = config['configurations']['hadoop-env']['hadoop_pid_dir_prefix']
+hadoop_root_logger = config['configurations']['hadoop-env']['hadoop_root_logger']
+
+if str(config['hostLevelParams']['stack_version']).startswith('2.0') and System.get_instance().os_family != "suse":
+  # deprecated rhel jsvc_path
+  jsvc_path = "/usr/libexec/phd-utils"
+else:
+  jsvc_path = "/usr/lib/phd-utils"
+
+hadoop_heapsize = config['configurations']['hadoop-env']['hadoop_heapsize']
+namenode_heapsize = config['configurations']['hadoop-env']['namenode_heapsize']
+namenode_opt_newsize =  config['configurations']['hadoop-env']['namenode_opt_newsize']
+namenode_opt_maxnewsize =  config['configurations']['hadoop-env']['namenode_opt_maxnewsize']
+
+jtnode_opt_newsize = "200m"
+jtnode_opt_maxnewsize = "200m"
+jtnode_heapsize =  "1024m"
+ttnode_heapsize = "1024m"
+
+dtnode_heapsize = config['configurations']['hadoop-env']['dtnode_heapsize']
+mapred_pid_dir_prefix = default("/configurations/mapred-env/mapred_pid_dir_prefix","/var/run/hadoop-mapreduce")
+mapred_log_dir_prefix = default("/configurations/mapred-env/mapred_log_dir_prefix","/var/log/hadoop-mapreduce")
+hadoop_env_sh_template = config['configurations']['hadoop-env']['content']
+
+#users and groups
+hdfs_user = config['configurations']['hadoop-env']['hdfs_user']
+hbase_user = config['configurations']['hbase-env']['hbase_user']
+nagios_user = config['configurations']['nagios-env']['nagios_user']
+smoke_user =  config['configurations']['cluster-env']['smokeuser']
+gmetad_user = config['configurations']['ganglia-env']["gmetad_user"]
+gmond_user = config['configurations']['ganglia-env']["gmond_user"]
+tez_user = config['configurations']['tez-env']["tez_user"]
+oozie_user = config['configurations']['oozie-env']["oozie_user"]
+
+user_group = config['configurations']['cluster-env']['user_group']
+
+hagios_server_hosts = default("/clusterHostInfo/nagios_server_host", [])
+ganglia_server_hosts = default("/clusterHostInfo/ganglia_server_host", [])
+namenode_host = default("/clusterHostInfo/namenode_host", [])
+hbase_master_hosts = default("/clusterHostInfo/hbase_master_hosts", [])
+oozie_servers = default("/clusterHostInfo/oozie_server", [])
+
+has_namenode = not len(namenode_host) == 0
+has_nagios = not len(hagios_server_hosts) == 0
+has_ganglia_server = not len(ganglia_server_hosts) == 0
+has_tez = 'tez-site' in config['configurations']
+has_hbase_masters = not len(hbase_master_hosts) == 0
+has_oozie_server = not len(oozie_servers) == 0
+
+hbase_tmp_dir = config['configurations']['hbase-site']['hbase.tmp.dir']
+
+proxyuser_group = default("/configurations/hadoop-env/proxyuser_group","users")
+nagios_group = config['configurations']['nagios-env']['nagios_group']
+
+ignore_groupsusers_create = default("/configurations/cluster-env/ignore_groupsusers_create", False)
+
+smoke_user_dirs = format("/tmp/hadoop-{smoke_user},/tmp/hsperfdata_{smoke_user},/home/{smoke_user},/tmp/{smoke_user},/tmp/sqoop-{smoke_user}")
+if has_hbase_masters:
+  hbase_user_dirs = format("/home/{hbase_user},/tmp/{hbase_user},/usr/bin/{hbase_user},/var/log/{hbase_user},{hbase_tmp_dir}")
+#repo params
+repo_info = config['hostLevelParams']['repo_info']
+service_repo_info = default("/hostLevelParams/service_repo_info",None)
+
+user_to_groups_dict = collections.defaultdict(lambda:[user_group])
+user_to_groups_dict[smoke_user] = [proxyuser_group]
+if has_ganglia_server:
+  user_to_groups_dict[gmond_user] = [gmond_user]
+  user_to_groups_dict[gmetad_user] = [gmetad_user]
+if has_tez:
+  user_to_groups_dict[tez_user] = [proxyuser_group]
+if has_oozie_server:
+  user_to_groups_dict[oozie_user] = [proxyuser_group]
+
+user_to_gid_dict = collections.defaultdict(lambda:user_group)
+if has_nagios:
+  user_to_gid_dict[nagios_user] = nagios_group
+
+user_list = json.loads(config['hostLevelParams']['user_list'])
+group_list = json.loads(config['hostLevelParams']['group_list'])

+ 114 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-ANY/scripts/shared_initialization.py

@@ -0,0 +1,114 @@
+"""
+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.
+
+"""
+
+import os
+
+from resource_management import *
+
+
+
+def setup_jce():
+  import params
+  
+  if not params.jdk_name:
+    return
+  
+  environment = {
+    "no_proxy": format("{ambari_server_hostname}")
+  }
+  
+  if params.jce_policy_zip is not None:
+    jce_curl_target = format("{artifact_dir}/{jce_policy_zip}")
+    download_jce = format("mkdir -p {artifact_dir}; \
+    curl -kf -x \"\" --retry 10 \
+    {jce_location}/{jce_policy_zip} -o {jce_curl_target}")
+    Execute( download_jce,
+             path = ["/bin","/usr/bin/"],
+             not_if =format("test -e {jce_curl_target}"),
+             ignore_failures = True,
+             environment = environment
+    )
+  elif params.security_enabled:
+    # Something weird is happening
+    raise Fail("Security is enabled, but JCE policy zip is not specified.")
+  
+  if params.security_enabled:
+    security_dir = format("{java_home}/jre/lib/security")
+    extract_cmd = format("rm -f local_policy.jar; rm -f US_export_policy.jar; unzip -o -j -q {jce_curl_target}")
+    Execute(extract_cmd,
+            only_if = format("test -e {security_dir} && test -f {jce_curl_target}"),
+            cwd  = security_dir,
+            path = ['/bin/','/usr/bin']
+    )
+
+def setup_users():
+  """
+  Creates users before cluster installation
+  """
+  import params
+  
+  for group in params.group_list:
+    Group(group,
+        ignore_failures = params.ignore_groupsusers_create
+    )
+    
+  for user in params.user_list:
+    User(user,
+        gid = params.user_to_gid_dict[user],
+        groups = params.user_to_groups_dict[user],
+        ignore_failures = params.ignore_groupsusers_create       
+    )
+           
+  set_uid(params.smoke_user, params.smoke_user_dirs)
+
+  if params.has_hbase_masters:
+    set_uid(params.hbase_user, params.hbase_user_dirs)
+    
+def set_uid(user, user_dirs):
+  """
+  user_dirs - comma separated directories
+  """
+  import params
+
+  File(format("{tmp_dir}/changeUid.sh"),
+       content=StaticFile("changeToSecureUid.sh"),
+       mode=0555)
+  Execute(format("{tmp_dir}/changeUid.sh {user} {user_dirs} 2>/dev/null"),
+          not_if = format("test $(id -u {user}) -gt 1000"))
+    
+def setup_hadoop_env():
+  import params
+  if params.has_namenode:
+    if params.security_enabled:
+      tc_owner = "root"
+    else:
+      tc_owner = params.hdfs_user
+    Directory(params.hadoop_conf_empty_dir,
+              recursive=True,
+              owner='root',
+              group='root'
+    )
+    Link(params.hadoop_conf_dir,
+         to=params.hadoop_conf_empty_dir,
+         not_if=format("ls {hadoop_conf_dir}")
+    )
+    File(os.path.join(params.hadoop_conf_dir, 'hadoop-env.sh'),
+         owner=tc_owner,
+         content=InlineTemplate(params.hadoop_env_sh_template)
+    )

+ 38 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-INSTALL/scripts/hook.py

@@ -0,0 +1,38 @@
+"""
+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.
+
+"""
+
+import sys
+from resource_management import *
+from shared_initialization import *
+from repo_initialization import *
+
+class BeforeInstallHook(Hook):
+
+  def hook(self, env):
+    import params
+
+    self.run_custom_hook('before-ANY')
+    env.set_params(params)
+    
+    install_repos()
+    install_packages()
+    setup_java()
+
+if __name__ == "__main__":
+  BeforeInstallHook().execute()

+ 122 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-INSTALL/scripts/params.py

@@ -0,0 +1,122 @@
+"""
+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.
+
+"""
+
+from resource_management import *
+from resource_management.core.system import System
+import json
+import collections
+
+config = Script.get_config()
+tmp_dir = Script.get_tmp_dir()
+
+#RPM versioning support
+rpm_version = default("/configurations/cluster-env/rpm_version", None)
+
+#users and groups
+hbase_user = config['configurations']['hbase-env']['hbase_user']
+nagios_user = config['configurations']['nagios-env']['nagios_user']
+smoke_user =  config['configurations']['cluster-env']['smokeuser']
+gmetad_user = config['configurations']['ganglia-env']["gmetad_user"]
+gmond_user = config['configurations']['ganglia-env']["gmond_user"]
+tez_user = config['configurations']['tez-env']["tez_user"]
+
+user_group = config['configurations']['cluster-env']['user_group']
+proxyuser_group = default("/configurations/hadoop-env/proxyuser_group","users")
+nagios_group = config['configurations']['nagios-env']['nagios_group']
+
+hdfs_log_dir_prefix = config['configurations']['hadoop-env']['hdfs_log_dir_prefix']
+
+#hosts
+hostname = config["hostname"]
+ambari_server_hostname = config['clusterHostInfo']['ambari_server_host'][0]
+rm_host = default("/clusterHostInfo/rm_host", [])
+slave_hosts = default("/clusterHostInfo/slave_hosts", [])
+hagios_server_hosts = default("/clusterHostInfo/nagios_server_host", [])
+oozie_servers = default("/clusterHostInfo/oozie_server", [])
+hcat_server_hosts = default("/clusterHostInfo/webhcat_server_host", [])
+hive_server_host =  default("/clusterHostInfo/hive_server_host", [])
+hbase_master_hosts = default("/clusterHostInfo/hbase_master_hosts", [])
+hs_host = default("/clusterHostInfo/hs_host", [])
+jtnode_host = default("/clusterHostInfo/jtnode_host", [])
+namenode_host = default("/clusterHostInfo/namenode_host", [])
+zk_hosts = default("/clusterHostInfo/zookeeper_hosts", [])
+ganglia_server_hosts = default("/clusterHostInfo/ganglia_server_host", [])
+storm_server_hosts = default("/clusterHostInfo/nimbus_hosts", [])
+falcon_host =  default('/clusterHostInfo/falcon_server_hosts', [])
+
+has_sqoop_client = 'sqoop-env' in config['configurations']
+has_namenode = not len(namenode_host) == 0
+has_hs = not len(hs_host) == 0
+has_resourcemanager = not len(rm_host) == 0
+has_slaves = not len(slave_hosts) == 0
+has_nagios = not len(hagios_server_hosts) == 0
+has_oozie_server = not len(oozie_servers)  == 0
+has_hcat_server_host = not len(hcat_server_hosts)  == 0
+has_hive_server_host = not len(hive_server_host)  == 0
+has_hbase_masters = not len(hbase_master_hosts) == 0
+has_zk_host = not len(zk_hosts) == 0
+has_ganglia_server = not len(ganglia_server_hosts) == 0
+has_storm_server = not len(storm_server_hosts) == 0
+has_falcon_server = not len(falcon_host) == 0
+has_tez = 'tez-site' in config['configurations']
+
+is_namenode_master = hostname in namenode_host
+is_jtnode_master = hostname in jtnode_host
+is_rmnode_master = hostname in rm_host
+is_hsnode_master = hostname in hs_host
+is_hbase_master = hostname in hbase_master_hosts
+is_slave = hostname in slave_hosts
+if has_ganglia_server:
+  ganglia_server_host = ganglia_server_hosts[0]
+
+hbase_tmp_dir = config['configurations']['hbase-site']['hbase.tmp.dir']
+
+#security params
+security_enabled = config['configurations']['cluster-env']['security_enabled']
+
+#java params
+java_home = config['hostLevelParams']['java_home']
+artifact_dir = format("{tmp_dir}/AMBARI-artifacts/")
+jdk_name = default("/hostLevelParams/jdk_name", None) # None when jdk is already installed by user
+jce_policy_zip = default("/hostLevelParams/jce_name", None) # None when jdk is already installed by user
+jce_location = config['hostLevelParams']['jdk_location']
+jdk_location = config['hostLevelParams']['jdk_location']
+ignore_groupsusers_create = default("/configurations/cluster-env/ignore_groupsusers_create", False)
+
+smoke_user_dirs = format("/tmp/hadoop-{smoke_user},/tmp/hsperfdata_{smoke_user},/home/{smoke_user},/tmp/{smoke_user},/tmp/sqoop-{smoke_user}")
+if has_hbase_masters:
+  hbase_user_dirs = format("/home/{hbase_user},/tmp/{hbase_user},/usr/bin/{hbase_user},/var/log/{hbase_user},{hbase_tmp_dir}")
+#repo params
+repo_info = config['hostLevelParams']['repo_info']
+service_repo_info = default("/hostLevelParams/service_repo_info",None)
+
+user_to_groups_dict = collections.defaultdict(lambda:[user_group])
+user_to_groups_dict[smoke_user] = [proxyuser_group]
+if has_ganglia_server:
+  user_to_groups_dict[gmond_user] = [gmond_user]
+  user_to_groups_dict[gmetad_user] = [gmetad_user]
+if has_tez:
+  user_to_groups_dict[tez_user] = [proxyuser_group]
+
+user_to_gid_dict = collections.defaultdict(lambda:user_group)
+if has_nagios:
+  user_to_gid_dict[nagios_user] = nagios_group
+
+user_list = json.loads(config['hostLevelParams']['user_list'])
+group_list = json.loads(config['hostLevelParams']['group_list'])

+ 57 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-INSTALL/scripts/repo_initialization.py

@@ -0,0 +1,57 @@
+"""
+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.
+
+"""
+from resource_management import *
+import json
+
+# components_lits = repoName + postfix
+_UBUNTU_REPO_COMPONENTS_POSTFIX = ["main"]
+
+def _alter_repo(action, repo_string, repo_template):
+  """
+  @param action: "delete" or "create"
+  @param repo_string: e.g. "[{\"baseUrl\":\"http://public-repo-1.hortonworks.com/PHD/centos6/2.x/updates/2.0.6.0\",\"osType\":\"centos6\",\"repoId\":\"PHD-2.0._\",\"repoName\":\"PHD\",\"defaultBaseUrl\":\"http://public-repo-1.hortonworks.com/PHD/centos6/2.x/updates/2.0.6.0\"}]"
+  """
+  repo_dicts = json.loads(repo_string)
+
+  if not isinstance(repo_dicts, list):
+    repo_dicts = [repo_dicts]
+
+  for repo in repo_dicts:
+    if not 'baseUrl' in repo:
+      repo['baseUrl'] = None
+    if not 'mirrorsList' in repo:
+      repo['mirrorsList'] = None
+    
+    ubuntu_components = [ repo['repoName'] ] + _UBUNTU_REPO_COMPONENTS_POSTFIX
+    
+    Repository(repo['repoId'],
+               action = action,
+               base_url = repo['baseUrl'],
+               mirror_list = repo['mirrorsList'],
+               repo_file_name = repo['repoName'],
+               repo_template = repo_template,
+               components = ubuntu_components, # ubuntu specific
+    )
+
+def install_repos():
+  import params
+  template = "repo_suse_rhel.j2" if System.get_instance().os_family in ["suse", "redhat"] else "repo_ubuntu.j2"
+  _alter_repo("create", params.repo_info, template)
+  if params.service_repo_info:
+    _alter_repo("create", params.service_repo_info, template)

+ 63 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-INSTALL/scripts/shared_initialization.py

@@ -0,0 +1,63 @@
+"""
+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.
+
+"""
+
+import os
+
+from resource_management import *
+
+def setup_java():
+  """
+  Installs jdk using specific params, that comes from ambari-server
+  """
+  import params
+
+  jdk_curl_target = format("{artifact_dir}/{jdk_name}")
+  java_dir = os.path.dirname(params.java_home)
+  java_exec = format("{java_home}/bin/java")
+
+  if not params.jdk_name:
+    return
+
+  environment = {
+    "no_proxy": format("{ambari_server_hostname}")
+  }
+
+  Execute(format("mkdir -p {artifact_dir} ; \
+  curl -kf -x \"\" \
+  --retry 10 {jdk_location}/{jdk_name} -o {jdk_curl_target}"),
+          path = ["/bin","/usr/bin/"],
+          not_if = format("test -e {java_exec}"),
+          environment = environment)
+
+  if params.jdk_name.endswith(".bin"):
+    install_cmd = format("mkdir -p {java_dir} ; chmod +x {jdk_curl_target}; cd {java_dir} ; echo A | {jdk_curl_target} -noregister > /dev/null 2>&1")
+  elif params.jdk_name.endswith(".gz"):
+    install_cmd = format("mkdir -p {java_dir} ; cd {java_dir} ; tar -xf {jdk_curl_target} > /dev/null 2>&1")
+
+  Execute(install_cmd,
+          path = ["/bin","/usr/bin/"],
+          not_if = format("test -e {java_exec}")
+  )
+
+def install_packages():
+  import params
+  packages = ['unzip', 'curl']
+  if params.rpm_version:
+    packages.append('phd-select')
+  Package(packages)

+ 7 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-INSTALL/templates/repo_suse_rhel.j2

@@ -0,0 +1,7 @@
+[{{repo_id}}]
+name={{repo_file_name}}
+{% if mirror_list %}mirrorlist={{mirror_list}}{% else %}baseurl={{base_url}}{% endif %}
+
+path=/
+enabled=1
+gpgcheck=0

+ 1 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-INSTALL/templates/repo_ubuntu.j2

@@ -0,0 +1 @@
+{{package_type}} {{base_url}} {{components}}

+ 29 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-RESTART/scripts/hook.py

@@ -0,0 +1,29 @@
+"""
+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.
+
+"""
+
+from resource_management import *
+
+class BeforeRestartHook(Hook):
+
+  def hook(self, env):
+    self.run_custom_hook('before-START')
+
+if __name__ == "__main__":
+  BeforeRestartHook().execute()
+

+ 65 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-START/files/checkForFormat.sh

@@ -0,0 +1,65 @@
+#!/usr/bin/env bash
+#
+#
+# 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.
+#
+#
+
+export hdfs_user=$1
+shift
+export conf_dir=$1
+shift
+export bin_dir=$1
+shift
+export mark_dir=$1
+shift
+export name_dirs=$*
+
+export EXIT_CODE=0
+export command="namenode -format"
+export list_of_non_empty_dirs=""
+
+mark_file=/var/run/hadoop/hdfs/namenode-formatted
+if [[ -f ${mark_file} ]] ; then
+  rm -f ${mark_file}
+  mkdir -p ${mark_dir}
+fi
+
+if [[ ! -d $mark_dir ]] ; then
+  for dir in `echo $name_dirs | tr ',' ' '` ; do
+    echo "NameNode Dirname = $dir"
+    cmd="ls $dir | wc -l  | grep -q ^0$"
+    eval $cmd
+    if [[ $? -ne 0 ]] ; then
+      (( EXIT_CODE = $EXIT_CODE + 1 ))
+      list_of_non_empty_dirs="$list_of_non_empty_dirs $dir"
+    fi
+  done
+
+  if [[ $EXIT_CODE == 0 ]] ; then
+    export PATH=$PATH:$bin_dir
+    su -s /bin/bash - ${hdfs_user} -c "yes Y | hadoop --config ${conf_dir} ${command}"
+  else
+    echo "ERROR: Namenode directory(s) is non empty. Will not format the namenode. List of non-empty namenode dirs ${list_of_non_empty_dirs}"
+  fi
+else
+  echo "${mark_dir} exists. Namenode DFS already formatted"
+fi
+
+exit $EXIT_CODE
+

+ 134 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-START/files/task-log4j.properties

@@ -0,0 +1,134 @@
+#
+#
+# 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.
+#
+#
+
+
+# Define some default values that can be overridden by system properties
+hadoop.root.logger=INFO,console
+hadoop.log.dir=.
+hadoop.log.file=hadoop.log
+
+#
+# Job Summary Appender 
+#
+# Use following logger to send summary to separate file defined by 
+# hadoop.mapreduce.jobsummary.log.file rolled daily:
+# hadoop.mapreduce.jobsummary.logger=INFO,JSA
+# 
+hadoop.mapreduce.jobsummary.logger=${hadoop.root.logger}
+hadoop.mapreduce.jobsummary.log.file=hadoop-mapreduce.jobsummary.log
+
+# Define the root logger to the system property "hadoop.root.logger".
+log4j.rootLogger=${hadoop.root.logger}, EventCounter
+
+# Logging Threshold
+log4j.threshhold=ALL
+
+#
+# Daily Rolling File Appender
+#
+
+log4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.DRFA.File=${hadoop.log.dir}/${hadoop.log.file}
+
+# Rollver at midnight
+log4j.appender.DRFA.DatePattern=.yyyy-MM-dd
+
+# 30-day backup
+#log4j.appender.DRFA.MaxBackupIndex=30
+log4j.appender.DRFA.layout=org.apache.log4j.PatternLayout
+
+# Pattern format: Date LogLevel LoggerName LogMessage
+log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
+# Debugging Pattern format
+#log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n
+
+
+#
+# console
+# Add "console" to rootlogger above if you want to use this 
+#
+
+log4j.appender.console=org.apache.log4j.ConsoleAppender
+log4j.appender.console.target=System.err
+log4j.appender.console.layout=org.apache.log4j.PatternLayout
+log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n
+
+#
+# TaskLog Appender
+#
+
+#Default values
+hadoop.tasklog.taskid=null
+hadoop.tasklog.iscleanup=false
+hadoop.tasklog.noKeepSplits=4
+hadoop.tasklog.totalLogFileSize=100
+hadoop.tasklog.purgeLogSplits=true
+hadoop.tasklog.logsRetainHours=12
+
+log4j.appender.TLA=org.apache.hadoop.mapred.TaskLogAppender
+log4j.appender.TLA.taskId=${hadoop.tasklog.taskid}
+log4j.appender.TLA.isCleanup=${hadoop.tasklog.iscleanup}
+log4j.appender.TLA.totalLogFileSize=${hadoop.tasklog.totalLogFileSize}
+
+log4j.appender.TLA.layout=org.apache.log4j.PatternLayout
+log4j.appender.TLA.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
+
+#
+# Rolling File Appender
+#
+
+#log4j.appender.RFA=org.apache.log4j.RollingFileAppender
+#log4j.appender.RFA.File=${hadoop.log.dir}/${hadoop.log.file}
+
+# Logfile size and and 30-day backups
+#log4j.appender.RFA.MaxFileSize=1MB
+#log4j.appender.RFA.MaxBackupIndex=30
+
+#log4j.appender.RFA.layout=org.apache.log4j.PatternLayout
+#log4j.appender.RFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} - %m%n
+#log4j.appender.RFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n
+
+
+# Custom Logging levels
+
+hadoop.metrics.log.level=INFO
+#log4j.logger.org.apache.hadoop.mapred.JobTracker=DEBUG
+#log4j.logger.org.apache.hadoop.mapred.TaskTracker=DEBUG
+#log4j.logger.org.apache.hadoop.fs.FSNamesystem=DEBUG
+log4j.logger.org.apache.hadoop.metrics2=${hadoop.metrics.log.level}
+
+# Jets3t library
+log4j.logger.org.jets3t.service.impl.rest.httpclient.RestS3Service=ERROR
+
+#
+# Null Appender
+# Trap security logger on the hadoop client side
+#
+log4j.appender.NullAppender=org.apache.log4j.varia.NullAppender
+
+#
+# Event Counter Appender
+# Sends counts of logging messages at different severity levels to Hadoop Metrics.
+#
+log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter
+ 
+# Removes "deprecated" messages
+log4j.logger.org.apache.hadoop.conf.Configuration.deprecation=WARN

+ 37 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-START/scripts/hook.py

@@ -0,0 +1,37 @@
+"""
+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.
+
+"""
+
+import sys
+from resource_management import *
+from shared_initialization import *
+
+class BeforeStartHook(Hook):
+
+  def hook(self, env):
+    import params
+
+    self.run_custom_hook('before-ANY')
+    env.set_params(params)
+
+    setup_hadoop()
+    setup_configs()
+    create_javahome_symlink()
+
+if __name__ == "__main__":
+  BeforeStartHook().execute()

+ 158 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-START/scripts/params.py

@@ -0,0 +1,158 @@
+"""
+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.
+
+"""
+
+from resource_management import *
+from resource_management.core.system import System
+import os
+
+config = Script.get_config()
+
+#RPM versioning support
+rpm_version = default("/configurations/cluster-env/rpm_version", None)
+
+#hadoop params
+if rpm_version:
+  mapreduce_libs_path = "/usr/phd/current/hadoop-mapreduce-client/*"
+  hadoop_libexec_dir = "/usr/phd/current/hadoop-client/libexec"
+  hadoop_lib_home = "/usr/phd/current/hadoop-client/lib"
+  hadoop_bin = "/usr/phd/current/hadoop-client/sbin"
+  hadoop_home = '/usr/phd/current/hadoop-client'
+else:
+  mapreduce_libs_path = "/usr/lib/hadoop-mapreduce/*"
+  hadoop_libexec_dir = "/usr/lib/hadoop/libexec"
+  hadoop_lib_home = "/usr/lib/hadoop/lib"
+  hadoop_bin = "/usr/lib/hadoop/sbin"
+  hadoop_home = '/usr'
+
+hadoop_conf_dir = "/etc/hadoop/conf"
+#security params
+security_enabled = config['configurations']['cluster-env']['security_enabled']
+
+#users and groups
+mapred_user = config['configurations']['mapred-env']['mapred_user']
+hdfs_user = config['configurations']['hadoop-env']['hdfs_user']
+yarn_user = config['configurations']['yarn-env']['yarn_user']
+
+user_group = config['configurations']['cluster-env']['user_group']
+
+#hosts
+hostname = config["hostname"]
+ambari_server_hostname = config['clusterHostInfo']['ambari_server_host'][0]
+rm_host = default("/clusterHostInfo/rm_host", [])
+slave_hosts = default("/clusterHostInfo/slave_hosts", [])
+hagios_server_hosts = default("/clusterHostInfo/nagios_server_host", [])
+oozie_servers = default("/clusterHostInfo/oozie_server", [])
+hcat_server_hosts = default("/clusterHostInfo/webhcat_server_host", [])
+hive_server_host =  default("/clusterHostInfo/hive_server_host", [])
+hbase_master_hosts = default("/clusterHostInfo/hbase_master_hosts", [])
+hs_host = default("/clusterHostInfo/hs_host", [])
+jtnode_host = default("/clusterHostInfo/jtnode_host", [])
+namenode_host = default("/clusterHostInfo/namenode_host", [])
+zk_hosts = default("/clusterHostInfo/zookeeper_hosts", [])
+ganglia_server_hosts = default("/clusterHostInfo/ganglia_server_host", [])
+
+has_namenode = not len(namenode_host) == 0
+has_resourcemanager = not len(rm_host) == 0
+has_slaves = not len(slave_hosts) == 0
+has_nagios = not len(hagios_server_hosts) == 0
+has_oozie_server = not len(oozie_servers)  == 0
+has_hcat_server_host = not len(hcat_server_hosts)  == 0
+has_hive_server_host = not len(hive_server_host)  == 0
+has_hbase_masters = not len(hbase_master_hosts) == 0
+has_zk_host = not len(zk_hosts) == 0
+has_ganglia_server = not len(ganglia_server_hosts) == 0
+
+is_namenode_master = hostname in namenode_host
+is_jtnode_master = hostname in jtnode_host
+is_rmnode_master = hostname in rm_host
+is_hsnode_master = hostname in hs_host
+is_hbase_master = hostname in hbase_master_hosts
+is_slave = hostname in slave_hosts
+if has_ganglia_server:
+  ganglia_server_host = ganglia_server_hosts[0]
+#hadoop params
+
+if has_namenode:
+  hadoop_tmp_dir = format("/tmp/hadoop-{hdfs_user}")
+hadoop_pid_dir_prefix = config['configurations']['hadoop-env']['hadoop_pid_dir_prefix']
+
+task_log4j_properties_location = os.path.join(hadoop_conf_dir, "task-log4j.properties")
+
+hdfs_log_dir_prefix = config['configurations']['hadoop-env']['hdfs_log_dir_prefix']
+hbase_tmp_dir = config['configurations']['hbase-site']['hbase.tmp.dir']
+#db params
+server_db_name = config['hostLevelParams']['db_name']
+db_driver_filename = config['hostLevelParams']['db_driver_filename']
+oracle_driver_url = config['hostLevelParams']['oracle_jdbc_url']
+mysql_driver_url = config['hostLevelParams']['mysql_jdbc_url']
+ambari_server_resources = config['hostLevelParams']['jdk_location']
+oracle_driver_symlink_url = format("{ambari_server_resources}oracle-jdbc-driver.jar")
+mysql_driver_symlink_url = format("{ambari_server_resources}mysql-jdbc-driver.jar")
+
+ambari_db_rca_url = config['hostLevelParams']['ambari_db_rca_url'][0]
+ambari_db_rca_driver = config['hostLevelParams']['ambari_db_rca_driver'][0]
+ambari_db_rca_username = config['hostLevelParams']['ambari_db_rca_username'][0]
+ambari_db_rca_password = config['hostLevelParams']['ambari_db_rca_password'][0]
+
+if has_namenode and 'rca_enabled' in config['configurations']['hadoop-env']:
+  rca_enabled =  config['configurations']['hadoop-env']['rca_enabled']
+else:
+  rca_enabled = False
+rca_disabled_prefix = "###"
+if rca_enabled == True:
+  rca_prefix = ""
+else:
+  rca_prefix = rca_disabled_prefix
+
+#hadoop-env.sh
+java_home = config['hostLevelParams']['java_home']
+
+if str(config['hostLevelParams']['stack_version']).startswith('2.0') and System.get_instance().os_family != "suse":
+  # deprecated rhel jsvc_path
+  jsvc_path = "/usr/libexec/phd-utils"
+else:
+  jsvc_path = "/usr/lib/phd-utils"
+
+hadoop_heapsize = config['configurations']['hadoop-env']['hadoop_heapsize']
+namenode_heapsize = config['configurations']['hadoop-env']['namenode_heapsize']
+namenode_opt_newsize =  config['configurations']['hadoop-env']['namenode_opt_newsize']
+namenode_opt_maxnewsize =  config['configurations']['hadoop-env']['namenode_opt_maxnewsize']
+
+jtnode_opt_newsize = "200m"
+jtnode_opt_maxnewsize = "200m"
+jtnode_heapsize =  "1024m"
+ttnode_heapsize = "1024m"
+
+dtnode_heapsize = config['configurations']['hadoop-env']['dtnode_heapsize']
+mapred_pid_dir_prefix = default("/configurations/mapred-env/mapred_pid_dir_prefix","/var/run/hadoop-mapreduce")
+mapred_log_dir_prefix = default("/configurations/mapred-env/mapred_log_dir_prefix","/var/log/hadoop-mapreduce")
+
+#log4j.properties
+
+yarn_log_dir_prefix = default("/configurations/yarn-env/yarn_log_dir_prefix","/var/log/hadoop-yarn")
+
+dfs_hosts = default('/configurations/hdfs-site/dfs.hosts', None)
+
+#log4j.properties
+if (('hdfs-log4j' in config['configurations']) and ('content' in config['configurations']['hdfs-log4j'])):
+  log4j_props = config['configurations']['hdfs-log4j']['content']
+  if (('yarn-log4j' in config['configurations']) and ('content' in config['configurations']['yarn-log4j'])):
+    log4j_props += config['configurations']['yarn-log4j']['content']
+else:
+  log4j_props = None

+ 177 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-START/scripts/shared_initialization.py

@@ -0,0 +1,177 @@
+"""
+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.
+
+"""
+
+import os
+
+from resource_management import *
+
+def setup_hadoop():
+  """
+  Setup hadoop files and directories
+  """
+  import params
+
+  Execute("/bin/echo 0 > /selinux/enforce",
+          only_if="test -f /selinux/enforce"
+  )
+
+  install_snappy()
+
+  #directories
+  if params.has_namenode:
+    Directory(params.hdfs_log_dir_prefix,
+              recursive=True,
+              owner='root',
+              group=params.user_group,
+              mode=0775
+    )
+    Directory(params.hadoop_pid_dir_prefix,
+              recursive=True,
+              owner='root',
+              group='root'
+    )
+  #this doesn't needed with stack 1
+    Directory(params.hadoop_tmp_dir,
+              recursive=True,
+              owner=params.hdfs_user,
+              )
+  #files
+    if params.security_enabled:
+      tc_owner = "root"
+    else:
+      tc_owner = params.hdfs_user
+
+    File(os.path.join(params.hadoop_conf_dir, 'commons-logging.properties'),
+         owner=tc_owner,
+         content=Template('commons-logging.properties.j2')
+    )
+
+    health_check_template = "health_check-v2" #for stack 1 use 'health_check'
+    File(os.path.join(params.hadoop_conf_dir, "health_check"),
+         owner=tc_owner,
+         content=Template(health_check_template + ".j2")
+    )
+
+    log4j_filename = os.path.join(params.hadoop_conf_dir, "log4j.properties")
+    if (params.log4j_props != None):
+      File(log4j_filename,
+           mode=0644,
+           group=params.user_group,
+           owner=params.hdfs_user,
+           content=params.log4j_props
+      )
+    elif (os.path.exists(format("{params.hadoop_conf_dir}/log4j.properties"))):
+      File(log4j_filename,
+           mode=0644,
+           group=params.user_group,
+           owner=params.hdfs_user,
+      )
+
+    File(os.path.join(params.hadoop_conf_dir, "hadoop-metrics2.properties"),
+         owner=params.hdfs_user,
+         content=Template("hadoop-metrics2.properties.j2")
+    )
+
+def setup_database():
+  """
+  Load DB
+  """
+  import params
+  db_driver_dload_cmd = ""
+  environment = {
+    "no_proxy": format("{ambari_server_hostname}")
+  }
+  if params.server_db_name == 'oracle' and params.oracle_driver_url != "":
+    db_driver_dload_cmd = format(
+      "curl -kf -x \"\" \
+      --retry 5 {oracle_driver_symlink_url} -o {hadoop_lib_home}/{db_driver_filename}",)
+  elif params.server_db_name == 'mysql' and params.mysql_driver_url != "":
+    db_driver_dload_cmd = format(
+      "curl -kf -x \"\" \
+      --retry 5 {mysql_driver_symlink_url} -o {hadoop_lib_home}/{db_driver_filename}")
+
+  if db_driver_dload_cmd:
+    Execute(db_driver_dload_cmd,
+            not_if =format("test -e {hadoop_lib_home}/{db_driver_filename}"),
+            environment = environment
+    )
+
+
+def setup_configs():
+  """
+  Creates configs for services HDFS mapred
+  """
+  import params
+
+  if params.has_namenode:
+    File(params.task_log4j_properties_location,
+         content=StaticFile("task-log4j.properties"),
+         mode=0755
+    )
+
+    if os.path.exists(os.path.join(params.hadoop_conf_dir, 'configuration.xsl')):
+      File(os.path.join(params.hadoop_conf_dir, 'configuration.xsl'),
+           owner=params.hdfs_user,
+           group=params.user_group
+      )
+    if os.path.exists(os.path.join(params.hadoop_conf_dir, 'masters')):
+      File(os.path.join(params.hadoop_conf_dir, 'masters'),
+                owner=params.hdfs_user,
+                group=params.user_group
+      )
+
+  generate_include_file()
+
+
+def generate_include_file():
+  import params
+
+  if params.has_namenode and params.dfs_hosts and params.has_slaves:
+    include_hosts_list = params.slave_hosts
+    File(params.dfs_hosts,
+         content=Template("include_hosts_list.j2"),
+         owner=params.hdfs_user,
+         group=params.user_group
+    )
+
+
+def install_snappy():
+  import params
+
+  snappy_so = "libsnappy.so"
+  so_target_dir_x86 = format("{hadoop_lib_home}/native/Linux-i386-32")
+  so_target_dir_x64 = format("{hadoop_lib_home}/native/Linux-amd64-64")
+  so_target_x86 = format("{so_target_dir_x86}/{snappy_so}")
+  so_target_x64 = format("{so_target_dir_x64}/{snappy_so}")
+  so_src_dir_x86 = format("{hadoop_home}/lib")
+  so_src_dir_x64 = format("{hadoop_home}/lib64")
+  so_src_x86 = format("{so_src_dir_x86}/{snappy_so}")
+  so_src_x64 = format("{so_src_dir_x64}/{snappy_so}")
+  if params.has_namenode:
+    Execute(
+      format("mkdir -p {so_target_dir_x86}; ln -sf {so_src_x86} {so_target_x86}"))
+    Execute(
+      format("mkdir -p {so_target_dir_x64}; ln -sf {so_src_x64} {so_target_x64}"))
+
+
+def create_javahome_symlink():
+  if os.path.exists("/usr/jdk/jdk1.6.0_31") and not os.path.exists("/usr/jdk64/jdk1.6.0_31"):
+    Execute("mkdir -p /usr/jdk64/")
+    Execute("ln -s /usr/jdk/jdk1.6.0_31 /usr/jdk64/jdk1.6.0_31")
+

+ 43 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-START/templates/commons-logging.properties.j2

@@ -0,0 +1,43 @@
+{#
+# 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.
+#}
+
+#/*
+# * 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.
+# */
+
+#Logging Implementation
+
+#Log4J
+org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
+
+#JDK Logger
+#org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger

+ 21 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-START/templates/exclude_hosts_list.j2

@@ -0,0 +1,21 @@
+{#
+# 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.
+#}
+
+{% for host in hdfs_exclude_file %}
+{{host}}
+{% endfor %}

+ 65 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-START/templates/hadoop-metrics2.properties.j2

@@ -0,0 +1,65 @@
+{#
+# 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.
+#}
+
+# 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.
+
+# syntax: [prefix].[source|sink|jmx].[instance].[options]
+# See package.html for org.apache.hadoop.metrics2 for details
+
+{% if has_ganglia_server %}
+*.period=60
+
+*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31
+*.sink.ganglia.period=10
+
+# default for supportsparse is false
+*.sink.ganglia.supportsparse=true
+
+.sink.ganglia.slope=jvm.metrics.gcCount=zero,jvm.metrics.memHeapUsedM=both
+.sink.ganglia.dmax=jvm.metrics.threadsBlocked=70,jvm.metrics.memHeapUsedM=40
+
+# Hook up to the server
+namenode.sink.ganglia.servers={{ganglia_server_host}}:8661
+datanode.sink.ganglia.servers={{ganglia_server_host}}:8659
+jobtracker.sink.ganglia.servers={{ganglia_server_host}}:8662
+tasktracker.sink.ganglia.servers={{ganglia_server_host}}:8658
+maptask.sink.ganglia.servers={{ganglia_server_host}}:8660
+reducetask.sink.ganglia.servers={{ganglia_server_host}}:8660
+resourcemanager.sink.ganglia.servers={{ganglia_server_host}}:8664
+nodemanager.sink.ganglia.servers={{ganglia_server_host}}:8657
+historyserver.sink.ganglia.servers={{ganglia_server_host}}:8666
+journalnode.sink.ganglia.servers={{ganglia_server_host}}:8654
+nimbus.sink.ganglia.servers={{ganglia_server_host}}:8649
+supervisor.sink.ganglia.servers={{ganglia_server_host}}:8650
+
+resourcemanager.sink.ganglia.tagsForPrefix.yarn=Queue
+
+{% endif %}

+ 81 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-START/templates/health_check-v2.j2

@@ -0,0 +1,81 @@
+{#
+# 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.
+#}
+
+#!/bin/bash
+#
+#/*
+# * 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.
+# */
+
+err=0;
+
+function check_disks {
+
+  for m in `awk '$3~/ext3/ {printf" %s ",$2}' /etc/fstab` ; do
+    fsdev=""
+    fsdev=`awk -v m=$m '$2==m {print $1}' /proc/mounts`;
+    if [ -z "$fsdev" -a "$m" != "/mnt" ] ; then
+      msg_="$msg_ $m(u)"
+    else
+      msg_="$msg_`awk -v m=$m '$2==m { if ( $4 ~ /^ro,/ ) {printf"%s(ro)",$2 } ; }' /proc/mounts`"
+    fi
+  done
+
+  if [ -z "$msg_" ] ; then
+    echo "disks ok" ; exit 0
+  else
+    echo "$msg_" ; exit 2
+  fi
+
+}
+
+# Run all checks
+for check in disks ; do
+  msg=`check_${check}` ;
+  if [ $? -eq 0 ] ; then
+    ok_msg="$ok_msg$msg,"
+  else
+    err_msg="$err_msg$msg,"
+  fi
+done
+
+if [ ! -z "$err_msg" ] ; then
+  echo -n "ERROR $err_msg "
+fi
+if [ ! -z "$ok_msg" ] ; then
+  echo -n "OK: $ok_msg"
+fi
+
+echo
+
+# Success!
+exit 0

+ 109 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-START/templates/health_check.j2

@@ -0,0 +1,109 @@
+{#
+# 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.
+#}
+
+#!/bin/bash
+#
+#/*
+# * 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.
+# */
+
+err=0;
+
+function check_disks {
+
+  for m in `awk '$3~/ext3/ {printf" %s ",$2}' /etc/fstab` ; do
+    fsdev=""
+    fsdev=`awk -v m=$m '$2==m {print $1}' /proc/mounts`;
+    if [ -z "$fsdev" ] ; then
+      msg_="$msg_ $m(u)"
+    else
+      msg_="$msg_`awk -v m=$m '$2==m { if ( $4 ~ /^ro,/ ) {printf"%s(ro)",$2 } ; }' /proc/mounts`"
+    fi
+  done
+
+  if [ -z "$msg_" ] ; then
+    echo "disks ok" ; exit 0
+  else
+    echo "$msg_" ; exit 2
+  fi
+
+}
+
+function check_taskcontroller {
+  if [ "<%=scope.function_phd_template_var("::phd::params::security_enabled")%>" == "true" ]; then
+    perm=`stat -c %a:%U:%G <%=scope.function_phd_template_var("task_bin_exe")%> 2>/dev/null`
+    if [ $? -eq 0 ] && [ "$perm" == "6050:root:hadoop" ] ; then
+      echo "taskcontroller ok"
+    else
+      echo 'check taskcontroller' ; exit 1
+    fi
+  fi
+}
+
+function check_jetty {
+  hname=`hostname`
+  jmx=`curl -s -S -m 5 "http://$hname:<%=scope.function_phd_template_var("::phd::tasktracker_port")%>/jmx?qry=Hadoop:service=TaskTracker,name=ShuffleServerMetrics" 2>/dev/null` ;
+  if [ $? -eq 0 ] ; then
+    e=`echo $jmx | awk '/shuffle_exceptions_caught/ {printf"%d",$2}'` ;
+    e=${e:-0} # no jmx servlet ?
+    if [ $e -gt 10 ] ; then
+      echo "check jetty: shuffle_exceptions=$e" ; exit 1
+    else
+      echo "jetty ok"
+    fi
+  else
+    echo "check jetty: ping failed" ; exit 1
+  fi
+}
+
+
+# Run all checks
+for check in disks taskcontroller jetty; do
+  msg=`check_${check}` ;
+  if [ $? -eq 0 ] ; then
+    ok_msg="$ok_msg$msg,"
+  else
+    err_msg="$err_msg$msg,"
+  fi
+done
+
+if [ ! -z "$err_msg" ] ; then
+  echo -n "ERROR $err_msg "
+fi
+if [ ! -z "$ok_msg" ] ; then
+  echo -n "OK: $ok_msg"
+fi
+
+echo
+
+# Success!
+exit 0

+ 21 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/hooks/before-START/templates/include_hosts_list.j2

@@ -0,0 +1,21 @@
+{#
+# 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.
+#}
+
+{% for host in slave_hosts %}
+{{host}}
+{% endfor %}

+ 22 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/metainfo.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<metainfo>
+    <versions>
+	  <active>true</active>
+    </versions>
+</metainfo>

+ 33 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/repos/repoinfo.xml

@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<reposinfo>
+  
+  <os family="redhat6">
+    <repo>
+      <baseurl>http://localhost/PHD</baseurl>
+      <repoid>PHD-3.0.0.0</repoid>
+      <reponame>PHD</reponame>
+    </repo>
+    <repo>
+  	  
+      <baseurl>http://localhost/PHD-UTILS</baseurl>
+      <repoid>PHD-UTILS-1.0</repoid>
+      <reponame>PHD-UTILS</reponame>
+    </repo>
+  </os>
+</reposinfo>

+ 75 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/role_command_order.json

@@ -0,0 +1,75 @@
+{
+  "_comment" : "Record format:",
+  "_comment" : "blockedRole-blockedCommand: [blockerRole1-blockerCommand1, blockerRole2-blockerCommand2, ...]",
+  "general_deps" : {
+    "_comment" : "dependencies for all cases",
+    "NAGIOS_SERVER-INSTALL" : ["HIVE_CLIENT-INSTALL", "HCAT-INSTALL",
+        "MAPREDUCE_CLIENT-INSTALL", "OOZIE_CLIENT-INSTALL"],
+    "HBASE_MASTER-START": ["ZOOKEEPER_SERVER-START"],
+    "HBASE_REGIONSERVER-START": ["HBASE_MASTER-START"],
+    "OOZIE_SERVER-START": ["NODEMANAGER-START", "RESOURCEMANAGER-START"],
+    "WEBHCAT_SERVER-START": ["NODEMANAGER-START", "HIVE_SERVER-START"],
+    "HIVE_METASTORE-START": ["MYSQL_SERVER-START", "POSTGRESQL_SERVER-START"],
+    "HIVE_SERVER-START": ["NODEMANAGER-START", "MYSQL_SERVER-START", "POSTGRESQL_SERVER-START"],
+    "HUE_SERVER-START": ["HIVE_SERVER-START", "HCAT-START", "OOZIE_SERVER-START"],
+    "FLUME_HANDLER-START": ["OOZIE_SERVER-START"],
+    "NAGIOS_SERVER-START": ["HBASE_MASTER-START", "HBASE_REGIONSERVER-START",
+        "GANGLIA_SERVER-START", "GANGLIA_MONITOR-START", "HCAT-START",
+        "HIVE_SERVER-START", "HIVE_METASTORE-START", "HUE_SERVER-START",
+        "ZOOKEEPER_SERVER-START", "NODEMANAGER-START", "RESOURCEMANAGER-START",
+        "MYSQL_SERVER-START", "POSTGRESQL_SERVER-START", "OOZIE_SERVER-START", "PIG-START", "SQOOP-START",
+        "WEBHCAT_SERVER-START", "FLUME_HANDLER-START"],
+    "MAPREDUCE_SERVICE_CHECK-SERVICE_CHECK": ["NODEMANAGER-START", "RESOURCEMANAGER-START"],
+    "OOZIE_SERVICE_CHECK-SERVICE_CHECK": ["OOZIE_SERVER-START", "MAPREDUCE2_SERVICE_CHECK-SERVICE_CHECK"],
+    "HBASE_SERVICE_CHECK-SERVICE_CHECK": ["HBASE_MASTER-START", "HBASE_REGIONSERVER-START"],
+    "HIVE_SERVICE_CHECK-SERVICE_CHECK": ["HIVE_SERVER-START", "HIVE_METASTORE-START", "WEBHCAT_SERVER-START"],
+    "HCAT_SERVICE_CHECK-SERVICE_CHECK": ["HIVE_SERVER-START"],
+    "PIG_SERVICE_CHECK-SERVICE_CHECK": ["NODEMANAGER-START", "RESOURCEMANAGER-START"],
+    "MAHOUT_SERVICE_CHECK-SERVICE_CHECK": ["NODEMANAGER-START", "RESOURCEMANAGER-START"],
+    "SQOOP_SERVICE_CHECK-SERVICE_CHECK": ["NODEMANAGER-START", "RESOURCEMANAGER-START"],
+    "ZOOKEEPER_SERVICE_CHECK-SERVICE_CHECK": ["ZOOKEEPER_SERVER-START"],
+    "ZOOKEEPER_QUORUM_SERVICE_CHECK-SERVICE_CHECK": ["ZOOKEEPER_SERVER-START"],
+    "ZOOKEEPER_SERVER-STOP" : ["HBASE_MASTER-STOP", "HBASE_REGIONSERVER-STOP"],
+    "HBASE_MASTER-STOP": ["HBASE_REGIONSERVER-STOP"]
+  },
+  "_comment" : "GLUSTERFS-specific dependencies",
+  "optional_glusterfs": {
+    "HBASE_MASTER-START": ["PEERSTATUS-START"],
+    "GLUSTERFS_SERVICE_CHECK-SERVICE_CHECK": ["PEERSTATUS-START"]
+  },
+  "_comment" : "Dependencies that are used when GLUSTERFS is not present in cluster",
+  "optional_no_glusterfs": {
+    "SECONDARY_NAMENODE-START": ["NAMENODE-START"],
+    "RESOURCEMANAGER-START": ["NAMENODE-START", "DATANODE-START"],
+    "NODEMANAGER-START": ["NAMENODE-START", "DATANODE-START", "RESOURCEMANAGER-START"],
+    "HISTORYSERVER-START": ["NAMENODE-START", "DATANODE-START"],
+    "HBASE_MASTER-START": ["NAMENODE-START", "DATANODE-START"],
+    "HIVE_SERVER-START": ["DATANODE-START"],
+    "WEBHCAT_SERVER-START": ["DATANODE-START"],
+    "NAGIOS_SERVER-START": ["NAMENODE-START", "SECONDARY_NAMENODE-START",
+        "DATANODE-START", "RESOURCEMANAGER-START", "NODEMANAGER-START", "HISTORYSERVER-START"],
+    "HDFS_SERVICE_CHECK-SERVICE_CHECK": ["NAMENODE-START", "DATANODE-START",
+        "SECONDARY_NAMENODE-START"],
+    "MAPREDUCE2_SERVICE_CHECK-SERVICE_CHECK": ["NODEMANAGER-START",
+        "RESOURCEMANAGER-START", "HISTORYSERVER-START", "YARN_SERVICE_CHECK-SERVICE_CHECK"],
+    "YARN_SERVICE_CHECK-SERVICE_CHECK": ["NODEMANAGER-START", "RESOURCEMANAGER-START"],
+    "RESOURCEMANAGER_SERVICE_CHECK-SERVICE_CHECK": ["RESOURCEMANAGER-START"],
+    "PIG_SERVICE_CHECK-SERVICE_CHECK": ["RESOURCEMANAGER-START", "NODEMANAGER-START"],
+    "MAHOUT_SERVICE_CHECK-SERVICE_CHECK": ["RESOURCEMANAGER-START", "NODEMANAGER-START"],
+    "NAMENODE-STOP": ["RESOURCEMANAGER-STOP", "NODEMANAGER-STOP",
+        "HISTORYSERVER-STOP", "HBASE_MASTER-STOP"],
+    "DATANODE-STOP": ["RESOURCEMANAGER-STOP", "NODEMANAGER-STOP",
+        "HISTORYSERVER-STOP", "HBASE_MASTER-STOP"]
+  },
+  "_comment" : "Dependencies that are used in HA NameNode cluster",
+  "namenode_optional_ha": {
+    "NAMENODE-START": ["ZKFC-START", "JOURNALNODE-START", "ZOOKEEPER_SERVER-START"],
+    "ZKFC-START": ["ZOOKEEPER_SERVER-START"],
+    "NAGIOS_SERVER-START": ["ZKFC-START", "JOURNALNODE-START"]
+  },
+  "_comment" : "Dependencies that are used in ResourceManager HA cluster",
+  "resourcemanager_optional_ha" : {
+    "RESOURCEMANAGER-START": ["ZOOKEEPER_SERVER-START"]
+  }
+}
+

+ 31 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/FLUME/configuration/flume-conf.xml

@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+/**
+ * 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.
+ */
+-->
+
+<configuration supports_final="false">
+  <property>
+    <name>content</name>
+    <description>Describe all the Flume agent configurations</description>
+    <value>
+# Flume agent config
+    </value>
+  </property>
+</configuration>

+ 78 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/FLUME/configuration/flume-env.xml

@@ -0,0 +1,78 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+/**
+ * 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.
+ */
+-->
+
+<configuration>
+  <property>
+    <name>flume_conf_dir</name>
+    <value>/etc/flume/conf</value>
+    <description>Location to save configuration files</description>
+  </property>
+  <property>
+    <name>flume_log_dir</name>
+    <value>/var/log/flume</value>
+    <description>Location to save log files</description>
+  </property>
+  <property>
+    <name>flume_user</name>
+    <value>flume</value>
+    <property-type>USER</property-type>
+    <description>Flume User</description>
+  </property>
+
+  <!-- flume-env.sh -->
+  <property>
+    <name>content</name>
+    <description>This is the jinja template for flume-env.sh file</description>
+    <value>
+# 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.
+
+# If this file is placed at FLUME_CONF_DIR/flume-env.sh, it will be sourced
+# during Flume startup.
+
+# Enviroment variables can be set here.
+
+export JAVA_HOME={{java_home}}
+
+# Give Flume more memory and pre-allocate, enable remote monitoring via JMX
+# export JAVA_OPTS="-Xms100m -Xmx2000m -Dcom.sun.management.jmxremote"
+
+# Note that the Flume conf directory is always included in the classpath.
+#FLUME_CLASSPATH=""
+
+# export HIVE_HOME=/usr/lib/hive
+# export HCAT_HOME=/usr/lib/hive-hcatalog
+    </value>
+  </property>
+</configuration>

+ 31 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/FLUME/configuration/flume-log4j.xml

@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+/**
+ * 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.
+ */
+-->
+
+<configuration supports_final="false">
+  <property>
+    <name>content</name>
+    <description>Custom log4j.properties</description>
+    <value>
+# Flume log4j config
+    </value>
+  </property>
+</configuration>

+ 69 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/FLUME/metainfo.xml

@@ -0,0 +1,69 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<metainfo>
+  <schemaVersion>2.0</schemaVersion>
+  <services>
+    <service>
+      <name>FLUME</name>
+      <displayName>Flume</displayName>
+      <comment>Data management and processing platform</comment>
+      <version>1.5.0.1.phd.3.0.0.0</version>
+      <components>
+        <component>
+          <name>FLUME_HANDLER</name>
+          <displayName>Flume</displayName>
+          <category>SLAVE</category>
+          <cardinality>1+</cardinality>
+          <commandScript>
+            <script>scripts/flume_handler.py</script>
+            <scriptType>PYTHON</scriptType>
+            <timeout>600</timeout>
+          </commandScript>
+        </component>
+      </components>
+
+      <osSpecifics>
+        <osSpecific>
+          <osFamily>any</osFamily>
+          <packages>
+            <package>
+              <name>flume</name>
+            </package>
+          </packages>
+        </osSpecific>
+      </osSpecifics>
+
+      <commandScript>
+        <script>scripts/flume_check.py</script>
+        <scriptType>PYTHON</scriptType>
+        <timeout>300</timeout>
+      </commandScript>
+      
+      <requiredServices>
+        <service>HDFS</service>
+      </requiredServices>
+
+      <configuration-dependencies>
+        <config-type>flume-env</config-type>
+        <config-type>flume-conf</config-type>
+        <config-type>flume-log4j</config-type>
+      </configuration-dependencies>
+
+    </service>
+  </services>
+</metainfo>

+ 716 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/FLUME/metrics.json

@@ -0,0 +1,716 @@
+{
+  "FLUME_HANDLER": {
+    "Component": [
+        {
+        "type": "ganglia",
+        "metrics": {
+          "metrics/boottime":{
+            "metric":"boottime",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/cpu/cpu_aidle":{
+            "metric":"cpu_aidle",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/cpu/cpu_idle":{
+            "metric":"cpu_idle",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/cpu/cpu_nice":{
+            "metric":"cpu_nice",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/cpu/cpu_num":{
+            "metric":"cpu_num",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/cpu/cpu_speed":{
+            "metric":"cpu_speed",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/cpu/cpu_system":{
+            "metric":"cpu_system",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/cpu/cpu_user":{
+            "metric":"cpu_user",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/cpu/cpu_wio":{
+            "metric":"cpu_wio",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/disk/disk_free":{
+            "metric":"disk_free",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/disk/disk_total":{
+            "metric":"disk_total",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/disk/part_max_used":{
+            "metric":"part_max_used",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/gcCount":{
+            "metric":"jvm.metrics.gcCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/gcTimeMillis":{
+            "metric":"jvm.metrics.gcTimeMillis",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/logError":{
+            "metric":"jvm.metrics.logError",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/logFatal":{
+            "metric":"jvm.metrics.logFatal",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/logInfo":{
+            "metric":"jvm.metrics.logInfo",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/logWarn":{
+            "metric":"jvm.metrics.logWarn",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/maxMemoryM":{
+            "metric":"jvm.metrics.maxMemoryM",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/memHeapCommittedM":{
+            "metric":"jvm.metrics.memHeapCommittedM",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/memHeapUsedM":{
+            "metric":"jvm.metrics.memHeapUsedM",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/memNonHeapCommittedM":{
+            "metric":"jvm.metrics.memNonHeapCommittedM",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/memNonHeapUsedM":{
+            "metric":"jvm.metrics.memNonHeapUsedM",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/threadsBlocked":{
+            "metric":"jvm.metrics.threadsBlocked",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/threadsNew":{
+            "metric":"jvm.metrics.threadsNew",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/threadsRunnable":{
+            "metric":"jvm.metrics.threadsRunnable",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/threadsTerminated":{
+            "metric":"jvm.metrics.threadsTerminated",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/threadsTimedWaiting":{
+            "metric":"jvm.metrics.threadsTimedWaiting",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/threadsWaiting":{
+            "metric":"jvm.metrics.threadsWaiting",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/CHANNEL/$2/ChannelCapacity":{
+            "metric":"(\\w+).CHANNEL.(\\w+).ChannelCapacity",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/CHANNEL/$2/StartTime":{
+            "metric":"(\\w+).CHANNEL.(\\w+).StartTime",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/CHANNEL/$2/EventTakeAttemptCount":{
+            "metric":"(\\w+).CHANNEL.(\\w+).EventTakeAttemptCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/CHANNEL/$2/EventTakeSuccessCount":{
+            "metric":"(\\w+).CHANNEL.(\\w+).EventTakeSuccessCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/CHANNEL/$2/EventPutAttemptCount":{
+            "metric":"(\\w+).CHANNEL.(\\w+).EventPutAttemptCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/CHANNEL/$2/StopTime":{
+            "metric":"(\\w+).CHANNEL.(\\w+).StopTime",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/CHANNEL/$2/ChannelFillPercentage":{
+            "metric":"(\\w+).CHANNEL.(\\w+).ChannelFillPercentage",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/CHANNEL/$2/ChannelSize":{
+            "metric":"(\\w+).CHANNEL.(\\w+).ChannelSize",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/CHANNEL/$2/EventPutSuccessCount":{
+            "metric":"(\\w+).CHANNEL.(\\w+).EventPutSuccessCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SINK/$2/ConnectionCreatedCount":{
+            "metric":"(\\w+).SINK.(\\w+).ConnectionCreatedCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SINK/$2/BatchCompleteCount":{
+            "metric":"(\\w+).SINK.(\\w+).BatchCompleteCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SINK/$2/EventDrainSuccessCount":{
+            "metric":"(\\w+).SINK.(\\w+).EventDrainSuccessCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SINK/$2/StartTime":{
+            "metric":"(\\w+).SINK.(\\w+).StartTime",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SINK/$2/EventDrainAttemptCount":{
+            "metric":"(\\w+).SINK.(\\w+).EventDrainAttemptCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SINK/$2/ConnectionFailedCount":{
+            "metric":"(\\w+).SINK.(\\w+).ConnectionFailedCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SINK/$2/BatchUnderflowCount":{
+            "metric":"(\\w+).SINK.(\\w+).BatchUnderflowCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SINK/$2/ConnectionClosedCount":{
+            "metric":"(\\w+).SINK.(\\w+).ConnectionClosedCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SINK/$2/StopTime":{
+            "metric":"(\\w+).SINK.(\\w+).StopTime",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SINK/$2/BatchEmptyCount":{
+            "metric":"(\\w+).SINK.(\\w+).BatchEmptyCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SOURCE/$2/AppendBatchReceivedCount":{
+            "metric":"(\\w+).SOURCE.(\\w+).AppendBatchReceivedCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SOURCE/$2/AppendAcceptedCount":{
+            "metric":"(\\w+).SOURCE.(\\w+).AppendAcceptedCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SOURCE/$2/StartTime":{
+            "metric":"(\\w+).SOURCE.(\\w+).StartTime",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SOURCE/$2/OpenConnectionCount":{
+            "metric":"(\\w+).SOURCE.(\\w+).OpenConnectionCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SOURCE/$2/AppendBatchAcceptedCount":{
+            "metric":"(\\w+).SOURCE.(\\w+).AppendBatchAcceptedCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SOURCE/$2/AppendReceivedCount":{
+            "metric":"(\\w+).SOURCE.(\\w+).AppendReceivedCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SOURCE/$2/EventReceivedCount":{
+            "metric":"(\\w+).SOURCE.(\\w+).EventReceivedCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SOURCE/$2/StopTime":{
+            "metric":"(\\w+).SOURCE.(\\w+).StopTime",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SOURCE/$2/EventAcceptedCount":{
+            "metric":"(\\w+).SOURCE.(\\w+).EventAcceptedCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+
+          "metrics/flume/$1.substring(0)/CHANNEL/$2.replaceAll(\"[^-]+\",\"\")EventTakeSuccessCount/rate/min": {
+            "metric":"(\\w+).CHANNEL.(\\w+).EventTakeSuccessCount._rate._min",
+            "pointInTime":false,
+            "temporal":true
+          },
+          "metrics/flume/$1.substring(0)/CHANNEL/$2.replaceAll(\"[^-]+\",\"\")EventTakeSuccessCount/rate/max": {
+            "metric":"(\\w+).CHANNEL.(\\w+).EventTakeSuccessCount._rate._max",
+            "pointInTime":false,
+            "temporal":true
+          },
+          "metrics/flume/$1.substring(0)/CHANNEL/$2.replaceAll(\"[^-]+\",\"\")EventTakeSuccessCount/rate/avg": {
+            "metric":"(\\w+).CHANNEL.(\\w+).EventTakeSuccessCount._rate._avg",
+            "pointInTime":false,
+            "temporal":true
+          },
+          "metrics/flume/$1.substring(0)/CHANNEL/$2.replaceAll(\"[^-]+\",\"\")EventTakeSuccessCount/rate/sum": {
+            "metric":"(\\w+).CHANNEL.(\\w+).EventTakeSuccessCount._rate._sum",
+            "pointInTime":false,
+            "temporal":true
+          },
+
+          "metrics/flume/$1.substring(0)/CHANNEL/$2.replaceAll(\"[^-]+\",\"\")EventPutSuccessCount/rate/avg": {
+            "metric":"(\\w+).CHANNEL.(\\w+).EventPutSuccessCount._rate._avg",
+            "pointInTime":false,
+            "temporal":true
+          },
+          "metrics/flume/$1.substring(0)/CHANNEL/$2.replaceAll(\"[^-]+\",\"\")EventPutSuccessCount/rate/max": {
+            "metric":"(\\w+).CHANNEL.(\\w+).EventPutSuccessCount._rate._max",
+            "pointInTime":false,
+            "temporal":true
+          },
+          "metrics/flume/$1.substring(0)/CHANNEL/$2.replaceAll(\"[^-]+\",\"\")EventPutSuccessCount/rate/min": {
+            "metric":"(\\w+).CHANNEL.(\\w+).EventPutSuccessCount._rate._min",
+            "pointInTime":false,
+            "temporal":true
+          },
+          "metrics/flume/$1.substring(0)/CHANNEL/$2.replaceAll(\"[^-]+\",\"\")EventPutSuccessCount/rate/sum": {
+            "metric":"(\\w+).CHANNEL.(\\w+).EventPutSuccessCount._rate._sum",
+            "pointInTime":false,
+            "temporal":true
+          },
+          
+          "metrics/flume/$1.substring(0)/CHANNEL/$2.replaceAll(\"[^-]+\",\"\")ChannelSize/avg": {
+            "metric":"(\\w+).CHANNEL.(\\w+).ChannelSize._avg",
+            "pointInTime":false,
+            "temporal":true
+          },
+          "metrics/flume/$1.substring(0)/CHANNEL/$2.replaceAll(\"[^-]+\",\"\")ChannelSize/max": {
+            "metric":"(\\w+).CHANNEL.(\\w+).ChannelSize._max",
+            "pointInTime":false,
+            "temporal":true
+          },
+          "metrics/flume/$1.substring(0)/CHANNEL/$2.replaceAll(\"[^-]+\",\"\")ChannelSize/min": {
+            "metric":"(\\w+).CHANNEL.(\\w+).ChannelSize._min",
+            "pointInTime":false,
+            "temporal":true
+          },
+          "metrics/flume/$1.substring(0)/CHANNEL/$2.replaceAll(\"[^-]+\",\"\")ChannelSize/sum": {
+            "metric":"(\\w+).CHANNEL.(\\w+).ChannelSize._sum",
+            "pointInTime":false,
+            "temporal":true
+          }
+
+        }
+      }
+    ],
+    "HostComponent": [
+      {
+        "type": "ganglia",
+        "metrics": {
+          "metrics/boottime":{
+            "metric":"boottime",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/cpu/cpu_aidle":{
+            "metric":"cpu_aidle",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/cpu/cpu_idle":{
+            "metric":"cpu_idle",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/cpu/cpu_nice":{
+            "metric":"cpu_nice",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/cpu/cpu_num":{
+            "metric":"cpu_num",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/cpu/cpu_speed":{
+            "metric":"cpu_speed",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/cpu/cpu_system":{
+            "metric":"cpu_system",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/cpu/cpu_user":{
+            "metric":"cpu_user",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/cpu/cpu_wio":{
+            "metric":"cpu_wio",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/disk/disk_free":{
+            "metric":"disk_free",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/disk/disk_total":{
+            "metric":"disk_total",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/disk/part_max_used":{
+            "metric":"part_max_used",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/gcCount":{
+            "metric":"jvm.metrics.gcCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/gcTimeMillis":{
+            "metric":"jvm.metrics.gcTimeMillis",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/logError":{
+            "metric":"jvm.metrics.logError",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/logFatal":{
+            "metric":"jvm.metrics.logFatal",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/logInfo":{
+            "metric":"jvm.metrics.logInfo",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/logWarn":{
+            "metric":"jvm.metrics.logWarn",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/maxMemoryM":{
+            "metric":"jvm.metrics.maxMemoryM",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/memHeapCommittedM":{
+            "metric":"jvm.metrics.memHeapCommittedM",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/memHeapUsedM":{
+            "metric":"jvm.metrics.memHeapUsedM",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/memNonHeapCommittedM":{
+            "metric":"jvm.metrics.memNonHeapCommittedM",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/memNonHeapUsedM":{
+            "metric":"jvm.metrics.memNonHeapUsedM",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/threadsBlocked":{
+            "metric":"jvm.metrics.threadsBlocked",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/threadsNew":{
+            "metric":"jvm.metrics.threadsNew",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/threadsRunnable":{
+            "metric":"jvm.metrics.threadsRunnable",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/threadsTerminated":{
+            "metric":"jvm.metrics.threadsTerminated",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/threadsTimedWaiting":{
+            "metric":"jvm.metrics.threadsTimedWaiting",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/jvm/threadsWaiting":{
+            "metric":"jvm.metrics.threadsWaiting",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/CHANNEL/$2/ChannelCapacity":{
+            "metric":"(\\w+).CHANNEL.(\\w+).ChannelCapacity",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/CHANNEL/$2/StartTime":{
+            "metric":"(\\w+).CHANNEL.(\\w+).StartTime",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/CHANNEL/$2/EventTakeAttemptCount":{
+            "metric":"(\\w+).CHANNEL.(\\w+).EventTakeAttemptCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/CHANNEL/$2/EventTakeSuccessCount":{
+            "metric":"(\\w+).CHANNEL.(\\w+).EventTakeSuccessCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/CHANNEL/$2/EventPutAttemptCount":{
+            "metric":"(\\w+).CHANNEL.(\\w+).EventPutAttemptCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/CHANNEL/$2/StopTime":{
+            "metric":"(\\w+).CHANNEL.(\\w+).StopTime",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/CHANNEL/$2/ChannelFillPercentage":{
+            "metric":"(\\w+).CHANNEL.(\\w+).ChannelFillPercentage",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/CHANNEL/$2/ChannelSize":{
+            "metric":"(\\w+).CHANNEL.(\\w+).ChannelSize",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/CHANNEL/$2/EventPutSuccessCount":{
+            "metric":"(\\w+).CHANNEL.(\\w+).EventPutSuccessCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SINK/$2/ConnectionCreatedCount":{
+            "metric":"(\\w+).SINK.(\\w+).ConnectionCreatedCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SINK/$2/BatchCompleteCount":{
+            "metric":"(\\w+).SINK.(\\w+).BatchCompleteCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SINK/$2/EventDrainSuccessCount":{
+            "metric":"(\\w+).SINK.(\\w+).EventDrainSuccessCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SINK/$2/StartTime":{
+            "metric":"(\\w+).SINK.(\\w+).StartTime",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SINK/$2/EventDrainAttemptCount":{
+            "metric":"(\\w+).SINK.(\\w+).EventDrainAttemptCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SINK/$2/ConnectionFailedCount":{
+            "metric":"(\\w+).SINK.(\\w+).ConnectionFailedCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SINK/$2/BatchUnderflowCount":{
+            "metric":"(\\w+).SINK.(\\w+).BatchUnderflowCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SINK/$2/ConnectionClosedCount":{
+            "metric":"(\\w+).SINK.(\\w+).ConnectionClosedCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SINK/$2/StopTime":{
+            "metric":"(\\w+).SINK.(\\w+).StopTime",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SINK/$2/BatchEmptyCount":{
+            "metric":"(\\w+).SINK.(\\w+).BatchEmptyCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SOURCE/$2/AppendBatchReceivedCount":{
+            "metric":"(\\w+).SOURCE.(\\w+).AppendBatchReceivedCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SOURCE/$2/AppendAcceptedCount":{
+            "metric":"(\\w+).SOURCE.(\\w+).AppendAcceptedCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SOURCE/$2/StartTime":{
+            "metric":"(\\w+).SOURCE.(\\w+).StartTime",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SOURCE/$2/OpenConnectionCount":{
+            "metric":"(\\w+).SOURCE.(\\w+).OpenConnectionCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SOURCE/$2/AppendBatchAcceptedCount":{
+            "metric":"(\\w+).SOURCE.(\\w+).AppendBatchAcceptedCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SOURCE/$2/AppendReceivedCount":{
+            "metric":"(\\w+).SOURCE.(\\w+).AppendReceivedCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SOURCE/$2/EventReceivedCount":{
+            "metric":"(\\w+).SOURCE.(\\w+).EventReceivedCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SOURCE/$2/StopTime":{
+            "metric":"(\\w+).SOURCE.(\\w+).StopTime",
+            "pointInTime":true,
+            "temporal":true
+          },
+          "metrics/flume/$1/SOURCE/$2/EventAcceptedCount":{
+            "metric":"(\\w+).SOURCE.(\\w+).EventAcceptedCount",
+            "pointInTime":true,
+            "temporal":true
+          },
+
+          "metrics/flume/$1.substring(0)/CHANNEL/$2.replaceAll(\"[^-]+\",\"\")EventTakeSuccessCount/rate/avg": {
+            "metric":"(\\w+).CHANNEL.(\\w+).EventTakeSuccessCount._rate._avg",
+            "pointInTime":false,
+            "temporal":true
+          },
+          "metrics/flume/$1.substring(0)/CHANNEL/$2.replaceAll(\"[^-]+\",\"\")EventTakeSuccessCount/rate/max": {
+            "metric":"(\\w+).CHANNEL.(\\w+).EventTakeSuccessCount._rate._max",
+            "pointInTime":false,
+            "temporal":true
+          },
+          "metrics/flume/$1.substring(0)/CHANNEL/$2.replaceAll(\"[^-]+\",\"\")EventTakeSuccessCount/rate/min": {
+            "metric":"(\\w+).CHANNEL.(\\w+).EventTakeSuccessCount._rate._min",
+            "pointInTime":false,
+            "temporal":true
+          },
+          "metrics/flume/$1.substring(0)/CHANNEL/$2.replaceAll(\"[^-]+\",\"\")EventTakeSuccessCount/rate/sum": {
+            "metric":"(\\w+).CHANNEL.(\\w+).EventTakeSuccessCount._rate._sum",
+            "pointInTime":false,
+            "temporal":true
+          },
+
+          "metrics/flume/$1.substring(0)/CHANNEL/$2.replaceAll(\"[^-]+\",\"\")EventPutSuccessCount/rate/avg": {
+            "metric":"(\\w+).CHANNEL.(\\w+).EventPutSuccessCount._rate._avg",
+            "pointInTime":false,
+            "temporal":true
+          },
+          "metrics/flume/$1.substring(0)/CHANNEL/$2.replaceAll(\"[^-]+\",\"\")EventPutSuccessCount/rate/max": {
+            "metric":"(\\w+).CHANNEL.(\\w+).EventPutSuccessCount._rate._max",
+            "pointInTime":false,
+            "temporal":true
+          },
+          "metrics/flume/$1.substring(0)/CHANNEL/$2.replaceAll(\"[^-]+\",\"\")EventPutSuccessCount/rate/min": {
+            "metric":"(\\w+).CHANNEL.(\\w+).EventPutSuccessCount._rate._min",
+            "pointInTime":false,
+            "temporal":true
+          },
+          "metrics/flume/$1.substring(0)/CHANNEL/$2.replaceAll(\"[^-]+\",\"\")EventPutSuccessCount/rate/sum": {
+            "metric":"(\\w+).CHANNEL.(\\w+).EventPutSuccessCount._rate._sum",
+            "pointInTime":false,
+            "temporal":true
+          },
+          
+          "metrics/flume/$1.substring(0)/CHANNEL/$2.replaceAll(\"[^-]+\",\"\")ChannelSize/avg": {
+            "metric":"(\\w+).CHANNEL.(\\w+).ChannelSize._avg",
+            "pointInTime":false,
+            "temporal":true
+          },
+          "metrics/flume/$1.substring(0)/CHANNEL/$2.replaceAll(\"[^-]+\",\"\")ChannelSize/max": {
+            "metric":"(\\w+).CHANNEL.(\\w+).ChannelSize._max",
+            "pointInTime":false,
+            "temporal":true
+          },
+          "metrics/flume/$1.substring(0)/CHANNEL/$2.replaceAll(\"[^-]+\",\"\")ChannelSize/min": {
+            "metric":"(\\w+).CHANNEL.(\\w+).ChannelSize._min",
+            "pointInTime":false,
+            "temporal":true
+          },
+          "metrics/flume/$1.substring(0)/CHANNEL/$2.replaceAll(\"[^-]+\",\"\")ChannelSize/sum": {
+            "metric":"(\\w+).CHANNEL.(\\w+).ChannelSize._sum",
+            "pointInTime":false,
+            "temporal":true
+          }
+          
+        }
+      }
+    ]
+  }
+}

+ 255 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/FLUME/package/scripts/flume.py

@@ -0,0 +1,255 @@
+"""
+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.
+
+"""
+
+import glob
+import json
+import os
+from resource_management import *
+
+def flume(action = None):
+  import params
+
+  if action == 'config':
+    # remove previously defined meta's
+    for n in find_expected_agent_names():
+      os.unlink(os.path.join(params.flume_conf_dir, n, 'ambari-meta.json'))
+
+    Directory(params.flume_conf_dir, recursive=True)
+    Directory(params.flume_log_dir, owner=params.flume_user)
+
+    File(format("{flume_conf_dir}/flume-env.sh"),
+         owner=params.flume_user,
+         content=InlineTemplate(params.flume_env_sh_template)
+    )
+
+    flume_agents = {}
+    if params.flume_conf_content is not None:
+      flume_agents = build_flume_topology(params.flume_conf_content)
+
+    for agent in flume_agents.keys():
+      flume_agent_conf_dir = os.path.join(params.flume_conf_dir, agent)
+      flume_agent_conf_file = os.path.join(flume_agent_conf_dir, 'flume.conf')
+      flume_agent_meta_file = os.path.join(flume_agent_conf_dir, 'ambari-meta.json')
+      flume_agent_log4j_file = os.path.join(flume_agent_conf_dir, 'log4j.properties')
+
+      Directory(flume_agent_conf_dir)
+
+      PropertiesFile(flume_agent_conf_file,
+        properties=flume_agents[agent],
+        mode = 0644)
+
+      File(flume_agent_log4j_file,
+        content=Template('log4j.properties.j2', agent_name = agent),
+        mode = 0644)
+
+      File(flume_agent_meta_file,
+        content = json.dumps(ambari_meta(agent, flume_agents[agent])),
+        mode = 0644)
+
+  elif action == 'start':
+    # desired state for service should be STARTED
+    if len(params.flume_command_targets) == 0:
+      _set_desired_state('STARTED')
+      
+    flume_base = format('su -s /bin/bash {flume_user} -c "export JAVA_HOME={java_home}; '
+      '{flume_bin} agent --name {{0}} --conf {{1}} --conf-file {{2}} {{3}}"')
+
+    for agent in cmd_target_names():
+      flume_agent_conf_dir = params.flume_conf_dir + os.sep + agent
+      flume_agent_conf_file = flume_agent_conf_dir + os.sep + "flume.conf"
+      flume_agent_pid_file = params.flume_run_dir + os.sep + agent + ".pid"
+
+      if not os.path.isfile(flume_agent_conf_file):
+        continue
+
+      if not is_live(flume_agent_pid_file):
+        # TODO someday make the ganglia ports configurable
+        extra_args = ''
+        if params.ganglia_server_host is not None:
+          extra_args = '-Dflume.monitoring.type=ganglia -Dflume.monitoring.hosts={0}:{1}'
+          extra_args = extra_args.format(params.ganglia_server_host, '8655')
+
+        flume_cmd = flume_base.format(agent, flume_agent_conf_dir,
+           flume_agent_conf_file, extra_args)
+
+        Execute(flume_cmd, wait_for_finish=False)
+
+        # sometimes startup spawns a couple of threads - so only the first line may count
+        pid_cmd = format('pgrep -o -u {flume_user} -f ^{java_home}.*{agent}.* > {flume_agent_pid_file}')
+        Execute(pid_cmd, logoutput=True, tries=10, try_sleep=6)
+
+    pass
+  elif action == 'stop':
+    # desired state for service should be INSTALLED
+    if len(params.flume_command_targets) == 0:
+      _set_desired_state('INSTALLED')
+
+    pid_files = glob.glob(params.flume_run_dir + os.sep + "*.pid")
+
+    if 0 == len(pid_files):
+      return
+
+    agent_names = cmd_target_names()
+
+
+    for agent in agent_names:
+      pid_file = params.flume_run_dir + os.sep + agent + '.pid'
+      pid = format('`cat {pid_file}` > /dev/null 2>&1')
+      Execute(format('kill {pid}'), ignore_failures=True)
+      File(pid_file, action = 'delete')
+
+
+def ambari_meta(agent_name, agent_conf):
+  res = {}
+
+  sources = agent_conf[agent_name + '.sources'].split(' ')
+  res['sources_count'] = len(sources)
+
+  sinks = agent_conf[agent_name + '.sinks'].split(' ')
+  res['sinks_count'] = len(sinks)
+
+  channels = agent_conf[agent_name + '.channels'].split(' ')
+  res['channels_count'] = len(channels)
+
+  return res
+
+# define a map of dictionaries, where the key is agent name
+# and the dictionary is the name/value pair
+def build_flume_topology(content):
+
+  result = {}
+  agent_names = []
+
+  for line in content.split('\n'):
+    rline = line.strip()
+    if 0 != len(rline) and not rline.startswith('#'):
+      pair = rline.split('=')
+      lhs = pair[0].strip()
+      rhs = pair[1].strip()
+
+      part0 = lhs.split('.')[0]
+
+      if lhs.endswith(".sources"):
+        agent_names.append(part0)
+
+      if not result.has_key(part0):
+        result[part0] = {}
+
+      result[part0][lhs] = rhs
+
+  # trim out non-agents
+  for k in result.keys():
+    if not k in agent_names:
+      del result[k]
+
+
+  return result
+
+def is_live(pid_file):
+  live = False
+
+  try:
+    check_process_status(pid_file)
+    live = True
+  except ComponentIsNotRunning:
+    pass
+
+  return live
+
+def live_status(pid_file):
+  import params
+
+  pid_file_part = pid_file.split(os.sep).pop()
+
+  res = {}
+  res['name'] = pid_file_part
+  
+  if pid_file_part.endswith(".pid"):
+    res['name'] = pid_file_part[:-4]
+
+  res['status'] = 'RUNNING' if is_live(pid_file) else 'NOT_RUNNING'
+  res['sources_count'] = 0
+  res['sinks_count'] = 0
+  res['channels_count'] = 0
+
+  flume_agent_conf_dir = params.flume_conf_dir + os.sep + res['name']
+  flume_agent_meta_file = flume_agent_conf_dir + os.sep + 'ambari-meta.json'
+
+  try:
+    with open(flume_agent_meta_file) as fp:
+      meta = json.load(fp)
+      res['sources_count'] = meta['sources_count']
+      res['sinks_count'] = meta['sinks_count']
+      res['channels_count'] = meta['channels_count']
+  except:
+    pass
+
+  return res
+  
+def flume_status():
+  import params
+
+  meta_files = find_expected_agent_names()
+  pid_files = []
+  for agent_name in meta_files:
+    pid_files.append(os.path.join(params.flume_run_dir, agent_name + '.pid'))
+
+  procs = []
+  for pid_file in pid_files:
+    procs.append(live_status(pid_file))
+
+  return procs
+
+# these are what Ambari believes should be running
+def find_expected_agent_names():
+  import params
+
+  files = glob.glob(params.flume_conf_dir + os.sep + "*/ambari-meta.json")
+  expected = []
+
+  for f in files:
+    expected.append(os.path.dirname(f).split(os.sep).pop())
+
+  return expected
+
+def cmd_target_names():
+  import params
+
+  if len(params.flume_command_targets) > 0:
+    return params.flume_command_targets
+  else:
+    return find_expected_agent_names()
+
+def _set_desired_state(state):
+  import params
+  try:
+    with open(os.path.join(params.flume_run_dir, 'ambari-state.txt'), 'w') as fp:
+      fp.write(state)
+  except:
+    pass
+
+def get_desired_state():
+  import params
+
+  try:
+    with open(os.path.join(params.flume_run_dir, 'ambari-state.txt'), 'r') as fp:
+      return fp.read()
+  except:
+    return 'INSTALLED'
+  

+ 40 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/FLUME/package/scripts/flume_check.py

@@ -0,0 +1,40 @@
+"""
+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.
+
+"""
+
+from resource_management import *
+
+
+class FlumeServiceCheck(Script):
+
+  def service_check(self, env):
+    import params
+
+    env.set_params(params)
+    if params.security_enabled:
+      principal_replaced = params.http_principal.replace("_HOST", params.hostname)
+      Execute(format("{kinit_path_local} -kt {http_keytab} {principal_replaced}"),
+              user=params.smoke_user)
+
+    Execute(format('env JAVA_HOME={java_home} {flume_bin} version'),
+            logoutput=True,
+            tries = 3,
+            try_sleep = 20)
+
+if __name__ == "__main__":
+  FlumeServiceCheck().execute()

+ 121 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/FLUME/package/scripts/flume_handler.py

@@ -0,0 +1,121 @@
+"""
+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.
+
+"""
+
+from resource_management import *
+from flume import flume
+from flume import flume_status
+from flume import find_expected_agent_names
+from flume import get_desired_state
+
+class FlumeHandler(Script):
+  def install(self, env):
+    import params
+
+    self.install_packages(env)
+    env.set_params(params)
+
+  def start(self, env):
+    import params
+
+    env.set_params(params)
+    self.configure(env)
+
+    flume(action='start')
+
+  def stop(self, env):
+    import params
+
+    env.set_params(params)
+
+    flume(action='stop')
+
+  def configure(self, env):
+    import params
+
+    env.set_params(params)
+
+    flume(action='config')
+
+  def status(self, env):
+    import params
+
+    env.set_params(params)
+
+    processes = flume_status()
+    expected_agents = find_expected_agent_names()
+
+    json = {}
+    json['processes'] = processes
+    json['alerts'] = []
+
+    alert = {}
+    alert['name'] = 'flume_agent'
+    alert['label'] = 'Flume Agent process'
+
+    if len(processes) == 0 and len(expected_agents) == 0:
+      alert['state'] = 'OK'
+
+      if not params.hostname is None:
+        alert['text'] = 'No agents defined on ' + params.hostname
+      else:
+        alert['text'] = 'No agents defined'
+
+    else:
+      crit = []
+      ok = []
+
+      for proc in processes:
+        if not proc.has_key('status') or proc['status'] == 'NOT_RUNNING':
+          crit.append(proc['name'])
+        else:
+          ok.append(proc['name'])
+
+      text_arr = []
+
+      if len(crit) > 0:
+        text_arr.append("{0} {1} NOT running".format(", ".join(crit),
+          "is" if len(crit) == 1 else "are"))
+
+      if len(ok) > 0:
+        text_arr.append("{0} {1} running".format(", ".join(ok),
+          "is" if len(ok) == 1 else "are"))
+
+      plural = len(crit) > 1 or len(ok) > 1
+      alert['text'] = "Agent{0} {1} {2}".format(
+        "s" if plural else "",
+        " and ".join(text_arr),
+        "" if params.hostname is None else "on " + str(params.hostname))
+
+      alert['state'] = 'CRITICAL' if len(crit) > 0 else 'OK'
+
+    json['alerts'].append(alert)
+    self.put_structured_out(json)
+
+    # only throw an exception if there are agents defined and there is a 
+    # problem with the processes; if there are no agents defined, then 
+    # the service should report STARTED (green) ONLY if the desired state is started.  otherwise, INSTALLED (red)
+    if len(expected_agents) > 0:
+      for proc in processes:
+        if not proc.has_key('status') or proc['status'] == 'NOT_RUNNING':
+          raise ComponentIsNotRunning()
+    elif len(expected_agents) == 0 and 'INSTALLED' == get_desired_state():
+      raise ComponentIsNotRunning()
+
+if __name__ == "__main__":
+  FlumeHandler().execute()

+ 70 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/FLUME/package/scripts/params.py

@@ -0,0 +1,70 @@
+"""
+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.
+
+"""
+
+from resource_management import *
+
+config = Script.get_config()
+
+user_group = config['configurations']['cluster-env']['user_group']
+proxyuser_group =  config['configurations']['hadoop-env']['proxyuser_group']
+
+security_enabled = False
+
+#RPM versioning support
+rpm_version = default("/configurations/cluster-env/rpm_version", None)
+
+#hadoop params
+if rpm_version:
+  flume_bin = '/usr/phd/current/flume-client/bin/flume-ng'
+else:
+  flume_bin = '/usr/bin/flume-ng'
+
+flume_conf_dir = '/etc/flume/conf'
+java_home = config['hostLevelParams']['java_home']
+flume_log_dir = '/var/log/flume'
+flume_run_dir = '/var/run/flume'
+flume_user = 'flume'
+flume_group = 'flume'
+
+if 'flume-env' in config['configurations'] and 'flume_user' in config['configurations']['flume-env']:
+  flume_user = config['configurations']['flume-env']['flume_user']
+
+if (('flume-conf' in config['configurations']) and('content' in config['configurations']['flume-conf'])):
+  flume_conf_content = config['configurations']['flume-conf']['content']
+else:
+  flume_conf_content = None
+
+if (('flume-log4j' in config['configurations']) and ('content' in config['configurations']['flume-log4j'])):
+  flume_log4j_content = config['configurations']['flume-log4j']['content']
+else:
+  flume_log4j_content = None
+
+targets = default('/commandParams/flume_handler', None)
+flume_command_targets = [] if targets is None else targets.split(',')
+
+flume_env_sh_template = config['configurations']['flume-env']['content']
+
+ganglia_server_hosts = default('/clusterHostInfo/ganglia_server_host', [])
+ganglia_server_host = None
+if 0 != len(ganglia_server_hosts):
+  ganglia_server_host = ganglia_server_hosts[0]
+
+hostname = None
+if config.has_key('hostname'):
+  hostname = config['hostname']

+ 24 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/FLUME/package/templates/flume.conf.j2

@@ -0,0 +1,24 @@
+# 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.
+
+
+# flume.conf: Add your flume configuration here and start flume
+#             Note if you are using the Windows srvice or Unix service
+#             provided by the PHD distribution, they will assume the
+#             agent's name in this file to be 'a1'
+#
+{{flume_agent_conf_content}}

+ 67 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/FLUME/package/templates/log4j.properties.j2

@@ -0,0 +1,67 @@
+#
+# 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.
+#
+
+# Define some default values that can be overridden by system properties.
+#
+# For testing, it may also be convenient to specify
+# -Dflume.root.logger=DEBUG,console when launching flume.
+
+#flume.root.logger=DEBUG,console
+flume.root.logger=INFO,LOGFILE
+flume.log.dir={{flume_log_dir}}
+flume.log.file=flume-{{agent_name}}.log
+
+log4j.logger.org.apache.flume.lifecycle = INFO
+log4j.logger.org.jboss = WARN
+log4j.logger.org.mortbay = INFO
+log4j.logger.org.apache.avro.ipc.NettyTransceiver = WARN
+log4j.logger.org.apache.hadoop = INFO
+
+# Define the root logger to the system property "flume.root.logger".
+log4j.rootLogger=${flume.root.logger}
+
+
+# Stock log4j rolling file appender
+# Default log rotation configuration
+log4j.appender.LOGFILE=org.apache.log4j.RollingFileAppender
+log4j.appender.LOGFILE.MaxFileSize=100MB
+log4j.appender.LOGFILE.MaxBackupIndex=10
+log4j.appender.LOGFILE.File=${flume.log.dir}/${flume.log.file}
+log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
+log4j.appender.LOGFILE.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss,SSS} %-5p [%t] (%C.%M:%L) %x - %m%n
+
+
+# Warning: If you enable the following appender it will fill up your disk if you don't have a cleanup job!
+# This uses the updated rolling file appender from log4j-extras that supports a reliable time-based rolling policy.
+# See http://logging.apache.org/log4j/companions/extras/apidocs/org/apache/log4j/rolling/TimeBasedRollingPolicy.html
+# Add "DAILY" to flume.root.logger above if you want to use this
+log4j.appender.DAILY=org.apache.log4j.rolling.RollingFileAppender
+log4j.appender.DAILY.rollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
+log4j.appender.DAILY.rollingPolicy.ActiveFileName=${flume.log.dir}/${flume.log.file}
+log4j.appender.DAILY.rollingPolicy.FileNamePattern=${flume.log.dir}/${flume.log.file}.%d{yyyy-MM-dd}
+log4j.appender.DAILY.layout=org.apache.log4j.PatternLayout
+log4j.appender.DAILY.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss,SSS} %-5p [%t] (%C.%M:%L) %x - %m%n
+
+
+# console
+# Add "console" to flume.root.logger above if you want to use this
+log4j.appender.console=org.apache.log4j.ConsoleAppender
+log4j.appender.console.target=System.err
+log4j.appender.console.layout=org.apache.log4j.PatternLayout
+log4j.appender.console.layout.ConversionPattern=%d (%t) [%p - %l] %m%n

+ 77 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/configuration/ganglia-env.xml

@@ -0,0 +1,77 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+/**
+ * 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.
+ */
+-->
+
+<configuration>
+  <property>
+    <name>ganglia_conf_dir</name>
+    <value>/etc/ganglia/hdp</value>
+    <description>Config directory for Ganglia</description>
+  </property>
+  <property>
+    <name>ganglia_runtime_dir</name>
+    <value>/var/run/ganglia/hdp</value>
+    <description>Run directories for Ganglia</description>
+  </property>
+  <property>
+    <name>gmetad_user</name>
+    <value>nobody</value>
+    <property-type>USER GROUP</property-type>
+    <description>User </description>
+  </property>
+    <property>
+    <name>gmond_user</name>
+    <value>nobody</value>
+    <property-type>USER GROUP</property-type>
+    <description>User </description>
+  </property>
+  <property>
+    <name>rrdcached_base_dir</name>
+    <value>/var/lib/ganglia/rrds</value>
+    <description>Default directory for saving the rrd files on ganglia server</description>
+  </property>
+  <property>
+    <name>rrdcached_timeout</name>
+    <value>3600</value>
+    <description>(-w) Data is written to disk every timeout seconds. If this option is not specified the default interval of 300 seconds will be used.</description>
+  </property>
+  <property>
+    <name>rrdcached_flush_timeout</name>
+    <value>7200</value>
+      <description>(-f) Every timeout seconds the entire cache is searched for old values which are written to disk. This only concerns files to which updates have stopped, so setting this to a high value, such as 3600 seconds, is acceptable in most cases. This timeout defaults to 3600 seconds.</description>
+  </property>
+  <property>
+    <name>rrdcached_delay</name>
+    <value>1800</value>
+    <description>(-z) If specified, rrdcached will delay writing of each RRD for a random number of seconds in the range [0,delay). This will avoid too many writes being queued simultaneously. This value should be no greater than the value specified in -w. By default, there is no delay.</description>
+  </property>
+  <property>
+    <name>rrdcached_write_threads</name>
+    <value>4</value>
+    <description>(-t) Specifies the number of threads used for writing RRD files. The default is 4. Increasing this number will allow rrdcached to have more simultaneous I/O requests into the kernel. This may allow the kernel to re-order disk writes, resulting in better disk throughput.</description>
+  </property>
+  <property>
+    <name>additional_clusters</name>
+    <value> </value>
+    <description>Add additional desired Ganglia metrics cluster in the form "name1:port1,name2:port2". Ensure that the names and ports are unique across all cluster and ports are available on ganglia server host. Ambari has reserved ports 8667-8669 within its own pool.</description>
+  </property>
+
+</configuration>

+ 127 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/metainfo.xml

@@ -0,0 +1,127 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<metainfo>
+  <schemaVersion>2.0</schemaVersion>
+  <services>
+    <service>
+      <name>GANGLIA</name>
+      <displayName>Ganglia</displayName>
+      <comment>Ganglia Metrics Collection system (&lt;a href=&quot;http://oss.oetiker.ch/rrdtool/&quot; target=&quot;_blank&quot;&gt;RRDTool&lt;/a&gt; will be installed too)</comment>
+      <version>3.5.0</version>
+      <components>
+        <component>
+          <name>GANGLIA_SERVER</name>
+          <displayName>Ganglia Server</displayName>
+          <category>MASTER</category>
+          <cardinality>1</cardinality>
+          <commandScript>
+            <script>scripts/ganglia_server.py</script>
+            <scriptType>PYTHON</scriptType>
+            <timeout>600</timeout>
+          </commandScript>
+        </component>
+
+        <component>
+          <name>GANGLIA_MONITOR</name>
+          <displayName>Ganglia Monitor</displayName>
+          <category>SLAVE</category>
+          <cardinality>ALL</cardinality>
+          <auto-deploy>
+            <enabled>true</enabled>
+          </auto-deploy>
+          <commandScript>
+            <script>scripts/ganglia_monitor.py</script>
+            <scriptType>PYTHON</scriptType>
+            <timeout>600</timeout>
+          </commandScript>
+        </component>
+      </components>
+      <osSpecifics>
+        <osSpecific>
+          <osFamily>redhat5,redhat6,suse11</osFamily>
+          <packages>
+            <package>
+              <name>python-rrdtool-1.4.5</name>
+            </package>
+            <package>
+              <name>libganglia-3.5.0-99</name>
+            </package>
+            <package>
+              <name>ganglia-devel-3.5.0-99</name>
+            </package>
+            <package>
+              <name>ganglia-gmetad-3.5.0-99</name>
+            </package>
+            <package>
+              <name>ganglia-web-3.5.7-99.noarch</name>
+            </package>
+            <package>
+              <name>ganglia-gmond-3.5.0-99</name>
+            </package>
+            <package>
+              <name>ganglia-gmond-modules-python-3.5.0-99</name>
+            </package>
+          </packages>
+        </osSpecific>
+        <osSpecific>
+          <osFamily>ubuntu12</osFamily>
+          <packages>
+            <package>
+              <name>python-rrdtool</name>
+            </package>
+            <package>
+              <name>gmetad</name>
+            </package>
+            <package>
+              <name>ganglia-webfrontend</name>
+            </package>
+            <package>
+              <name>ganglia-monitor-python</name>
+            </package>
+            <package>
+              <name>rrdcached</name>
+            </package>
+          </packages>
+        </osSpecific>
+        <osSpecific>
+          <osFamily>suse11</osFamily>
+          <packages>
+            <package>
+              <name>apache2</name>
+            </package>
+            <package>
+              <name>apache2?mod_php*</name>
+            </package>
+          </packages>
+        </osSpecific>
+        <osSpecific>
+          <osFamily>redhat5,redhat6</osFamily>
+          <packages>
+            <package>
+              <name>httpd</name>
+            </package>
+          </packages>
+        </osSpecific>
+      </osSpecifics>
+      <configuration-dependencies>
+        <config-type>ganglia-env</config-type>
+      </configuration-dependencies>
+      <monitoringService>true</monitoringService>
+    </service>
+  </services>
+</metainfo>

+ 37 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/files/checkGmetad.sh

@@ -0,0 +1,37 @@
+#!/usr/bin/env bash
+
+#/*
+# * 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.
+# */
+
+cd `dirname ${0}`;
+
+# Get all our common constants etc. set up.
+source ./gmetadLib.sh;
+
+# Before checking gmetad, check rrdcached.
+./checkRrdcached.sh;
+
+gmetadRunningPid=`getGmetadRunningPid`;
+
+if [ -n "${gmetadRunningPid}" ]
+then
+  echo "${GMETAD_BIN} running with PID ${gmetadRunningPid}";
+else
+  echo "Failed to find running ${GMETAD_BIN}";
+  exit 1;
+fi

+ 62 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/files/checkGmond.sh

@@ -0,0 +1,62 @@
+#!/usr/bin/env bash
+
+#/*
+# * 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.
+# */
+
+cd `dirname ${0}`;
+
+# Get all our common constants etc. set up.
+# Pulls in gangliaLib.sh as well, so we can skip pulling it in again.
+source ./gmondLib.sh;
+
+function checkGmondForCluster()
+{
+    gmondClusterName=${1};
+
+    gmondCoreConfFileName=`getGmondCoreConfFileName ${gmondClusterName}`;
+
+    # Skip over (purported) Clusters that don't have their core conf file present.
+    if [ -e "${gmondCoreConfFileName}" ]
+    then 
+      gmondRunningPid=`getGmondRunningPid ${gmondClusterName}`;
+
+      if [ -n "${gmondRunningPid}" ]
+      then
+        echo "${GMOND_BIN} for cluster ${gmondClusterName} running with PID ${gmondRunningPid}";
+      else
+        echo "Failed to find running ${GMOND_BIN} for cluster ${gmondClusterName}";
+        exit 1;
+      fi
+    fi
+}
+
+# main()
+gmondClusterName=${1};
+
+if [ "x" == "x${gmondClusterName}" ]
+then
+    # No ${gmondClusterName} passed in as command-line arg, so check
+    # all the gmonds we know about.
+    for gmondClusterName in `getConfiguredGangliaClusterNames`
+    do
+        checkGmondForCluster ${gmondClusterName};
+    done
+else
+    # Just check the one ${gmondClusterName} that was asked for.
+    checkGmondForCluster ${gmondClusterName};
+fi

+ 34 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/files/checkRrdcached.sh

@@ -0,0 +1,34 @@
+#!/usr/bin/env bash
+
+#/*
+# * 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.
+# */
+
+cd `dirname ${0}`;
+
+# Get all our common constants etc. set up.
+source ./rrdcachedLib.sh;
+
+rrdcachedRunningPid=`getRrdcachedRunningPid`;
+
+if [ -n "${rrdcachedRunningPid}" ]
+then
+  echo "${RRDCACHED_BIN} running with PID ${rrdcachedRunningPid}";
+else
+  echo "Failed to find running ${RRDCACHED_BIN}";
+  exit 1;
+fi

+ 73 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/files/gmetad.init

@@ -0,0 +1,73 @@
+#!/bin/sh
+# chkconfig: 2345 70 40
+# description: hdp-gmetad startup script
+# processname: hdp-gmetad
+#/*
+# * 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.
+# */
+
+# Remember to keep this in-sync with the definition of 
+# GANGLIA_RUNTIME_COMPONENTS_UNPACK_DIR in monrpmInstaller.sh.
+HDP_GANGLIA_RUNTIME_COMPONENTS_DIR=/usr/libexec/hdp/ganglia
+HDP_GANLIA_GMETAD_STARTER=${HDP_GANGLIA_RUNTIME_COMPONENTS_DIR}/startGmetad.sh
+HDP_GANLIA_GMETAD_STOPPER=${HDP_GANGLIA_RUNTIME_COMPONENTS_DIR}/stopGmetad.sh
+HDP_GANLIA_GMETAD_CHECKER=${HDP_GANGLIA_RUNTIME_COMPONENTS_DIR}/checkGmetad.sh
+
+RETVAL=0
+
+case "$1" in
+   start)
+      echo "============================="
+      echo "Starting hdp-gmetad..."
+      echo "============================="
+      [ -f ${HDP_GANLIA_GMETAD_STARTER} ] || exit 1
+      eval "${HDP_GANLIA_GMETAD_STARTER}"
+      RETVAL=$?
+      echo
+      [ $RETVAL -eq 0 ] && touch /var/lock/subsys/hdp-gmetad
+      ;;
+
+  stop)
+      echo "=================================="
+      echo "Shutting down hdp-gmetad..."
+      echo "=================================="
+      [ -f ${HDP_GANLIA_GMETAD_STOPPER} ] || exit 1
+      eval "${HDP_GANLIA_GMETAD_STOPPER}"
+      RETVAL=$?
+      echo
+      [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/hdp-gmetad
+      ;;
+
+  restart|reload)
+   	$0 stop
+   	$0 start
+   	RETVAL=$?
+	;;
+  status)
+      echo "======================================="
+      echo "Checking status of hdp-gmetad..."
+      echo "======================================="
+      [ -f ${HDP_GANLIA_GMETAD_CHECKER} ] || exit 1
+      eval "${HDP_GANLIA_GMETAD_CHECKER}"
+      RETVAL=$?
+      ;;
+  *)
+	echo "Usage: $0 {start|stop|restart|status}"
+	exit 1
+esac
+
+exit $RETVAL

+ 204 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/files/gmetadLib.sh

@@ -0,0 +1,204 @@
+#!/usr/bin/env bash
+
+#/*
+# * 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.
+# */
+
+cd `dirname ${0}`;
+
+# Slurp in all our user-customizable settings.
+source ./gangliaEnv.sh;
+
+# Get access to Ganglia-wide constants etc.
+source ./gangliaLib.sh;
+
+GMETAD_BIN=/usr/sbin/gmetad;
+GMETAD_CONF_FILE=${GANGLIA_CONF_DIR}/gmetad.conf;
+GMETAD_PID_FILE=${GANGLIA_RUNTIME_DIR}/gmetad.pid;
+
+function getGmetadLoggedPid()
+{
+    if [ -e "${GMETAD_PID_FILE}" ]
+    then
+        echo `cat ${GMETAD_PID_FILE}`;
+    fi
+}
+
+function getGmetadRunningPid()
+{
+    gmetadLoggedPid=`getGmetadLoggedPid`;
+
+    if [ -n "${gmetadLoggedPid}" ]
+    then
+        echo `ps -o pid=MYPID -p ${gmetadLoggedPid} | tail -1 | awk '{print $1}' | grep -v MYPID`;
+    fi
+}
+
+function generateGmetadConf()
+{
+    now=`date`;
+
+    cat <<END_OF_GMETAD_CONF_1
+#################### Generated by ${0} on ${now} ####################
+#
+#-------------------------------------------------------------------------------
+# Setting the debug_level to 1 will keep daemon in the forground and
+# show only error messages. Setting this value higher than 1 will make 
+# gmetad output debugging information and stay in the foreground.
+# default: 0
+# debug_level 10
+#
+#-------------------------------------------------------------------------------
+# What to monitor. The most important section of this file. 
+#
+# The data_source tag specifies either a cluster or a grid to
+# monitor. If we detect the source is a cluster, we will maintain a complete
+# set of RRD databases for it, which can be used to create historical 
+# graphs of the metrics. If the source is a grid (it comes from another gmetad),
+# we will only maintain summary RRDs for it.
+#
+# Format: 
+# data_source "my cluster" [polling interval] address1:port addreses2:port ...
+# 
+# The keyword 'data_source' must immediately be followed by a unique
+# string which identifies the source, then an optional polling interval in 
+# seconds. The source will be polled at this interval on average. 
+# If the polling interval is omitted, 15sec is asssumed. 
+#
+# If you choose to set the polling interval to something other than the default,
+# note that the web frontend determines a host as down if its TN value is less
+# than 4 * TMAX (20sec by default).  Therefore, if you set the polling interval
+# to something around or greater than 80sec, this will cause the frontend to
+# incorrectly display hosts as down even though they are not.
+#
+# A list of machines which service the data source follows, in the 
+# format ip:port, or name:port. If a port is not specified then 8649
+# (the default gmond port) is assumed.
+# default: There is no default value
+#
+# data_source "my cluster" 10 localhost  my.machine.edu:8649  1.2.3.5:8655
+# data_source "my grid" 50 1.3.4.7:8655 grid.org:8651 grid-backup.org:8651
+# data_source "another source" 1.3.4.7:8655  1.3.4.8
+END_OF_GMETAD_CONF_1
+
+    # Get info about all the configured Ganglia clusters.
+    getGangliaClusterInfo | while read gangliaClusterInfoLine
+    do
+        # From each, parse out ${gmondClusterName}, ${gmondMasterIP} and ${gmondPort}... 
+        read gmondClusterName gmondMasterIP gmondPort <<<`echo ${gangliaClusterInfoLine}`;
+        # ...and generate a corresponding data_source line for gmetad.conf. 
+        echo "data_source \"${gmondClusterName}\" ${gmondMasterIP}:${gmondPort}";
+    done
+
+    cat <<END_OF_GMETAD_CONF_2
+#
+# Round-Robin Archives
+# You can specify custom Round-Robin archives here (defaults are listed below)
+#
+# Old Default RRA: Keep 1 hour of metrics at 15 second resolution. 1 day at 6 minute
+# RRAs "RRA:AVERAGE:0.5:1:244" "RRA:AVERAGE:0.5:24:244" "RRA:AVERAGE:0.5:168:244" "RRA:AVERAGE:0.5:672:244" \
+#      "RRA:AVERAGE:0.5:5760:374"
+# New Default RRA
+# Keep 5856 data points at 15 second resolution assuming 15 second (default) polling. That's 1 day
+# Two weeks of data points at 1 minute resolution (average)
+#RRAs "RRA:AVERAGE:0.5:1:5856" "RRA:AVERAGE:0.5:4:20160" "RRA:AVERAGE:0.5:40:52704"
+# Retaining existing resolution
+RRAs "RRA:AVERAGE:0.5:1:244" "RRA:AVERAGE:0.5:24:244" "RRA:AVERAGE:0.5:168:244" "RRA:AVERAGE:0.5:672:244" \
+     "RRA:AVERAGE:0.5:5760:374"
+#
+#-------------------------------------------------------------------------------
+# Scalability mode. If on, we summarize over downstream grids, and respect
+# authority tags. If off, we take on 2.5.0-era behavior: we do not wrap our output
+# in <GRID></GRID> tags, we ignore all <GRID> tags we see, and always assume
+# we are the "authority" on data source feeds. This approach does not scale to
+# large groups of clusters, but is provided for backwards compatibility.
+# default: on
+# scalable off
+#
+#-------------------------------------------------------------------------------
+# The name of this Grid. All the data sources above will be wrapped in a GRID
+# tag with this name.
+# default: unspecified
+gridname "HDP_GRID"
+#
+#-------------------------------------------------------------------------------
+# The authority URL for this grid. Used by other gmetads to locate graphs
+# for our data sources. Generally points to a ganglia/
+# website on this machine.
+# default: "http://hostname/ganglia/",
+#   where hostname is the name of this machine, as defined by gethostname().
+# authority "http://mycluster.org/newprefix/"
+#
+#-------------------------------------------------------------------------------
+# List of machines this gmetad will share XML with. Localhost
+# is always trusted. 
+# default: There is no default value
+# trusted_hosts 127.0.0.1 169.229.50.165 my.gmetad.org
+#
+#-------------------------------------------------------------------------------
+# If you want any host which connects to the gmetad XML to receive
+# data, then set this value to "on"
+# default: off
+# all_trusted on
+#
+#-------------------------------------------------------------------------------
+# If you don't want gmetad to setuid then set this to off
+# default: on
+# setuid off
+#
+#-------------------------------------------------------------------------------
+# User gmetad will setuid to (defaults to "nobody")
+# default: "nobody"
+setuid_username "${GMETAD_USER}"
+#
+#-------------------------------------------------------------------------------
+# Umask to apply to created rrd files and grid directory structure
+# default: 0 (files are public)
+# umask 022
+#
+#-------------------------------------------------------------------------------
+# The port gmetad will answer requests for XML
+# default: 8651
+# xml_port 8651
+#
+#-------------------------------------------------------------------------------
+# The port gmetad will answer queries for XML. This facility allows
+# simple subtree and summation views of the XML tree.
+# default: 8652
+# interactive_port 8652
+#
+#-------------------------------------------------------------------------------
+# The number of threads answering XML requests
+# default: 4
+# server_threads 10
+#
+#-------------------------------------------------------------------------------
+# Where gmetad stores its round-robin databases
+# default: "/var/lib/ganglia/rrds"
+rrd_rootdir "${RRD_ROOTDIR}"
+#
+#-------------------------------------------------------------------------------
+# In earlier versions of gmetad, hostnames were handled in a case
+# sensitive manner
+# If your hostname directories have been renamed to lower case,
+# set this option to 0 to disable backward compatibility.
+# From version 3.2, backwards compatibility will be disabled by default.
+# default: 1   (for gmetad < 3.2)
+# default: 0   (for gmetad >= 3.2)
+case_sensitive_hostnames 1
+END_OF_GMETAD_CONF_2
+}

+ 73 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/files/gmond.init

@@ -0,0 +1,73 @@
+#!/bin/sh
+# chkconfig: 2345 70 40
+# description: hdp-gmond startup script
+# processname: hdp-gmond
+#/*
+# * 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.
+# */
+
+# Remember to keep this in-sync with the definition of 
+# GANGLIA_RUNTIME_COMPONENTS_UNPACK_DIR in monrpmInstaller.sh.
+HDP_GANGLIA_RUNTIME_COMPONENTS_DIR=/usr/libexec/hdp/ganglia
+HDP_GANLIA_GMOND_STARTER=${HDP_GANGLIA_RUNTIME_COMPONENTS_DIR}/startGmond.sh
+HDP_GANLIA_GMOND_STOPPER=${HDP_GANGLIA_RUNTIME_COMPONENTS_DIR}/stopGmond.sh
+HDP_GANLIA_GMOND_CHECKER=${HDP_GANGLIA_RUNTIME_COMPONENTS_DIR}/checkGmond.sh
+
+RETVAL=0
+
+case "$1" in
+   start)
+      echo "============================="
+      echo "Starting hdp-gmond..."
+      echo "============================="
+      [ -f ${HDP_GANLIA_GMOND_STARTER} ] || exit 1
+      eval "${HDP_GANLIA_GMOND_STARTER}"
+      RETVAL=$?
+      echo
+      [ $RETVAL -eq 0 ] && touch /var/lock/subsys/hdp-gmond
+      ;;
+
+  stop)
+      echo "=================================="
+      echo "Shutting down hdp-gmond..."
+      echo "=================================="
+      [ -f ${HDP_GANLIA_GMOND_STOPPER} ] || exit 1
+      eval "${HDP_GANLIA_GMOND_STOPPER}"
+      RETVAL=$?
+      echo
+      [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/hdp-gmond
+      ;;
+
+  restart|reload)
+   	$0 stop
+   	$0 start
+   	RETVAL=$?
+	;;
+  status)
+      echo "======================================="
+      echo "Checking status of hdp-gmond..."
+      echo "======================================="
+      [ -f ${HDP_GANLIA_GMOND_CHECKER} ] || exit 1
+      eval "${HDP_GANLIA_GMOND_CHECKER}"
+      RETVAL=$?
+      ;;
+  *)
+	echo "Usage: $0 {start|stop|restart|status}"
+	exit 1
+esac
+
+exit $RETVAL

+ 539 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/files/gmondLib.sh

@@ -0,0 +1,539 @@
+#!/usr/bin/env bash
+
+#/*
+# * 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.
+# */
+
+cd `dirname ${0}`;
+
+# Slurp in all our user-customizable settings.
+source ./gangliaEnv.sh;
+
+# Get access to Ganglia-wide constants etc.
+source ./gangliaLib.sh;
+
+GMOND_BIN=/usr/sbin/gmond;
+GMOND_CORE_CONF_FILE=gmond.core.conf;
+GMOND_MASTER_CONF_FILE=gmond.master.conf;
+GMOND_SLAVE_CONF_FILE=gmond.slave.conf;
+GMOND_PID_FILE=gmond.pid;
+
+# Functions.
+function getGmondCoreConfFileName()
+{
+    clusterName=${1};
+
+    if [ "x" != "x${clusterName}" ]
+    then
+        # ${clusterName} is not empty. 
+        echo "${GANGLIA_CONF_DIR}/${clusterName}/${GMOND_CORE_CONF_FILE}";
+    else
+        echo "${GANGLIA_CONF_DIR}/${GMOND_CORE_CONF_FILE}";
+    fi
+}
+
+function getGmondMasterConfFileName()
+{
+    clusterName=${1};
+
+    if [ "x" != "x${clusterName}" ]
+    then
+        # ${clusterName} is not empty. 
+        echo "${GANGLIA_CONF_DIR}/${clusterName}/conf.d/${GMOND_MASTER_CONF_FILE}";
+    else
+        echo "${GANGLIA_CONF_DIR}/conf.d/${GMOND_MASTER_CONF_FILE}";
+    fi
+}
+
+function getGmondSlaveConfFileName()
+{
+    clusterName=${1};
+
+    if [ "x" != "x${clusterName}" ]
+    then
+        # ${clusterName} is not empty. 
+        echo "${GANGLIA_CONF_DIR}/${clusterName}/conf.d/${GMOND_SLAVE_CONF_FILE}";
+    else
+        echo "${GANGLIA_CONF_DIR}/conf.d/${GMOND_SLAVE_CONF_FILE}";
+    fi
+}
+
+function getGmondPidFileName()
+{
+    clusterName=${1};
+
+    if [ "x" != "x${clusterName}" ]
+    then
+        # ${clusterName} is not empty. 
+        echo "${GANGLIA_RUNTIME_DIR}/${clusterName}/${GMOND_PID_FILE}";
+    else
+        echo "${GANGLIA_RUNTIME_DIR}/${GMOND_PID_FILE}";
+    fi
+}
+
+function getGmondLoggedPid()
+{
+    gmondPidFile=`getGmondPidFileName ${1}`;
+
+    if [ -e "${gmondPidFile}" ]
+    then
+        echo `cat ${gmondPidFile}`;
+    fi
+}
+
+function getGmondRunningPid()
+{
+    gmondLoggedPid=`getGmondLoggedPid ${1}`;
+
+    if [ -n "${gmondLoggedPid}" ]
+    then
+        echo `ps -o pid=MYPID -p ${gmondLoggedPid} | tail -1 | awk '{print $1}' | grep -v MYPID`;
+    fi
+}
+
+function generateGmondCoreConf()
+{
+    clusterName=${1};
+
+    if [ "x" != "x${clusterName}" ]
+    then
+        read gmondClusterName gmondMasterIP gmondPort <<<`getGangliaClusterInfo ${clusterName}`;
+
+        # Check that all of ${gmondClusterName} and ${gmondMasterIP} and ${gmondPort} are populated.
+        if [ "x" != "x${gmondClusterName}" -a "x" != "x${gmondMasterIP}" -a "x" != "x${gmondPort}" ]
+        then
+            now=`date`;
+
+            cat << END_OF_GMOND_CORE_CONF
+#################### Generated by ${0} on ${now} ####################
+#
+/* This configuration is as close to 2.5.x default behavior as possible
+   The values closely match ./gmond/metric.h definitions in 2.5.x */
+globals {
+  daemonize = yes
+  setuid = yes
+  user = ${GMOND_USER}
+  debug_level = 0
+  max_udp_msg_len = 1472
+  mute = no
+  deaf = no 
+  allow_extra_data = yes
+  host_dmax = 0 /*secs */
+  host_tmax = 20 /*secs */
+  cleanup_threshold = 300 /*secs */
+  gexec = no
+  send_metadata_interval = 30 /*secs */
+}
+
+/*
+ * The cluster attributes specified will be used as part of the <CLUSTER>
+ * tag that will wrap all hosts collected by this instance.
+ */
+cluster {
+  name = "${gmondClusterName}"
+  owner = "unspecified"
+  latlong = "unspecified"
+  url = "unspecified"
+}
+
+/* The host section describes attributes of the host, like the location */
+host {
+  location = "unspecified"
+}
+
+/* You can specify as many tcp_accept_channels as you like to share
+ * an XML description of the state of the cluster.
+ *
+ * At the very least, every gmond must expose its XML state to 
+ * queriers from localhost.
+ * Also we use this port for Nagios monitoring
+ */
+tcp_accept_channel {
+  bind = 0.0.0.0
+  port = ${gmondPort}
+}
+
+/* Each metrics module that is referenced by gmond must be specified and
+   loaded. If the module has been statically linked with gmond, it does
+   not require a load path. However all dynamically loadable modules must
+   include a load path. */
+modules {
+  module {
+    name = "core_metrics"
+  }
+  module {
+    name = "cpu_module"
+    path = "${MODULES_DIR}/modcpu.so"
+  }
+  module {
+    name = "disk_module"
+    path = "${MODULES_DIR}/moddisk.so"
+  }
+  module {
+    name = "load_module"
+    path = "${MODULES_DIR}/modload.so"
+  }
+  module {
+    name = "mem_module"
+    path = "${MODULES_DIR}/modmem.so"
+  }
+  module {
+    name = "net_module"
+    path = "${MODULES_DIR}/modnet.so"
+  }
+  module {
+    name = "proc_module"
+    path = "${MODULES_DIR}/modproc.so"
+  }
+  module {
+    name = "sys_module"
+    path = "${MODULES_DIR}/modsys.so"
+  }
+}
+
+/* The old internal 2.5.x metric array has been replaced by the following
+   collection_group directives.  What follows is the default behavior for
+   collecting and sending metrics that is as close to 2.5.x behavior as
+   possible. */
+
+/* This collection group will cause a heartbeat (or beacon) to be sent every
+   20 seconds.  In the heartbeat is the GMOND_STARTED data which expresses
+   the age of the running gmond. */
+collection_group {
+  collect_once = yes
+  time_threshold = 20
+  metric {
+    name = "heartbeat"
+  }
+}
+
+/* This collection group will send general info about this host total memory every
+   180 secs.
+   This information doesn't change between reboots and is only collected
+   once. This information needed for heatmap showing */
+ collection_group {
+   collect_once = yes
+   time_threshold = 180
+   metric {
+    name = "mem_total"
+    title = "Memory Total"
+   }
+ }
+
+/* This collection group will send general info about this host every
+   1200 secs.
+   This information doesn't change between reboots and is only collected
+   once. */
+collection_group {
+  collect_once = yes
+  time_threshold = 1200
+  metric {
+    name = "cpu_num"
+    title = "CPU Count"
+  }
+  metric {
+    name = "cpu_speed"
+    title = "CPU Speed"
+  }
+  /* Should this be here? Swap can be added/removed between reboots. */
+  metric {
+    name = "swap_total"
+    title = "Swap Space Total"
+  }
+  metric {
+    name = "boottime"
+    title = "Last Boot Time"
+  }
+  metric {
+    name = "machine_type"
+    title = "Machine Type"
+  }
+  metric {
+    name = "os_name"
+    title = "Operating System"
+  }
+  metric {
+    name = "os_release"
+    title = "Operating System Release"
+  }
+  metric {
+    name = "location"
+    title = "Location"
+  }
+}
+
+/* This collection group will send the status of gexecd for this host
+   every 300 secs.*/
+/* Unlike 2.5.x the default behavior is to report gexecd OFF. */
+collection_group {
+  collect_once = yes
+  time_threshold = 300
+  metric {
+    name = "gexec"
+    title = "Gexec Status"
+  }
+}
+
+/* This collection group will collect the CPU status info every 20 secs.
+   The time threshold is set to 90 seconds.  In honesty, this
+   time_threshold could be set significantly higher to reduce
+   unneccessary  network chatter. */
+collection_group {
+  collect_every = 20
+  time_threshold = 90
+  /* CPU status */
+  metric {
+    name = "cpu_user"
+    value_threshold = "1.0"
+    title = "CPU User"
+  }
+  metric {
+    name = "cpu_system"
+    value_threshold = "1.0"
+    title = "CPU System"
+  }
+  metric {
+    name = "cpu_idle"
+    value_threshold = "5.0"
+    title = "CPU Idle"
+  }
+  metric {
+    name = "cpu_nice"
+    value_threshold = "1.0"
+    title = "CPU Nice"
+  }
+  metric {
+    name = "cpu_aidle"
+    value_threshold = "5.0"
+    title = "CPU aidle"
+  }
+  metric {
+    name = "cpu_wio"
+    value_threshold = "1.0"
+    title = "CPU wio"
+  }
+  /* The next two metrics are optional if you want more detail...
+     ... since they are accounted for in cpu_system.
+  metric {
+    name = "cpu_intr"
+    value_threshold = "1.0"
+    title = "CPU intr"
+  }
+  metric {
+    name = "cpu_sintr"
+    value_threshold = "1.0"
+    title = "CPU sintr"
+  }
+  */
+}
+
+collection_group {
+  collect_every = 20
+  time_threshold = 90
+  /* Load Averages */
+  metric {
+    name = "load_one"
+    value_threshold = "1.0"
+    title = "One Minute Load Average"
+  }
+  metric {
+    name = "load_five"
+    value_threshold = "1.0"
+    title = "Five Minute Load Average"
+  }
+  metric {
+    name = "load_fifteen"
+    value_threshold = "1.0"
+    title = "Fifteen Minute Load Average"
+  }
+}
+
+/* This group collects the number of running and total processes */
+collection_group {
+  collect_every = 80
+  time_threshold = 950
+  metric {
+    name = "proc_run"
+    value_threshold = "1.0"
+    title = "Total Running Processes"
+  }
+  metric {
+    name = "proc_total"
+    value_threshold = "1.0"
+    title = "Total Processes"
+  }
+}
+
+/* This collection group grabs the volatile memory metrics every 40 secs and
+   sends them at least every 180 secs.  This time_threshold can be increased
+   significantly to reduce unneeded network traffic. */
+collection_group {
+  collect_every = 40
+  time_threshold = 180
+  metric {
+    name = "mem_free"
+    value_threshold = "1024.0"
+    title = "Free Memory"
+  }
+  metric {
+    name = "mem_shared"
+    value_threshold = "1024.0"
+    title = "Shared Memory"
+  }
+  metric {
+    name = "mem_buffers"
+    value_threshold = "1024.0"
+    title = "Memory Buffers"
+  }
+  metric {
+    name = "mem_cached"
+    value_threshold = "1024.0"
+    title = "Cached Memory"
+  }
+  metric {
+    name = "swap_free"
+    value_threshold = "1024.0"
+    title = "Free Swap Space"
+  }
+}
+
+collection_group {
+  collect_every = 40
+  time_threshold = 300
+  metric {
+    name = "bytes_out"
+    value_threshold = 4096
+    title = "Bytes Sent"
+  }
+  metric {
+    name = "bytes_in"
+    value_threshold = 4096
+    title = "Bytes Received"
+  }
+  metric {
+    name = "pkts_in"
+    value_threshold = 256
+    title = "Packets Received"
+  }
+  metric {
+    name = "pkts_out"
+    value_threshold = 256
+    title = "Packets Sent"
+  }
+}
+
+
+collection_group {
+  collect_every = 40
+  time_threshold = 180
+  metric {
+    name = "disk_free"
+    value_threshold = 1.0
+    title = "Disk Space Available"
+  }
+  metric {
+    name = "part_max_used"
+    value_threshold = 1.0
+    title = "Maximum Disk Space Used"
+  }
+  metric {
+    name = "disk_total"
+    value_threshold = 1.0
+    title = "Total Disk Space"
+  }
+}
+
+udp_recv_channel {
+    port = 0
+}
+
+
+include ("${GANGLIA_CONF_DIR}/${gmondClusterName}/conf.d/*.conf")
+END_OF_GMOND_CORE_CONF
+        else
+            return 2;
+        fi
+    else
+        return 1;
+    fi
+}
+
+function generateGmondMasterConf
+{
+    clusterName=${1};
+
+    if [ "x" != "x${clusterName}" ]
+    then
+        read gmondClusterName gmondMasterIP gmondPort <<<`getGangliaClusterInfo ${clusterName}`;
+
+        # Check that all of ${gmondClusterName} and ${gmondMasterIP} and ${gmondPort} are populated.
+        if [ "x" != "x${gmondClusterName}" -a "x" != "x${gmondMasterIP}" -a "x" != "x${gmondPort}" ]
+        then
+            now=`date`;
+
+            cat << END_OF_GMOND_MASTER_CONF
+#################### Generated by ${0} on ${now} ####################
+/* Masters only receive; they never send. */
+udp_recv_channel {
+  bind = ${gmondMasterIP}
+  port = ${gmondPort}
+}
+
+END_OF_GMOND_MASTER_CONF
+        else
+            return 2;
+        fi
+    else
+        return 1;
+    fi
+}
+
+function generateGmondSlaveConf
+{
+    clusterName=${1};
+
+    if [ "x" != "x${clusterName}" ]
+    then
+        read gmondClusterName gmondMasterIP gmondPort <<<`getGangliaClusterInfo ${clusterName}`;
+
+        # Check that all of ${gmondClusterName} and ${gmondMasterIP} and ${gmondPort} are populated.
+        if [ "x" != "x${gmondClusterName}" -a "x" != "x${gmondMasterIP}" -a "x" != "x${gmondPort}" ]
+        then
+            now=`date`;
+
+            cat << END_OF_GMOND_SLAVE_CONF
+#################### Generated by ${0} on ${now} ####################
+/* Slaves only send; they never receive. */
+udp_send_channel {
+  #bind_hostname = yes # Highly recommended, soon to be default.
+                       # This option tells gmond to use a source address
+                       # that resolves to the machine's hostname.  Without
+                       # this, the metrics may appear to come from any
+                       # interface and the DNS names associated with
+                       # those IPs will be used to create the RRDs.
+  host = ${gmondMasterIP}
+  port = ${gmondPort}
+  ttl = 1
+}
+END_OF_GMOND_SLAVE_CONF
+        else
+            return 2;
+        fi
+    else
+        return 1;
+    fi
+}

+ 47 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/files/rrdcachedLib.sh

@@ -0,0 +1,47 @@
+#!/usr/bin/env bash
+
+#/*
+# * 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.
+# */
+
+cd `dirname ${0}`;
+
+# Get access to Ganglia-wide constants etc.
+source ./gangliaLib.sh;
+
+RRDCACHED_BIN=/usr/bin/rrdcached;
+RRDCACHED_PID_FILE=${GANGLIA_RUNTIME_DIR}/rrdcached.pid;
+RRDCACHED_ALL_ACCESS_UNIX_SOCKET=${GANGLIA_RUNTIME_DIR}/rrdcached.sock;
+RRDCACHED_LIMITED_ACCESS_UNIX_SOCKET=${GANGLIA_RUNTIME_DIR}/rrdcached.limited.sock;
+
+function getRrdcachedLoggedPid()
+{
+    if [ -e "${RRDCACHED_PID_FILE}" ]
+    then
+        echo `cat ${RRDCACHED_PID_FILE}`;
+    fi
+}
+
+function getRrdcachedRunningPid()
+{
+    rrdcachedLoggedPid=`getRrdcachedLoggedPid`;
+
+    if [ -n "${rrdcachedLoggedPid}" ]
+    then
+        echo `ps -o pid=MYPID -p ${rrdcachedLoggedPid} | tail -1 | awk '{print $1}' | grep -v MYPID`;
+    fi
+}

+ 141 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/files/setupGanglia.sh

@@ -0,0 +1,141 @@
+#!/usr/bin/env bash
+
+#/*
+# * 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.
+# */
+
+cd `dirname ${0}`;
+
+# Get access to Ganglia-wide constants, utilities etc.
+source ./gangliaLib.sh
+
+function usage()
+{
+  cat << END_USAGE
+Usage: ${0} [-c <gmondClusterName> [-m]] [-t] [-o <owner>] [-g <group>]
+
+Options:
+  -c <gmondClusterName>   The name of the Ganglia Cluster whose gmond configuration we're here to generate.
+
+  -m                      Whether this gmond (if -t is not specified) is the master for its Ganglia 
+                          Cluster. Without this, we generate slave gmond configuration.
+
+  -t                      Whether this is a call to generate gmetad configuration (as opposed to the
+                          gmond configuration that is generated without this).
+  -o <owner>              Owner
+  -g <group>              Group
+END_USAGE
+}
+
+function instantiateGmetadConf()
+{
+  # gmetad utility library.
+  source ./gmetadLib.sh;
+
+  generateGmetadConf > ${GMETAD_CONF_FILE};
+}
+
+function instantiateGmondConf()
+{
+  # gmond utility library.
+  source ./gmondLib.sh;
+ 
+  gmondClusterName=${1};
+
+  if [ "x" != "x${gmondClusterName}" ]
+  then
+
+    createDirectory "${GANGLIA_RUNTIME_DIR}/${gmondClusterName}";
+    createDirectory "${GANGLIA_CONF_DIR}/${gmondClusterName}/conf.d";
+    
+    # Always blindly generate the core gmond config - that goes on every box running gmond. 
+    generateGmondCoreConf ${gmondClusterName} > `getGmondCoreConfFileName ${gmondClusterName}`;
+
+    isMasterGmond=${2};
+
+    # Decide whether we want to add on the master or slave gmond config.
+    if [ "0" -eq "${isMasterGmond}" ]
+    then
+      generateGmondSlaveConf ${gmondClusterName} > `getGmondSlaveConfFileName ${gmondClusterName}`;
+    else
+      generateGmondMasterConf ${gmondClusterName} > `getGmondMasterConfFileName ${gmondClusterName}`;
+    fi
+
+    chown -R ${3}:${4} ${GANGLIA_CONF_DIR}/${gmondClusterName}
+
+  else
+    echo "No gmondClusterName passed in, nothing to instantiate";
+  fi
+}
+
+# main()
+
+gmondClusterName=;
+isMasterGmond=0;
+configureGmetad=0;
+owner='root';
+group='root';
+
+while getopts ":c:mto:g:" OPTION
+do
+  case ${OPTION} in
+    c) 
+      gmondClusterName=${OPTARG};
+      ;;
+    m)
+      isMasterGmond=1;
+      ;;
+    t)
+      configureGmetad=1;
+      ;;
+    o)
+      owner=${OPTARG};
+      ;;
+    g)
+      group=${OPTARG};
+      ;;
+    ?)
+      usage;
+      exit 1;
+  esac
+done
+
+# Initialization.
+createDirectory ${GANGLIA_CONF_DIR};
+createDirectory ${GANGLIA_RUNTIME_DIR};
+# So rrdcached can drop its PID files in here.
+chmod a+w ${GANGLIA_RUNTIME_DIR};
+chown ${owner}:${group} ${GANGLIA_CONF_DIR};
+
+if [ -n "${gmondClusterName}" ]
+then
+
+  # Be forgiving of users who pass in -c along with -t (which always takes precedence).
+  if [ "1" -eq "${configureGmetad}" ]
+  then
+    instantiateGmetadConf;
+  else
+    instantiateGmondConf ${gmondClusterName} ${isMasterGmond} ${owner} ${group};
+  fi
+
+elif [ "1" -eq "${configureGmetad}" ]
+then
+  instantiateGmetadConf;
+else
+  usage;
+  exit 2;
+fi

+ 68 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/files/startGmetad.sh

@@ -0,0 +1,68 @@
+#!/usr/bin/env bash
+
+#/*
+# * 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.
+# */
+
+cd `dirname ${0}`;
+
+# Get all our common constants etc. set up.
+source ./gmetadLib.sh;
+
+# To get access to ${RRDCACHED_ALL_ACCESS_UNIX_SOCKET}.
+source ./rrdcachedLib.sh;
+
+# Before starting gmetad, start rrdcached.
+./startRrdcached.sh;
+
+if [ $? -eq 0 ] 
+then
+    gmetadRunningPid=`getGmetadRunningPid`;
+
+    # Only attempt to start gmetad if there's not already one running.
+    if [ -f "${GMETAD_PID_FILE}" ] && [ -z "${gmetadRunningPid}" ]
+    then
+      rm -f ${GMETAD_PID_FILE}; rm -f /var/lock/subsys/hdp-gmetad
+    fi
+    if [ -z "${gmetadRunningPid}" ]
+    then
+        env RRDCACHED_ADDRESS=${RRDCACHED_ALL_ACCESS_UNIX_SOCKET} \
+                    ${GMETAD_BIN} --conf=${GMETAD_CONF_FILE} --pid-file=${GMETAD_PID_FILE};
+
+        for i in `seq 0 5`; do
+          gmetadRunningPid=`getGmetadRunningPid`;
+          if [ -n "${gmetadRunningPid}" ]
+          then
+            break;
+          fi
+          sleep 1;
+        done
+
+        if [ -n "${gmetadRunningPid}" ]
+        then
+            echo "Started ${GMETAD_BIN} with PID ${gmetadRunningPid}";
+        else
+            echo "Failed to start ${GMETAD_BIN}";
+            exit 1;
+        fi
+    else
+        echo "${GMETAD_BIN} already running with PID ${gmetadRunningPid}";
+    fi
+else
+    echo "Not starting ${GMETAD_BIN} because starting ${RRDCACHED_BIN} failed.";
+    exit 2;
+fi

+ 85 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/files/startGmond.sh

@@ -0,0 +1,85 @@
+#!/usr/bin/env bash
+
+#/*
+# * 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.
+# */
+
+cd `dirname ${0}`;
+
+# Get all our common constants etc. set up.
+# Pulls in gangliaLib.sh as well, so we can skip pulling it in again.
+source ./gmondLib.sh;
+
+function startGmondForCluster()
+{
+    gmondClusterName=${1};
+
+    gmondRunningPid=`getGmondRunningPid ${gmondClusterName}`;
+    gmondPidFileName=`getGmondPidFileName ${gmondClusterName}`;
+
+    # Only attempt to start gmond if there's not already one running.
+    if [ -f "${gmondPidFileName}" ] && [ -z "${gmondRunningPid}" ]
+    then
+      rm -f ${gmondPidFileName}
+    fi
+    if [ -z "${gmondRunningPid}" ]
+    then
+      gmondCoreConfFileName=`getGmondCoreConfFileName ${gmondClusterName}`;
+
+      if [ -e "${gmondCoreConfFileName}" ]
+      then 
+        gmondPidFileName=`getGmondPidFileName ${gmondClusterName}`;
+
+        ${GMOND_BIN} --conf=${gmondCoreConfFileName} --pid-file=${gmondPidFileName};
+
+        for i in `seq 0 5`; do
+          gmondRunningPid=`getGmondRunningPid ${gmondClusterName}`;
+          if [ -n "${gmondRunningPid}" ]
+          then
+            break;
+          fi
+          sleep 1;
+        done
+  
+        if [ -n "${gmondRunningPid}" ]
+        then
+            echo "Started ${GMOND_BIN} for cluster ${gmondClusterName} with PID ${gmondRunningPid}";
+        else
+            echo "Failed to start ${GMOND_BIN} for cluster ${gmondClusterName}";
+            exit 1;
+        fi
+      fi 
+    else
+      echo "${GMOND_BIN} for cluster ${gmondClusterName} already running with PID ${gmondRunningPid}";
+    fi
+}
+
+# main()
+gmondClusterName=${1};
+
+if [ "x" == "x${gmondClusterName}" ]
+then
+    # No ${gmondClusterName} passed in as command-line arg, so start 
+    # all the gmonds we know about.
+    for gmondClusterName in `getConfiguredGangliaClusterNames`
+    do
+        startGmondForCluster ${gmondClusterName};
+    done
+else
+    # Just start the one ${gmondClusterName} that was asked for.
+    startGmondForCluster ${gmondClusterName};
+fi

+ 79 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/files/startRrdcached.sh

@@ -0,0 +1,79 @@
+#!/usr/bin/env bash
+
+#/*
+# * 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.
+# */
+
+cd `dirname ${0}`;
+
+# Slurp in all our user-customizable settings.
+source ./gangliaEnv.sh;
+
+# Get all our common constants etc. set up.
+source ./rrdcachedLib.sh;
+
+rrdcachedRunningPid=`getRrdcachedRunningPid`;
+
+# Only attempt to start rrdcached if there's not already one running.
+if [ -z "${rrdcachedRunningPid}" ]
+then
+    su -s /bin/bash - ${GMETAD_USER} -c "${RRDCACHED_BIN} -p ${RRDCACHED_PID_FILE} \
+             -m 664 -l unix:${RRDCACHED_ALL_ACCESS_UNIX_SOCKET} \
+             -m 777 -P FLUSH,STATS,HELP -l unix:${RRDCACHED_LIMITED_ACCESS_UNIX_SOCKET} \
+             -b ${RRDCACHED_BASE_DIR} -B -t ${RRDCACHED_WRITE_THREADS} \
+             -w ${RRDCACHED_TIMEOUT} -f ${RRDCACHED_FLUSH_TIMEOUT} -z ${RRDCACHED_DELAY} -F"
+
+    # Ideally, we'd use ${RRDCACHED_BIN}'s -s ${WEBSERVER_GROUP} option for 
+    # this, but it doesn't take sometimes due to a lack of permissions,
+    # so perform the operation explicitly to be super-sure.
+    chgrp ${WEBSERVER_GROUP} ${RRDCACHED_ALL_ACCESS_UNIX_SOCKET};
+    chgrp ${WEBSERVER_GROUP} ${RRDCACHED_LIMITED_ACCESS_UNIX_SOCKET};
+
+    # Check to make sure rrdcached actually started up.
+    for i in `seq 0 5`; do
+      rrdcachedRunningPid=`getRrdcachedRunningPid`;
+      if [ -n "${rrdcachedRunningPid}" ]
+        then
+          break;
+      fi
+      sleep 1;
+    done
+
+    if [ -n "${rrdcachedRunningPid}" ]
+    then
+        echo "Started ${RRDCACHED_BIN} with PID ${rrdcachedRunningPid}";
+    else
+        echo "Failed to start ${RRDCACHED_BIN}";
+        exit 1;
+    fi
+
+    #Configure Ganglia Web to work with RRDCached
+    GANGLIA_WEB_CONFIG_FILE=${GANGLIA_WEB_PATH}/conf_default.php
+
+    if [ -f $GANGLIA_WEB_CONFIG_FILE ]
+    then
+      sed -i "s@\$conf\['rrdcached_socket'] =.*@\$conf\['rrdcached_socket'] = \"unix:${RRDCACHED_LIMITED_ACCESS_UNIX_SOCKET}\";@" $GANGLIA_WEB_CONFIG_FILE
+      sed -i "s@\$conf\['rrds'] =.*@\$conf\['rrds'] = \"${RRDCACHED_BASE_DIR}\";@" $GANGLIA_WEB_CONFIG_FILE
+      sed -i "s@\$conf\['gmetad_root'] =.*@\$conf\['gmetad_root'] = \"${RRDCACHED_BASE_DIR}\";@" $GANGLIA_WEB_CONFIG_FILE
+    else
+      echo "${GANGLIA_WEB_CONFIG_FILE} can't be found";
+      exit 1;
+    fi
+
+else
+    echo "${RRDCACHED_BIN} already running with PID ${rrdcachedRunningPid}";
+fi

+ 43 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/files/stopGmetad.sh

@@ -0,0 +1,43 @@
+#!/usr/bin/env bash
+
+#/*
+# * 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.
+# */
+
+cd `dirname ${0}`;
+
+# Get all our common constants etc. set up.
+source ./gmetadLib.sh;
+
+gmetadRunningPid=`getGmetadRunningPid`;
+
+# Only go ahead with the termination if we could find a running PID.
+if [ -n "${gmetadRunningPid}" ]
+then
+    kill -KILL ${gmetadRunningPid};
+    echo "Stopped ${GMETAD_BIN} (with PID ${gmetadRunningPid})";
+fi
+
+# Poll again.
+gmetadRunningPid=`getGmetadRunningPid`;
+
+# Once we've killed gmetad, there should no longer be a running PID.
+if [ -z "${gmetadRunningPid}" ]
+then
+    # It's safe to stop rrdcached now.
+    ./stopRrdcached.sh;
+fi

+ 54 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/files/stopGmond.sh

@@ -0,0 +1,54 @@
+#!/usr/bin/env bash
+
+#/*
+# * 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.
+# */
+
+cd `dirname ${0}`;
+
+# Get all our common constants etc. set up.
+# Pulls in gangliaLib.sh as well, so we can skip pulling it in again.
+source ./gmondLib.sh;
+
+function stopGmondForCluster()
+{
+    gmondClusterName=${1};
+
+    gmondRunningPid=`getGmondRunningPid ${gmondClusterName}`;
+
+    # Only go ahead with the termination if we could find a running PID.
+    if [ -n "${gmondRunningPid}" ]
+    then
+      kill -KILL ${gmondRunningPid};
+      echo "Stopped ${GMOND_BIN} for cluster ${gmondClusterName} (with PID ${gmondRunningPid})";
+    fi
+}
+
+# main()
+gmondClusterName=${1};
+
+if [ "x" == "x${gmondClusterName}" ]
+then
+    # No ${gmondClusterName} passed in as command-line arg, so stop
+    # all the gmonds we know about.
+    for gmondClusterName in `getConfiguredGangliaClusterNames`
+    do
+        stopGmondForCluster ${gmondClusterName};
+    done
+else
+    stopGmondForCluster ${gmondClusterName};
+fi

+ 41 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/files/stopRrdcached.sh

@@ -0,0 +1,41 @@
+#!/usr/bin/env bash
+
+#/*
+# * 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.
+# */
+
+cd `dirname ${0}`;
+
+# Get all our common constants etc. set up.
+source ./rrdcachedLib.sh;
+
+rrdcachedRunningPid=`getRrdcachedRunningPid`;
+
+# Only go ahead with the termination if we could find a running PID.
+if [ -n "${rrdcachedRunningPid}" ]
+then
+    kill -TERM ${rrdcachedRunningPid};
+    # ${RRDCACHED_BIN} takes a few seconds to drain its buffers, so wait 
+    # until we're sure it's well and truly dead. 
+    #
+    # Without this, an immediately following startRrdcached.sh won't do
+    # anything, because it still sees this soon-to-die instance alive,
+    # and the net result is that after a few seconds, there's no
+    # ${RRDCACHED_BIN} running on the box anymore.
+    sleep 5;
+    echo "Stopped ${RRDCACHED_BIN} (with PID ${rrdcachedRunningPid})";
+fi 

+ 28 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/files/teardownGanglia.sh

@@ -0,0 +1,28 @@
+#!/usr/bin/env bash
+
+#/*
+# * 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.
+# */
+
+cd `dirname ${0}`;
+
+# Get access to Ganglia-wide constants, utilities etc.
+source ./gangliaLib.sh;
+
+# Undo what we did while setting up Ganglia on this box.
+rm -rf ${GANGLIA_CONF_DIR};
+rm -rf ${GANGLIA_RUNTIME_DIR};

+ 31 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/scripts/functions.py

@@ -0,0 +1,31 @@
+# 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.
+#
+from resource_management import *
+
+
+def turn_off_autostart(service):
+  if System.get_instance().os_family == "ubuntu":
+    Execute(format("update-rc.d {service} disable"),
+            path='/usr/sbin:/sbin:/usr/local/bin:/bin:/usr/bin'
+    )
+    Execute(format("service {service} stop"), ignore_failures=True)
+    Execute(format("echo 'manual' > /etc/init/{service}.override")) # disbale upstart job
+  else:
+    Execute(format("chkconfig {service} off"),
+            path='/usr/sbin:/sbin:/usr/local/bin:/bin:/usr/bin'
+    )

+ 97 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/scripts/ganglia.py

@@ -0,0 +1,97 @@
+"""
+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.
+"""
+
+from resource_management import *
+import os
+
+
+def groups_and_users():
+  import params
+
+def config():
+  import params
+
+  shell_cmds_dir = params.ganglia_shell_cmds_dir
+  shell_files = ['checkGmond.sh', 'checkRrdcached.sh', 'gmetadLib.sh',
+                 'gmondLib.sh', 'rrdcachedLib.sh',
+                 'setupGanglia.sh', 'startGmetad.sh', 'startGmond.sh',
+                 'startRrdcached.sh', 'stopGmetad.sh',
+                 'stopGmond.sh', 'stopRrdcached.sh', 'teardownGanglia.sh']
+  Directory(shell_cmds_dir,
+            owner="root",
+            group="root",
+            recursive=True
+  )
+  init_file("gmetad")
+  init_file("gmond")
+  for sh_file in shell_files:
+    shell_file(sh_file)
+  for conf_file in ['gangliaClusters.conf', 'gangliaEnv.sh', 'gangliaLib.sh']:
+    ganglia_TemplateConfig(conf_file)
+
+
+def init_file(name):
+  import params
+
+  File("/etc/init.d/hdp-" + name,
+       content=StaticFile(name + ".init"),
+       mode=0755
+  )
+
+
+def shell_file(name):
+  import params
+
+  File(params.ganglia_shell_cmds_dir + os.sep + name,
+       content=StaticFile(name),
+       mode=0755
+  )
+
+
+def ganglia_TemplateConfig(name, mode=0755, tag=None):
+  import params
+
+  TemplateConfig(format("{params.ganglia_shell_cmds_dir}/{name}"),
+                 owner="root",
+                 group="root",
+                 template_tag=tag,
+                 mode=mode
+  )
+
+
+def generate_daemon(ganglia_service,
+                    name=None,
+                    role=None,
+                    owner=None,
+                    group=None):
+  import params
+
+  cmd = ""
+  if ganglia_service == "gmond":
+    if role == "server":
+      cmd = "{params.ganglia_shell_cmds_dir}/setupGanglia.sh -c {name} -m -o {owner} -g {group}"
+    else:
+      cmd = "{params.ganglia_shell_cmds_dir}/setupGanglia.sh -c {name} -o {owner} -g {group}"
+  elif ganglia_service == "gmetad":
+    cmd = "{params.ganglia_shell_cmds_dir}/setupGanglia.sh -t -o {owner} -g {group}"
+  else:
+    raise Fail("Unexpected ganglia service")
+  Execute(format(cmd),
+          path=[params.ganglia_shell_cmds_dir, "/usr/sbin",
+                "/sbin:/usr/local/bin", "/bin", "/usr/bin"]
+  )

+ 236 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/scripts/ganglia_monitor.py

@@ -0,0 +1,236 @@
+"""
+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.
+"""
+
+import sys
+import os
+from os import path
+from resource_management import *
+from ganglia import generate_daemon
+import ganglia
+import functions
+import ganglia_monitor_service
+
+
+class GangliaMonitor(Script):
+  def install(self, env):
+    import params
+
+    self.install_packages(env)
+    env.set_params(params)
+    self.configure(env)
+    
+    functions.turn_off_autostart(params.gmond_service_name)
+    functions.turn_off_autostart("gmetad") # since the package is installed as well
+
+  def start(self, env):
+    import params
+    env.set_params(params)
+    self.configure(env)
+    ganglia_monitor_service.monitor("start")
+
+  def stop(self, env):
+    ganglia_monitor_service.monitor("stop")
+
+
+  def status(self, env):
+    import status_params
+    pid_file_name = 'gmond.pid'
+    pid_file_count = 0
+    pid_dir = status_params.pid_dir
+    # Recursively check all existing gmond pid files
+    for cur_dir, subdirs, files in os.walk(pid_dir):
+      for file_name in files:
+        if file_name == pid_file_name:
+          pid_file = os.path.join(cur_dir, file_name)
+          check_process_status(pid_file)
+          pid_file_count += 1
+    if pid_file_count == 0: # If no any pid file is present
+      raise ComponentIsNotRunning()
+
+
+  def configure(self, env):
+    import params
+
+    ganglia.groups_and_users()
+
+    Directory(params.ganglia_conf_dir,
+              owner="root",
+              group=params.user_group,
+              recursive=True
+    )
+
+    ganglia.config()
+    
+    self.generate_slave_configs()
+
+    Directory(path.join(params.ganglia_dir, "conf.d"),
+              owner="root",
+              group=params.user_group
+    )
+
+    File(path.join(params.ganglia_dir, "conf.d/modgstatus.conf"),
+         owner="root",
+         group=params.user_group
+    )
+    File(path.join(params.ganglia_dir, "conf.d/multicpu.conf"),
+         owner="root",
+         group=params.user_group
+    )
+    File(path.join(params.ganglia_dir, "gmond.conf"),
+         owner="root",
+         group=params.user_group
+    )
+
+    if params.is_ganglia_server_host:
+      self.generate_master_configs()
+
+      if len(params.gmond_apps) != 0:
+        self.generate_app_configs()
+        pass
+      pass
+
+
+  def generate_app_configs(self):
+    import params
+
+    for gmond_app in params.gmond_apps:
+      generate_daemon("gmond",
+                      name=gmond_app[0],
+                      role="server",
+                      owner="root",
+                      group=params.user_group)
+      generate_daemon("gmond",
+                      name = gmond_app[0],
+                      role = "monitor",
+                      owner = "root",
+                      group = params.user_group)
+    pass
+
+  def generate_slave_configs(self):
+    import params
+
+    generate_daemon("gmond",
+                    name = "HDPSlaves",
+                    role = "monitor",
+                    owner = "root",
+                    group = params.user_group)
+
+
+  def generate_master_configs(self):
+    import params
+     
+    if params.has_namenodes:
+      generate_daemon("gmond",
+                      name = "HDPNameNode",
+                      role = "server",
+                      owner = "root",
+                      group = params.user_group)
+
+    if params.has_jobtracker:
+      generate_daemon("gmond",
+                      name = "HDPJobTracker",
+                      role = "server",
+                      owner = "root",
+                      group = params.user_group)
+
+    if params.has_hbase_masters:
+      generate_daemon("gmond",
+                      name = "HDPHBaseMaster",
+                      role = "server",
+                      owner = "root",
+                      group = params.user_group)
+
+    if params.has_resourcemanager:
+      generate_daemon("gmond",
+                      name = "HDPResourceManager",
+                      role = "server",
+                      owner = "root",
+                      group = params.user_group)
+
+    if params.has_nodemanager:
+      generate_daemon("gmond",
+                      name = "HDPNodeManager",
+                      role = "server",
+                      owner = "root",
+                      group = params.user_group)
+
+    if params.has_historyserver:
+      generate_daemon("gmond",
+                      name = "HDPHistoryServer",
+                      role = "server",
+                      owner = "root",
+                      group = params.user_group)
+
+    if params.has_slaves:
+      generate_daemon("gmond",
+                      name = "HDPDataNode",
+                      role = "server",
+                      owner = "root",
+                      group = params.user_group)
+
+    if params.has_tasktracker:
+      generate_daemon("gmond",
+                      name = "HDPTaskTracker",
+                      role = "server",
+                      owner = "root",
+                      group = params.user_group)
+
+    if params.has_hbase_rs:
+      generate_daemon("gmond",
+                      name = "HDPHBaseRegionServer",
+                      role = "server",
+                      owner = "root",
+                      group = params.user_group)
+
+    if params.has_nimbus_server:
+      generate_daemon("gmond",
+                      name = "HDPNimbus",
+                      role = "server",
+                      owner = "root",
+                      group = params.user_group)
+
+    if params.has_supervisor_server:
+      generate_daemon("gmond",
+                      name = "HDPSupervisor",
+                      role = "server",
+                      owner = "root",
+                      group = params.user_group)
+
+    if params.has_flume:
+      generate_daemon("gmond",
+                      name = "HDPFlumeServer",
+                      role = "server",
+                      owner = "root",
+                      group = params.user_group)
+
+    if params.has_journalnode:
+      generate_daemon("gmond",
+                      name = "HDPJournalNode",
+                      role = "server",
+                      owner = "root",
+                      group = params.user_group)
+
+    generate_daemon("gmond",
+                    name = "HDPSlaves",
+                    role = "server",
+                    owner = "root",
+                    group = params.user_group)
+
+
+if __name__ == "__main__":
+  GangliaMonitor().execute()

+ 27 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/scripts/ganglia_monitor_service.py

@@ -0,0 +1,27 @@
+"""
+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.
+"""
+
+from resource_management import *
+
+
+def monitor(action=None):# 'start' or 'stop'
+  Execute(
+    format(
+      "service hdp-gmond {action} >> /tmp/gmond.log  2>&1 ; /bin/ps auwx | /bin/grep [g]mond  >> /tmp/gmond.log  2>&1"),
+    path='/usr/sbin:/sbin:/usr/local/bin:/bin:/usr/bin'
+  )

+ 119 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/scripts/ganglia_server.py

@@ -0,0 +1,119 @@
+"""
+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.
+"""
+
+import sys
+import os
+from os import path
+from resource_management import *
+from ganglia import generate_daemon
+import ganglia
+import functions
+import ganglia_server_service
+
+
+class GangliaServer(Script):
+  def install(self, env):
+    import params
+
+    self.install_packages(env)
+    env.set_params(params)
+    self.configure(env)
+    
+    functions.turn_off_autostart(params.gmond_service_name) # since the package is installed as well
+    functions.turn_off_autostart("gmetad")
+
+  def start(self, env):
+    import params
+    env.set_params(params)
+    self.configure(env)
+    ganglia_server_service.server("start")
+
+  def stop(self, env):
+    import params
+
+    env.set_params(params)
+    ganglia_server_service.server("stop")
+
+  def status(self, env):
+    import status_params
+    env.set_params(status_params)
+    pid_file = format("{pid_dir}/gmetad.pid")
+    # Recursively check all existing gmetad pid files
+    check_process_status(pid_file)
+
+  def configure(self, env):
+    import params
+    env.set_params(params)
+
+    ganglia.groups_and_users()
+    ganglia.config()
+
+    generate_daemon("gmetad",
+                    name = "gmetad",
+                    role = "server",
+                    owner = "root",
+                    group = params.user_group)
+
+    change_permission()
+    server_files()
+    File(path.join(params.ganglia_dir, "gmetad.conf"),
+         owner="root",
+         group=params.user_group
+    )
+
+
+def change_permission():
+  import params
+
+  Directory(params.dwoo_path,
+            mode=0755,
+            recursive=True
+  )
+  Execute(format("chown -R {web_user} {dwoo_path}"))
+
+def server_files():
+  import params
+
+  rrd_py_path = params.rrd_py_path
+  Directory(rrd_py_path,
+            recursive=True
+  )
+  rrd_py_file_path = path.join(rrd_py_path, "rrd.py")
+  TemplateConfig(rrd_py_file_path,
+                 owner="root",
+                 group="root",
+                 mode=0755
+  )
+  rrd_file_owner = params.gmetad_user
+
+  Directory(params.rrdcached_base_dir,
+            owner=rrd_file_owner,
+            group=rrd_file_owner,
+            mode=0755,
+            recursive=True
+  )
+  
+  if System.get_instance().os_family in ["ubuntu","suse"]:
+    File( params.ganglia_apache_config_file,
+      content = Template("ganglia.conf.j2"),
+      mode = 0644
+    )
+
+
+if __name__ == "__main__":
+  GangliaServer().execute()

+ 27 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/scripts/ganglia_server_service.py

@@ -0,0 +1,27 @@
+"""
+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.
+"""
+
+from resource_management import *
+
+
+def server(action=None):# 'start' or 'stop'
+  command = "service hdp-gmetad {action} >> /tmp/gmetad.log  2>&1 ; /bin/ps auwx | /bin/grep [g]metad  >> /tmp/gmetad.log  2>&1"
+  Execute(format(command),
+          path='/usr/sbin:/sbin:/usr/local/bin:/bin:/usr/bin'
+  )
+  MonitorWebserver("restart")

+ 160 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/scripts/params.py

@@ -0,0 +1,160 @@
+"""
+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.
+"""
+
+from resource_management import *
+from resource_management.core.system import System
+import os
+
+config = Script.get_config()
+
+user_group = config['configurations']['cluster-env']["user_group"]
+ganglia_conf_dir = default("/configurations/ganglia-env/ganglia_conf_dir", "/etc/ganglia/hdp")
+ganglia_dir = "/etc/ganglia"
+ganglia_runtime_dir = config['configurations']['ganglia-env']["ganglia_runtime_dir"]
+ganglia_shell_cmds_dir = "/usr/libexec/hdp/ganglia"
+
+gmetad_user = config['configurations']['ganglia-env']["gmetad_user"]
+gmond_user = config['configurations']['ganglia-env']["gmond_user"]
+
+gmond_add_clusters_str = default("/configurations/ganglia-env/additional_clusters", None)
+if gmond_add_clusters_str and gmond_add_clusters_str.isspace():
+  gmond_add_clusters_str = None
+
+gmond_app_strs = [] if gmond_add_clusters_str is None else gmond_add_clusters_str.split(',')
+gmond_apps = []
+
+for x in gmond_app_strs:
+  a,b = x.strip().split(':')
+  gmond_apps.append((a.strip(),b.strip()))
+
+if System.get_instance().os_family == "ubuntu":
+  gmond_service_name = "ganglia-monitor"
+  modules_dir = "/usr/lib/ganglia"
+else:
+  gmond_service_name = "gmond"
+  modules_dir = "/usr/lib64/ganglia"
+
+webserver_group = "apache"
+rrdcached_base_dir = config['configurations']['ganglia-env']["rrdcached_base_dir"]
+rrdcached_timeout = default("/configurations/ganglia-env/rrdcached_timeout", 3600)
+rrdcached_flush_timeout = default("/configurations/ganglia-env/rrdcached_flush_timeout", 7200)
+rrdcached_delay = default("/configurations/ganglia-env/rrdcached_delay", 1800)
+rrdcached_write_threads = default("/configurations/ganglia-env/rrdcached_write_threads", 4)
+
+ganglia_server_host = config["clusterHostInfo"]["ganglia_server_host"][0]
+
+hostname = config["hostname"]
+namenode_host = set(default("/clusterHostInfo/namenode_host", []))
+jtnode_host = set(default("/clusterHostInfo/jtnode_host", []))
+rm_host = set(default("/clusterHostInfo/rm_host", []))
+hs_host = set(default("/clusterHostInfo/hs_host", []))
+hbase_master_hosts = set(default("/clusterHostInfo/hbase_master_hosts", []))
+# datanodes are marked as slave_hosts
+slave_hosts = set(default("/clusterHostInfo/slave_hosts", []))
+tt_hosts = set(default("/clusterHostInfo/mapred_tt_hosts", []))
+nm_hosts = set(default("/clusterHostInfo/nm_hosts", []))
+hbase_rs_hosts = set(default("/clusterHostInfo/hbase_rs_hosts", []))
+flume_hosts = set(default("/clusterHostInfo/flume_hosts", []))
+jn_hosts = set(default("/clusterHostInfo/journalnode_hosts", []))
+nimbus_server_hosts = set(default("/clusterHostInfo/nimbus_hosts", []))
+supervisor_server_hosts = set(default("/clusterHostInfo/supervisor_hosts", []))
+
+pure_slave = not hostname in (namenode_host | jtnode_host | rm_host | hs_host | \
+                              hbase_master_hosts | slave_hosts | tt_hosts | hbase_rs_hosts | \
+                              flume_hosts | nm_hosts | jn_hosts | nimbus_server_hosts | \
+                              supervisor_server_hosts)
+is_namenode_master = hostname in namenode_host
+is_jtnode_master = hostname in jtnode_host
+is_rmnode_master = hostname in rm_host
+is_hsnode_master = hostname in hs_host
+is_hbase_master = hostname in hbase_master_hosts
+is_slave = hostname in slave_hosts
+is_tasktracker = hostname in tt_hosts
+is_nodemanager = hostname in nm_hosts
+is_hbase_rs = hostname in hbase_rs_hosts
+is_flume = hostname in flume_hosts
+is_ganglia_server_host = (hostname == ganglia_server_host)
+is_jn_host = hostname in jn_hosts
+is_nimbus_host = hostname in nimbus_server_hosts
+is_supervisor_host = hostname in supervisor_server_hosts
+
+has_namenodes = not len(namenode_host) == 0
+has_jobtracker = not len(jtnode_host) == 0
+has_resourcemanager = not len(rm_host) == 0
+has_historyserver = not len(hs_host) == 0
+has_hbase_masters = not len(hbase_master_hosts) == 0
+has_slaves = not len(slave_hosts) == 0
+has_tasktracker = not len(tt_hosts) == 0
+has_nodemanager = not len(nm_hosts) == 0
+has_hbase_rs = not len(hbase_rs_hosts) == 0
+has_flume = not len(flume_hosts) == 0
+has_journalnode = not len(jn_hosts) == 0
+has_nimbus_server = not len(nimbus_server_hosts) == 0
+has_supervisor_server = not len(supervisor_server_hosts) == 0
+
+ganglia_cluster_names = {
+  "jn_hosts": [("HDPJournalNode", 8654)],
+  "flume_hosts": [("HDPFlumeServer", 8655)],
+  "hbase_rs_hosts": [("HDPHBaseRegionServer", 8656)],
+  "nm_hosts": [("HDPNodeManager", 8657)],
+  "mapred_tt_hosts": [("HDPTaskTracker", 8658)],
+  "slave_hosts": [("HDPDataNode", 8659)],
+  "namenode_host": [("HDPNameNode", 8661)],
+  "jtnode_host": [("HDPJobTracker", 8662)],
+  "hbase_master_hosts": [("HDPHBaseMaster", 8663)],
+  "rm_host": [("HDPResourceManager", 8664)],
+  "hs_host": [("HDPHistoryServer", 8666)],
+  "nimbus_hosts": [("HDPNimbus", 8649)],
+  "supervisor_hosts": [("HDPSupervisor", 8650)],
+  "ReservedPort1": [("ReservedPort1", 8667)],
+  "ReservedPort2": [("ReservedPort2", 8668)],
+  "ReservedPort3": [("ReservedPort3", 8669)]
+}
+
+ganglia_clusters = [("HDPSlaves", 8660)]
+
+for key in ganglia_cluster_names:
+  property_name = format("/clusterHostInfo/{key}")
+  hosts = set(default(property_name, []))
+  if not len(hosts) == 0:
+    for x in ganglia_cluster_names[key]:
+      ganglia_clusters.append(x)
+
+if len(gmond_apps) > 0:
+  for gmond_app in gmond_apps:
+    ganglia_clusters.append(gmond_app)
+
+ganglia_apache_config_file = "/etc/apache2/conf.d/ganglia.conf"
+ganglia_web_path="/var/www/html/ganglia"
+if System.get_instance().os_family == "suse":
+  rrd_py_path = '/srv/www/cgi-bin'
+  dwoo_path = '/var/lib/ganglia-web/dwoo'
+  web_user = "wwwrun"
+  # for upgrade purposes as path to ganglia was changed
+  if not os.path.exists(ganglia_web_path):
+    ganglia_web_path='/srv/www/htdocs/ganglia'
+
+elif  System.get_instance().os_family == "redhat":
+  rrd_py_path = '/var/www/cgi-bin'
+  dwoo_path = '/var/lib/ganglia/dwoo'
+  web_user = "apache"
+elif  System.get_instance().os_family == "ubuntu":
+  rrd_py_path = '/usr/lib/cgi-bin'
+  ganglia_web_path = '/usr/share/ganglia-webfrontend'
+  dwoo_path = '/var/lib/ganglia/dwoo'
+  web_user = "www-data"

+ 25 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/scripts/status_params.py

@@ -0,0 +1,25 @@
+#!/usr/bin/env python
+"""
+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.
+
+"""
+
+from resource_management import *
+
+config = Script.get_config()
+
+pid_dir = config['configurations']['ganglia-env']['ganglia_runtime_dir']

+ 34 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/templates/ganglia.conf.j2

@@ -0,0 +1,34 @@
+# 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.
+#
+
+Alias /ganglia "{{ganglia_web_path}}"
+
+<Directory "{{ganglia_web_path}}">
+#  SSLRequireSSL
+   Options None
+   AllowOverride None
+   Order allow,deny
+   Allow from all
+#  Order deny,allow
+#  Deny from all
+#  Allow from 127.0.0.1
+#  AuthName "Ganglia Access"
+#  AuthType Basic
+#  AuthUserFile /etc/ganglia/htpasswd.users
+#  Require valid-user
+</Directory>

+ 43 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/templates/gangliaClusters.conf.j2

@@ -0,0 +1,43 @@
+{#
+# 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.
+#}
+
+#/*
+# * 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.
+# */
+
+#########################################################
+### ClusterName           GmondMasterHost   GmondPort ###
+#########################################################
+
+{% for x in ganglia_clusters %}
+    {{ x[0] }}       	  {{ganglia_server_host}}  {{ x[1] }}
+{% endfor %}

+ 46 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/templates/gangliaEnv.sh.j2

@@ -0,0 +1,46 @@
+{#
+# 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.
+#}
+
+
+#!/bin/sh
+
+#/*
+# * 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.
+# */
+
+# Unix users and groups for the binaries we start up.
+RRD_ROOTDIR={{rrdcached_base_dir}}
+GMETAD_USER={{gmetad_user}};
+GMOND_USER={{gmond_user}};
+WEBSERVER_GROUP={{webserver_group}};
+MODULES_DIR={{modules_dir}}
+GANGLIA_WEB_PATH={{ganglia_web_path}}

+ 85 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/templates/gangliaLib.sh.j2

@@ -0,0 +1,85 @@
+{#
+# 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.
+#}
+
+
+#!/bin/sh
+
+#/*
+# * 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.
+# */
+
+cd `dirname ${0}`;
+
+GANGLIA_CONF_DIR={{ganglia_conf_dir}};
+GANGLIA_RUNTIME_DIR={{ganglia_runtime_dir}};
+RRDCACHED_BASE_DIR={{rrdcached_base_dir}};
+RRDCACHED_WRITE_THREADS={{rrdcached_write_threads}}
+RRDCACHED_TIMEOUT={{rrdcached_timeout}}
+RRDCACHED_FLUSH_TIMEOUT={{rrdcached_flush_timeout}}
+RRDCACHED_DELAY={{rrdcached_delay}}
+
+# This file contains all the info about each Ganglia Cluster in our Grid.
+GANGLIA_CLUSTERS_CONF_FILE=./gangliaClusters.conf;
+
+function createDirectory()
+{
+    directoryPath=${1};
+
+    if [ "x" != "x${directoryPath}" ]
+    then
+        mkdir -p ${directoryPath};
+    fi
+}
+
+function getGangliaClusterInfo()
+{
+    clusterName=${1};
+
+    if [ "x" != "x${clusterName}" ]
+    then
+        # Fetch the particular entry for ${clusterName} from ${GANGLIA_CLUSTERS_CONF_FILE}.
+        awk -v clusterName=${clusterName} '($1 !~ /^#/) && ($1 == clusterName)' ${GANGLIA_CLUSTERS_CONF_FILE};
+    else
+        # Spit out all the non-comment, non-empty lines from ${GANGLIA_CLUSTERS_CONF_FILE}.
+        awk '($1 !~ /^#/) && (NF)' ${GANGLIA_CLUSTERS_CONF_FILE};
+    fi
+}
+
+function getConfiguredGangliaClusterNames()
+{
+  # Find all the subdirectories in ${GANGLIA_CONF_DIR} and extract only 
+  # the subdirectory name from each.
+  if [ -e ${GANGLIA_CONF_DIR} ]
+  then  
+    find ${GANGLIA_CONF_DIR} -maxdepth 1 -mindepth 1 -type d | xargs -n1 basename;
+  fi
+}

+ 361 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/GANGLIA/package/templates/rrd.py.j2

@@ -0,0 +1,361 @@
+#!/usr/bin/env python
+
+'''
+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.
+'''
+
+# NOTE: This script is executed by Python 2.4 on Centos 5. 
+# Make sure your changes are compatible.
+
+import cgi
+import glob
+import os
+import re
+import rrdtool
+import sys
+import time
+import urlparse
+
+# place this script in /var/www/cgi-bin of the Ganglia collector
+# requires 'yum install rrdtool-python' on the Ganglia collector
+'''
+  Loads rrd file info
+'''
+def loadRRDData(file, cf, start, end, resolution):
+  args = [file, cf, "--daemon", "unix:{{ganglia_runtime_dir}}/rrdcached.limited.sock"]
+
+  if start is not None:
+    args.extend(["-s", start])
+  else:
+    args.extend(["-s", "now-10m"])
+
+  if end is not None:
+    args.extend(["-e", end])
+
+  if resolution is not None:
+    args.extend(["-r", resolution])
+
+  return rrdtool.fetch(args)
+
+'''
+  Collects metrics across several matching filenames.
+'''
+def collectStatMetrics(clusterName, hostName, metricName, files, cf, start, end, resolution):
+  if clusterName[0] is not '/':
+    clusterName.insert(0, '/')
+
+  metricParts = metricName.split('.')
+
+  # already know there's at least one
+  metricStat = metricParts[-1]
+  metricName = '.'.join(metricParts[:-1])
+
+  isRate = False
+  if len(metricParts) > 1 and metricParts[-2] == '_rate':
+    isRate = True
+    metricName = '.'.join(metricParts[:-2])
+
+  pattern = re.compile(metricName + '\.rrd$')
+  matchedFiles = filter(pattern.match, files)
+
+  parentPath = os.path.join(*clusterName)
+
+  actualFiles = []
+  for matchedFile in matchedFiles:
+    if hostName != "__SummaryInfo__":
+      osFiles = glob.glob(os.path.join(parentPath, hostName, matchedFile))
+    else:
+      osFiles = glob.glob(os.path.join(parentPath, '*', matchedFile))
+
+    for f in osFiles:
+      if -1 == f.find("__SummaryInfo__"):
+        actualFiles.append(f)
+
+  if len(actualFiles) == 0:
+    return
+
+  '''
+  [
+    {
+      "step_value": update each iteration
+      "count": increase by 1 each iteration
+      "sum": increase by value each iteration
+      "avg": update each iteration as sum/count
+      "min": update each iteration if step_value < old min OR min is missing (first time)
+      "max": update each iteration if step_value > old max OR max is missing (first time)
+    }
+  ]
+  '''
+
+  timestamp = None
+  stepsize = None
+  concreteMetricName = None
+  vals = None # values across all files
+
+  for file in actualFiles:
+    rrdMetric = loadRRDData(file, cf, start, end, resolution)
+    
+    if timestamp is None and stepsize is None and concreteMetricName is None:
+      timestamp = rrdMetric[0][0]
+      stepsize = rrdMetric[0][2]
+      
+      if not isRate:
+        suffix = metricStat
+      else:
+        suffix = '_rate.' + metricStat
+      
+      concreteMetricName = file.split(os.sep).pop().replace('rrd', suffix)
+
+    metricValues = rrdMetric[2]
+
+    if vals is None:
+      vals = [None] * len(metricValues)
+
+    i = 0
+    for tuple in metricValues:
+      if vals[i] is None:
+        vals[i] = {}
+        vals[i]['count'] = 0
+        vals[i]['_sum'] = 0.0
+        vals[i]['_avg'] = 0.0
+        vals[i]['_min'] = 999999999999.99
+        vals[i]['_max'] = 0.0
+
+      rawValue = tuple[0]
+      vals[i]['step_value'] = rawValue
+      if rawValue is None:
+        i += 1
+        continue
+
+      if isRate:
+        if 0 == i:
+          rawValue = 0.0
+        elif vals[i-1]['step_value'] is None:
+          rawValue = 0.0
+        else:
+          rawValue = (rawValue - vals[i-1]['step_value']) / stepsize
+      
+      vals[i]['count'] += 1 
+      vals[i]['_sum'] += rawValue
+
+      vals[i]['_avg'] = vals[i]['_sum']/vals[i]['count']
+
+      if rawValue < vals[i]['_min']:
+        vals[i]['_min'] = rawValue
+
+      if rawValue > vals[i]['_max']:
+        vals[i]['_max'] = rawValue
+      
+      i += 1
+
+  sys.stdout.write("sum\n")
+  sys.stdout.write(clusterName[len(clusterName)-1] + "\n")
+  sys.stdout.write(hostName + "\n")
+  sys.stdout.write(concreteMetricName + "\n")
+  sys.stdout.write(str(timestamp) + "\n")
+  sys.stdout.write(str(stepsize) + "\n")
+
+  for val in vals:
+    if val['step_value'] is None:
+      sys.stdout.write("[~n]")
+    else:
+      sys.stdout.write(str(val[metricStat]))
+    sys.stdout.write("\n")
+
+  sys.stdout.write("[~EOM]\n")
+
+  return
+
+def printMetric(clusterName, hostName, metricName, file, cf, start, end,
+                resolution, pointInTime):
+  if clusterName.endswith("rrds"):
+    clusterName = ""
+ 
+  rrdMetric = loadRRDData(file, cf, start, end, resolution)
+
+  # ds_name
+  sys.stdout.write(rrdMetric[1][0])
+  sys.stdout.write("\n")
+
+  sys.stdout.write(clusterName)
+  sys.stdout.write("\n")
+  sys.stdout.write(hostName)
+  sys.stdout.write("\n")
+  sys.stdout.write(metricName)
+  sys.stdout.write("\n")
+
+  # write time
+  sys.stdout.write(str(rrdMetric[0][0]))
+  sys.stdout.write("\n")
+  # write step
+  sys.stdout.write(str(rrdMetric[0][2]))
+  sys.stdout.write("\n")
+
+  if not pointInTime:
+    valueCount = 0
+    lastValue = None
+
+    for tuple in rrdMetric[2]:
+
+      thisValue = tuple[0]
+
+      if valueCount > 0 and thisValue == lastValue:
+        valueCount += 1
+      else:
+        if valueCount > 1:
+          sys.stdout.write("[~r]")
+          sys.stdout.write(str(valueCount))
+          sys.stdout.write("\n")
+
+        if thisValue is None:
+          sys.stdout.write("[~n]\n")
+        else:
+          sys.stdout.write(str(thisValue))
+          sys.stdout.write("\n")
+
+        valueCount = 1
+        lastValue = thisValue
+  else:
+    value = None
+    idx = -1
+    tuple = rrdMetric[2]
+    tupleLastIdx = len(tuple) * -1
+
+    while value is None and idx >= tupleLastIdx:
+      value = tuple[idx][0]
+      idx -= 1
+
+    if value is not None:
+      sys.stdout.write(str(value))
+      sys.stdout.write("\n")
+
+  sys.stdout.write("[~EOM]\n")
+  return
+
+
+def stripList(l):
+  return ([x.strip() for x in l])
+
+
+sys.stdout.write("Content-type: text/plain\n\n")
+
+# write start time
+sys.stdout.write(str(time.mktime(time.gmtime())))
+sys.stdout.write("\n")
+
+requestMethod = os.environ['REQUEST_METHOD']
+
+if requestMethod == 'POST':
+  postData = sys.stdin.readline()
+  queryString = cgi.parse_qs(postData)
+  queryString = dict((k, v[0]) for k, v in queryString.items())
+elif requestMethod == 'GET':
+  queryString = dict(cgi.parse_qsl(os.environ['QUERY_STRING']));
+
+if "m" in queryString:
+  metricParts = queryString["m"].split(",")
+else:
+  metricParts = [""]
+metricParts = stripList(metricParts)
+
+hostParts = []
+if "h" in queryString:
+  hostParts = queryString["h"].split(",")
+hostParts = stripList(hostParts)
+
+if "c" in queryString:
+  clusterParts = queryString["c"].split(",")
+else:
+  clusterParts = [""]
+clusterParts = stripList(clusterParts)
+
+if "p" in queryString:
+  rrdPath = queryString["p"]
+else:
+  rrdPath = "{{rrdcached_base_dir}}"
+
+start = None
+if "s" in queryString:
+  start = queryString["s"]
+
+end = None
+if "e" in queryString:
+  end = queryString["e"]
+
+resolution = None
+if "r" in queryString:
+  resolution = queryString["r"]
+
+if "cf" in queryString:
+  cf = queryString["cf"]
+else:
+  cf = "AVERAGE"
+
+if "pt" in queryString:
+  pointInTime = True
+else:
+  pointInTime = False
+
+
+def _walk(*args, **kwargs):
+  for root, dirs, files in os.walk(*args, **kwargs):
+    for dir in dirs:
+      qualified_dir = os.path.join(root, dir)
+      if os.path.islink(qualified_dir):
+        for x in os.walk(qualified_dir, **kwargs):
+          yield x
+    yield (root, dirs, files)
+
+
+for cluster in clusterParts:
+  for path, dirs, files in _walk(os.path.join(rrdPath,cluster)):
+    pathParts = path.split("/")
+    #Process only path which contains files. If no host parameter passed - process all hosts folders and summary info
+    #If host parameter passed - process only this host folder
+    if len(files) > 0 and (len(hostParts) == 0 or pathParts[-1] in hostParts):
+      for metric in metricParts:
+        file = metric + ".rrd"
+        fileFullPath = os.path.join(path, file)
+        if os.path.exists(fileFullPath):
+          #Exact name of metric
+          printMetric(pathParts[-2], pathParts[-1], file[:-4],
+                      os.path.join(path, file), cf, start, end, resolution,
+                      pointInTime)
+        else:
+          need_stats = False
+          parts = metric.split(".")
+          if len(parts) > 0 and parts[-1] in ['_min', '_max', '_avg', '_sum']:
+              need_stats = True
+
+          if need_stats and not pointInTime:
+            collectStatMetrics(pathParts[:-1], pathParts[-1], metric, files, cf, start, end, resolution)
+          else:
+            #Regex as metric name
+            metricRegex = metric + '\.rrd$'
+            p = re.compile(metricRegex)
+            matchedFiles = filter(p.match, files)
+            for matchedFile in matchedFiles:
+              printMetric(pathParts[-2], pathParts[-1], matchedFile[:-4],
+                         os.path.join(path, matchedFile), cf, start, end,
+                         resolution, pointInTime)
+
+sys.stdout.write("[~EOF]\n")
+# write end time
+sys.stdout.write(str(time.mktime(time.gmtime())))
+sys.stdout.write("\n")
+
+sys.stdout.flush

+ 133 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/configuration/hbase-env.xml

@@ -0,0 +1,133 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+/**
+ * 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.
+ */
+-->
+
+<configuration>
+  <property>
+    <name>hbase_log_dir</name>
+    <value>/var/log/hbase</value>
+    <description>Log Directories for HBase.</description>
+  </property>
+  <property>
+    <name>hbase_pid_dir</name>
+    <value>/var/run/hbase</value>
+    <description>Pid Directory for HBase.</description>
+  </property>
+  <property>
+    <name>hbase_regionserver_heapsize</name>
+    <value>1024</value>
+    <description>HBase RegionServer Heap Size.</description>
+  </property>
+  <property>
+    <name>hbase_regionserver_xmn_max</name>
+    <value>512</value>
+    <description>HBase RegionServer maximum value for minimum heap size.</description>
+  </property>
+  <property>
+    <name>hbase_regionserver_xmn_ratio</name>
+    <value>0.2</value>
+    <description>HBase RegionServer minimum heap size is calculated as a percentage of max heap size.</description>
+  </property>
+  <property>
+    <name>hbase_master_heapsize</name>
+    <value>1024</value>
+    <description>HBase Master Heap Size</description>
+  </property>
+   <property>
+    <name>hbase_user</name>
+    <value>hbase</value>
+    <property-type>USER</property-type>
+    <description>HBase User Name.</description>
+  </property>
+
+  <!-- hbase-env.sh -->
+  <property>
+    <name>content</name>
+    <description>This is the jinja template for hbase-env.sh file</description>
+    <value>
+# Set environment variables here.
+
+# The java implementation to use. Java 1.6 required.
+export JAVA_HOME={{java64_home}}
+
+# HBase Configuration directory
+export HBASE_CONF_DIR=${HBASE_CONF_DIR:-{{hbase_conf_dir}}}
+
+# Extra Java CLASSPATH elements. Optional.
+export HBASE_CLASSPATH=${HBASE_CLASSPATH}
+
+# The maximum amount of heap to use, in MB. Default is 1000.
+# export HBASE_HEAPSIZE=1000
+
+# Extra Java runtime options.
+# Below are what we set by default. May only work with SUN JVM.
+# For more on why as well as other possible settings,
+# see http://wiki.apache.org/hadoop/PerformanceTuning
+export HBASE_OPTS="-XX:+UseConcMarkSweepGC -XX:ErrorFile={{log_dir}}/hs_err_pid%p.log"
+export SERVER_GC_OPTS="-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:{{log_dir}}/gc.log-`date +'%Y%m%d%H%M'`"
+# Uncomment below to enable java garbage collection logging.
+# export HBASE_OPTS="$HBASE_OPTS -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:$HBASE_HOME/logs/gc-hbase.log"
+
+# Uncomment and adjust to enable JMX exporting
+# See jmxremote.password and jmxremote.access in $JRE_HOME/lib/management to configure remote password access.
+# More details at: http://java.sun.com/javase/6/docs/technotes/guides/management/agent.html
+#
+# export HBASE_JMX_BASE="-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
+export HBASE_MASTER_OPTS="-Xmx{{master_heapsize}}"
+export HBASE_REGIONSERVER_OPTS="-Xmn{{regionserver_xmn_size}} -XX:CMSInitiatingOccupancyFraction=70  -Xms{{regionserver_heapsize}} -Xmx{{regionserver_heapsize}}"
+# export HBASE_THRIFT_OPTS="$HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10103"
+# export HBASE_ZOOKEEPER_OPTS="$HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10104"
+
+# File naming hosts on which HRegionServers will run. $HBASE_HOME/conf/regionservers by default.
+export HBASE_REGIONSERVERS=${HBASE_CONF_DIR}/regionservers
+
+# Extra ssh options. Empty by default.
+# export HBASE_SSH_OPTS="-o ConnectTimeout=1 -o SendEnv=HBASE_CONF_DIR"
+
+# Where log files are stored. $HBASE_HOME/logs by default.
+export HBASE_LOG_DIR={{log_dir}}
+
+# A string representing this instance of hbase. $USER by default.
+# export HBASE_IDENT_STRING=$USER
+
+# The scheduling priority for daemon processes. See 'man nice'.
+# export HBASE_NICENESS=10
+
+# The directory where pid files are stored. /tmp by default.
+export HBASE_PID_DIR={{pid_dir}}
+
+# Seconds to sleep between slave commands. Unset by default. This
+# can be useful in large clusters, where, e.g., slave rsyncs can
+# otherwise arrive faster than the master can service them.
+# export HBASE_SLAVE_SLEEP=0.1
+
+# Tell HBase whether it should manage it's own instance of Zookeeper or not.
+export HBASE_MANAGES_ZK=false
+
+{% if security_enabled %}
+export HBASE_OPTS="$HBASE_OPTS -Djava.security.auth.login.config={{client_jaas_config_file}}"
+export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -Djava.security.auth.login.config={{master_jaas_config_file}}"
+export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -Djava.security.auth.login.config={{regionserver_jaas_config_file}}"
+{% endif %}
+    </value>
+  </property>
+
+</configuration>

+ 143 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/configuration/hbase-log4j.xml

@@ -0,0 +1,143 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+/**
+ * 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.
+ */
+-->
+
+<configuration supports_final="false">
+
+  <property>
+    <name>content</name>
+    <description>Custom log4j.properties</description>
+    <value>
+# 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.
+
+
+# Define some default values that can be overridden by system properties
+hbase.root.logger=INFO,console
+hbase.security.logger=INFO,console
+hbase.log.dir=.
+hbase.log.file=hbase.log
+
+# Define the root logger to the system property "hbase.root.logger".
+log4j.rootLogger=${hbase.root.logger}
+
+# Logging Threshold
+log4j.threshold=ALL
+
+#
+# Daily Rolling File Appender
+#
+log4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.DRFA.File=${hbase.log.dir}/${hbase.log.file}
+
+# Rollver at midnight
+log4j.appender.DRFA.DatePattern=.yyyy-MM-dd
+
+# 30-day backup
+#log4j.appender.DRFA.MaxBackupIndex=30
+log4j.appender.DRFA.layout=org.apache.log4j.PatternLayout
+
+# Pattern format: Date LogLevel LoggerName LogMessage
+log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c{2}: %m%n
+
+# Rolling File Appender properties
+hbase.log.maxfilesize=256MB
+hbase.log.maxbackupindex=20
+
+# Rolling File Appender
+log4j.appender.RFA=org.apache.log4j.RollingFileAppender
+log4j.appender.RFA.File=${hbase.log.dir}/${hbase.log.file}
+
+log4j.appender.RFA.MaxFileSize=${hbase.log.maxfilesize}
+log4j.appender.RFA.MaxBackupIndex=${hbase.log.maxbackupindex}
+
+log4j.appender.RFA.layout=org.apache.log4j.PatternLayout
+log4j.appender.RFA.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c{2}: %m%n
+
+#
+# Security audit appender
+#
+hbase.security.log.file=SecurityAuth.audit
+hbase.security.log.maxfilesize=256MB
+hbase.security.log.maxbackupindex=20
+log4j.appender.RFAS=org.apache.log4j.RollingFileAppender
+log4j.appender.RFAS.File=${hbase.log.dir}/${hbase.security.log.file}
+log4j.appender.RFAS.MaxFileSize=${hbase.security.log.maxfilesize}
+log4j.appender.RFAS.MaxBackupIndex=${hbase.security.log.maxbackupindex}
+log4j.appender.RFAS.layout=org.apache.log4j.PatternLayout
+log4j.appender.RFAS.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
+log4j.category.SecurityLogger=${hbase.security.logger}
+log4j.additivity.SecurityLogger=false
+#log4j.logger.SecurityLogger.org.apache.hadoop.hbase.security.access.AccessController=TRACE
+
+#
+# Null Appender
+#
+log4j.appender.NullAppender=org.apache.log4j.varia.NullAppender
+
+#
+# console
+# Add "console" to rootlogger above if you want to use this
+#
+log4j.appender.console=org.apache.log4j.ConsoleAppender
+log4j.appender.console.target=System.err
+log4j.appender.console.layout=org.apache.log4j.PatternLayout
+log4j.appender.console.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c{2}: %m%n
+
+# Custom Logging levels
+
+log4j.logger.org.apache.zookeeper=INFO
+#log4j.logger.org.apache.hadoop.fs.FSNamesystem=DEBUG
+log4j.logger.org.apache.hadoop.hbase=DEBUG
+# Make these two classes INFO-level. Make them DEBUG to see more zk debug.
+log4j.logger.org.apache.hadoop.hbase.zookeeper.ZKUtil=INFO
+log4j.logger.org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher=INFO
+#log4j.logger.org.apache.hadoop.dfs=DEBUG
+# Set this class to log INFO only otherwise its OTT
+# Enable this to get detailed connection error/retry logging.
+# log4j.logger.org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation=TRACE
+
+
+# Uncomment this line to enable tracing on _every_ RPC call (this can be a lot of output)
+#log4j.logger.org.apache.hadoop.ipc.HBaseServer.trace=DEBUG
+
+# Uncomment the below if you want to remove logging of client region caching'
+# and scan of .META. messages
+# log4j.logger.org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation=INFO
+# log4j.logger.org.apache.hadoop.hbase.client.MetaScanner=INFO
+
+    </value>
+  </property>
+
+</configuration>

+ 53 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/configuration/hbase-policy.xml

@@ -0,0 +1,53 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+/**
+ * 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.
+ */
+-->
+
+<configuration supports_final="true">
+  <property>
+    <name>security.client.protocol.acl</name>
+    <value>*</value>
+    <description>ACL for HRegionInterface protocol implementations (ie. 
+    clients talking to HRegionServers)
+    The ACL is a comma-separated list of user and group names. The user and 
+    group list is separated by a blank. For e.g. "alice,bob users,wheel". 
+    A special value of "*" means all users are allowed.</description>
+  </property>
+
+  <property>
+    <name>security.admin.protocol.acl</name>
+    <value>*</value>
+    <description>ACL for HMasterInterface protocol implementation (ie. 
+    clients talking to HMaster for admin operations).
+    The ACL is a comma-separated list of user and group names. The user and 
+    group list is separated by a blank. For e.g. "alice,bob users,wheel". 
+    A special value of "*" means all users are allowed.</description>
+  </property>
+
+  <property>
+    <name>security.masterregion.protocol.acl</name>
+    <value>*</value>
+    <description>ACL for HMasterRegionInterface protocol implementations
+    (for HRegionServers communicating with HMaster)
+    The ACL is a comma-separated list of user and group names. The user and 
+    group list is separated by a blank. For e.g. "alice,bob users,wheel". 
+    A special value of "*" means all users are allowed.</description>
+  </property>
+</configuration>

+ 331 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/configuration/hbase-site.xml

@@ -0,0 +1,331 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+/**
+ * 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.
+ */
+-->
+<configuration supports_final="true">
+  <property>
+    <name>hbase.rootdir</name>
+    <value>hdfs://localhost:8020/apps/hbase/data</value>
+    <description>The directory shared by region servers and into
+    which HBase persists.  The URL should be 'fully-qualified'
+    to include the filesystem scheme.  For example, to specify the
+    HDFS directory '/hbase' where the HDFS instance's namenode is
+    running at namenode.example.org on port 9000, set this value to:
+    hdfs://namenode.example.org:9000/hbase.  By default HBase writes
+    into /tmp.  Change this configuration else all data will be lost
+    on machine restart.
+    </description>
+  </property>
+  <property>
+    <name>hbase.cluster.distributed</name>
+    <value>true</value>
+    <description>The mode the cluster will be in. Possible values are
+      false for standalone mode and true for distributed mode.  If
+      false, startup will run all HBase and ZooKeeper daemons together
+      in the one JVM.
+    </description>
+  </property>
+  <property>
+    <name>hbase.master.port</name>
+    <value>60000</value>
+    <description>The port the HBase Master should bind to.</description>
+  </property>
+  <property>
+    <name>hbase.tmp.dir</name>
+    <value>/hadoop/hbase</value>
+    <description>Temporary directory on the local filesystem.
+    Change this setting to point to a location more permanent
+    than '/tmp' (The '/tmp' directory is often cleared on
+    machine restart).
+    </description>
+  </property>
+  <property>
+    <name>hbase.local.dir</name>
+    <value>${hbase.tmp.dir}/local</value>
+    <description>Directory on the local filesystem to be used as a local storage
+    </description>
+  </property>
+  <property>
+    <name>hbase.master.info.bindAddress</name>
+    <value>0.0.0.0</value>
+    <description>The bind address for the HBase Master web UI
+    </description>
+  </property>
+  <property>
+    <name>hbase.master.info.port</name>
+    <value>60010</value>
+    <description>The port for the HBase Master web UI.</description>
+  </property>
+  <property>
+    <name>hbase.regionserver.info.port</name>
+    <value>60030</value>
+    <description>The port for the HBase RegionServer web UI.</description>
+  </property>
+  <property>
+    <name>hbase.regionserver.global.memstore.upperLimit</name>
+    <value>0.4</value>
+    <description>Maximum size of all memstores in a region server before new
+      updates are blocked and flushes are forced. Defaults to 40% of heap
+    </description>
+  </property>
+  <property>
+    <name>hbase.regionserver.handler.count</name>
+    <value>60</value>
+    <description>Count of RPC Listener instances spun up on RegionServers.
+    Same property is used by the Master for count of master handlers.
+    Default is 10.
+    </description>
+  </property>
+  <property>
+    <name>hbase.hregion.majorcompaction</name>
+    <value>86400000</value>
+    <description>The time (in milliseconds) between 'major' compactions of all
+    HStoreFiles in a region.  Default: 1 day.
+    Set to 0 to disable automated major compactions.
+    </description>
+  </property>
+  
+  <property>
+    <name>hbase.regionserver.global.memstore.lowerLimit</name>
+    <value>0.38</value>
+    <description>When memstores are being forced to flush to make room in
+      memory, keep flushing until we hit this mark. Defaults to 35% of heap.
+      This value equal to hbase.regionserver.global.memstore.upperLimit causes
+      the minimum possible flushing to occur when updates are blocked due to
+      memstore limiting.
+    </description>
+  </property>
+  <property>
+    <name>hbase.hregion.memstore.block.multiplier</name>
+    <value>2</value>
+    <description>Block updates if memstore has hbase.hregion.memstore.block.multiplier
+    time hbase.hregion.flush.size bytes.  Useful preventing
+    runaway memstore during spikes in update traffic.  Without an
+    upper-bound, memstore fills such that when it flushes the
+    resultant flush files take a long time to compact or split, or
+    worse, we OOME
+    </description>
+  </property>
+  <property>
+    <name>hbase.hregion.memstore.flush.size</name>
+    <value>134217728</value>
+    <description>
+    Memstore will be flushed to disk if size of the memstore
+    exceeds this number of bytes.  Value is checked by a thread that runs
+    every hbase.server.thread.wakefrequency.
+    </description>
+  </property>
+  <property>
+    <name>hbase.hregion.memstore.mslab.enabled</name>
+    <value>true</value>
+    <description>
+      Enables the MemStore-Local Allocation Buffer,
+      a feature which works to prevent heap fragmentation under
+      heavy write loads. This can reduce the frequency of stop-the-world
+      GC pauses on large heaps.
+    </description>
+  </property>
+  <property>
+    <name>hbase.hregion.max.filesize</name>
+    <value>10737418240</value>
+    <description>
+    Maximum HStoreFile size. If any one of a column families' HStoreFiles has
+    grown to exceed this value, the hosting HRegion is split in two.
+    Default: 1G.
+    </description>
+  </property>
+  <property>
+    <name>hbase.client.scanner.caching</name>
+    <value>100</value>
+    <description>Number of rows that will be fetched when calling next
+    on a scanner if it is not served from (local, client) memory. Higher
+    caching values will enable faster scanners but will eat up more memory
+    and some calls of next may take longer and longer times when the cache is empty.
+    Do not set this value such that the time between invocations is greater
+    than the scanner timeout; i.e. hbase.regionserver.lease.period
+    </description>
+  </property>
+  <property>
+    <name>zookeeper.session.timeout</name>
+    <value>30000</value>
+    <description>ZooKeeper session timeout.
+      HBase passes this to the zk quorum as suggested maximum time for a
+      session (This setting becomes zookeeper's 'maxSessionTimeout').  See
+      http://hadoop.apache.org/zookeeper/docs/current/zookeeperProgrammers.html#ch_zkSessions
+      "The client sends a requested timeout, the server responds with the
+      timeout that it can give the client. " In milliseconds.
+    </description>
+  </property>
+  <property>
+    <name>hbase.client.keyvalue.maxsize</name>
+    <value>10485760</value>
+    <description>Specifies the combined maximum allowed size of a KeyValue
+    instance. This is to set an upper boundary for a single entry saved in a
+    storage file. Since they cannot be split it helps avoiding that a region
+    cannot be split any further because the data is too large. It seems wise
+    to set this to a fraction of the maximum region size. Setting it to zero
+    or less disables the check.
+    </description>
+  </property>
+  <property>
+    <name>hbase.hstore.compactionThreshold</name>
+    <value>3</value>
+    <description>
+    If more than this number of HStoreFiles in any one HStore
+    (one HStoreFile is written per flush of memstore) then a compaction
+    is run to rewrite all HStoreFiles files as one.  Larger numbers
+    put off compaction but when it runs, it takes longer to complete.
+    </description>
+  </property>
+  <property>
+    <name>hbase.hstore.flush.retries.number</name>
+    <value>120</value>
+    <description>
+    The number of times the region flush operation will be retried.
+    </description>
+  </property>
+  
+  <property>
+    <name>hbase.hstore.blockingStoreFiles</name>
+    <value>10</value>
+    <description>
+    If more than this number of StoreFiles in any one Store
+    (one StoreFile is written per flush of MemStore) then updates are
+    blocked for this HRegion until a compaction is completed, or
+    until hbase.hstore.blockingWaitTime has been exceeded.
+    </description>
+  </property>
+  <property>
+    <name>hfile.block.cache.size</name>
+    <value>0.40</value>
+    <description>
+        Percentage of maximum heap (-Xmx setting) to allocate to block cache
+        used by HFile/StoreFile. Default of 0.25 means allocate 25%.
+        Set to 0 to disable but it's not recommended.
+    </description>
+  </property>
+
+  <!-- Additional configuration specific to HBase security -->
+  <property>
+    <name>hbase.superuser</name>
+    <value>hbase</value>
+    <description>List of users or groups (comma-separated), who are allowed
+    full privileges, regardless of stored ACLs, across the cluster.
+    Only used when HBase security is enabled.
+    </description>
+  </property>
+
+  <property>
+    <name>hbase.security.authentication</name>
+    <value>simple</value>
+    <description>  Controls whether or not secure authentication is enabled for HBase. Possible values are 'simple'
+      (no authentication), and 'kerberos'.
+    </description>
+  </property>
+
+  <property>
+    <name>hbase.security.authorization</name>
+    <value>false</value>
+    <description>Enables HBase authorization. Set the value of this property to false to disable HBase authorization.
+    </description>
+  </property>
+
+  <property>
+    <name>hbase.coprocessor.region.classes</name>
+    <value></value>
+    <description>A comma-separated list of Coprocessors that are loaded by
+    default on all tables. For any override coprocessor method, these classes
+    will be called in order. After implementing your own Coprocessor, just put
+    it in HBase's classpath and add the fully qualified class name here.
+    A coprocessor can also be loaded on demand by setting HTableDescriptor.
+    </description>
+  </property>
+
+  <property>
+    <name>hbase.coprocessor.master.classes</name>
+    <value></value>
+    <description>A comma-separated list of
+      org.apache.hadoop.hbase.coprocessor.MasterObserver coprocessors that are
+      loaded by default on the active HMaster process. For any implemented
+      coprocessor methods, the listed classes will be called in order. After
+      implementing your own MasterObserver, just put it in HBase's classpath
+      and add the fully qualified class name here.
+    </description>
+  </property>
+
+  <property>
+    <name>hbase.zookeeper.property.clientPort</name>
+    <value>2181</value>
+    <description>Property from ZooKeeper's config zoo.cfg.
+    The port at which the clients will connect.
+    </description>
+  </property>
+
+  <!--
+  The following three properties are used together to create the list of
+  host:peer_port:leader_port quorum servers for ZooKeeper.
+  -->
+  <property>
+    <name>hbase.zookeeper.quorum</name>
+    <value>localhost</value>
+    <description>Comma separated list of servers in the ZooKeeper Quorum.
+    For example, "host1.mydomain.com,host2.mydomain.com,host3.mydomain.com".
+    By default this is set to localhost for local and pseudo-distributed modes
+    of operation. For a fully-distributed setup, this should be set to a full
+    list of ZooKeeper quorum servers. If HBASE_MANAGES_ZK is set in hbase-env.sh
+    this is the list of servers which we will start/stop ZooKeeper on.
+    </description>
+  </property>
+  <!-- End of properties used to generate ZooKeeper host:port quorum list. -->
+
+  <property>
+    <name>hbase.zookeeper.useMulti</name>
+    <value>true</value>
+    <description>Instructs HBase to make use of ZooKeeper's multi-update functionality.
+    This allows certain ZooKeeper operations to complete more quickly and prevents some issues
+    with rare Replication failure scenarios (see the release note of HBASE-2611 for an example).·
+    IMPORTANT: only set this to true if all ZooKeeper servers in the cluster are on version 3.4+
+    and will not be downgraded.  ZooKeeper versions before 3.4 do not support multi-update and will
+    not fail gracefully if multi-update is invoked (see ZOOKEEPER-1495).
+    </description>
+  </property>
+  <property>
+    <name>zookeeper.znode.parent</name>
+    <value>/hbase-unsecure</value>
+    <description>Root ZNode for HBase in ZooKeeper. All of HBase's ZooKeeper
+      files that are configured with a relative path will go under this node.
+      By default, all of HBase's ZooKeeper file path are configured with a
+      relative path, so they will all go under this directory unless changed.
+    </description>
+  </property>
+
+  <property>
+    <name>hbase.defaults.for.version.skip</name>
+    <value>true</value>
+    <description>Disables version verification.</description>
+  </property>
+
+  <property>
+    <name>dfs.domain.socket.path</name>
+    <value>/var/lib/hadoop-hdfs/dn_socket</value>
+    <description>Path to domain socket.</description>
+  </property>
+
+</configuration>

+ 139 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/metainfo.xml

@@ -0,0 +1,139 @@
+<?xml version="1.0"?>
+<!--
+   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.
+-->
+<metainfo>
+  <schemaVersion>2.0</schemaVersion>
+  <services>
+    <service>
+      <name>HBASE</name>
+      <displayName>HBase</displayName>
+      <comment>Non-relational distributed database and centralized service for configuration management &amp;
+        synchronization
+      </comment>
+      <version>0.98.5.phd.3.0.0.0</version>
+      <components>
+        <component>
+          <name>HBASE_MASTER</name>
+          <displayName>HBase Master</displayName>
+          <category>MASTER</category>
+          <cardinality>1+</cardinality>
+          <dependencies>
+            <dependency>
+              <name>HDFS/HDFS_CLIENT</name>
+              <scope>host</scope>
+              <auto-deploy>
+                <enabled>true</enabled>
+              </auto-deploy>
+            </dependency>
+            <dependency>
+              <name>ZOOKEEPER/ZOOKEEPER_SERVER</name>
+              <scope>cluster</scope>
+              <auto-deploy>
+                <enabled>true</enabled>
+                <co-locate>HBASE/HBASE_MASTER</co-locate>
+              </auto-deploy>
+            </dependency>
+          </dependencies>
+          <commandScript>
+            <script>scripts/hbase_master.py</script>
+            <scriptType>PYTHON</scriptType>
+            <timeout>600</timeout>
+          </commandScript>
+          <customCommands>
+            <customCommand>
+              <name>DECOMMISSION</name>
+              <commandScript>
+                <script>scripts/hbase_master.py</script>
+                <scriptType>PYTHON</scriptType>
+                <timeout>600</timeout>
+              </commandScript>
+            </customCommand>
+          </customCommands>
+        </component>
+
+        <component>
+          <name>HBASE_REGIONSERVER</name>
+          <displayName>RegionServer</displayName>
+          <category>SLAVE</category>
+          <cardinality>1+</cardinality>
+          <commandScript>
+            <script>scripts/hbase_regionserver.py</script>
+            <scriptType>PYTHON</scriptType>
+          </commandScript>
+        </component>
+
+        <component>
+          <name>HBASE_CLIENT</name>
+          <displayName>HBase Client</displayName>
+          <category>CLIENT</category>
+          <cardinality>1+</cardinality>
+          <commandScript>
+            <script>scripts/hbase_client.py</script>
+            <scriptType>PYTHON</scriptType>
+          </commandScript>
+          <configFiles>
+            <configFile>
+              <type>xml</type>
+              <fileName>hbase-site.xml</fileName>
+              <dictionaryName>hbase-site</dictionaryName>
+            </configFile>
+            <configFile>
+              <type>env</type>
+              <fileName>hbase-env.sh</fileName>
+              <dictionaryName>hbase-env</dictionaryName>
+            </configFile>
+            <configFile>
+              <type>env</type>
+              <fileName>log4j.properties</fileName>
+              <dictionaryName>hbase-log4j</dictionaryName>
+            </configFile>            
+          </configFiles>
+        </component>
+      </components>
+
+      <osSpecifics>
+        <osSpecific>
+          <osFamily>any</osFamily>
+          <packages>
+            <package>
+              <name>hbase</name>
+            </package>
+          </packages>
+        </osSpecific>
+      </osSpecifics>
+
+      <commandScript>
+        <script>scripts/service_check.py</script>
+        <scriptType>PYTHON</scriptType>
+        <timeout>300</timeout>
+      </commandScript>
+      
+      <requiredServices>
+        <service>ZOOKEEPER</service>
+        <service>HDFS</service>
+      </requiredServices>
+
+      <configuration-dependencies>
+        <config-type>hbase-policy</config-type>
+        <config-type>hbase-site</config-type>
+        <config-type>hbase-env</config-type>
+        <config-type>hbase-log4j</config-type>
+      </configuration-dependencies>
+
+    </service>
+  </services>
+</metainfo>

+ 13635 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/metrics.json

@@ -0,0 +1,13635 @@
+{
+  "HBASE_REGIONSERVER": {
+    "Component": [
+      {
+        "type": "ganglia",
+        "metrics": {
+          "metrics/hbase/regionserver/compactionTime_avg_time": {
+            "metric": "hbase.regionserver.compactionTime_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/closeRegion_num_ops": {
+            "metric": "rpc.rpc.closeRegion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/mutationsWithoutWALSize": {
+            "metric": "regionserver.Server.mutationsWithoutWALSize",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/unassign_num_ops": {
+            "metric": "rpc.rpc.unassign_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/modifyTable_num_ops": {
+            "metric": "rpc.rpc.modifyTable_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolVersion_avg_time": {
+            "metric": "rpc.rpc.getProtocolVersion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getZooKeeper/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getZooKeeper.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/load/load_one": {
+            "metric": "load_one",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClosestRowBefore_num_ops": {
+            "metric": "rpc.rpc.getClosestRowBefore_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/slowAppendCount": {
+            "metric": "regionserver.Server.slowAppendCount",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/getClosestRowBefore/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getClosestRowBefore.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/lockRow_num_ops": {
+            "metric": "rpc.rpc.lockRow_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/flushRegion_avg_time": {
+            "metric": "rpc.rpc.flushRegion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/swap_total": {
+            "metric": "swap_total",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/stopMaster_num_ops": {
+            "metric": "rpc.rpc.stopMaster_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegions/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.openRegions.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/balance_avg_time": {
+            "metric": "rpc.rpc.balance_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/process/proc_total": {
+            "metric": "proc_total",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/disk/part_max_used": {
+            "metric": "part_max_used",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/modifyColumn_avg_time": {
+            "metric": "rpc.rpc.modifyColumn_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/multi/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.multi.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/rootIndexSizeKB": {
+            "metric": "hbase.regionserver.rootIndexSizeKB",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getZooKeeper_num_ops": {
+            "metric": "rpc.rpc.getZooKeeper_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/blockCacheCount": {
+            "metric": "regionserver.Server.blockCacheCount",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/flushRegion_num_ops": {
+            "metric": "rpc.rpc.flushRegion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/ugi/loginSuccess_num_ops": {
+            "metric": "ugi.UgiMetrics.LoginSuccessNumOps",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rollHLogWriter/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.rollHLogWriter.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/removeFromOnlineRegions/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.removeFromOnlineRegions.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/putRequestLatency_std_dev": {
+            "metric": "hbase.regionserver.putRequestLatency_std_dev",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/getRequestLatency_std_dev": {
+            "metric": "hbase.regionserver.getRequestLatency_std_dev",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/get_num_ops": {
+            "metric": "rpc.rpc.get_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/stopMaster_avg_time": {
+            "metric": "rpc.rpc.stopMaster_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getOnlineRegions/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getOnlineRegions.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/network/bytes_in": {
+            "metric": "bytes_in",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/removeFromOnlineRegions_num_ops": {
+            "metric": "rpc.rpc.removeFromOnlineRegions_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/ping_avg_time": {
+            "metric": "rpcdetailed.rpcdetailed.ping_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openScanner/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.openScanner.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getRegionInfo_avg_time": {
+            "metric": "rpc.rpc.getRegionInfo_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/lockRow_avg_time": {
+            "metric": "rpc.rpc.lockRow_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/commitPending_num_ops": {
+            "metric": "rpcdetailed.rpcdetailed.commitPending_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkOOME_num_ops": {
+            "metric": "rpc.rpc.checkOOME_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/reportRSFatalError_num_ops": {
+            "metric": "rpc.rpc.reportRSFatalError_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getConfiguration/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getConfiguration.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/reportRSFatalError_avg_time": {
+            "metric": "rpc.rpc.reportRSFatalError_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/network/pkts_in": {
+            "metric": "pkts_in",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/mem_total": {
+            "metric": "mem_total",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/memHeapCommittedM": {
+            "metric": "jvm.JvmMetrics.MemHeapCommittedM",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsRunnable": {
+            "metric": "jvm.JvmMetrics.ThreadsRunnable",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/unlockRow/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.unlockRow.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_min": {
+            "metric": "regionserver.Server.Delete_min",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/jvm/threadsNew": {
+            "metric": "jvm.JvmMetrics.ThreadsNew",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClusterStatus_num_ops": {
+            "metric": "rpc.rpc.getClusterStatus_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHTableDescriptors_avg_time": {
+            "metric": "rpc.rpc.getHTableDescriptors_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rpcAuthorizationFailures": {
+            "metric": "rpc.rpc.rpcAuthorizationFailures",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/deleteColumn_num_ops": {
+            "metric": "rpc.rpc.deleteColumn_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/delete/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.delete.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcQueueTime_avg_time": {
+            "metric": "rpc.rpc.RpcQueueTimeAvgTime",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/increment_num_ops": {
+            "metric": "rpc.rpc.increment_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/getMapCompletionEvents_num_ops": {
+            "metric": "rpcdetailed.rpcdetailed.getMapCompletionEvents_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/stop/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.stop.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/modifyColumn_num_ops": {
+            "metric": "rpc.rpc.modifyColumn_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkOOME_avg_time": {
+            "metric": "rpc.rpc.checkOOME_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/next/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.next.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcSlowResponse_avg_time": {
+            "metric": "rpc.rpc.RpcSlowResponse_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getConfiguration_avg_time": {
+            "metric": "rpc.rpc.getConfiguration_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getServerName/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getServerName.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_nice": {
+            "metric": "cpu_nice",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/unassign_avg_time": {
+            "metric": "rpc.rpc.unassign_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/NumOpenConnections": {
+            "metric": "rpc.rpc.NumOpenConnections",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/delete/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.delete.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/canCommit_num_ops": {
+            "metric": "rpcdetailed.rpcdetailed.canCommit_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/multi/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.multi.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/network/bytes_out": {
+            "metric": "bytes_out",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/load/load_five": {
+            "metric": "load_five",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsReadLatencyHistogram_75th_percentile": {
+            "metric": "hbase.regionserver.fsReadLatencyHistogram_75th_percentile",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_num_ops": {
+            "metric": "regionserver.Server.Delete_num_ops",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/boottime": {
+            "metric": "boottime",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/compactRegion_avg_time": {
+            "metric": "rpc.rpc.compactRegion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsWriteLatencyHistogram_num_ops": {
+            "metric": "hbase.regionserver.fsWriteLatencyHistogram_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/writeRequestsCount": {
+            "metric": "regionserver.Server.writeRequestCount",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolSignature/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getProtocolSignature.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/execCoprocessor_num_ops": {
+            "metric": "rpc.rpc.execCoprocessor_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/canCommit_avg_time": {
+            "metric": "rpcdetailed.rpcdetailed.canCommit_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHServerInfo/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getHServerInfo.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/getRequestLatency_min": {
+            "metric": "regionserver.Server.Get_min",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/getCatalogTracker/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getCatalogTracker.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/incrementColumnValue_avg_time": {
+            "metric": "rpc.rpc.incrementColumnValue_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcProcessingTime_num_ops": {
+            "metric": "rpc.rpc.RpcProcessingTimeNumOps",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/deleteTable_num_ops": {
+            "metric": "rpc.rpc.deleteTable_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/logError": {
+            "metric": "jvm.JvmMetrics.LogError",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getBlockCacheColumnFamilySummaries_num_ops": {
+            "metric": "rpc.rpc.getBlockCacheColumnFamilySummaries_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/putRequestLatency_75th_percentile": {
+            "metric": "regionserver.Server.Mutate_75th_percentile",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/getFromOnlineRegions/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getFromOnlineRegions.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getRegionInfo/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getRegionInfo.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/blockCacheHitCount": {
+            "metric": "regionserver.Server.blockCacheHitCount",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/exists_avg_time": {
+            "metric": "rpc.rpc.exists_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/slowPutCount": {
+            "metric": "regionserver.Server.slowPutCount",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsWriteLatency_num_ops": {
+            "metric": "hbase.regionserver.fsWriteLatency_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getOnlineRegions/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getOnlineRegions.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/exists/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.exists.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/replicateLogEntries/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.replicateLogEntries.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/delete_num_ops": {
+            "metric": "rpc.rpc.delete_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/exists_num_ops": {
+            "metric": "rpc.rpc.exists_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/regionServerStartup_avg_time": {
+            "metric": "rpc.rpc.regionServerStartup_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndDelete_num_ops": {
+            "metric": "rpc.rpc.checkAndDelete_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/closeRegion_avg_time": {
+            "metric": "rpc.rpc.closeRegion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/getBlockLocalPathInfo_avg_time": {
+            "metric": "rpcdetailed.rpcdetailed.getBlockLocalPathInfo_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolSignature_avg_time": {
+            "metric": "rpc.rpc.getProtocolSignature_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/assign_avg_time": {
+            "metric": "rpc.rpc.assign_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/compactionSize_num_ops": {
+            "metric": "hbase.regionserver.compactionSize_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/close_avg_time": {
+            "metric": "rpc.rpc.close_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/blockCacheSize": {
+            "metric": "regionserver.Server.blockCacheSize",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/putRequestLatency_num_ops": {
+            "metric": "regionserver.Server.Mutate_num_ops",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/jvm/threadsBlocked": {
+            "metric": "jvm.JvmMetrics.ThreadsBlocked",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHServerInfo_num_ops": {
+            "metric": "rpc.rpc.getHServerInfo_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/stop_avg_time": {
+            "metric": "rpc.rpc.stop_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isStopped_num_ops": {
+            "metric": "rpc.rpc.isStopped_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/putRequestLatency_median": {
+            "metric": "regionserver.Server.Mutate_median",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsReadLatencyHistogram_num_ops": {
+            "metric": "hbase.regionserver.fsReadLatencyHistogram_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsWriteLatencyHistogram_median": {
+            "metric": "hbase.regionserver.fsWriteLatencyHistogram_median",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isMasterRunning_avg_time": {
+            "metric": "rpc.rpc.isMasterRunning_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/incrementColumnValue_num_ops": {
+            "metric": "rpc.rpc.incrementColumnValue_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_std_dev": {
+            "metric": "hbase.regionserver.deleteRequestLatency_std_dev",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/bulkLoadHFiles/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.bulkLoadHFiles.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/hdfsBlocksLocalityIndex": {
+            "metric": "hbase.regionserver.hdfsBlocksLocalityIndex",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/readRequestsCount": {
+            "metric": "regionserver.Server.readRequestCount",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/memory/mem_free": {
+            "metric": "mem_free",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/execCoprocessor/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.execCoprocessor.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/putRequestLatency_min": {
+            "metric": "regionserver.Server.Mutate_min",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/storefileIndexSizeMB": {
+            "metric": "regionserver.Server.storeFileIndexSize",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/assign_num_ops": {
+            "metric": "rpc.rpc.assign_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/close/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.close.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_median": {
+            "metric": "regionserver.Server.Delete_median",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/enableTable_avg_time": {
+            "metric": "rpc.rpc.enableTable_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/putRequestLatency_mean": {
+            "metric": "regionserver.Server.Mutate_mean",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/incrementColumnValue/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.incrementColumnValue.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/network/pkts_out": {
+            "metric": "pkts_out",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/close_num_ops": {
+            "metric": "rpc.rpc.close_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/mem_cached": {
+            "metric": "mem_cached",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getConfiguration/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getConfiguration.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/done_avg_time": {
+            "metric": "rpcdetailed.rpcdetailed.done_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/compactionSize_avg_time": {
+            "metric": "hbase.regionserver.compactionSize_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getFromOnlineRegions_avg_time": {
+            "metric": "rpc.rpc.getFromOnlineRegions_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsReadLatencyHistogram_min": {
+            "metric": "hbase.regionserver.fsReadLatencyHistogram_min",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/increment/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.increment.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/deleteTable_avg_time": {
+            "metric": "rpc.rpc.deleteTable_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/put/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.put.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/delete_avg_time": {
+            "metric": "rpc.rpc.delete_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/statusUpdate_num_ops": {
+            "metric": "rpcdetailed.rpcdetailed.statusUpdate_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegions/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.openRegions.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/compactRegion/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.compactRegion.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcProcessingTime_avg_time": {
+            "metric": "rpc.rpc.RpcProcessingTimeAvgTime",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rpcAuthenticationFailures": {
+            "metric": "rpc.rpc.rpcAuthenticationFailures",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openScanner/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.openScanner.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClusterStatus_avg_time": {
+            "metric": "rpc.rpc.getClusterStatus_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/unlockRow/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.unlockRow.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/removeFromOnlineRegions_avg_time": {
+            "metric": "rpc.rpc.removeFromOnlineRegions_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/put/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.put.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/modifyTable_avg_time": {
+            "metric": "rpc.rpc.modifyTable_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndPut_avg_time": {
+            "metric": "rpc.rpc.checkAndPut_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isStopped/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.isStopped.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/put_avg_time": {
+            "metric": "rpc.rpc.put_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/blockCacheHitRatio": {
+            "metric": "hbase.regionserver.blockCacheHitRatio",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/createTable_avg_time": {
+            "metric": "rpc.rpc.createTable_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getRegionInfo/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getRegionInfo.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsReadLatencyHistogram_std_dev": {
+            "metric": "hbase.regionserver.fsReadLatencyHistogram_std_dev",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHTableDescriptors_num_ops": {
+            "metric": "rpc.rpc.getHTableDescriptors_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getAlterStatus_avg_time": {
+            "metric": "rpc.rpc.getAlterStatus_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getRegionInfo_num_ops": {
+            "metric": "rpc.rpc.getRegionInfo_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/statusUpdate_avg_time": {
+            "metric": "rpcdetailed.rpcdetailed.statusUpdate_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/compactRegion_num_ops": {
+            "metric": "rpc.rpc.compactRegion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isAborted_num_ops": {
+            "metric": "rpc.rpc.isAborted_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getFromOnlineRegions/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getFromOnlineRegions.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsReadLatencyHistogram_max": {
+            "metric": "hbase.regionserver.fsReadLatencyHistogram_max",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/blockCacheEvictedCount": {
+            "metric": "regionserver.Server.blockCacheEvictionCount",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/checkOOME/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.checkOOME.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/mem_buffers": {
+            "metric": "mem_buffers",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/disableTable_num_ops": {
+            "metric": "rpc.rpc.disableTable_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openScanner_num_ops": {
+            "metric": "rpc.rpc.openScanner_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/bulkLoadHFiles/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.bulkLoadHFiles.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_user": {
+            "metric": "cpu_user",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/swap_free": {
+            "metric": "swap_free",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/regionServerReport_num_ops": {
+            "metric": "rpc.rpc.regionServerReport_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegions_avg_time": {
+            "metric": "rpc.rpc.openRegions_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/exists/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.exists.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/putRequestLatency_99th_percentile": {
+            "metric": "regionserver.Server.Mutate_99th_percentile",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/load/load_fifteen": {
+            "metric": "load_fifteen",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getBlockCacheColumnFamilySummaries/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getBlockCacheColumnFamilySummaries.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/execCoprocessor/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.execCoprocessor.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isMasterRunning_num_ops": {
+            "metric": "rpc.rpc.isMasterRunning_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/balanceSwitch_num_ops": {
+            "metric": "rpc.rpc.balanceSwitch_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/offline_num_ops": {
+            "metric": "rpc.rpc.offline_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/getRequestLatency_max": {
+            "metric": "regionserver.Server.Get_max",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/memory/mem_shared": {
+            "metric": "mem_shared",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/abort_num_ops": {
+            "metric": "rpc.rpc.abort_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsReadLatencyHistogram_95th_percentile": {
+            "metric": "hbase.regionserver.fsReadLatencyHistogram_95th_percentile",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/blockCacheHitCachingRatio": {
+            "metric": "hbase.regionserver.blockCacheHitCachingRatio",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/ugi/loginFailure_avg_time": {
+            "metric": "ugi.UgiMetrics.LoginFailureAvgTime",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/getProtocolVersion_avg_time": {
+            "metric": "rpcdetailed.rpcdetailed.getProtocolVersion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_num": {
+            "metric": "cpu_num",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rollHLogWriter_num_ops": {
+            "metric": "rpc.rpc.rollHLogWriter_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegions_num_ops": {
+            "metric": "rpc.rpc.openRegions_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/logFatal": {
+            "metric": "jvm.JvmMetrics.LogFatal",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/splitRegion_avg_time": {
+            "metric": "rpc.rpc.splitRegion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/closeRegion/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.closeRegion.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndPut/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.checkAndPut.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/getRequestLatency_99th_percentile": {
+            "metric": "regionserver.Server.Get_99th_percentile",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsWriteLatencyHistogram_min": {
+            "metric": "hbase.regionserver.fsWriteLatencyHistogram_min",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/splitRegion/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.splitRegion.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/getProtocolVersion_num_ops": {
+            "metric": "rpcdetailed.rpcdetailed.getProtocolVersion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsWriteLatencyHistogram_std_dev": {
+            "metric": "hbase.regionserver.fsWriteLatencyHistogram_std_dev",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/ugi/loginSuccess_avg_time": {
+            "metric": "ugi.UgiMetrics.LoginSuccessAvgTime",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_99th_percentile": {
+            "metric": "regionserver.Server.Delete_99th_percentile",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/getHServerInfo/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getHServerInfo.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsWriteLatencyHistogram_max": {
+            "metric": "hbase.regionserver.fsWriteLatencyHistogram_max",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/memNonHeapUsedM": {
+            "metric": "jvm.JvmMetrics.MemNonHeapUsedM",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/getTask_avg_time": {
+            "metric": "rpcdetailed.rpcdetailed.getTask_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/replicateLogEntries_num_ops": {
+            "metric": "rpc.rpc.replicateLogEntries_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/multi_avg_time": {
+            "metric": "rpc.rpc.multi_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/slowIncrementCount": {
+            "metric": "regionserver.Server.slowIncrementCount",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/putRequestLatency_95th_percentile": {
+            "metric": "regionserver.Server.Mutate_95th_percentile",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/compactionQueueSize": {
+            "metric": "regionserver.Server.compactionQueueLength",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/getCatalogTracker_avg_time": {
+            "metric": "rpc.rpc.getCatalogTracker_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/splitRegion_num_ops": {
+            "metric": "rpc.rpc.splitRegion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/balance_num_ops": {
+            "metric": "rpc.rpc.balance_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/flushTime_num_ops": {
+            "metric": "hbase.regionserver.flushTime_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/shutdown_num_ops": {
+            "metric": "rpc.rpc.shutdown_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsReadLatency_num_ops": {
+            "metric": "hbase.regionserver.fsReadLatency_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isAborted/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.isAborted.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_idle": {
+            "metric": "cpu_idle",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/getRequestLatency_75th_percentile": {
+            "metric": "regionserver.Server.Get_75th_percentile",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolSignature/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getProtocolSignature.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getServerName_avg_time": {
+            "metric": "rpc.rpc.getServerName_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/memNonHeapCommittedM": {
+            "metric": "jvm.JvmMetrics.MemNonHeapCommittedM",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/compactionTime_num_ops": {
+            "metric": "hbase.regionserver.compactionTime_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/abort_avg_time": {
+            "metric": "rpc.rpc.abort_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getCatalogTracker/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getCatalogTracker.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/getBlockLocalPathInfo_num_ops": {
+            "metric": "rpcdetailed.rpcdetailed.getBlockLocalPathInfo_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/enableTable_num_ops": {
+            "metric": "rpc.rpc.enableTable_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/lockRow/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.lockRow.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/stores": {
+            "metric": "regionserver.Server.storeCount",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/addColumn_avg_time": {
+            "metric": "rpc.rpc.addColumn_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/addToOnlineRegions/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.addToOnlineRegions.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/ugi/loginFailure_num_ops": {
+            "metric": "ugi.UgiMetrics.LoginFailureNumOps",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_wio": {
+            "metric": "cpu_wio",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getZooKeeper/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getZooKeeper.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getServerName_num_ops": {
+            "metric": "rpc.rpc.getServerName_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getServerName/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getServerName.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rpcAuthenticationSuccesses": {
+            "metric": "rpc.rpc.rpcAuthenticationSuccesses",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isStopped/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.isStopped.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/disableTable_avg_time": {
+            "metric": "rpc.rpc.disableTable_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rollHLogWriter/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.rollHLogWriter.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/abort/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.abort.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegion_avg_time": {
+            "metric": "rpc.rpc.openRegion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/regionServerReport_avg_time": {
+            "metric": "rpc.rpc.regionServerReport_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getAlterStatus_num_ops": {
+            "metric": "rpc.rpc.getAlterStatus_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/flushRegion/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.flushRegion.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/incrementColumnValue/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.incrementColumnValue.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/next_avg_time": {
+            "metric": "rpc.rpc.next_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/getRequestLatency_num_ops": {
+            "metric": "regionserver.Server.Get_num_ops",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/ReceivedBytes": {
+            "metric": "rpc.rpc.ReceivedBytes",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/bulkLoadHFiles_num_ops": {
+            "metric": "rpc.rpc.bulkLoadHFiles_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/ping_num_ops": {
+            "metric": "rpcdetailed.rpcdetailed.ping_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsReadLatency_avg_time": {
+            "metric": "hbase.regionserver.fsReadLatency_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/flushSize_num_ops": {
+            "metric": "hbase.regionserver.flushSize_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/gcTimeMillis": {
+            "metric": "jvm.JvmMetrics.GcTimeMillis",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsTerminated": {
+            "metric": "jvm.JvmMetrics.ThreadsTerminated",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolVersion/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getProtocolVersion.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndDelete/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.checkAndDelete.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/balanceSwitch_avg_time": {
+            "metric": "rpc.rpc.balanceSwitch_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/putRequestLatency_max": {
+            "metric": "regionserver.Server.Mutate_max",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/openRegion/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.openRegion.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/lockRow/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.lockRow.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/callQueueLen": {
+            "metric": "rpc.rpc.callQueueLen",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegion_num_ops": {
+            "metric": "rpc.rpc.openRegion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/compactRegion/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.compactRegion.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsSyncLatency_num_ops": {
+            "metric": "hbase.regionserver.fsSyncLatency_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsWriteLatencyHistogram_95th_percentile": {
+            "metric": "hbase.regionserver.fsWriteLatencyHistogram_95th_percentile",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getOnlineRegions_avg_time": {
+            "metric": "rpc.rpc.getOnlineRegions_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsWriteLatencyHistogram_75th_percentile": {
+            "metric": "hbase.regionserver.fsWriteLatencyHistogram_75th_percentile",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/move_num_ops": {
+            "metric": "rpc.rpc.move_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/stop_num_ops": {
+            "metric": "rpc.rpc.stop_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/replicateLogEntries_avg_time": {
+            "metric": "rpc.rpc.replicateLogEntries_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/getRequestLatency_mean": {
+            "metric": "regionserver.Server.Get_mean",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/get_avg_time": {
+            "metric": "rpc.rpc.get_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/multi_num_ops": {
+            "metric": "rpc.rpc.multi_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/next/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.next.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/addToOnlineRegions_avg_time": {
+            "metric": "rpc.rpc.addToOnlineRegions_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/deleteColumn_avg_time": {
+            "metric": "rpc.rpc.deleteColumn_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/regions": {
+            "metric": "regionserver.Server.regionCount",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/bulkLoadHFiles_avg_time": {
+            "metric": "rpc.rpc.bulkLoadHFiles_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isAborted/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.isAborted.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/stop/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.stop.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/addToOnlineRegions_num_ops": {
+            "metric": "rpc.rpc.addToOnlineRegions_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/abort/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.abort.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/removeFromOnlineRegions/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.removeFromOnlineRegions.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/blockCacheFree": {
+            "metric": "regionserver.Server.blockCacheFreeSize",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/offline_avg_time": {
+            "metric": "rpc.rpc.offline_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/unlockRow_avg_time": {
+            "metric": "rpc.rpc.unlockRow_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/blockCacheMissCount": {
+            "metric": "regionserver.Server.blockCacheMissCount",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/getCatalogTracker_num_ops": {
+            "metric": "rpc.rpc.getCatalogTracker_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkOOME/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.checkOOME.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/flushQueueSize": {
+            "metric": "regionserver.Server.flushQueueLength",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndPut/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.checkAndPut.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/close/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.close.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/execCoprocessor_avg_time": {
+            "metric": "rpc.rpc.execCoprocessor_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsWriteLatencyHistogram_mean": {
+            "metric": "hbase.regionserver.fsWriteLatencyHistogram_mean",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/createTable_num_ops": {
+            "metric": "rpc.rpc.createTable_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/process/proc_run": {
+            "metric": "proc_run",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getConfiguration_num_ops": {
+            "metric": "rpc.rpc.getConfiguration_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isStopped_avg_time": {
+            "metric": "rpc.rpc.isStopped_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcQueueTime_num_ops": {
+            "metric": "rpc.rpc.RpcQueueTimeNumOps",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rollHLogWriter_avg_time": {
+            "metric": "rpc.rpc.rollHLogWriter_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsSyncLatency_avg_time": {
+            "metric": "hbase.regionserver.fsSyncLatency_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_mean": {
+            "metric": "regionserver.Server.Delete_mean",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/addToOnlineRegions/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.addToOnlineRegions.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/getMapCompletionEvents_avg_time": {
+            "metric": "rpcdetailed.rpcdetailed.getMapCompletionEvents_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_aidle": {
+            "metric": "cpu_aidle",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsReadLatencyHistogram_mean": {
+            "metric": "hbase.regionserver.fsReadLatencyHistogram_mean",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/totalStaticIndexSizeKB": {
+            "metric": "regionserver.Server.staticIndexSize",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndDelete/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.checkAndDelete.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getFromOnlineRegions_num_ops": {
+            "metric": "rpc.rpc.getFromOnlineRegions_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/mutationsWithoutWALCount": {
+            "metric": "regionserver.Server.mutationsWithoutWALCount",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/disk/disk_total": {
+            "metric": "disk_total",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/get/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.get.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/getRequestLatency_median": {
+            "metric": "regionserver.Server.Get_median",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/openScanner_avg_time": {
+            "metric": "rpc.rpc.openScanner_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcSlowResponse_num_ops": {
+            "metric": "rpc.rpc.RpcSlowResponse_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/splitRegion/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.splitRegion.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isAborted_avg_time": {
+            "metric": "rpc.rpc.isAborted_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClosestRowBefore/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getClosestRowBefore.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/flushRegion/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.flushRegion.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/flushSize_avg_time": {
+            "metric": "hbase.regionserver.flushSize_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getBlockCacheColumnFamilySummaries/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getBlockCacheColumnFamilySummaries.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/commitPending_avg_time": {
+            "metric": "rpcdetailed.rpcdetailed.commitPending_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClosestRowBefore_avg_time": {
+            "metric": "rpc.rpc.getClosestRowBefore_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_speed": {
+            "metric": "cpu_speed",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_max": {
+            "metric": "regionserver.Server.Delete_max",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/get/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.get.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/put_num_ops": {
+            "metric": "rpc.rpc.put_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/move_avg_time": {
+            "metric": "rpc.rpc.move_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/percentFilesLocal": {
+            "metric": "regionserver.Server.percentFilesLocal",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsWriteLatency_avg_time": {
+            "metric": "hbase.regionserver.fsWriteLatency_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/increment/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.increment.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegion/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.openRegion.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/SentBytes": {
+            "metric": "rpc.rpc.SentBytes",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/getTask_num_ops": {
+            "metric": "rpcdetailed.rpcdetailed.getTask_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/addColumn_num_ops": {
+            "metric": "rpc.rpc.addColumn_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/logWarn": {
+            "metric": "jvm.JvmMetrics.LogWarn",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/maxMemoryM": {
+            "metric": "jvm.metrics.maxMemoryM",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsTimedWaiting": {
+            "metric": "jvm.JvmMetrics.ThreadsTimedWaiting",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/gcCount": {
+            "metric": "jvm.JvmMetrics.GcCount",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getOnlineRegions_num_ops": {
+            "metric": "rpc.rpc.getOnlineRegions_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/flushTime_avg_time": {
+            "metric": "hbase.regionserver.flushTime_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/done_num_ops": {
+            "metric": "rpcdetailed.rpcdetailed.done_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolVersion_num_ops": {
+            "metric": "rpc.rpc.getProtocolVersion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/memHeapUsedM": {
+            "metric": "jvm.JvmMetrics.MemHeapUsedM",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/unlockRow_num_ops": {
+            "metric": "rpc.rpc.unlockRow_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/disk/disk_free": {
+            "metric": "disk_free",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsWaiting": {
+            "metric": "jvm.JvmMetrics.ThreadsWaiting",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/slowGetCount": {
+            "metric": "regionserver.Server.slowGetCount",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/replicateLogEntries/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.replicateLogEntries.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/shutdown_avg_time": {
+            "metric": "rpc.rpc.shutdown_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/regionServerStartup_num_ops": {
+            "metric": "rpc.rpc.regionServerStartup_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_system": {
+            "metric": "cpu_system",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/requests": {
+            "metric": "regionserver.Server.totalRequestCount",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsReadLatencyHistogram_99th_percentile": {
+            "metric": "hbase.regionserver.fsReadLatencyHistogram_99th_percentile",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsWriteLatencyHistogram_99th_percentile": {
+            "metric": "hbase.regionserver.fsWriteLatencyHistogram_99th_percentile",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/storefiles": {
+            "metric": "regionserver.Server.storeFileCount",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/next_num_ops": {
+            "metric": "rpc.rpc.next_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getBlockCacheColumnFamilySummaries_avg_time": {
+            "metric": "rpc.rpc.getBlockCacheColumnFamilySummaries_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/slowDeleteCount": {
+            "metric": "regionserver.Server.slowDeleteCount",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndDelete_avg_time": {
+            "metric": "rpc.rpc.checkAndDelete_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/closeRegion/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.closeRegion.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHServerInfo_avg_time": {
+            "metric": "rpc.rpc.getHServerInfo_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/logInfo": {
+            "metric": "jvm.JvmMetrics.LogInfo",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getZooKeeper_avg_time": {
+            "metric": "rpc.rpc.getZooKeeper_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/hlogFileCount": {
+            "metric": "hbase.regionserver.hlogFileCount",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/getRequestLatency_95th_percentile": {
+            "metric": "regionserver.Server.Get_95th_percentile",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_95th_percentile": {
+            "metric": "regionserver.Server.Delete_95th_percentile",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/memstoreSizeMB": {
+            "metric": "regionserver.Server.memStoreSize",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsReadLatencyHistogram_median": {
+            "metric": "hbase.regionserver.fsReadLatencyHistogram_median",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolSignature_num_ops": {
+            "metric": "rpc.rpc.getProtocolSignature_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolVersion/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getProtocolVersion.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_75th_percentile": {
+            "metric": "regionserver.Server.Delete_75th_percentile",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/rpcAuthorizationSuccesses": {
+            "metric": "rpc.rpc.rpcAuthorizationSuccesses",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/totalStaticBloomSizeKB": {
+            "metric": "regionserver.Server.staticBloomSize",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndPut_num_ops": {
+            "metric": "rpc.rpc.checkAndPut_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/increment_avg_time": {
+            "metric": "rpc.rpc.increment_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          }
+        }
+      },
+      {
+        "type": "jmx",
+        "metrics": {
+          "metrics/hbase/regionserver/slowPutCount": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.slowPutCount",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/percentFilesLocal": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.percentFilesLocal",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_min": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Delete_min",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/blockCacheFree": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.blockCacheFreeSize",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/mutationsWithoutWALSize": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.mutationsWithoutWALSize",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/blockCacheMissCount": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.blockCacheMissCount",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/flushQueueSize": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.flushQueueLength",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_99th_percentile": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Delete_99th_percentile",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/getRequestLatency_num_ops": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Get_num_ops",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/slowAppendCount": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.slowAppendCount",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/blockCacheSize": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.blockCacheSize",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/putRequestLatency_num_ops": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Mutate_num_ops",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/slowIncrementCount": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.slowIncrementCount",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/blockCacheEvictedCount": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.blockCacheEvictionCount",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/putRequestLatency_95th_percentile": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Mutate_95th_percentile",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/compactionQueueSize": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.compactionQueueLength",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/putRequestLatency_median": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Mutate_median",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_mean": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Delete_mean",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/slowGetCount": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.slowGetCount",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/blockCacheCount": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.blockCacheCount",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/getRequestLatency_75th_percentile": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Get_75th_percentile",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/readRequestsCount": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.readRequestCount",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/putRequestLatency_min": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Mutate_min",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/storefileIndexSizeMB": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.storeFileIndexSize",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_median": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Delete_median",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/putRequestLatency_max": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Mutate_max",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/totalStaticIndexSizeKB": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.staticIndexSize",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_num_ops": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Delete_num_ops",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/putRequestLatency_mean": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Mutate_mean",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/requests": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.totalRequestCount",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/storefiles": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.storeFileCount",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/mutationsWithoutWALCount": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.mutationsWithoutWALCount",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/writeRequestsCount": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.writeRequestCount",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/getRequestLatency_median": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Get_median",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/slowDeleteCount": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.slowDeleteCount",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/putRequestLatency_99th_percentile": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Mutate_99th_percentile",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/stores": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.storeCount",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/getRequestLatency_min": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Get_min",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/getRequestLatency_95th_percentile": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Get_95th_percentile",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_95th_percentile": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Delete_95th_percentile",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/memstoreSizeMB": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.memStoreSize",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/getRequestLatency_max": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Get_max",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/getRequestLatency_mean": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Get_mean",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_75th_percentile": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Delete_75th_percentile",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_max": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Delete_max",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/putRequestLatency_75th_percentile": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Mutate_75th_percentile",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/regions": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.regionCount",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/totalStaticBloomSizeKB": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.staticBloomSize",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/blockCacheHitCount": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.blockCacheHitCount",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/getRequestLatency_99th_percentile": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Get_99th_percentile",
+            "pointInTime": true,
+            "temporal": false
+          }
+        }
+      }
+    ],
+    "HostComponent": [
+      {
+        "type": "ganglia",
+        "metrics": {
+          "metrics/hbase/regionserver/compactionTime_avg_time": {
+            "metric": "hbase.regionserver.compactionTime_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/closeRegion_num_ops": {
+            "metric": "rpc.rpc.closeRegion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/mutationsWithoutWALSize": {
+            "metric": "regionserver.Server.mutationsWithoutWALSize",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/unassign_num_ops": {
+            "metric": "rpc.rpc.unassign_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/modifyTable_num_ops": {
+            "metric": "rpc.rpc.modifyTable_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/splitRegion/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.splitRegion.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/ugi/loginSuccess_avg_time": {
+            "metric": "ugi.UgiMetrics.LoginSuccessAvgTime",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsWriteLatencyHistogram_std_dev": {
+            "metric": "hbase.regionserver.fsWriteLatencyHistogram_std_dev",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getZooKeeper/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getZooKeeper.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolVersion_avg_time": {
+            "metric": "rpc.rpc.getProtocolVersion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_99th_percentile": {
+            "metric": "regionserver.Server.Delete_99th_percentile",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/getHServerInfo/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getHServerInfo.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/load/load_one": {
+            "metric": "load_one",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClosestRowBefore_num_ops": {
+            "metric": "rpc.rpc.getClosestRowBefore_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/slowAppendCount": {
+            "metric": "regionserver.Server.slowAppendCount",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/jvm/memNonHeapUsedM": {
+            "metric": "jvm.JvmMetrics.MemNonHeapUsedM",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsWriteLatencyHistogram_max": {
+            "metric": "hbase.regionserver.fsWriteLatencyHistogram_max",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClosestRowBefore/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getClosestRowBefore.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/replicateLogEntries_num_ops": {
+            "metric": "rpc.rpc.replicateLogEntries_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/flushRegion_avg_time": {
+            "metric": "rpc.rpc.flushRegion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/lockRow_num_ops": {
+            "metric": "rpc.rpc.lockRow_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/slowIncrementCount": {
+            "metric": "regionserver.Server.slowIncrementCount",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/memory/swap_total": {
+            "metric": "swap_total",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/multi_avg_time": {
+            "metric": "rpc.rpc.multi_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/putRequestLatency_95th_percentile": {
+            "metric": "regionserver.Server.Mutate_95th_percentile",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/openRegions/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.openRegions.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/stopMaster_num_ops": {
+            "metric": "rpc.rpc.stopMaster_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/compactionQueueSize": {
+            "metric": "regionserver.Server.compactionQueueLength",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/process/proc_total": {
+            "metric": "proc_total",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/balance_avg_time": {
+            "metric": "rpc.rpc.balance_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/splitRegion_num_ops": {
+            "metric": "rpc.rpc.splitRegion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getCatalogTracker_avg_time": {
+            "metric": "rpc.rpc.getCatalogTracker_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/disk/part_max_used": {
+            "metric": "part_max_used",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/modifyColumn_avg_time": {
+            "metric": "rpc.rpc.modifyColumn_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/multi/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.multi.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/balance_num_ops": {
+            "metric": "rpc.rpc.balance_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getZooKeeper_num_ops": {
+            "metric": "rpc.rpc.getZooKeeper_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/rootIndexSizeKB": {
+            "metric": "hbase.regionserver.rootIndexSizeKB",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/flushTime_num_ops": {
+            "metric": "hbase.regionserver.flushTime_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/shutdown_num_ops": {
+            "metric": "rpc.rpc.shutdown_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/blockCacheCount": {
+            "metric": "regionserver.Server.blockCacheCount",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/flushRegion_num_ops": {
+            "metric": "rpc.rpc.flushRegion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsReadLatency_num_ops": {
+            "metric": "hbase.regionserver.fsReadLatency_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/ugi/loginSuccess_num_ops": {
+            "metric": "ugi.UgiMetrics.LoginSuccessNumOps",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isAborted/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.isAborted.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_idle": {
+            "metric": "cpu_idle",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/getRequestLatency_75th_percentile": {
+            "metric": "regionserver.Server.Get_75th_percentile",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/rollHLogWriter/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.rollHLogWriter.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/removeFromOnlineRegions/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.removeFromOnlineRegions.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolSignature/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getProtocolSignature.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/putRequestLatency_std_dev": {
+            "metric": "hbase.regionserver.putRequestLatency_std_dev",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/getRequestLatency_std_dev": {
+            "metric": "hbase.regionserver.getRequestLatency_std_dev",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/get_num_ops": {
+            "metric": "rpc.rpc.get_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getServerName_avg_time": {
+            "metric": "rpc.rpc.getServerName_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getOnlineRegions/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getOnlineRegions.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/stopMaster_avg_time": {
+            "metric": "rpc.rpc.stopMaster_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/network/bytes_in": {
+            "metric": "bytes_in",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/memNonHeapCommittedM": {
+            "metric": "jvm.JvmMetrics.MemNonHeapCommittedM",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/compactionTime_num_ops": {
+            "metric": "hbase.regionserver.compactionTime_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/removeFromOnlineRegions_num_ops": {
+            "metric": "rpc.rpc.removeFromOnlineRegions_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/abort_avg_time": {
+            "metric": "rpc.rpc.abort_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openScanner/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.openScanner.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getRegionInfo_avg_time": {
+            "metric": "rpc.rpc.getRegionInfo_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getCatalogTracker/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getCatalogTracker.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/enableTable_num_ops": {
+            "metric": "rpc.rpc.enableTable_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/lockRow/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.lockRow.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/lockRow_avg_time": {
+            "metric": "rpc.rpc.lockRow_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/stores": {
+            "metric": "regionserver.Server.storeCount",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/checkOOME_num_ops": {
+            "metric": "rpc.rpc.checkOOME_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/addColumn_avg_time": {
+            "metric": "rpc.rpc.addColumn_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/addToOnlineRegions/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.addToOnlineRegions.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/reportRSFatalError_num_ops": {
+            "metric": "rpc.rpc.reportRSFatalError_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/ugi/loginFailure_num_ops": {
+            "metric": "ugi.UgiMetrics.LoginFailureNumOps",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_wio": {
+            "metric": "cpu_wio",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getConfiguration/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getConfiguration.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getZooKeeper/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getZooKeeper.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getServerName_num_ops": {
+            "metric": "rpc.rpc.getServerName_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getServerName/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getServerName.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/reportRSFatalError_avg_time": {
+            "metric": "rpc.rpc.reportRSFatalError_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rpcAuthenticationSuccesses": {
+            "metric": "rpc.rpc.rpcAuthenticationSuccesses",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/network/pkts_in": {
+            "metric": "pkts_in",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isStopped/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.isStopped.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/disableTable_avg_time": {
+            "metric": "rpc.rpc.disableTable_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/mem_total": {
+            "metric": "mem_total",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rollHLogWriter/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.rollHLogWriter.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/memHeapCommittedM": {
+            "metric": "jvm.JvmMetrics.MemHeapCommittedM",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/abort/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.abort.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsRunnable": {
+            "metric": "jvm.JvmMetrics.ThreadsRunnable",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegion_avg_time": {
+            "metric": "rpc.rpc.openRegion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsNew": {
+            "metric": "jvm.JvmMetrics.ThreadsNew",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_min": {
+            "metric": "regionserver.Server.Delete_min",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/unlockRow/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.unlockRow.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClusterStatus_num_ops": {
+            "metric": "rpc.rpc.getClusterStatus_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHTableDescriptors_avg_time": {
+            "metric": "rpc.rpc.getHTableDescriptors_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rpcAuthorizationFailures": {
+            "metric": "rpc.rpc.rpcAuthorizationFailures",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/deleteColumn_num_ops": {
+            "metric": "rpc.rpc.deleteColumn_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/regionServerReport_avg_time": {
+            "metric": "rpc.rpc.regionServerReport_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/delete/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.delete.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcQueueTime_avg_time": {
+            "metric": "rpc.rpc.RpcQueueTimeAvgTime",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/increment_num_ops": {
+            "metric": "rpc.rpc.increment_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/stop/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.stop.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getAlterStatus_num_ops": {
+            "metric": "rpc.rpc.getAlterStatus_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/modifyColumn_num_ops": {
+            "metric": "rpc.rpc.modifyColumn_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/flushRegion/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.flushRegion.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/next_avg_time": {
+            "metric": "rpc.rpc.next_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/incrementColumnValue/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.incrementColumnValue.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/next/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.next.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/getRequestLatency_num_ops": {
+            "metric": "regionserver.Server.Get_num_ops",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/checkOOME_avg_time": {
+            "metric": "rpc.rpc.checkOOME_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcSlowResponse_avg_time": {
+            "metric": "rpc.rpc.RpcSlowResponse_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getConfiguration_avg_time": {
+            "metric": "rpc.rpc.getConfiguration_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getServerName/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getServerName.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/ReceivedBytes": {
+            "metric": "rpc.rpc.ReceivedBytes",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_nice": {
+            "metric": "cpu_nice",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/bulkLoadHFiles_num_ops": {
+            "metric": "rpc.rpc.bulkLoadHFiles_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsReadLatency_avg_time": {
+            "metric": "hbase.regionserver.fsReadLatency_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/unassign_avg_time": {
+            "metric": "rpc.rpc.unassign_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/flushSize_num_ops": {
+            "metric": "hbase.regionserver.flushSize_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/NumOpenConnections": {
+            "metric": "rpc.rpc.NumOpenConnections",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/gcTimeMillis": {
+            "metric": "jvm.JvmMetrics.GcTimeMillis",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/delete/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.delete.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/multi/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.multi.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolVersion/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getProtocolVersion.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsTerminated": {
+            "metric": "jvm.JvmMetrics.ThreadsTerminated",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/network/bytes_out": {
+            "metric": "bytes_out",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndDelete/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.checkAndDelete.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/balanceSwitch_avg_time": {
+            "metric": "rpc.rpc.balanceSwitch_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsReadLatencyHistogram_75th_percentile": {
+            "metric": "hbase.regionserver.fsReadLatencyHistogram_75th_percentile",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/load/load_five": {
+            "metric": "load_five",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/putRequestLatency_max": {
+            "metric": "regionserver.Server.Mutate_max",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_num_ops": {
+            "metric": "regionserver.Server.Delete_num_ops",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/boottime": {
+            "metric": "boottime",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegion/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.openRegion.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/lockRow/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.lockRow.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/compactRegion_avg_time": {
+            "metric": "rpc.rpc.compactRegion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegion_num_ops": {
+            "metric": "rpc.rpc.openRegion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/callQueueLen": {
+            "metric": "rpc.rpc.callQueueLen",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolSignature/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getProtocolSignature.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/writeRequestsCount": {
+            "metric": "regionserver.Server.writeRequestCount",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsWriteLatencyHistogram_num_ops": {
+            "metric": "hbase.regionserver.fsWriteLatencyHistogram_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/compactRegion/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.compactRegion.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsSyncLatency_num_ops": {
+            "metric": "hbase.regionserver.fsSyncLatency_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/execCoprocessor_num_ops": {
+            "metric": "rpc.rpc.execCoprocessor_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsWriteLatencyHistogram_95th_percentile": {
+            "metric": "hbase.regionserver.fsWriteLatencyHistogram_95th_percentile",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHServerInfo/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getHServerInfo.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getOnlineRegions_avg_time": {
+            "metric": "rpc.rpc.getOnlineRegions_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/getRequestLatency_min": {
+            "metric": "regionserver.Server.Get_min",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsWriteLatencyHistogram_75th_percentile": {
+            "metric": "hbase.regionserver.fsWriteLatencyHistogram_75th_percentile",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getCatalogTracker/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getCatalogTracker.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/incrementColumnValue_avg_time": {
+            "metric": "rpc.rpc.incrementColumnValue_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/move_num_ops": {
+            "metric": "rpc.rpc.move_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcProcessingTime_num_ops": {
+            "metric": "rpc.rpc.RpcProcessingTimeNumOps",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/stop_num_ops": {
+            "metric": "rpc.rpc.stop_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/replicateLogEntries_avg_time": {
+            "metric": "rpc.rpc.replicateLogEntries_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/deleteTable_num_ops": {
+            "metric": "rpc.rpc.deleteTable_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/getRequestLatency_mean": {
+            "metric": "regionserver.Server.Get_mean",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/get_avg_time": {
+            "metric": "rpc.rpc.get_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/logError": {
+            "metric": "jvm.JvmMetrics.LogError",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/multi_num_ops": {
+            "metric": "rpc.rpc.multi_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/next/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.next.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getBlockCacheColumnFamilySummaries_num_ops": {
+            "metric": "rpc.rpc.getBlockCacheColumnFamilySummaries_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/putRequestLatency_75th_percentile": {
+            "metric": "regionserver.Server.Mutate_75th_percentile",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/getFromOnlineRegions/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getFromOnlineRegions.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/addToOnlineRegions_avg_time": {
+            "metric": "rpc.rpc.addToOnlineRegions_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getRegionInfo/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getRegionInfo.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/deleteColumn_avg_time": {
+            "metric": "rpc.rpc.deleteColumn_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/regions": {
+            "metric": "regionserver.Server.regionCount",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/blockCacheHitCount": {
+            "metric": "regionserver.Server.blockCacheHitCount",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/bulkLoadHFiles_avg_time": {
+            "metric": "rpc.rpc.bulkLoadHFiles_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isAborted/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.isAborted.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/exists_avg_time": {
+            "metric": "rpc.rpc.exists_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/slowPutCount": {
+            "metric": "regionserver.Server.slowPutCount",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/stop/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.stop.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/addToOnlineRegions_num_ops": {
+            "metric": "rpc.rpc.addToOnlineRegions_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsWriteLatency_num_ops": {
+            "metric": "hbase.regionserver.fsWriteLatency_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/abort/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.abort.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/removeFromOnlineRegions/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.removeFromOnlineRegions.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getOnlineRegions/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getOnlineRegions.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/exists/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.exists.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/offline_avg_time": {
+            "metric": "rpc.rpc.offline_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/blockCacheFree": {
+            "metric": "regionserver.Server.blockCacheFreeSize",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/replicateLogEntries/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.replicateLogEntries.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/unlockRow_avg_time": {
+            "metric": "rpc.rpc.unlockRow_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/delete_num_ops": {
+            "metric": "rpc.rpc.delete_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/blockCacheMissCount": {
+            "metric": "regionserver.Server.blockCacheMissCount",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/getCatalogTracker_num_ops": {
+            "metric": "rpc.rpc.getCatalogTracker_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/regionServerStartup_avg_time": {
+            "metric": "rpc.rpc.regionServerStartup_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/exists_num_ops": {
+            "metric": "rpc.rpc.exists_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkOOME/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.checkOOME.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/flushQueueSize": {
+            "metric": "regionserver.Server.flushQueueLength",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndDelete_num_ops": {
+            "metric": "rpc.rpc.checkAndDelete_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndPut/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.checkAndPut.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/closeRegion_avg_time": {
+            "metric": "rpc.rpc.closeRegion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/close/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.close.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolSignature_avg_time": {
+            "metric": "rpc.rpc.getProtocolSignature_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/createTable_num_ops": {
+            "metric": "rpc.rpc.createTable_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/assign_avg_time": {
+            "metric": "rpc.rpc.assign_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/execCoprocessor_avg_time": {
+            "metric": "rpc.rpc.execCoprocessor_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsWriteLatencyHistogram_mean": {
+            "metric": "hbase.regionserver.fsWriteLatencyHistogram_mean",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/compactionSize_num_ops": {
+            "metric": "hbase.regionserver.compactionSize_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/close_avg_time": {
+            "metric": "rpc.rpc.close_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/process/proc_run": {
+            "metric": "proc_run",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/blockCacheSize": {
+            "metric": "regionserver.Server.blockCacheSize",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/putRequestLatency_num_ops": {
+            "metric": "regionserver.Server.Mutate_num_ops",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/getConfiguration_num_ops": {
+            "metric": "rpc.rpc.getConfiguration_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsBlocked": {
+            "metric": "jvm.JvmMetrics.ThreadsBlocked",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHServerInfo_num_ops": {
+            "metric": "rpc.rpc.getHServerInfo_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcQueueTime_num_ops": {
+            "metric": "rpc.rpc.RpcQueueTimeNumOps",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isStopped_avg_time": {
+            "metric": "rpc.rpc.isStopped_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/stop_avg_time": {
+            "metric": "rpc.rpc.stop_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rollHLogWriter_avg_time": {
+            "metric": "rpc.rpc.rollHLogWriter_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsReadLatencyHistogram_num_ops": {
+            "metric": "hbase.regionserver.fsReadLatencyHistogram_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsSyncLatency_avg_time": {
+            "metric": "hbase.regionserver.fsSyncLatency_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/putRequestLatency_median": {
+            "metric": "regionserver.Server.Mutate_median",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/isStopped_num_ops": {
+            "metric": "rpc.rpc.isStopped_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/addToOnlineRegions/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.addToOnlineRegions.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_mean": {
+            "metric": "regionserver.Server.Delete_mean",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsWriteLatencyHistogram_median": {
+            "metric": "hbase.regionserver.fsWriteLatencyHistogram_median",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isMasterRunning_avg_time": {
+            "metric": "rpc.rpc.isMasterRunning_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_std_dev": {
+            "metric": "hbase.regionserver.deleteRequestLatency_std_dev",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/incrementColumnValue_num_ops": {
+            "metric": "rpc.rpc.incrementColumnValue_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/bulkLoadHFiles/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.bulkLoadHFiles.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/hdfsBlocksLocalityIndex": {
+            "metric": "hbase.regionserver.hdfsBlocksLocalityIndex",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_aidle": {
+            "metric": "cpu_aidle",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/mem_free": {
+            "metric": "mem_free",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/readRequestsCount": {
+            "metric": "regionserver.Server.readRequestCount",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/putRequestLatency_min": {
+            "metric": "regionserver.Server.Mutate_min",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/execCoprocessor/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.execCoprocessor.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/storefileIndexSizeMB": {
+            "metric": "regionserver.Server.storeFileIndexSize",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/close/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.close.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/assign_num_ops": {
+            "metric": "rpc.rpc.assign_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsReadLatencyHistogram_mean": {
+            "metric": "hbase.regionserver.fsReadLatencyHistogram_mean",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_median": {
+            "metric": "regionserver.Server.Delete_median",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/totalStaticIndexSizeKB": {
+            "metric": "regionserver.Server.staticIndexSize",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/enableTable_avg_time": {
+            "metric": "rpc.rpc.enableTable_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/putRequestLatency_mean": {
+            "metric": "regionserver.Server.Mutate_mean",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/incrementColumnValue/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.incrementColumnValue.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndDelete/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.checkAndDelete.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/network/pkts_out": {
+            "metric": "pkts_out",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getFromOnlineRegions_num_ops": {
+            "metric": "rpc.rpc.getFromOnlineRegions_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/close_num_ops": {
+            "metric": "rpc.rpc.close_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/mutationsWithoutWALCount": {
+            "metric": "regionserver.Server.mutationsWithoutWALCount",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/memory/mem_cached": {
+            "metric": "mem_cached",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/disk/disk_total": {
+            "metric": "disk_total",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getConfiguration/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getConfiguration.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/compactionSize_avg_time": {
+            "metric": "hbase.regionserver.compactionSize_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/get/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.get.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/getRequestLatency_median": {
+            "metric": "regionserver.Server.Get_median",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/openScanner_avg_time": {
+            "metric": "rpc.rpc.openScanner_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcSlowResponse_num_ops": {
+            "metric": "rpc.rpc.RpcSlowResponse_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsReadLatencyHistogram_min": {
+            "metric": "hbase.regionserver.fsReadLatencyHistogram_min",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getFromOnlineRegions_avg_time": {
+            "metric": "rpc.rpc.getFromOnlineRegions_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/splitRegion/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.splitRegion.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/flushSize_avg_time": {
+            "metric": "hbase.regionserver.flushSize_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/flushRegion/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.flushRegion.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClosestRowBefore/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getClosestRowBefore.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isAborted_avg_time": {
+            "metric": "rpc.rpc.isAborted_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/increment/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.increment.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getBlockCacheColumnFamilySummaries/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getBlockCacheColumnFamilySummaries.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/deleteTable_avg_time": {
+            "metric": "rpc.rpc.deleteTable_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/put/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.put.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/delete_avg_time": {
+            "metric": "rpc.rpc.delete_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_max": {
+            "metric": "regionserver.Server.Delete_max",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_speed": {
+            "metric": "cpu_speed",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClosestRowBefore_avg_time": {
+            "metric": "rpc.rpc.getClosestRowBefore_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/get/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.get.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/compactRegion/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.compactRegion.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegions/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.openRegions.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcProcessingTime_avg_time": {
+            "metric": "rpc.rpc.RpcProcessingTimeAvgTime",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/put_num_ops": {
+            "metric": "rpc.rpc.put_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/move_avg_time": {
+            "metric": "rpc.rpc.move_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rpcAuthenticationFailures": {
+            "metric": "rpc.rpc.rpcAuthenticationFailures",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/openScanner/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.openScanner.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClusterStatus_avg_time": {
+            "metric": "rpc.rpc.getClusterStatus_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/unlockRow/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.unlockRow.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/percentFilesLocal": {
+            "metric": "regionserver.Server.percentFilesLocal",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/removeFromOnlineRegions_avg_time": {
+            "metric": "rpc.rpc.removeFromOnlineRegions_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/modifyTable_avg_time": {
+            "metric": "rpc.rpc.modifyTable_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/put/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.put.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndPut_avg_time": {
+            "metric": "rpc.rpc.checkAndPut_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isStopped/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.isStopped.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsWriteLatency_avg_time": {
+            "metric": "hbase.regionserver.fsWriteLatency_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/blockCacheHitRatio": {
+            "metric": "hbase.regionserver.blockCacheHitRatio",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/put_avg_time": {
+            "metric": "rpc.rpc.put_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/increment/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.increment.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegion/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.openRegion.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/SentBytes": {
+            "metric": "rpc.rpc.SentBytes",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/createTable_avg_time": {
+            "metric": "rpc.rpc.createTable_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsReadLatencyHistogram_std_dev": {
+            "metric": "hbase.regionserver.fsReadLatencyHistogram_std_dev",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getRegionInfo/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getRegionInfo.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/addColumn_num_ops": {
+            "metric": "rpc.rpc.addColumn_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getAlterStatus_avg_time": {
+            "metric": "rpc.rpc.getAlterStatus_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHTableDescriptors_num_ops": {
+            "metric": "rpc.rpc.getHTableDescriptors_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getRegionInfo_num_ops": {
+            "metric": "rpc.rpc.getRegionInfo_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/maxMemoryM": {
+            "metric": "jvm.metrics.maxMemoryM",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/logWarn": {
+            "metric": "jvm.JvmMetrics.LogWarn",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/compactRegion_num_ops": {
+            "metric": "rpc.rpc.compactRegion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsTimedWaiting": {
+            "metric": "jvm.JvmMetrics.ThreadsTimedWaiting",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getFromOnlineRegions/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getFromOnlineRegions.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isAborted_num_ops": {
+            "metric": "rpc.rpc.isAborted_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsReadLatencyHistogram_max": {
+            "metric": "hbase.regionserver.fsReadLatencyHistogram_max",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/gcCount": {
+            "metric": "jvm.JvmMetrics.GcCount",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/flushTime_avg_time": {
+            "metric": "hbase.regionserver.flushTime_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getOnlineRegions_num_ops": {
+            "metric": "rpc.rpc.getOnlineRegions_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/blockCacheEvictedCount": {
+            "metric": "regionserver.Server.blockCacheEvictionCount",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/checkOOME/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.checkOOME.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/memHeapUsedM": {
+            "metric": "jvm.JvmMetrics.MemHeapUsedM",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolVersion_num_ops": {
+            "metric": "rpc.rpc.getProtocolVersion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsWaiting": {
+            "metric": "jvm.JvmMetrics.ThreadsWaiting",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/disk/disk_free": {
+            "metric": "disk_free",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/unlockRow_num_ops": {
+            "metric": "rpc.rpc.unlockRow_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/slowGetCount": {
+            "metric": "regionserver.Server.slowGetCount",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/replicateLogEntries/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.replicateLogEntries.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/disableTable_num_ops": {
+            "metric": "rpc.rpc.disableTable_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/mem_buffers": {
+            "metric": "mem_buffers",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/shutdown_avg_time": {
+            "metric": "rpc.rpc.shutdown_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openScanner_num_ops": {
+            "metric": "rpc.rpc.openScanner_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/regionServerStartup_num_ops": {
+            "metric": "rpc.rpc.regionServerStartup_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/bulkLoadHFiles/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.bulkLoadHFiles.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_user": {
+            "metric": "cpu_user",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/swap_free": {
+            "metric": "swap_free",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_system": {
+            "metric": "cpu_system",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/requests": {
+            "metric": "regionserver.Server.totalRequestCount",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/exists/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.exists.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegions_avg_time": {
+            "metric": "rpc.rpc.openRegions_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/regionServerReport_num_ops": {
+            "metric": "rpc.rpc.regionServerReport_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsReadLatencyHistogram_99th_percentile": {
+            "metric": "hbase.regionserver.fsReadLatencyHistogram_99th_percentile",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsWriteLatencyHistogram_99th_percentile": {
+            "metric": "hbase.regionserver.fsWriteLatencyHistogram_99th_percentile",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/storefiles": {
+            "metric": "regionserver.Server.storeFileCount",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/next_num_ops": {
+            "metric": "rpc.rpc.next_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getBlockCacheColumnFamilySummaries_avg_time": {
+            "metric": "rpc.rpc.getBlockCacheColumnFamilySummaries_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/slowDeleteCount": {
+            "metric": "regionserver.Server.slowDeleteCount",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/closeRegion/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.closeRegion.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndDelete_avg_time": {
+            "metric": "rpc.rpc.checkAndDelete_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/putRequestLatency_99th_percentile": {
+            "metric": "regionserver.Server.Mutate_99th_percentile",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/load/load_fifteen": {
+            "metric": "load_fifteen",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/logInfo": {
+            "metric": "jvm.JvmMetrics.LogInfo",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHServerInfo_avg_time": {
+            "metric": "rpc.rpc.getHServerInfo_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getBlockCacheColumnFamilySummaries/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getBlockCacheColumnFamilySummaries.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getZooKeeper_avg_time": {
+            "metric": "rpc.rpc.getZooKeeper_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/execCoprocessor/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.execCoprocessor.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/balanceSwitch_num_ops": {
+            "metric": "rpc.rpc.balanceSwitch_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/hlogFileCount": {
+            "metric": "hbase.regionserver.hlogFileCount",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isMasterRunning_num_ops": {
+            "metric": "rpc.rpc.isMasterRunning_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/offline_num_ops": {
+            "metric": "rpc.rpc.offline_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_95th_percentile": {
+            "metric": "regionserver.Server.Delete_95th_percentile",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/getRequestLatency_95th_percentile": {
+            "metric": "regionserver.Server.Get_95th_percentile",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/memory/mem_shared": {
+            "metric": "mem_shared",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/getRequestLatency_max": {
+            "metric": "regionserver.Server.Get_max",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/memstoreSizeMB": {
+            "metric": "regionserver.Server.memStoreSize",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsReadLatencyHistogram_median": {
+            "metric": "hbase.regionserver.fsReadLatencyHistogram_median",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolSignature_num_ops": {
+            "metric": "rpc.rpc.getProtocolSignature_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/abort_num_ops": {
+            "metric": "rpc.rpc.abort_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsReadLatencyHistogram_95th_percentile": {
+            "metric": "hbase.regionserver.fsReadLatencyHistogram_95th_percentile",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_75th_percentile": {
+            "metric": "regionserver.Server.Delete_75th_percentile",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolVersion/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getProtocolVersion.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/blockCacheHitCachingRatio": {
+            "metric": "hbase.regionserver.blockCacheHitCachingRatio",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/ugi/loginFailure_avg_time": {
+            "metric": "ugi.UgiMetrics.LoginFailureAvgTime",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_num": {
+            "metric": "cpu_num",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rollHLogWriter_num_ops": {
+            "metric": "rpc.rpc.rollHLogWriter_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rpcAuthorizationSuccesses": {
+            "metric": "rpc.rpc.rpcAuthorizationSuccesses",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegions_num_ops": {
+            "metric": "rpc.rpc.openRegions_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/logFatal": {
+            "metric": "jvm.JvmMetrics.LogFatal",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/splitRegion_avg_time": {
+            "metric": "rpc.rpc.splitRegion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/closeRegion/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.closeRegion.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/totalStaticBloomSizeKB": {
+            "metric": "regionserver.Server.staticBloomSize",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndPut_num_ops": {
+            "metric": "rpc.rpc.checkAndPut_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndPut/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.checkAndPut.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/getRequestLatency_99th_percentile": {
+            "metric": "regionserver.Server.Get_99th_percentile",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/hbase/regionserver/fsWriteLatencyHistogram_min": {
+            "metric": "hbase.regionserver.fsWriteLatencyHistogram_min",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/increment_avg_time": {
+            "metric": "rpc.rpc.increment_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          }
+        }
+      },
+      {
+        "type": "jmx",
+        "metrics": {
+          "metrics/hbase/regionserver/slowPutCount": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.slowPutCount",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/percentFilesLocal": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.percentFilesLocal",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_min": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Delete_min",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/blockCacheFree": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.blockCacheFreeSize",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/mutationsWithoutWALSize": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.mutationsWithoutWALSize",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/blockCacheMissCount": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.blockCacheMissCount",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/flushQueueSize": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.flushQueueLength",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_99th_percentile": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Delete_99th_percentile",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/getRequestLatency_num_ops": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Get_num_ops",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/slowAppendCount": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.slowAppendCount",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/blockCacheSize": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.blockCacheSize",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/putRequestLatency_num_ops": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Mutate_num_ops",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/slowIncrementCount": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.slowIncrementCount",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/blockCacheEvictedCount": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.blockCacheEvictionCount",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/putRequestLatency_95th_percentile": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Mutate_95th_percentile",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/compactionQueueSize": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.compactionQueueLength",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/putRequestLatency_median": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Mutate_median",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_mean": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Delete_mean",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/slowGetCount": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.slowGetCount",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/blockCacheCount": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.blockCacheCount",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/getRequestLatency_75th_percentile": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Get_75th_percentile",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/readRequestsCount": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.readRequestCount",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/putRequestLatency_min": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Mutate_min",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/storefileIndexSizeMB": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.storeFileIndexSize",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_median": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Delete_median",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/putRequestLatency_max": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Mutate_max",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/totalStaticIndexSizeKB": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.staticIndexSize",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_num_ops": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Delete_num_ops",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/putRequestLatency_mean": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Mutate_mean",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/requests": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.totalRequestCount",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/storefiles": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.storeFileCount",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/mutationsWithoutWALCount": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.mutationsWithoutWALCount",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/writeRequestsCount": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.writeRequestCount",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/getRequestLatency_median": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Get_median",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/slowDeleteCount": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.slowDeleteCount",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/putRequestLatency_99th_percentile": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Mutate_99th_percentile",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/stores": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.storeCount",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/getRequestLatency_min": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Get_min",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/getRequestLatency_95th_percentile": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Get_95th_percentile",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_95th_percentile": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Delete_95th_percentile",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/memstoreSizeMB": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.memStoreSize",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/getRequestLatency_max": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Get_max",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/getRequestLatency_mean": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Get_mean",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_75th_percentile": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Delete_75th_percentile",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/deleteRequestLatency_max": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Delete_max",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/putRequestLatency_75th_percentile": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Mutate_75th_percentile",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/regions": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.regionCount",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/totalStaticBloomSizeKB": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.staticBloomSize",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/blockCacheHitCount": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.blockCacheHitCount",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/regionserver/getRequestLatency_99th_percentile": {
+            "metric": "Hadoop:service=HBase,name=RegionServer,sub=Server.Get_99th_percentile",
+            "pointInTime": true,
+            "temporal": false
+          }
+        }
+      }
+    ]
+  },
+  "HBASE_CLIENT": {
+    "Component": [
+      {
+        "type": "ganglia",
+        "metrics": {
+          "metrics/rpc/closeRegion_num_ops": {
+            "metric": "rpc.rpc.closeRegion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/unassign_num_ops": {
+            "metric": "rpc.rpc.unassign_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/modifyTable_num_ops": {
+            "metric": "rpc.rpc.modifyTable_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/getProtocolVersion_num_ops": {
+            "metric": "rpcdetailed.rpcdetailed.getProtocolVersion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/splitRegion/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.splitRegion.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/ugi/loginSuccess_avg_time": {
+            "metric": "ugi.UgiMetrics.LoginSuccessAvgTime",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolVersion_avg_time": {
+            "metric": "rpc.rpc.getProtocolVersion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getZooKeeper/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getZooKeeper.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHServerInfo/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getHServerInfo.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/load/load_one": {
+            "metric": "load_one",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClosestRowBefore_num_ops": {
+            "metric": "rpc.rpc.getClosestRowBefore_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/memNonHeapUsedM": {
+            "metric": "jvm.JvmMetrics.MemNonHeapUsedM",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClosestRowBefore/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getClosestRowBefore.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/getTask_avg_time": {
+            "metric": "rpcdetailed.rpcdetailed.getTask_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/replicateLogEntries_num_ops": {
+            "metric": "rpc.rpc.replicateLogEntries_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/flushRegion_avg_time": {
+            "metric": "rpc.rpc.flushRegion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/lockRow_num_ops": {
+            "metric": "rpc.rpc.lockRow_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/swap_total": {
+            "metric": "swap_total",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/multi_avg_time": {
+            "metric": "rpc.rpc.multi_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegions/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.openRegions.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/stopMaster_num_ops": {
+            "metric": "rpc.rpc.stopMaster_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/process/proc_total": {
+            "metric": "proc_total",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/balance_avg_time": {
+            "metric": "rpc.rpc.balance_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/disk/part_max_used": {
+            "metric": "part_max_used",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/splitRegion_num_ops": {
+            "metric": "rpc.rpc.splitRegion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getCatalogTracker_avg_time": {
+            "metric": "rpc.rpc.getCatalogTracker_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/modifyColumn_avg_time": {
+            "metric": "rpc.rpc.modifyColumn_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/multi/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.multi.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/balance_num_ops": {
+            "metric": "rpc.rpc.balance_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getZooKeeper_num_ops": {
+            "metric": "rpc.rpc.getZooKeeper_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/shutdown_num_ops": {
+            "metric": "rpc.rpc.shutdown_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/flushRegion_num_ops": {
+            "metric": "rpc.rpc.flushRegion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/ugi/loginSuccess_num_ops": {
+            "metric": "ugi.UgiMetrics.LoginSuccessNumOps",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isAborted/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.isAborted.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_idle": {
+            "metric": "cpu_idle",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rollHLogWriter/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.rollHLogWriter.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/removeFromOnlineRegions/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.removeFromOnlineRegions.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolSignature/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getProtocolSignature.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/get_num_ops": {
+            "metric": "rpc.rpc.get_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getServerName_avg_time": {
+            "metric": "rpc.rpc.getServerName_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/stopMaster_avg_time": {
+            "metric": "rpc.rpc.stopMaster_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getOnlineRegions/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getOnlineRegions.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/network/bytes_in": {
+            "metric": "bytes_in",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/memNonHeapCommittedM": {
+            "metric": "jvm.JvmMetrics.MemNonHeapCommittedM",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/removeFromOnlineRegions_num_ops": {
+            "metric": "rpc.rpc.removeFromOnlineRegions_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/ping_avg_time": {
+            "metric": "rpcdetailed.rpcdetailed.ping_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openScanner/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.openScanner.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/abort_avg_time": {
+            "metric": "rpc.rpc.abort_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getRegionInfo_avg_time": {
+            "metric": "rpc.rpc.getRegionInfo_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getCatalogTracker/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getCatalogTracker.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/getBlockLocalPathInfo_num_ops": {
+            "metric": "rpcdetailed.rpcdetailed.getBlockLocalPathInfo_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/enableTable_num_ops": {
+            "metric": "rpc.rpc.enableTable_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/lockRow/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.lockRow.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/lockRow_avg_time": {
+            "metric": "rpc.rpc.lockRow_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/commitPending_num_ops": {
+            "metric": "rpcdetailed.rpcdetailed.commitPending_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/addColumn_avg_time": {
+            "metric": "rpc.rpc.addColumn_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkOOME_num_ops": {
+            "metric": "rpc.rpc.checkOOME_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/addToOnlineRegions/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.addToOnlineRegions.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/reportRSFatalError_num_ops": {
+            "metric": "rpc.rpc.reportRSFatalError_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/ugi/loginFailure_num_ops": {
+            "metric": "ugi.UgiMetrics.LoginFailureNumOps",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_wio": {
+            "metric": "cpu_wio",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getConfiguration/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getConfiguration.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getZooKeeper/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getZooKeeper.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getServerName_num_ops": {
+            "metric": "rpc.rpc.getServerName_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getServerName/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getServerName.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/reportRSFatalError_avg_time": {
+            "metric": "rpc.rpc.reportRSFatalError_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rpcAuthenticationSuccesses": {
+            "metric": "rpc.rpc.RpcAuthenticationSuccesses",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/network/pkts_in": {
+            "metric": "pkts_in",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isStopped/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.isStopped.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/disableTable_avg_time": {
+            "metric": "rpc.rpc.disableTable_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/mem_total": {
+            "metric": "mem_total",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rollHLogWriter/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.rollHLogWriter.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/memHeapCommittedM": {
+            "metric": "jvm.JvmMetrics.MemHeapCommittedM",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/abort/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.abort.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsRunnable": {
+            "metric": "jvm.JvmMetrics.ThreadsRunnable",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegion_avg_time": {
+            "metric": "rpc.rpc.openRegion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsNew": {
+            "metric": "jvm.JvmMetrics.ThreadsNew",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/unlockRow/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.unlockRow.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClusterStatus_num_ops": {
+            "metric": "rpc.rpc.getClusterStatus_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHTableDescriptors_avg_time": {
+            "metric": "rpc.rpc.getHTableDescriptors_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rpcAuthorizationFailures": {
+            "metric": "rpc.rpc.RpcAuthorizationFailures",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/deleteColumn_num_ops": {
+            "metric": "rpc.rpc.deleteColumn_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/regionServerReport_avg_time": {
+            "metric": "rpc.rpc.regionServerReport_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/delete/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.delete.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcQueueTime_avg_time": {
+            "metric": "rpc.rpc.RpcQueueTimeAvgTime",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/increment_num_ops": {
+            "metric": "rpc.rpc.increment_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/getMapCompletionEvents_num_ops": {
+            "metric": "rpcdetailed.rpcdetailed.getMapCompletionEvents_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/stop/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.stop.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getAlterStatus_num_ops": {
+            "metric": "rpc.rpc.getAlterStatus_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/modifyColumn_num_ops": {
+            "metric": "rpc.rpc.modifyColumn_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/flushRegion/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.flushRegion.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/incrementColumnValue/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.incrementColumnValue.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/next_avg_time": {
+            "metric": "rpc.rpc.next_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkOOME_avg_time": {
+            "metric": "rpc.rpc.checkOOME_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/next/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.next.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcSlowResponse_avg_time": {
+            "metric": "rpc.rpc.RpcSlowResponse_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getConfiguration_avg_time": {
+            "metric": "rpc.rpc.getConfiguration_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/ReceivedBytes": {
+            "metric": "rpc.rpc.ReceivedBytes",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getServerName/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getServerName.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_nice": {
+            "metric": "cpu_nice",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/bulkLoadHFiles_num_ops": {
+            "metric": "rpc.rpc.bulkLoadHFiles_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/ping_num_ops": {
+            "metric": "rpcdetailed.rpcdetailed.ping_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/unassign_avg_time": {
+            "metric": "rpc.rpc.unassign_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/NumOpenConnections": {
+            "metric": "rpc.rpc.NumOpenConnections",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/gcTimeMillis": {
+            "metric": "jvm.JvmMetrics.GcTimeMillis",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/delete/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.delete.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/canCommit_num_ops": {
+            "metric": "rpcdetailed.rpcdetailed.canCommit_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/multi/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.multi.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsTerminated": {
+            "metric": "jvm.JvmMetrics.ThreadsTerminated",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolVersion/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getProtocolVersion.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndDelete/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.checkAndDelete.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/network/bytes_out": {
+            "metric": "bytes_out",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/balanceSwitch_avg_time": {
+            "metric": "rpc.rpc.balanceSwitch_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/load/load_five": {
+            "metric": "load_five",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/boottime": {
+            "metric": "boottime",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegion/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.openRegion.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/lockRow/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.lockRow.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/compactRegion_avg_time": {
+            "metric": "rpc.rpc.compactRegion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegion_num_ops": {
+            "metric": "rpc.rpc.openRegion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/callQueueLen": {
+            "metric": "rpc.rpc.callQueueLen",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/compactRegion/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.compactRegion.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolSignature/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getProtocolSignature.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/execCoprocessor_num_ops": {
+            "metric": "rpc.rpc.execCoprocessor_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/canCommit_avg_time": {
+            "metric": "rpcdetailed.rpcdetailed.canCommit_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHServerInfo/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getHServerInfo.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getOnlineRegions_avg_time": {
+            "metric": "rpc.rpc.getOnlineRegions_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getCatalogTracker/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getCatalogTracker.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/incrementColumnValue_avg_time": {
+            "metric": "rpc.rpc.incrementColumnValue_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/move_num_ops": {
+            "metric": "rpc.rpc.move_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcProcessingTime_num_ops": {
+            "metric": "rpc.rpc.RpcProcessingTimeNumOps",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/stop_num_ops": {
+            "metric": "rpc.rpc.stop_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/replicateLogEntries_avg_time": {
+            "metric": "rpc.rpc.replicateLogEntries_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/deleteTable_num_ops": {
+            "metric": "rpc.rpc.deleteTable_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/logError": {
+            "metric": "jvm.JvmMetrics.LogError",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/get_avg_time": {
+            "metric": "rpc.rpc.get_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/multi_num_ops": {
+            "metric": "rpc.rpc.multi_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/next/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.next.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getBlockCacheColumnFamilySummaries_num_ops": {
+            "metric": "rpc.rpc.getBlockCacheColumnFamilySummaries_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getFromOnlineRegions/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getFromOnlineRegions.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/addToOnlineRegions_avg_time": {
+            "metric": "rpc.rpc.addToOnlineRegions_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/deleteColumn_avg_time": {
+            "metric": "rpc.rpc.deleteColumn_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getRegionInfo/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getRegionInfo.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/bulkLoadHFiles_avg_time": {
+            "metric": "rpc.rpc.bulkLoadHFiles_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/exists_avg_time": {
+            "metric": "rpc.rpc.exists_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isAborted/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.isAborted.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/stop/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.stop.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/addToOnlineRegions_num_ops": {
+            "metric": "rpc.rpc.addToOnlineRegions_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/abort/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.abort.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/removeFromOnlineRegions/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.removeFromOnlineRegions.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getOnlineRegions/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getOnlineRegions.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/exists/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.exists.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/offline_avg_time": {
+            "metric": "rpc.rpc.offline_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/replicateLogEntries/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.replicateLogEntries.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/unlockRow_avg_time": {
+            "metric": "rpc.rpc.unlockRow_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/delete_num_ops": {
+            "metric": "rpc.rpc.delete_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getCatalogTracker_num_ops": {
+            "metric": "rpc.rpc.getCatalogTracker_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/regionServerStartup_avg_time": {
+            "metric": "rpc.rpc.regionServerStartup_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkOOME/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.checkOOME.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/exists_num_ops": {
+            "metric": "rpc.rpc.exists_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndDelete_num_ops": {
+            "metric": "rpc.rpc.checkAndDelete_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndPut/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.checkAndPut.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/closeRegion_avg_time": {
+            "metric": "rpc.rpc.closeRegion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/getBlockLocalPathInfo_avg_time": {
+            "metric": "rpcdetailed.rpcdetailed.getBlockLocalPathInfo_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/close/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.close.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolSignature_avg_time": {
+            "metric": "rpc.rpc.getProtocolSignature_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/assign_avg_time": {
+            "metric": "rpc.rpc.assign_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/createTable_num_ops": {
+            "metric": "rpc.rpc.createTable_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/execCoprocessor_avg_time": {
+            "metric": "rpc.rpc.execCoprocessor_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/close_avg_time": {
+            "metric": "rpc.rpc.close_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/process/proc_run": {
+            "metric": "proc_run",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getConfiguration_num_ops": {
+            "metric": "rpc.rpc.getConfiguration_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsBlocked": {
+            "metric": "jvm.JvmMetrics.ThreadsBlocked",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHServerInfo_num_ops": {
+            "metric": "rpc.rpc.getHServerInfo_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isStopped_avg_time": {
+            "metric": "rpc.rpc.isStopped_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcQueueTime_num_ops": {
+            "metric": "rpc.rpc.RpcQueueTimeNumOps",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/stop_avg_time": {
+            "metric": "rpc.rpc.stop_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rollHLogWriter_avg_time": {
+            "metric": "rpc.rpc.rollHLogWriter_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isStopped_num_ops": {
+            "metric": "rpc.rpc.isStopped_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/addToOnlineRegions/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.addToOnlineRegions.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/getMapCompletionEvents_avg_time": {
+            "metric": "rpcdetailed.rpcdetailed.getMapCompletionEvents_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isMasterRunning_avg_time": {
+            "metric": "rpc.rpc.isMasterRunning_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/incrementColumnValue_num_ops": {
+            "metric": "rpc.rpc.incrementColumnValue_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/bulkLoadHFiles/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.bulkLoadHFiles.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_aidle": {
+            "metric": "cpu_aidle",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/mem_free": {
+            "metric": "mem_free",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/execCoprocessor/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.execCoprocessor.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/close/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.close.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/assign_num_ops": {
+            "metric": "rpc.rpc.assign_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/enableTable_avg_time": {
+            "metric": "rpc.rpc.enableTable_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/incrementColumnValue/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.incrementColumnValue.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndDelete/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.checkAndDelete.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/network/pkts_out": {
+            "metric": "pkts_out",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getFromOnlineRegions_num_ops": {
+            "metric": "rpc.rpc.getFromOnlineRegions_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/close_num_ops": {
+            "metric": "rpc.rpc.close_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/mem_cached": {
+            "metric": "mem_cached",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getConfiguration/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getConfiguration.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/disk/disk_total": {
+            "metric": "disk_total",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/get/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.get.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/done_avg_time": {
+            "metric": "rpcdetailed.rpcdetailed.done_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openScanner_avg_time": {
+            "metric": "rpc.rpc.openScanner_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcSlowResponse_num_ops": {
+            "metric": "rpc.rpc.RpcSlowResponse_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getFromOnlineRegions_avg_time": {
+            "metric": "rpc.rpc.getFromOnlineRegions_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/splitRegion/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.splitRegion.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClosestRowBefore/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getClosestRowBefore.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/flushRegion/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.flushRegion.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isAborted_avg_time": {
+            "metric": "rpc.rpc.isAborted_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/increment/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.increment.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getBlockCacheColumnFamilySummaries/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getBlockCacheColumnFamilySummaries.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/deleteTable_avg_time": {
+            "metric": "rpc.rpc.deleteTable_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/commitPending_avg_time": {
+            "metric": "rpcdetailed.rpcdetailed.commitPending_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/put/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.put.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/delete_avg_time": {
+            "metric": "rpc.rpc.delete_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClosestRowBefore_avg_time": {
+            "metric": "rpc.rpc.getClosestRowBefore_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_speed": {
+            "metric": "cpu_speed",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/get/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.get.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/statusUpdate_num_ops": {
+            "metric": "rpcdetailed.rpcdetailed.statusUpdate_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/compactRegion/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.compactRegion.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegions/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.openRegions.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcProcessingTime_avg_time": {
+            "metric": "rpc.rpc.RpcProcessingTimeAvgTime",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/put_num_ops": {
+            "metric": "rpc.rpc.put_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/move_avg_time": {
+            "metric": "rpc.rpc.move_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rpcAuthenticationFailures": {
+            "metric": "rpc.rpc.rpcAuthenticationFailures",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openScanner/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.openScanner.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClusterStatus_avg_time": {
+            "metric": "rpc.rpc.getClusterStatus_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/unlockRow/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.unlockRow.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/removeFromOnlineRegions_avg_time": {
+            "metric": "rpc.rpc.removeFromOnlineRegions_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/modifyTable_avg_time": {
+            "metric": "rpc.rpc.modifyTable_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/put/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.put.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndPut_avg_time": {
+            "metric": "rpc.rpc.checkAndPut_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isStopped/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.isStopped.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/put_avg_time": {
+            "metric": "rpc.rpc.put_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/increment/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.increment.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegion/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.openRegion.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/SentBytes": {
+            "metric": "rpc.rpc.SentBytes",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/createTable_avg_time": {
+            "metric": "rpc.rpc.createTable_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/getTask_num_ops": {
+            "metric": "rpcdetailed.rpcdetailed.getTask_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getRegionInfo/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getRegionInfo.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/addColumn_num_ops": {
+            "metric": "rpc.rpc.addColumn_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHTableDescriptors_num_ops": {
+            "metric": "rpc.rpc.getHTableDescriptors_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getAlterStatus_avg_time": {
+            "metric": "rpc.rpc.getAlterStatus_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getRegionInfo_num_ops": {
+            "metric": "rpc.rpc.getRegionInfo_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/logWarn": {
+            "metric": "jvm.JvmMetrics.LogWarn",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/maxMemoryM": {
+            "metric": "jvm.metrics.maxMemoryM",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/statusUpdate_avg_time": {
+            "metric": "rpcdetailed.rpcdetailed.statusUpdate_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/compactRegion_num_ops": {
+            "metric": "rpc.rpc.compactRegion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getFromOnlineRegions/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getFromOnlineRegions.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsTimedWaiting": {
+            "metric": "jvm.JvmMetrics.ThreadsTimedWaiting",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isAborted_num_ops": {
+            "metric": "rpc.rpc.isAborted_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/gcCount": {
+            "metric": "jvm.JvmMetrics.GcCount",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getOnlineRegions_num_ops": {
+            "metric": "rpc.rpc.getOnlineRegions_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/done_num_ops": {
+            "metric": "rpcdetailed.rpcdetailed.done_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkOOME/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.checkOOME.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolVersion_num_ops": {
+            "metric": "rpc.rpc.getProtocolVersion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/memHeapUsedM": {
+            "metric": "jvm.JvmMetrics.MemHeapUsedM",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsWaiting": {
+            "metric": "jvm.JvmMetrics.ThreadsWaiting",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/disk/disk_free": {
+            "metric": "disk_free",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/unlockRow_num_ops": {
+            "metric": "rpc.rpc.unlockRow_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/replicateLogEntries/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.replicateLogEntries.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/disableTable_num_ops": {
+            "metric": "rpc.rpc.disableTable_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/mem_buffers": {
+            "metric": "mem_buffers",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/shutdown_avg_time": {
+            "metric": "rpc.rpc.shutdown_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openScanner_num_ops": {
+            "metric": "rpc.rpc.openScanner_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/regionServerStartup_num_ops": {
+            "metric": "rpc.rpc.regionServerStartup_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/bulkLoadHFiles/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.bulkLoadHFiles.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_user": {
+            "metric": "cpu_user",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/swap_free": {
+            "metric": "swap_free",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_system": {
+            "metric": "cpu_system",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/exists/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.exists.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegions_avg_time": {
+            "metric": "rpc.rpc.openRegions_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/regionServerReport_num_ops": {
+            "metric": "rpc.rpc.regionServerReport_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/next_num_ops": {
+            "metric": "rpc.rpc.next_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getBlockCacheColumnFamilySummaries_avg_time": {
+            "metric": "rpc.rpc.getBlockCacheColumnFamilySummaries_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndDelete_avg_time": {
+            "metric": "rpc.rpc.checkAndDelete_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/closeRegion/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.closeRegion.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/load/load_fifteen": {
+            "metric": "load_fifteen",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHServerInfo_avg_time": {
+            "metric": "rpc.rpc.getHServerInfo_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/logInfo": {
+            "metric": "jvm.JvmMetrics.LogInfo",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getZooKeeper_avg_time": {
+            "metric": "rpc.rpc.getZooKeeper_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getBlockCacheColumnFamilySummaries/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getBlockCacheColumnFamilySummaries.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/execCoprocessor/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.execCoprocessor.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/balanceSwitch_num_ops": {
+            "metric": "rpc.rpc.balanceSwitch_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isMasterRunning_num_ops": {
+            "metric": "rpc.rpc.isMasterRunning_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/offline_num_ops": {
+            "metric": "rpc.rpc.offline_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/mem_shared": {
+            "metric": "mem_shared",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolSignature_num_ops": {
+            "metric": "rpc.rpc.getProtocolSignature_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/abort_num_ops": {
+            "metric": "rpc.rpc.abort_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolVersion/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getProtocolVersion.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/ugi/loginFailure_avg_time": {
+            "metric": "ugi.UgiMetrics.LoginFailureAvgTime",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_num": {
+            "metric": "cpu_num",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpcdetailed/getProtocolVersion_avg_time": {
+            "metric": "rpcdetailed.rpcdetailed.getProtocolVersion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rollHLogWriter_num_ops": {
+            "metric": "rpc.rpc.rollHLogWriter_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rpcAuthorizationSuccesses": {
+            "metric": "rpc.rpc.RpcAuthorizationSuccesses",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegions_num_ops": {
+            "metric": "rpc.rpc.openRegions_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/logFatal": {
+            "metric": "jvm.JvmMetrics.LogFatal",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/splitRegion_avg_time": {
+            "metric": "rpc.rpc.splitRegion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/closeRegion/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.closeRegion.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndPut/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.checkAndPut.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndPut_num_ops": {
+            "metric": "rpc.rpc.checkAndPut_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/increment_avg_time": {
+            "metric": "rpc.rpc.increment_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          }
+        }
+      }
+    ],
+    "HostComponent": [
+      {
+        "type": "ganglia",
+        "metrics": {
+          "metrics/rpc/closeRegion_num_ops": {
+            "metric": "rpc.rpc.closeRegion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/unassign_num_ops": {
+            "metric": "rpc.rpc.unassign_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/modifyTable_num_ops": {
+            "metric": "rpc.rpc.modifyTable_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/splitRegion/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.splitRegion.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/ugi/loginSuccess_avg_time": {
+            "metric": "ugi.UgiMetrics.LoginSuccessAvgTime",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolVersion_avg_time": {
+            "metric": "rpc.rpc.getProtocolVersion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getZooKeeper/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getZooKeeper.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHServerInfo/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getHServerInfo.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/load/load_one": {
+            "metric": "load_one",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClosestRowBefore_num_ops": {
+            "metric": "rpc.rpc.getClosestRowBefore_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/memNonHeapUsedM": {
+            "metric": "jvm.JvmMetrics.MemNonHeapUsedM",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClosestRowBefore/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getClosestRowBefore.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/replicateLogEntries_num_ops": {
+            "metric": "rpc.rpc.replicateLogEntries_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/flushRegion_avg_time": {
+            "metric": "rpc.rpc.flushRegion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/lockRow_num_ops": {
+            "metric": "rpc.rpc.lockRow_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/swap_total": {
+            "metric": "swap_total",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/multi_avg_time": {
+            "metric": "rpc.rpc.multi_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegions/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.openRegions.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/stopMaster_num_ops": {
+            "metric": "rpc.rpc.stopMaster_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/process/proc_total": {
+            "metric": "proc_total",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/balance_avg_time": {
+            "metric": "rpc.rpc.balance_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getCatalogTracker_avg_time": {
+            "metric": "rpc.rpc.getCatalogTracker_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/disk/part_max_used": {
+            "metric": "part_max_used",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/splitRegion_num_ops": {
+            "metric": "rpc.rpc.splitRegion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/modifyColumn_avg_time": {
+            "metric": "rpc.rpc.modifyColumn_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/multi/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.multi.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/balance_num_ops": {
+            "metric": "rpc.rpc.balance_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getZooKeeper_num_ops": {
+            "metric": "rpc.rpc.getZooKeeper_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/shutdown_num_ops": {
+            "metric": "rpc.rpc.shutdown_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/flushRegion_num_ops": {
+            "metric": "rpc.rpc.flushRegion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/ugi/loginSuccess_num_ops": {
+            "metric": "ugi.UgiMetrics.LoginSuccessNumOps",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isAborted/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.isAborted.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_idle": {
+            "metric": "cpu_idle",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rollHLogWriter/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.rollHLogWriter.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/removeFromOnlineRegions/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.removeFromOnlineRegions.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolSignature/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getProtocolSignature.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/get_num_ops": {
+            "metric": "rpc.rpc.get_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getServerName_avg_time": {
+            "metric": "rpc.rpc.getServerName_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/stopMaster_avg_time": {
+            "metric": "rpc.rpc.stopMaster_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getOnlineRegions/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getOnlineRegions.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/network/bytes_in": {
+            "metric": "bytes_in",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/memNonHeapCommittedM": {
+            "metric": "jvm.JvmMetrics.MemNonHeapCommittedM",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/removeFromOnlineRegions_num_ops": {
+            "metric": "rpc.rpc.removeFromOnlineRegions_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openScanner/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.openScanner.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/abort_avg_time": {
+            "metric": "rpc.rpc.abort_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getRegionInfo_avg_time": {
+            "metric": "rpc.rpc.getRegionInfo_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getCatalogTracker/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getCatalogTracker.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/enableTable_num_ops": {
+            "metric": "rpc.rpc.enableTable_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/lockRow/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.lockRow.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/lockRow_avg_time": {
+            "metric": "rpc.rpc.lockRow_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/addColumn_avg_time": {
+            "metric": "rpc.rpc.addColumn_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkOOME_num_ops": {
+            "metric": "rpc.rpc.checkOOME_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/addToOnlineRegions/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.addToOnlineRegions.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/reportRSFatalError_num_ops": {
+            "metric": "rpc.rpc.reportRSFatalError_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/ugi/loginFailure_num_ops": {
+            "metric": "ugi.UgiMetrics.LoginFailureNumOps",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_wio": {
+            "metric": "cpu_wio",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getConfiguration/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getConfiguration.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getZooKeeper/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getZooKeeper.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getServerName_num_ops": {
+            "metric": "rpc.rpc.getServerName_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getServerName/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getServerName.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/reportRSFatalError_avg_time": {
+            "metric": "rpc.rpc.reportRSFatalError_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rpcAuthenticationSuccesses": {
+            "metric": "rpc.rpc.RpcAuthenticationSuccesses",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/network/pkts_in": {
+            "metric": "pkts_in",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isStopped/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.isStopped.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/disableTable_avg_time": {
+            "metric": "rpc.rpc.disableTable_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/mem_total": {
+            "metric": "mem_total",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rollHLogWriter/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.rollHLogWriter.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/memHeapCommittedM": {
+            "metric": "jvm.JvmMetrics.MemHeapCommittedM",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/abort/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.abort.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsRunnable": {
+            "metric": "jvm.JvmMetrics.ThreadsRunnable",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegion_avg_time": {
+            "metric": "rpc.rpc.openRegion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsNew": {
+            "metric": "jvm.JvmMetrics.ThreadsNew",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/unlockRow/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.unlockRow.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClusterStatus_num_ops": {
+            "metric": "rpc.rpc.getClusterStatus_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHTableDescriptors_avg_time": {
+            "metric": "rpc.rpc.getHTableDescriptors_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rpcAuthorizationFailures": {
+            "metric": "rpc.rpc.RpcAuthorizationFailures",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/deleteColumn_num_ops": {
+            "metric": "rpc.rpc.deleteColumn_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/regionServerReport_avg_time": {
+            "metric": "rpc.rpc.regionServerReport_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/delete/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.delete.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcQueueTime_avg_time": {
+            "metric": "rpc.rpc.RpcQueueTimeAvgTime",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/increment_num_ops": {
+            "metric": "rpc.rpc.increment_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/stop/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.stop.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getAlterStatus_num_ops": {
+            "metric": "rpc.rpc.getAlterStatus_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/modifyColumn_num_ops": {
+            "metric": "rpc.rpc.modifyColumn_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/flushRegion/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.flushRegion.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/incrementColumnValue/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.incrementColumnValue.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/next_avg_time": {
+            "metric": "rpc.rpc.next_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkOOME_avg_time": {
+            "metric": "rpc.rpc.checkOOME_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/next/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.next.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcSlowResponse_avg_time": {
+            "metric": "rpc.rpc.RpcSlowResponse_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getConfiguration_avg_time": {
+            "metric": "rpc.rpc.getConfiguration_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getServerName/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getServerName.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/ReceivedBytes": {
+            "metric": "rpc.rpc.ReceivedBytes",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_nice": {
+            "metric": "cpu_nice",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/bulkLoadHFiles_num_ops": {
+            "metric": "rpc.rpc.bulkLoadHFiles_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/unassign_avg_time": {
+            "metric": "rpc.rpc.unassign_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/NumOpenConnections": {
+            "metric": "rpc.rpc.NumOpenConnections",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/gcTimeMillis": {
+            "metric": "jvm.JvmMetrics.GcTimeMillis",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/delete/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.delete.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/multi/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.multi.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsTerminated": {
+            "metric": "jvm.JvmMetrics.ThreadsTerminated",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolVersion/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getProtocolVersion.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndDelete/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.checkAndDelete.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/network/bytes_out": {
+            "metric": "bytes_out",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/balanceSwitch_avg_time": {
+            "metric": "rpc.rpc.balanceSwitch_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/load/load_five": {
+            "metric": "load_five",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/boottime": {
+            "metric": "boottime",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegion/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.openRegion.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/lockRow/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.lockRow.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/compactRegion_avg_time": {
+            "metric": "rpc.rpc.compactRegion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegion_num_ops": {
+            "metric": "rpc.rpc.openRegion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/callQueueLen": {
+            "metric": "rpc.rpc.callQueueLen",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/compactRegion/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.compactRegion.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolSignature/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getProtocolSignature.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/execCoprocessor_num_ops": {
+            "metric": "rpc.rpc.execCoprocessor_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHServerInfo/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getHServerInfo.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getOnlineRegions_avg_time": {
+            "metric": "rpc.rpc.getOnlineRegions_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getCatalogTracker/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getCatalogTracker.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/incrementColumnValue_avg_time": {
+            "metric": "rpc.rpc.incrementColumnValue_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/move_num_ops": {
+            "metric": "rpc.rpc.move_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcProcessingTime_num_ops": {
+            "metric": "rpc.rpc.RpcProcessingTimeNumOps",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/stop_num_ops": {
+            "metric": "rpc.rpc.stop_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/replicateLogEntries_avg_time": {
+            "metric": "rpc.rpc.replicateLogEntries_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/deleteTable_num_ops": {
+            "metric": "rpc.rpc.deleteTable_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/logError": {
+            "metric": "jvm.JvmMetrics.LogError",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/get_avg_time": {
+            "metric": "rpc.rpc.get_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/multi_num_ops": {
+            "metric": "rpc.rpc.multi_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/next/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.next.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getBlockCacheColumnFamilySummaries_num_ops": {
+            "metric": "rpc.rpc.getBlockCacheColumnFamilySummaries_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getFromOnlineRegions/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getFromOnlineRegions.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/addToOnlineRegions_avg_time": {
+            "metric": "rpc.rpc.addToOnlineRegions_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/deleteColumn_avg_time": {
+            "metric": "rpc.rpc.deleteColumn_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getRegionInfo/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getRegionInfo.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/bulkLoadHFiles_avg_time": {
+            "metric": "rpc.rpc.bulkLoadHFiles_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/exists_avg_time": {
+            "metric": "rpc.rpc.exists_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isAborted/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.isAborted.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/stop/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.stop.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/addToOnlineRegions_num_ops": {
+            "metric": "rpc.rpc.addToOnlineRegions_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/abort/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.abort.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/removeFromOnlineRegions/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.removeFromOnlineRegions.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getOnlineRegions/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getOnlineRegions.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/exists/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.exists.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/offline_avg_time": {
+            "metric": "rpc.rpc.offline_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/replicateLogEntries/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.replicateLogEntries.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/unlockRow_avg_time": {
+            "metric": "rpc.rpc.unlockRow_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/delete_num_ops": {
+            "metric": "rpc.rpc.delete_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getCatalogTracker_num_ops": {
+            "metric": "rpc.rpc.getCatalogTracker_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/regionServerStartup_avg_time": {
+            "metric": "rpc.rpc.regionServerStartup_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkOOME/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.checkOOME.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/exists_num_ops": {
+            "metric": "rpc.rpc.exists_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndDelete_num_ops": {
+            "metric": "rpc.rpc.checkAndDelete_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndPut/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.checkAndPut.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/closeRegion_avg_time": {
+            "metric": "rpc.rpc.closeRegion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/close/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.close.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolSignature_avg_time": {
+            "metric": "rpc.rpc.getProtocolSignature_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/assign_avg_time": {
+            "metric": "rpc.rpc.assign_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/createTable_num_ops": {
+            "metric": "rpc.rpc.createTable_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/execCoprocessor_avg_time": {
+            "metric": "rpc.rpc.execCoprocessor_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/close_avg_time": {
+            "metric": "rpc.rpc.close_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/process/proc_run": {
+            "metric": "proc_run",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getConfiguration_num_ops": {
+            "metric": "rpc.rpc.getConfiguration_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsBlocked": {
+            "metric": "jvm.JvmMetrics.ThreadsBlocked",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHServerInfo_num_ops": {
+            "metric": "rpc.rpc.getHServerInfo_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isStopped_avg_time": {
+            "metric": "rpc.rpc.isStopped_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcQueueTime_num_ops": {
+            "metric": "rpc.rpc.RpcQueueTimeNumOps",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/stop_avg_time": {
+            "metric": "rpc.rpc.stop_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rollHLogWriter_avg_time": {
+            "metric": "rpc.rpc.rollHLogWriter_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isStopped_num_ops": {
+            "metric": "rpc.rpc.isStopped_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/addToOnlineRegions/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.addToOnlineRegions.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isMasterRunning_avg_time": {
+            "metric": "rpc.rpc.isMasterRunning_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/incrementColumnValue_num_ops": {
+            "metric": "rpc.rpc.incrementColumnValue_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/bulkLoadHFiles/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.bulkLoadHFiles.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_aidle": {
+            "metric": "cpu_aidle",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/mem_free": {
+            "metric": "mem_free",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/execCoprocessor/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.execCoprocessor.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/close/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.close.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/assign_num_ops": {
+            "metric": "rpc.rpc.assign_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/enableTable_avg_time": {
+            "metric": "rpc.rpc.enableTable_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/incrementColumnValue/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.incrementColumnValue.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndDelete/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.checkAndDelete.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/network/pkts_out": {
+            "metric": "pkts_out",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getFromOnlineRegions_num_ops": {
+            "metric": "rpc.rpc.getFromOnlineRegions_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/close_num_ops": {
+            "metric": "rpc.rpc.close_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/mem_cached": {
+            "metric": "mem_cached",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/disk/disk_total": {
+            "metric": "disk_total",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getConfiguration/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getConfiguration.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/get/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.get.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openScanner_avg_time": {
+            "metric": "rpc.rpc.openScanner_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcSlowResponse_num_ops": {
+            "metric": "rpc.rpc.RpcSlowResponse_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/splitRegion/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.splitRegion.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getFromOnlineRegions_avg_time": {
+            "metric": "rpc.rpc.getFromOnlineRegions_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClosestRowBefore/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getClosestRowBefore.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isAborted_avg_time": {
+            "metric": "rpc.rpc.isAborted_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/flushRegion/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.flushRegion.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/increment/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.increment.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getBlockCacheColumnFamilySummaries/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getBlockCacheColumnFamilySummaries.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/deleteTable_avg_time": {
+            "metric": "rpc.rpc.deleteTable_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/put/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.put.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/delete_avg_time": {
+            "metric": "rpc.rpc.delete_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClosestRowBefore_avg_time": {
+            "metric": "rpc.rpc.getClosestRowBefore_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_speed": {
+            "metric": "cpu_speed",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/get/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.get.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/compactRegion/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.compactRegion.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegions/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.openRegions.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcProcessingTime_avg_time": {
+            "metric": "rpc.rpc.RpcProcessingTimeAvgTime",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/put_num_ops": {
+            "metric": "rpc.rpc.put_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/move_avg_time": {
+            "metric": "rpc.rpc.move_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rpcAuthenticationFailures": {
+            "metric": "rpc.rpc.rpcAuthenticationFailures",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openScanner/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.openScanner.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClusterStatus_avg_time": {
+            "metric": "rpc.rpc.getClusterStatus_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/unlockRow/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.unlockRow.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/removeFromOnlineRegions_avg_time": {
+            "metric": "rpc.rpc.removeFromOnlineRegions_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/modifyTable_avg_time": {
+            "metric": "rpc.rpc.modifyTable_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/put/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.put.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndPut_avg_time": {
+            "metric": "rpc.rpc.checkAndPut_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isStopped/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.isStopped.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/put_avg_time": {
+            "metric": "rpc.rpc.put_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/increment/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.increment.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegion/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.openRegion.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/SentBytes": {
+            "metric": "rpc.rpc.SentBytes",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/createTable_avg_time": {
+            "metric": "rpc.rpc.createTable_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getRegionInfo/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getRegionInfo.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/addColumn_num_ops": {
+            "metric": "rpc.rpc.addColumn_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHTableDescriptors_num_ops": {
+            "metric": "rpc.rpc.getHTableDescriptors_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getAlterStatus_avg_time": {
+            "metric": "rpc.rpc.getAlterStatus_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getRegionInfo_num_ops": {
+            "metric": "rpc.rpc.getRegionInfo_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/logWarn": {
+            "metric": "jvm.JvmMetrics.LogWarn",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/maxMemoryM": {
+            "metric": "jvm.metrics.maxMemoryM",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/compactRegion_num_ops": {
+            "metric": "rpc.rpc.compactRegion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getFromOnlineRegions/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getFromOnlineRegions.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsTimedWaiting": {
+            "metric": "jvm.JvmMetrics.ThreadsTimedWaiting",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isAborted_num_ops": {
+            "metric": "rpc.rpc.isAborted_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/gcCount": {
+            "metric": "jvm.JvmMetrics.GcCount",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getOnlineRegions_num_ops": {
+            "metric": "rpc.rpc.getOnlineRegions_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkOOME/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.checkOOME.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolVersion_num_ops": {
+            "metric": "rpc.rpc.getProtocolVersion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/memHeapUsedM": {
+            "metric": "jvm.JvmMetrics.MemHeapUsedM",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsWaiting": {
+            "metric": "jvm.JvmMetrics.ThreadsWaiting",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/disk/disk_free": {
+            "metric": "disk_free",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/unlockRow_num_ops": {
+            "metric": "rpc.rpc.unlockRow_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/replicateLogEntries/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.replicateLogEntries.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/disableTable_num_ops": {
+            "metric": "rpc.rpc.disableTable_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/mem_buffers": {
+            "metric": "mem_buffers",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/shutdown_avg_time": {
+            "metric": "rpc.rpc.shutdown_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openScanner_num_ops": {
+            "metric": "rpc.rpc.openScanner_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/regionServerStartup_num_ops": {
+            "metric": "rpc.rpc.regionServerStartup_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/bulkLoadHFiles/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.bulkLoadHFiles.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_user": {
+            "metric": "cpu_user",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/swap_free": {
+            "metric": "swap_free",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_system": {
+            "metric": "cpu_system",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/exists/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.exists.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegions_avg_time": {
+            "metric": "rpc.rpc.openRegions_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/regionServerReport_num_ops": {
+            "metric": "rpc.rpc.regionServerReport_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/next_num_ops": {
+            "metric": "rpc.rpc.next_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getBlockCacheColumnFamilySummaries_avg_time": {
+            "metric": "rpc.rpc.getBlockCacheColumnFamilySummaries_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndDelete_avg_time": {
+            "metric": "rpc.rpc.checkAndDelete_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/closeRegion/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.closeRegion.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/load/load_fifteen": {
+            "metric": "load_fifteen",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHServerInfo_avg_time": {
+            "metric": "rpc.rpc.getHServerInfo_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/logInfo": {
+            "metric": "jvm.JvmMetrics.LogInfo",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getZooKeeper_avg_time": {
+            "metric": "rpc.rpc.getZooKeeper_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getBlockCacheColumnFamilySummaries/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getBlockCacheColumnFamilySummaries.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/execCoprocessor/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.execCoprocessor.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/balanceSwitch_num_ops": {
+            "metric": "rpc.rpc.balanceSwitch_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isMasterRunning_num_ops": {
+            "metric": "rpc.rpc.isMasterRunning_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/offline_num_ops": {
+            "metric": "rpc.rpc.offline_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/mem_shared": {
+            "metric": "mem_shared",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolSignature_num_ops": {
+            "metric": "rpc.rpc.getProtocolSignature_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/abort_num_ops": {
+            "metric": "rpc.rpc.abort_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolVersion/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getProtocolVersion.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/ugi/loginFailure_avg_time": {
+            "metric": "ugi.UgiMetrics.LoginFailureAvgTime",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_num": {
+            "metric": "cpu_num",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rollHLogWriter_num_ops": {
+            "metric": "rpc.rpc.rollHLogWriter_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rpcAuthorizationSuccesses": {
+            "metric": "rpc.rpc.RpcAuthorizationSuccesses",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegions_num_ops": {
+            "metric": "rpc.rpc.openRegions_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/logFatal": {
+            "metric": "jvm.JvmMetrics.LogFatal",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/splitRegion_avg_time": {
+            "metric": "rpc.rpc.splitRegion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/closeRegion/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.closeRegion.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndPut/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.checkAndPut.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndPut_num_ops": {
+            "metric": "rpc.rpc.checkAndPut_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/increment_avg_time": {
+            "metric": "rpc.rpc.increment_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          }
+        }
+      }
+    ]
+  },
+  "HBASE_MASTER": {
+    "Component": [
+      {
+        "type": "ganglia",
+        "metrics": {
+          "metrics/rpc/deleteTable/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.deleteTable.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/closeRegion_num_ops": {
+            "metric": "rpc.rpc.closeRegion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/regionServerStartup/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.regionServerStartup.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/unassign_num_ops": {
+            "metric": "rpc.rpc.unassign_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClusterStatus/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getClusterStatus.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/modifyTable_num_ops": {
+            "metric": "rpc.rpc.modifyTable_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolVersion_avg_time": {
+            "metric": "rpc.rpc.getProtocolVersion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/unassign/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.unassign.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/load/load_one": {
+            "metric": "load_one",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClosestRowBefore_num_ops": {
+            "metric": "rpc.rpc.getClosestRowBefore_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/memNonHeapUsedM": {
+            "metric": "jvm.JvmMetrics.MemNonHeapUsedM",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/assign/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.assign.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/replicateLogEntries_num_ops": {
+            "metric": "rpc.rpc.replicateLogEntries_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/createTable/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.createTable.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/lockRow_num_ops": {
+            "metric": "rpc.rpc.lockRow_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/flushRegion_avg_time": {
+            "metric": "rpc.rpc.flushRegion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/multi_avg_time": {
+            "metric": "rpc.rpc.multi_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/swap_total": {
+            "metric": "swap_total",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/stopMaster_num_ops": {
+            "metric": "rpc.rpc.stopMaster_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/process/proc_total": {
+            "metric": "proc_total",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/balance_avg_time": {
+            "metric": "rpc.rpc.balance_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/disk/part_max_used": {
+            "metric": "part_max_used",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/splitRegion_num_ops": {
+            "metric": "rpc.rpc.splitRegion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/modifyColumn_avg_time": {
+            "metric": "rpc.rpc.modifyColumn_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/balance_num_ops": {
+            "metric": "rpc.rpc.balance_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/shutdown_num_ops": {
+            "metric": "rpc.rpc.shutdown_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/flushRegion_num_ops": {
+            "metric": "rpc.rpc.flushRegion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_idle": {
+            "metric": "cpu_idle",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/modifyTable/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.modifyTable.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/regionServerReport/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.regionServerReport.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolSignature/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getProtocolSignature.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/get_num_ops": {
+            "metric": "rpc.rpc.get_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/stopMaster_avg_time": {
+            "metric": "rpc.rpc.stopMaster_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/network/bytes_in": {
+            "metric": "bytes_in",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/reportRSFatalError/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.reportRSFatalError.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/memNonHeapCommittedM": {
+            "metric": "jvm.JvmMetrics.MemNonHeapCommittedM",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/shutdown/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.shutdown.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getRegionInfo_avg_time": {
+            "metric": "rpc.rpc.getRegionInfo_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/balanceSwitch/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.balanceSwitch.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/disableTable/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.disableTable.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/reportRSFatalError/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.reportRSFatalError.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/assign/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.assign.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/balance/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.balance.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/enableTable_num_ops": {
+            "metric": "rpc.rpc.enableTable_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/lockRow_avg_time": {
+            "metric": "rpc.rpc.lockRow_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/addColumn_avg_time": {
+            "metric": "rpc.rpc.addColumn_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/reportRSFatalError_num_ops": {
+            "metric": "rpc.rpc.reportRSFatalError_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_wio": {
+            "metric": "cpu_wio",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/master/splitTime_num_ops": {
+            "metric": "master.FileSystem.HlogSplitTime_num_ops",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/getAlterStatus/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getAlterStatus.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/deleteColumn/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.deleteColumn.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/reportRSFatalError_avg_time": {
+            "metric": "rpc.rpc.reportRSFatalError_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rpcAuthenticationSuccesses": {
+            "metric": "rpc.rpc.rpcAuthenticationSuccesses",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/network/pkts_in": {
+            "metric": "pkts_in",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/disableTable_avg_time": {
+            "metric": "rpc.rpc.disableTable_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/mem_total": {
+            "metric": "mem_total",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/memHeapCommittedM": {
+            "metric": "jvm.JvmMetrics.MemHeapCommittedM",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsRunnable": {
+            "metric": "jvm.JvmMetrics.ThreadsRunnable",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegion_avg_time": {
+            "metric": "rpc.rpc.openRegion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/enableTable/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.enableTable.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsNew": {
+            "metric": "jvm.JvmMetrics.ThreadsNew",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClusterStatus_num_ops": {
+            "metric": "rpc.rpc.getClusterStatus_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHTableDescriptors_avg_time": {
+            "metric": "rpc.rpc.getHTableDescriptors_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rpcAuthorizationFailures": {
+            "metric": "rpc.rpc.rpcAuthorizationFailures",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/regionServerReport_avg_time": {
+            "metric": "rpc.rpc.regionServerReport_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/deleteColumn_num_ops": {
+            "metric": "rpc.rpc.deleteColumn_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcQueueTime_avg_time": {
+            "metric": "rpc.rpc.RpcQueueTime_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/increment_num_ops": {
+            "metric": "rpc.rpc.increment_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getAlterStatus_num_ops": {
+            "metric": "rpc.rpc.getAlterStatus_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/modifyColumn_num_ops": {
+            "metric": "rpc.rpc.modifyColumn_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/next_avg_time": {
+            "metric": "rpc.rpc.next_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/deleteColumn/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.deleteColumn.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcSlowResponse_avg_time": {
+            "metric": "rpc.rpc.RpcSlowResponse_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClusterStatus/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getClusterStatus.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/ReceivedBytes": {
+            "metric": "rpc.rpc.ReceivedBytes",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_nice": {
+            "metric": "cpu_nice",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/bulkLoadHFiles_num_ops": {
+            "metric": "rpc.rpc.bulkLoadHFiles_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/unassign_avg_time": {
+            "metric": "rpc.rpc.unassign_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/NumOpenConnections": {
+            "metric": "rpc.rpc.NumOpenConnections",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/jvm/gcTimeMillis": {
+            "metric": "jvm.JvmMetrics.GcTimeMillis",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/regionServerReport/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.regionServerReport.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolVersion/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getProtocolVersion.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsTerminated": {
+            "metric": "jvm.JvmMetrics.ThreadsTerminated",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/network/bytes_out": {
+            "metric": "bytes_out",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/unassign/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.unassign.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/balanceSwitch_avg_time": {
+            "metric": "rpc.rpc.balanceSwitch_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/load/load_five": {
+            "metric": "load_five",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/boottime": {
+            "metric": "boottime",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/compactRegion_avg_time": {
+            "metric": "rpc.rpc.compactRegion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegion_num_ops": {
+            "metric": "rpc.rpc.openRegion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/callQueueLen": {
+            "metric": "rpc.rpc.callQueueLen",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/offline/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.offline.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolSignature/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getProtocolSignature.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/execCoprocessor_num_ops": {
+            "metric": "rpc.rpc.execCoprocessor_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getOnlineRegions_avg_time": {
+            "metric": "rpc.rpc.getOnlineRegions_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/addColumn/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.addColumn.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/disableTable/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.disableTable.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/incrementColumnValue_avg_time": {
+            "metric": "rpc.rpc.incrementColumnValue_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcProcessingTime_num_ops": {
+            "metric": "rpc.rpc.RpcProcessingTime_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/move_num_ops": {
+            "metric": "rpc.rpc.move_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/stop_num_ops": {
+            "metric": "rpc.rpc.stop_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/replicateLogEntries_avg_time": {
+            "metric": "rpc.rpc.replicateLogEntries_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/deleteTable_num_ops": {
+            "metric": "rpc.rpc.deleteTable_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/logError": {
+            "metric": "jvm.JvmMetrics.LogError",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/get_avg_time": {
+            "metric": "rpc.rpc.get_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/multi_num_ops": {
+            "metric": "rpc.rpc.multi_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getBlockCacheColumnFamilySummaries_num_ops": {
+            "metric": "rpc.rpc.getBlockCacheColumnFamilySummaries_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/deleteColumn_avg_time": {
+            "metric": "rpc.rpc.deleteColumn_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/bulkLoadHFiles_avg_time": {
+            "metric": "rpc.rpc.bulkLoadHFiles_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/exists_avg_time": {
+            "metric": "rpc.rpc.exists_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/offline_avg_time": {
+            "metric": "rpc.rpc.offline_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/unlockRow_avg_time": {
+            "metric": "rpc.rpc.unlockRow_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/delete_num_ops": {
+            "metric": "rpc.rpc.delete_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/exists_num_ops": {
+            "metric": "rpc.rpc.exists_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/regionServerStartup_avg_time": {
+            "metric": "rpc.rpc.regionServerStartup_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndDelete_num_ops": {
+            "metric": "rpc.rpc.checkAndDelete_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/closeRegion_avg_time": {
+            "metric": "rpc.rpc.closeRegion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/modifyColumn/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.modifyColumn.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/enableTable/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.enableTable.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolSignature_avg_time": {
+            "metric": "rpc.rpc.getProtocolSignature_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/createTable_num_ops": {
+            "metric": "rpc.rpc.createTable_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/assign_avg_time": {
+            "metric": "rpc.rpc.assign_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/execCoprocessor_avg_time": {
+            "metric": "rpc.rpc.execCoprocessor_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isMasterRunning/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.isMasterRunning.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/close_avg_time": {
+            "metric": "rpc.rpc.close_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/process/proc_run": {
+            "metric": "proc_run",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsBlocked": {
+            "metric": "jvm.JvmMetrics.ThreadsBlocked",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHServerInfo_num_ops": {
+            "metric": "rpc.rpc.getHServerInfo_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcQueueTime_num_ops": {
+            "metric": "rpc.rpc.RpcQueueTime_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/stop_avg_time": {
+            "metric": "rpc.rpc.stop_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rollHLogWriter_avg_time": {
+            "metric": "rpc.rpc.rollHLogWriter_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/modifyTable/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.modifyTable.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/balance/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.balance.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isMasterRunning_avg_time": {
+            "metric": "rpc.rpc.isMasterRunning_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/master/splitSize_num_ops": {
+            "metric": "master.FileSystem.HlogSplitSize_num_ops",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/incrementColumnValue_num_ops": {
+            "metric": "rpc.rpc.incrementColumnValue_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/modifyColumn/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.modifyColumn.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/master/splitTime_avg_time": {
+            "metric": "master.FileSystem.HlogSplitTime_mean",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_aidle": {
+            "metric": "cpu_aidle",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/mem_free": {
+            "metric": "mem_free",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/assign_num_ops": {
+            "metric": "rpc.rpc.assign_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/enableTable_avg_time": {
+            "metric": "rpc.rpc.enableTable_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/move/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.move.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/network/pkts_out": {
+            "metric": "pkts_out",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/close_num_ops": {
+            "metric": "rpc.rpc.close_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/mem_cached": {
+            "metric": "mem_cached",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/addColumn/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.addColumn.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/disk/disk_total": {
+            "metric": "disk_total",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/shutdown/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.shutdown.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openScanner_avg_time": {
+            "metric": "rpc.rpc.openScanner_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcSlowResponse_num_ops": {
+            "metric": "rpc.rpc.RpcSlowResponse_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/deleteTable_avg_time": {
+            "metric": "rpc.rpc.deleteTable_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/master/splitSize_avg_time": {
+            "metric": "master.FileSystem.HlogSplitSize_mean",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/delete_avg_time": {
+            "metric": "rpc.rpc.delete_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_speed": {
+            "metric": "cpu_speed",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClosestRowBefore_avg_time": {
+            "metric": "rpc.rpc.getClosestRowBefore_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/master/cluster_requests": {
+            "metric": "master.Server.clusterRequests",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/stopMaster/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.stopMaster.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/stopMaster/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.stopMaster.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcProcessingTime_avg_time": {
+            "metric": "rpc.rpc.RpcProcessingTime_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/put_num_ops": {
+            "metric": "rpc.rpc.put_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rpcAuthenticationFailures": {
+            "metric": "rpc.rpc.rpcAuthenticationFailures",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/move_avg_time": {
+            "metric": "rpc.rpc.move_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClusterStatus_avg_time": {
+            "metric": "rpc.rpc.getClusterStatus_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/regionServerStartup/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.regionServerStartup.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHTableDescriptors/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getHTableDescriptors.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/modifyTable_avg_time": {
+            "metric": "rpc.rpc.modifyTable_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndPut_avg_time": {
+            "metric": "rpc.rpc.checkAndPut_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/put_avg_time": {
+            "metric": "rpc.rpc.put_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHTableDescriptors/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getHTableDescriptors.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/SentBytes": {
+            "metric": "rpc.rpc.SentBytes",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/createTable_avg_time": {
+            "metric": "rpc.rpc.createTable_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/addColumn_num_ops": {
+            "metric": "rpc.rpc.addColumn_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getAlterStatus_avg_time": {
+            "metric": "rpc.rpc.getAlterStatus_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHTableDescriptors_num_ops": {
+            "metric": "rpc.rpc.getHTableDescriptors_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getAlterStatus/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getAlterStatus.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getRegionInfo_num_ops": {
+            "metric": "rpc.rpc.getRegionInfo_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/maxMemoryM": {
+            "metric": "jvm.metrics.maxMemoryM",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/logWarn": {
+            "metric": "jvm.JvmMetrics.LogWarn",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/compactRegion_num_ops": {
+            "metric": "rpc.rpc.compactRegion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/balanceSwitch/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.balanceSwitch.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsTimedWaiting": {
+            "metric": "jvm.JvmMetrics.ThreadsTimedWaiting",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/gcCount": {
+            "metric": "jvm.JvmMetrics.GcCount",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/deleteTable/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.deleteTable.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getOnlineRegions_num_ops": {
+            "metric": "rpc.rpc.getOnlineRegions_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/memHeapUsedM": {
+            "metric": "jvm.JvmMetrics.MemHeapUsedM",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolVersion_num_ops": {
+            "metric": "rpc.rpc.getProtocolVersion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/unlockRow_num_ops": {
+            "metric": "rpc.rpc.unlockRow_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/disk/disk_free": {
+            "metric": "disk_free",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsWaiting": {
+            "metric": "jvm.JvmMetrics.ThreadsWaiting",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/mem_buffers": {
+            "metric": "mem_buffers",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/disableTable_num_ops": {
+            "metric": "rpc.rpc.disableTable_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/shutdown_avg_time": {
+            "metric": "rpc.rpc.shutdown_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openScanner_num_ops": {
+            "metric": "rpc.rpc.openScanner_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/offline/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.offline.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/regionServerStartup_num_ops": {
+            "metric": "rpc.rpc.regionServerStartup_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_user": {
+            "metric": "cpu_user",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/swap_free": {
+            "metric": "swap_free",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_system": {
+            "metric": "cpu_system",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/regionServerReport_num_ops": {
+            "metric": "rpc.rpc.regionServerReport_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegions_avg_time": {
+            "metric": "rpc.rpc.openRegions_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isMasterRunning/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.isMasterRunning.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/next_num_ops": {
+            "metric": "rpc.rpc.next_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/createTable/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.createTable.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getBlockCacheColumnFamilySummaries_avg_time": {
+            "metric": "rpc.rpc.getBlockCacheColumnFamilySummaries_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndDelete_avg_time": {
+            "metric": "rpc.rpc.checkAndDelete_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/load/load_fifteen": {
+            "metric": "load_fifteen",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHServerInfo_avg_time": {
+            "metric": "rpc.rpc.getHServerInfo_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/logInfo": {
+            "metric": "jvm.JvmMetrics.LogInfo",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/move/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.move.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isMasterRunning_num_ops": {
+            "metric": "rpc.rpc.isMasterRunning_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/balanceSwitch_num_ops": {
+            "metric": "rpc.rpc.balanceSwitch_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/offline_num_ops": {
+            "metric": "rpc.rpc.offline_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/mem_shared": {
+            "metric": "mem_shared",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolSignature_num_ops": {
+            "metric": "rpc.rpc.getProtocolSignature_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolVersion/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getProtocolVersion.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_num": {
+            "metric": "cpu_num",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rollHLogWriter_num_ops": {
+            "metric": "rpc.rpc.rollHLogWriter_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rpcAuthorizationSuccesses": {
+            "metric": "rpc.rpc.rpcAuthorizationSuccesses",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/openRegions_num_ops": {
+            "metric": "rpc.rpc.openRegions_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/logFatal": {
+            "metric": "jvm.JvmMetrics.LogFatal",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/splitRegion_avg_time": {
+            "metric": "rpc.rpc.splitRegion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndPut_num_ops": {
+            "metric": "rpc.rpc.checkAndPut_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/increment_avg_time": {
+            "metric": "rpc.rpc.increment_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          }
+        }
+      },
+      {
+        "type": "jmx",
+        "metrics": {
+          "metrics/rpc/regionServerReport.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerReport.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/jvm/memMaxM":{
+            "metric" : "Hadoop:service=HBase,name=JvmMetrics.MemMaxM",
+            "pointInTime" : true,
+            "temporal" : false
+          },
+          "metrics/rpc/reportRSFatalError.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.reportRSFatalError.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/closeRegionMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.closeRegionMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/isMasterRunningAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.isMasterRunningAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/RpcQueueTimeAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.RpcQueueTimeAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteTableNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteTableNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "ServiceComponentInfo/Revision": {
+            "metric": "hadoop:service=HBase,name=Info.revision",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/splitRegionAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.splitRegionAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getHTableDescriptorsMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getHTableDescriptorsMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getClusterStatus.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getClusterStatus.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/splitRegionNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.splitRegionNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getProtocolVersionAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolVersionAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getBlockCacheColumnFamilySummariesMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getBlockCacheColumnFamilySummariesMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/modifyColumnMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.modifyColumnMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getClosestRowBeforeMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getClosestRowBeforeMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getProtocolSignatureNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolSignatureNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/RpcSlowResponseMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.RpcSlowResponseMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/AverageLoad": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.averageLoad",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/openScannerNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.openScannerNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteTable.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteTable.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteColumn.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteColumn.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getCompactionStateMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getCompactionStateMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/regionServerReport.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerReport.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/stopMaster.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.stopMaster.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/modifyColumn.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.modifyColumn.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getHServerInfoAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getHServerInfoAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/rollHLogWriterMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.rollHLogWriterMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/offlineMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.offlineMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getProtocolSignatureMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolSignatureMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/ServerName": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.tag.serverName",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getHServerInfoMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getHServerInfoMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/splitSizeMaxTime": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.HlogSplitSize_max",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/execCoprocessorAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.execCoprocessorAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/RpcProcessingTimeMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.RpcProcessingTimeMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getClusterStatusMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getClusterStatusMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/offline.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.offline.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/ZookeeperQuorum": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.tag.zookeeperQuorum",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/hdfsDate": {
+            "metric": "hadoop:service=HBase,name=Info.hdfsDate",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/createTable.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.createTable.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/offlineMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.offlineMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/offline.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.offline.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/balanceNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.balanceNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getClosestRowBeforeNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getClosestRowBeforeNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/modifyColumnNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.modifyColumnNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getLastFlushTimeNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getLastFlushTimeNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/stopMaster.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.stopMaster.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteTable.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteTable.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/hdfsUrl": {
+            "metric": "hadoop:service=HBase,name=Info.hdfsUrl",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/multiMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.multiMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/revision": {
+            "metric": "hadoop:service=HBase,name=Info.revision",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/modifyColumnMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.modifyColumnMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/addColumnMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.addColumnMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getHTableDescriptorsNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getHTableDescriptorsNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/RpcQueueTimeMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.RpcQueueTimeMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/multiNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.multiNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getProtocolVersion.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolVersion.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/offline.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.offline.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteTable.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteTable.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/enableTableMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.enableTableMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/regionServerReportMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerReportMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/reportRSFatalErrorNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.reportRSFatalErrorNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/addColumn.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.addColumn.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/unassign.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.unassign.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/reportRSFatalErrorMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.reportRSFatalErrorMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/disableTable.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.disableTable.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/existsAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.existsAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/MasterActiveTime": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.masterActiveTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getBlockCacheColumnFamilySummariesNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getBlockCacheColumnFamilySummariesNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/createTable.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.createTable.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/rpcAuthorizationFailures": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.rpcAuthorizationFailures",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/hdfsUser": {
+            "metric": "hadoop:service=HBase,name=Info.hdfsUser",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/regionServerStartupAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerStartupAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/regionServerStartupNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerStartupNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteColumnNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteColumnNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/version": {
+            "metric": "hadoop:service=HBase,name=Info.version",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/splitTimeMaxTime": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.HlogSplitTime_max",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/synchronousBalanceSwitchNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.synchronousBalanceSwitchNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/stopMasterNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.stopMasterNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/splitTimeNumOps": {
+            "metric": "hadoop:service=Master,name=MasterStatistics.splitTimeNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/reportRSFatalErrorAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.reportRSFatalErrorAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/replicateLogEntriesNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.replicateLogEntriesNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/multiMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.multiMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteColumnMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteColumnMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getProtocolSignature.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolSignature.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getLastFlushTimeMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getLastFlushTimeMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/disableTable.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.disableTable.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/NumOpenConnections": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.NumOpenConnections",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/RpcQueueTimeNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.RpcQueueTimeNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/regionServerReportMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerReportMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/IsActiveMaster": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.tag.isActiveMaster",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/bulkLoadHFilesMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.bulkLoadHFilesMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/synchronousBalanceSwitch.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.synchronousBalanceSwitch.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/MasterStartTime": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.masterStartTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/balanceSwitchMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.balanceSwitchMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/unlockRowMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.unlockRowMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/incrementNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.incrementNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/reportRSFatalError.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.reportRSFatalError.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/balanceSwitch.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.balanceSwitch.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/execCoprocessorMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.execCoprocessorMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/enableTable.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.enableTable.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/putMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.putMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/flushRegionMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.flushRegionMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/nextNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.nextNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getOnlineRegionsAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getOnlineRegionsAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/createTableAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.createTableAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/modifyTable.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.modifyTable.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getAlterStatusAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getAlterStatusAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/assign.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.assign.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/regionServerStartup.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerStartup.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/balanceSwitch.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.balanceSwitch.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/isMasterRunningMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.isMasterRunningMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/existsNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.existsNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/compactRegionMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.compactRegionMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/bulkLoadHFilesMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.bulkLoadHFilesMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/rollHLogWriterNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.rollHLogWriterNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/unlockRowAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.unlockRowAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/openRegionsNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.openRegionsNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/checkAndDeleteMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.checkAndDeleteMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/stopMaster.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.stopMaster.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/splitRegionMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.splitRegionMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getHTableDescriptorsMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getHTableDescriptorsMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteColumn.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteColumn.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/moveMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.moveMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/shutdown.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.shutdown.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/appendNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.appendNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/appendAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.appendAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getClusterStatusNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getClusterStatusNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/RpcSlowResponseNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.RpcSlowResponseNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/splitSize_num_ops": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.HlogSplitSize_num_ops",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "ServiceComponentInfo/MasterActiveTime": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.masterActiveTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getLastFlushTimeMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getLastFlushTimeMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/checkAndPutNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.checkAndPutNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/splitTime_avg_time": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.HlogSplitTime_mean",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/createTableMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.createTableMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/incrementMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.incrementMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getAlterStatus.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getAlterStatus.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getCompactionStateMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getCompactionStateMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/splitTimeAvgTime": {
+            "metric": "hadoop:service=Master,name=MasterStatistics.splitTimeAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getStoreFileListMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getStoreFileListMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getProtocolSignature.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolSignature.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/RpcProcessingTimeAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.RpcProcessingTimeAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/incrementColumnValueNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.incrementColumnValueNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/enableTable.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.enableTable.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/stopMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.stopMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/multiAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.multiAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/createTable.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.createTable.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/shutdownAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.shutdownAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/openRegionMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.openRegionMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getBlockCacheColumnFamilySummariesMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getBlockCacheColumnFamilySummariesMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteColumn.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteColumn.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/modifyColumn.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.modifyColumn.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/disableTableNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.disableTableNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getProtocolVersion.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolVersion.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/replicateLogEntriesAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.replicateLogEntriesAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/cluster_requests": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.clusterRequests",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getHServerInfoMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getHServerInfoMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getClusterStatusMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getClusterStatusMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/rpcAuthenticationFailures": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.rpcAuthenticationFailures",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/Coprocessors": {
+            "metric": "hadoop:service=Master,name=Master.Coprocessors",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/unlockRowNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.unlockRowNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getAlterStatus.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getAlterStatus.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/regionServerStartup.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerStartup.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/balanceMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.balanceMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/incrementColumnValueMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.incrementColumnValueMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/modifyColumn.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.modifyColumn.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getProtocolVersionMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolVersionMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/RegionsInTransition": {
+            "metric": "hadoop:service=Master,name=Master.RegionsInTransition",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/balanceSwitchAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.balanceSwitchAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getAlterStatusMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getAlterStatusMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/unassignMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.unassignMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/nextAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.nextAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/rollHLogWriterMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.rollHLogWriterMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getAlterStatus.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getAlterStatus.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/stopAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.stopAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/hdfsVersion": {
+            "metric": "hadoop:service=HBase,name=Info.hdfsVersion",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/unassignMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.unassignMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/RpcSlowResponseAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.RpcSlowResponseAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/assignNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.assignNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getLastFlushTimeAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getLastFlushTimeAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getClusterStatusAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getClusterStatusAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/mutateRowNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.mutateRowNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getClosestRowBeforeMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getClosestRowBeforeMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/regionServerReport.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerReport.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getClusterStatus.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getClusterStatus.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/balanceAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.balanceAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/balanceSwitchNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.balanceSwitchNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/RegionServers": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.numRegionServers",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/bulkLoadHFilesAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.bulkLoadHFilesAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/compactRegionAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.compactRegionAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/disableTableMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.disableTableMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/closeMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.closeMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/enableTableNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.enableTableNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/openScannerMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.openScannerMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/moveMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.moveMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/checkAndPutMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.checkAndPutMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteTableAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteTableAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/assign.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.assign.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/ClusterId": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.tag.clusterId",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getProtocolVersionMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolVersionMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/regionServerStartupMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerStartupMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/RpcQueueTimeMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.RpcQueueTimeMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/createTableNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.createTableNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/RpcProcessingTimeMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.RpcProcessingTimeMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getAlterStatus.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getAlterStatus.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/addColumnNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.addColumnNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/splitSizeNumOps": {
+            "metric": "hadoop:service=Master,name=MasterStatistics.splitSizeNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/unassignNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.unassignNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/balance.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.balance.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/closeRegionNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.closeRegionNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getProtocolSignature.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolSignature.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/synchronousBalanceSwitchAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.synchronousBalanceSwitchAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/appendMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.appendMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/unlockRowMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.unlockRowMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getStoreFileListMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getStoreFileListMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/moveAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.moveAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/mutateRowMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.mutateRowMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getHTableDescriptors.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getHTableDescriptors.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getCompactionStateAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getCompactionStateAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/closeRegionMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.closeRegionMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/reportRSFatalError.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.reportRSFatalError.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/RpcSlowResponseMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.RpcSlowResponseMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/balanceSwitchMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.balanceSwitchMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/balanceMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.balanceMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/lockRowMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.lockRowMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/openScannerMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.openScannerMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getStoreFileListAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getStoreFileListAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/openRegionsAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.openRegionsAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/disableTableMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.disableTableMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getOnlineRegionsNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getOnlineRegionsNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteColumnAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteColumnAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/putMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.putMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/replicationCallQueueLen": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.replicationCallQueueLen",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/modifyTableMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.modifyTableMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/reportRSFatalErrorMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.reportRSFatalErrorMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/flushRegionAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.flushRegionAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteColumn.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteColumn.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/offline.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.offline.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/splitTimeMinTime": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.HlogSplitTime_min",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/createTable.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.createTable.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/lockRowAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.lockRowAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/lockRowMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.lockRowMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/synchronousBalanceSwitch.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.synchronousBalanceSwitch.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getClusterStatus.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getClusterStatus.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/addColumn.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.addColumn.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/isMasterRunningNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.isMasterRunningNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/closeAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.closeAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/addColumn.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.addColumn.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/closeMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.closeMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/replicateLogEntriesMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.replicateLogEntriesMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/openRegionsMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.openRegionsMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/balance.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.balance.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/replicateLogEntriesMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.replicateLogEntriesMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/execCoprocessorMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.execCoprocessorMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/splitTime_num_ops": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.HlogSplitTime_num_ops",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "ServiceComponentInfo/RegionsInTransition": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.ritCount",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/modifyTableAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.modifyTableAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/assignMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.assignMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/isMasterRunning.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.isMasterRunning.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/regionServerReport.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerReport.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/rpcAuthenticationSuccesses": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.rpcAuthenticationSuccesses",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/enableTable.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.enableTable.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/execCoprocessorNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.execCoprocessorNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/move.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.move.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/shutdownMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.shutdownMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/assign.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.assign.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/regionServerReportNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerReportNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/addColumnAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.addColumnAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/isMasterRunning.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.isMasterRunning.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getProtocolVersion.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolVersion.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/modifyTable.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.modifyTable.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "ServiceComponentInfo/HeapMemoryUsed": {
+            "metric": "java.lang:type=Memory.HeapMemoryUsage[used]",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/rollHLogWriterAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.rollHLogWriterAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getRegionInfoNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getRegionInfoNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/ReceivedBytes": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.ReceivedBytes",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/move.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.move.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getProtocolSignatureAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolSignatureAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "ServiceComponentInfo/NonHeapMemoryMax": {
+            "metric": "java.lang:type=Memory.NonHeapMemoryUsage[max]",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/modifyTableMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.modifyTableMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/incrementColumnValueAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.incrementColumnValueAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/modifyTableNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.modifyTableNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/disableTable.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.disableTable.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getClusterStatus.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getClusterStatus.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/modifyColumnAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.modifyColumnAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/reportRSFatalError.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.reportRSFatalError.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/DeadRegionServers": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.numDeadRegionServers",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/closeNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.closeNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/unassign.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.unassign.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/balance.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.balance.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/nextMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.nextMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "ServiceComponentInfo/AverageLoad": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.averageLoad",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "ServiceComponentInfo/MasterStartTime": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.masterStartTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/appendMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.appendMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/priorityCallQueueLen": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.priorityCallQueueLen",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getAlterStatusMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getAlterStatusMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/bulkLoadHFilesNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.bulkLoadHFilesNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/callQueueLen": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.callQueueLen",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/synchronousBalanceSwitchMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.synchronousBalanceSwitchMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/flushRegionNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.flushRegionNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/regionServerStartup.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerStartup.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/unassignAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.unassignAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getProtocolVersionNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolVersionNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/shutdown.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.shutdown.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/checkAndPutMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.checkAndPutMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/assignAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.assignAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/checkAndDeleteMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.checkAndDeleteMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/shutdownNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.shutdownNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getAlterStatusNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getAlterStatusNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/disableTable.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.disableTable.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/openRegionNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.openRegionNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/modifyColumn.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.modifyColumn.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/synchronousBalanceSwitch.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.synchronousBalanceSwitch.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getCompactionStateNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getCompactionStateNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getHTableDescriptorsAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getHTableDescriptorsAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/openRegionAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.openRegionAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/stopMaster.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.stopMaster.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getRegionInfoMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getRegionInfoMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/putNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.putNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/hdfsRevision": {
+            "metric": "hadoop:service=HBase,name=Info.hdfsRevision",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/url": {
+            "metric": "hadoop:service=HBase,name=Info.url",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getProtocolSignature.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolSignature.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/openRegionsMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.openRegionsMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/compactRegionNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.compactRegionNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/nextMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.nextMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getOnlineRegionsMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getOnlineRegionsMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/checkAndDeleteNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.checkAndDeleteNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/isMasterRunning.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.isMasterRunning.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteTable.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteTable.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/unassign.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.unassign.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getRegionInfoAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getRegionInfoAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/balance.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.balance.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getHServerInfoNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getHServerInfoNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/shutdown.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.shutdown.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "ServiceComponentInfo/NonHeapMemoryUsed": {
+            "metric": "java.lang:type=Memory.NonHeapMemoryUsage[used]",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteColumnMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteColumnMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getStoreFileListNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getStoreFileListNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteTableMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteTableMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/addColumn.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.addColumn.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/synchronousBalanceSwitchMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.synchronousBalanceSwitchMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/isMasterRunningMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.isMasterRunningMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/closeRegionAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.closeRegionAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/disableTableAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.disableTableAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/assign.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.assign.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/offlineAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.offlineAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "ServiceComponentInfo/HeapMemoryMax": {
+            "metric": "java.lang:type=Memory.HeapMemoryUsage[max]",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/moveNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.moveNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/incrementColumnValueMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.incrementColumnValueMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/splitSize_avg_time": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.HlogSplitSize_mean",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/checkAndDeleteAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.checkAndDeleteAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/mutateRowAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.mutateRowAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/existsMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.existsMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/balanceSwitch.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.balanceSwitch.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/modifyTable.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.modifyTable.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/synchronousBalanceSwitch.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.synchronousBalanceSwitch.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/date": {
+            "metric": "hadoop:service=HBase,name=Info.date",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/incrementAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.incrementAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/flushRegionMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.flushRegionMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getOnlineRegionsMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getOnlineRegionsMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/stopNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.stopNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/user": {
+            "metric": "java.lang:type=Runtime.SystemProperties.user.name",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/stopMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.stopMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getHTableDescriptors.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getHTableDescriptors.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getClosestRowBeforeAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getClosestRowBeforeAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/offlineNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.offlineNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/SentBytes": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.SentBytes",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/incrementMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.incrementMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteTableMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteTableMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/checkAndPutAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.checkAndPutAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/openScannerAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.openScannerAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/stopMasterAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.stopMasterAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/assignMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.assignMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/compactRegionMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.compactRegionMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/openRegionMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.openRegionMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/addColumnMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.addColumnMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/RpcProcessingTimeNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.RpcProcessingTimeNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/existsMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.existsMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/enableTableMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.enableTableMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/splitSizeMinTime": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.HlogSplitSize_min",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/shutdown.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.shutdown.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/enableTableAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.enableTableAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/regionServerStartup.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerStartup.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/lockRowNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.lockRowNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/stopMasterMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.stopMasterMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getProtocolVersion.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolVersion.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/balanceSwitch.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.balanceSwitch.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/move.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.move.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getProtocolSignatureMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolSignatureMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/modifyTable.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.modifyTable.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/splitRegionMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.splitRegionMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/mutateRowMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.mutateRowMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/splitSizeAvgTime": {
+            "metric": "hadoop:service=Master,name=MasterStatistics.splitSizeAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/regionServerReportAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerReportAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/putAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.putAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/shutdownMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.shutdownMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getBlockCacheColumnFamilySummariesAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getBlockCacheColumnFamilySummariesAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getHTableDescriptors.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getHTableDescriptors.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/regionServerStartupMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerStartupMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/createTableMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.createTableMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getHTableDescriptors.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getHTableDescriptors.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/rpcAuthorizationSuccesses": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.rpcAuthorizationSuccesses",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/isMasterRunning.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.isMasterRunning.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/enableTable.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.enableTable.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "ServiceComponentInfo/Version": {
+            "metric": "hadoop:service=HBase,name=Info.version",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getRegionInfoMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getRegionInfoMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/unassign.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.unassign.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/stopMasterMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.stopMasterMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/move.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.move.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          }
+        }
+      }
+    ],
+    "HostComponent": [
+      {
+        "type": "ganglia",
+        "metrics": {
+          "metrics/rpc/deleteTable/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.deleteTable.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/closeRegion_num_ops": {
+            "metric": "rpc.rpc.closeRegion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/regionServerStartup/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.regionServerStartup.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/unassign_num_ops": {
+            "metric": "rpc.rpc.unassign_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClusterStatus/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getClusterStatus.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/modifyTable_num_ops": {
+            "metric": "rpc.rpc.modifyTable_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolVersion_avg_time": {
+            "metric": "rpc.rpc.getProtocolVersion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/unassign/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.unassign.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/load/load_one": {
+            "metric": "load_one",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClosestRowBefore_num_ops": {
+            "metric": "rpc.rpc.getClosestRowBefore_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/memNonHeapUsedM": {
+            "metric": "jvm.JvmMetrics.MemNonHeapUsedM",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/assign/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.assign.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/replicateLogEntries_num_ops": {
+            "metric": "rpc.rpc.replicateLogEntries_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/createTable/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.createTable.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/lockRow_num_ops": {
+            "metric": "rpc.rpc.lockRow_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/flushRegion_avg_time": {
+            "metric": "rpc.rpc.flushRegion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/multi_avg_time": {
+            "metric": "rpc.rpc.multi_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/swap_total": {
+            "metric": "swap_total",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/stopMaster_num_ops": {
+            "metric": "rpc.rpc.stopMaster_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/process/proc_total": {
+            "metric": "proc_total",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/balance_avg_time": {
+            "metric": "rpc.rpc.balance_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/disk/part_max_used": {
+            "metric": "part_max_used",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/splitRegion_num_ops": {
+            "metric": "rpc.rpc.splitRegion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/modifyColumn_avg_time": {
+            "metric": "rpc.rpc.modifyColumn_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/balance_num_ops": {
+            "metric": "rpc.rpc.balance_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/shutdown_num_ops": {
+            "metric": "rpc.rpc.shutdown_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/flushRegion_num_ops": {
+            "metric": "rpc.rpc.flushRegion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_idle": {
+            "metric": "cpu_idle",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/modifyTable/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.modifyTable.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/regionServerReport/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.regionServerReport.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolSignature/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getProtocolSignature.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/get_num_ops": {
+            "metric": "rpc.rpc.get_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/stopMaster_avg_time": {
+            "metric": "rpc.rpc.stopMaster_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/network/bytes_in": {
+            "metric": "bytes_in",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/reportRSFatalError/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.reportRSFatalError.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/memNonHeapCommittedM": {
+            "metric": "jvm.JvmMetrics.MemNonHeapCommittedM",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/shutdown/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.shutdown.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getRegionInfo_avg_time": {
+            "metric": "rpc.rpc.getRegionInfo_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/balanceSwitch/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.balanceSwitch.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/disableTable/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.disableTable.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/reportRSFatalError/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.reportRSFatalError.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/assign/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.assign.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/balance/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.balance.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/enableTable_num_ops": {
+            "metric": "rpc.rpc.enableTable_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/lockRow_avg_time": {
+            "metric": "rpc.rpc.lockRow_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/addColumn_avg_time": {
+            "metric": "rpc.rpc.addColumn_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/reportRSFatalError_num_ops": {
+            "metric": "rpc.rpc.reportRSFatalError_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_wio": {
+            "metric": "cpu_wio",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/master/splitTime_num_ops": {
+            "metric": "master.FileSystem.HlogSplitTime_num_ops",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/getAlterStatus/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getAlterStatus.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/deleteColumn/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.deleteColumn.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/reportRSFatalError_avg_time": {
+            "metric": "rpc.rpc.reportRSFatalError_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rpcAuthenticationSuccesses": {
+            "metric": "rpc.rpc.rpcAuthenticationSuccesses",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/network/pkts_in": {
+            "metric": "pkts_in",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/disableTable_avg_time": {
+            "metric": "rpc.rpc.disableTable_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/mem_total": {
+            "metric": "mem_total",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/memHeapCommittedM": {
+            "metric": "jvm.JvmMetrics.MemHeapCommittedM",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsRunnable": {
+            "metric": "jvm.JvmMetrics.ThreadsRunnable",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegion_avg_time": {
+            "metric": "rpc.rpc.openRegion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/enableTable/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.enableTable.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsNew": {
+            "metric": "jvm.JvmMetrics.ThreadsNew",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClusterStatus_num_ops": {
+            "metric": "rpc.rpc.getClusterStatus_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHTableDescriptors_avg_time": {
+            "metric": "rpc.rpc.getHTableDescriptors_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rpcAuthorizationFailures": {
+            "metric": "rpc.rpc.rpcAuthorizationFailures",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/regionServerReport_avg_time": {
+            "metric": "rpc.rpc.regionServerReport_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/deleteColumn_num_ops": {
+            "metric": "rpc.rpc.deleteColumn_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcQueueTime_avg_time": {
+            "metric": "rpc.rpc.RpcQueueTime_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/increment_num_ops": {
+            "metric": "rpc.rpc.increment_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getAlterStatus_num_ops": {
+            "metric": "rpc.rpc.getAlterStatus_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/modifyColumn_num_ops": {
+            "metric": "rpc.rpc.modifyColumn_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/next_avg_time": {
+            "metric": "rpc.rpc.next_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/deleteColumn/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.deleteColumn.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcSlowResponse_avg_time": {
+            "metric": "rpc.rpc.RpcSlowResponse_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClusterStatus/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getClusterStatus.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/ReceivedBytes": {
+            "metric": "rpc.rpc.ReceivedBytes",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_nice": {
+            "metric": "cpu_nice",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/bulkLoadHFiles_num_ops": {
+            "metric": "rpc.rpc.bulkLoadHFiles_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/unassign_avg_time": {
+            "metric": "rpc.rpc.unassign_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/NumOpenConnections": {
+            "metric": "rpc.rpc.NumOpenConnections",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/jvm/gcTimeMillis": {
+            "metric": "jvm.JvmMetrics.GcTimeMillis",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/regionServerReport/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.regionServerReport.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolVersion/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getProtocolVersion.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsTerminated": {
+            "metric": "jvm.JvmMetrics.ThreadsTerminated",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/network/bytes_out": {
+            "metric": "bytes_out",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/unassign/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.unassign.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/balanceSwitch_avg_time": {
+            "metric": "rpc.rpc.balanceSwitch_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/load/load_five": {
+            "metric": "load_five",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/boottime": {
+            "metric": "boottime",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/compactRegion_avg_time": {
+            "metric": "rpc.rpc.compactRegion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegion_num_ops": {
+            "metric": "rpc.rpc.openRegion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/callQueueLen": {
+            "metric": "rpc.rpc.callQueueLen",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/offline/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.offline.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolSignature/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getProtocolSignature.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/execCoprocessor_num_ops": {
+            "metric": "rpc.rpc.execCoprocessor_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getOnlineRegions_avg_time": {
+            "metric": "rpc.rpc.getOnlineRegions_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/addColumn/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.addColumn.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/disableTable/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.disableTable.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/incrementColumnValue_avg_time": {
+            "metric": "rpc.rpc.incrementColumnValue_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcProcessingTime_num_ops": {
+            "metric": "rpc.rpc.RpcProcessingTime_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/move_num_ops": {
+            "metric": "rpc.rpc.move_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/stop_num_ops": {
+            "metric": "rpc.rpc.stop_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/replicateLogEntries_avg_time": {
+            "metric": "rpc.rpc.replicateLogEntries_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/deleteTable_num_ops": {
+            "metric": "rpc.rpc.deleteTable_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/logError": {
+            "metric": "jvm.JvmMetrics.LogError",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/get_avg_time": {
+            "metric": "rpc.rpc.get_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/multi_num_ops": {
+            "metric": "rpc.rpc.multi_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getBlockCacheColumnFamilySummaries_num_ops": {
+            "metric": "rpc.rpc.getBlockCacheColumnFamilySummaries_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/deleteColumn_avg_time": {
+            "metric": "rpc.rpc.deleteColumn_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/bulkLoadHFiles_avg_time": {
+            "metric": "rpc.rpc.bulkLoadHFiles_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/exists_avg_time": {
+            "metric": "rpc.rpc.exists_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/offline_avg_time": {
+            "metric": "rpc.rpc.offline_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/unlockRow_avg_time": {
+            "metric": "rpc.rpc.unlockRow_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/delete_num_ops": {
+            "metric": "rpc.rpc.delete_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/exists_num_ops": {
+            "metric": "rpc.rpc.exists_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/regionServerStartup_avg_time": {
+            "metric": "rpc.rpc.regionServerStartup_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndDelete_num_ops": {
+            "metric": "rpc.rpc.checkAndDelete_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/closeRegion_avg_time": {
+            "metric": "rpc.rpc.closeRegion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/modifyColumn/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.modifyColumn.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/enableTable/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.enableTable.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolSignature_avg_time": {
+            "metric": "rpc.rpc.getProtocolSignature_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/createTable_num_ops": {
+            "metric": "rpc.rpc.createTable_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/assign_avg_time": {
+            "metric": "rpc.rpc.assign_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/execCoprocessor_avg_time": {
+            "metric": "rpc.rpc.execCoprocessor_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isMasterRunning/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.isMasterRunning.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/close_avg_time": {
+            "metric": "rpc.rpc.close_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/process/proc_run": {
+            "metric": "proc_run",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsBlocked": {
+            "metric": "jvm.JvmMetrics.ThreadsBlocked",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHServerInfo_num_ops": {
+            "metric": "rpc.rpc.getHServerInfo_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcQueueTime_num_ops": {
+            "metric": "rpc.rpc.RpcQueueTime_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/stop_avg_time": {
+            "metric": "rpc.rpc.stop_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rollHLogWriter_avg_time": {
+            "metric": "rpc.rpc.rollHLogWriter_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/modifyTable/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.modifyTable.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/balance/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.balance.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isMasterRunning_avg_time": {
+            "metric": "rpc.rpc.isMasterRunning_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/master/splitSize_num_ops": {
+            "metric": "master.FileSystem.HlogSplitSize_num_ops",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/incrementColumnValue_num_ops": {
+            "metric": "rpc.rpc.incrementColumnValue_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/modifyColumn/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.modifyColumn.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/master/splitTime_avg_time": {
+            "metric": "master.FileSystem.HlogSplitSize_mean",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_aidle": {
+            "metric": "cpu_aidle",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/mem_free": {
+            "metric": "mem_free",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/assign_num_ops": {
+            "metric": "rpc.rpc.assign_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/enableTable_avg_time": {
+            "metric": "rpc.rpc.enableTable_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/move/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.move.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/network/pkts_out": {
+            "metric": "pkts_out",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/close_num_ops": {
+            "metric": "rpc.rpc.close_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/mem_cached": {
+            "metric": "mem_cached",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/addColumn/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.addColumn.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/disk/disk_total": {
+            "metric": "disk_total",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/shutdown/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.shutdown.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openScanner_avg_time": {
+            "metric": "rpc.rpc.openScanner_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcSlowResponse_num_ops": {
+            "metric": "rpc.rpc.RpcSlowResponse_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/deleteTable_avg_time": {
+            "metric": "rpc.rpc.deleteTable_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/master/splitSize_avg_time": {
+            "metric": "master.FileSystem.HlogSplitSize_mean",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/delete_avg_time": {
+            "metric": "rpc.rpc.delete_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_speed": {
+            "metric": "cpu_speed",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClosestRowBefore_avg_time": {
+            "metric": "rpc.rpc.getClosestRowBefore_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/hbase/master/cluster_requests": {
+            "metric": "master.Server.clusterRequests",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/stopMaster/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.stopMaster.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/stopMaster/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.stopMaster.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/RpcProcessingTime_avg_time": {
+            "metric": "rpc.rpc.RpcProcessingTime_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/put_num_ops": {
+            "metric": "rpc.rpc.put_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rpcAuthenticationFailures": {
+            "metric": "rpc.rpc.rpcAuthenticationFailures",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/move_avg_time": {
+            "metric": "rpc.rpc.move_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getClusterStatus_avg_time": {
+            "metric": "rpc.rpc.getClusterStatus_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/regionServerStartup/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.regionServerStartup.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHTableDescriptors/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getHTableDescriptors.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/modifyTable_avg_time": {
+            "metric": "rpc.rpc.modifyTable_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndPut_avg_time": {
+            "metric": "rpc.rpc.checkAndPut_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/put_avg_time": {
+            "metric": "rpc.rpc.put_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHTableDescriptors/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getHTableDescriptors.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/SentBytes": {
+            "metric": "rpc.rpc.SentBytes",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/createTable_avg_time": {
+            "metric": "rpc.rpc.createTable_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/addColumn_num_ops": {
+            "metric": "rpc.rpc.addColumn_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getAlterStatus_avg_time": {
+            "metric": "rpc.rpc.getAlterStatus_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHTableDescriptors_num_ops": {
+            "metric": "rpc.rpc.getHTableDescriptors_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getAlterStatus/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.getAlterStatus.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getRegionInfo_num_ops": {
+            "metric": "rpc.rpc.getRegionInfo_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/maxMemoryM": {
+            "metric": "jvm.metrics.maxMemoryM",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/logWarn": {
+            "metric": "jvm.JvmMetrics.LogWarn",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/compactRegion_num_ops": {
+            "metric": "rpc.rpc.compactRegion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/balanceSwitch/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.balanceSwitch.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsTimedWaiting": {
+            "metric": "jvm.JvmMetrics.ThreadsTimedWaiting",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/gcCount": {
+            "metric": "jvm.JvmMetrics.GcCount",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/deleteTable/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.deleteTable.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getOnlineRegions_num_ops": {
+            "metric": "rpc.rpc.getOnlineRegions_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/memHeapUsedM": {
+            "metric": "jvm.JvmMetrics.MemHeapUsedM",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolVersion_num_ops": {
+            "metric": "rpc.rpc.getProtocolVersion_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/unlockRow_num_ops": {
+            "metric": "rpc.rpc.unlockRow_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/disk/disk_free": {
+            "metric": "disk_free",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/threadsWaiting": {
+            "metric": "jvm.JvmMetrics.ThreadsWaiting",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/mem_buffers": {
+            "metric": "mem_buffers",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/disableTable_num_ops": {
+            "metric": "rpc.rpc.disableTable_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/shutdown_avg_time": {
+            "metric": "rpc.rpc.shutdown_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openScanner_num_ops": {
+            "metric": "rpc.rpc.openScanner_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/offline/aboveOneSec/_avg_time": {
+            "metric": "rpc.rpc.offline.aboveOneSec._avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/regionServerStartup_num_ops": {
+            "metric": "rpc.rpc.regionServerStartup_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_user": {
+            "metric": "cpu_user",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/swap_free": {
+            "metric": "swap_free",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_system": {
+            "metric": "cpu_system",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/regionServerReport_num_ops": {
+            "metric": "rpc.rpc.regionServerReport_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/openRegions_avg_time": {
+            "metric": "rpc.rpc.openRegions_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isMasterRunning/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.isMasterRunning.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/next_num_ops": {
+            "metric": "rpc.rpc.next_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/createTable/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.createTable.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getBlockCacheColumnFamilySummaries_avg_time": {
+            "metric": "rpc.rpc.getBlockCacheColumnFamilySummaries_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndDelete_avg_time": {
+            "metric": "rpc.rpc.checkAndDelete_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/load/load_fifteen": {
+            "metric": "load_fifteen",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getHServerInfo_avg_time": {
+            "metric": "rpc.rpc.getHServerInfo_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/logInfo": {
+            "metric": "jvm.JvmMetrics.LogInfo",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/move/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.move.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/isMasterRunning_num_ops": {
+            "metric": "rpc.rpc.isMasterRunning_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/balanceSwitch_num_ops": {
+            "metric": "rpc.rpc.balanceSwitch_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/offline_num_ops": {
+            "metric": "rpc.rpc.offline_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/memory/mem_shared": {
+            "metric": "mem_shared",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolSignature_num_ops": {
+            "metric": "rpc.rpc.getProtocolSignature_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/getProtocolVersion/aboveOneSec/_num_ops": {
+            "metric": "rpc.rpc.getProtocolVersion.aboveOneSec._num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/cpu/cpu_num": {
+            "metric": "cpu_num",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rollHLogWriter_num_ops": {
+            "metric": "rpc.rpc.rollHLogWriter_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/rpcAuthorizationSuccesses": {
+            "metric": "rpc.rpc.rpcAuthorizationSuccesses",
+            "pointInTime": false,
+            "temporal": true
+          },
+          "metrics/rpc/openRegions_num_ops": {
+            "metric": "rpc.rpc.openRegions_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/jvm/logFatal": {
+            "metric": "jvm.JvmMetrics.LogFatal",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/splitRegion_avg_time": {
+            "metric": "rpc.rpc.splitRegion_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/checkAndPut_num_ops": {
+            "metric": "rpc.rpc.checkAndPut_num_ops",
+            "pointInTime": true,
+            "temporal": true
+          },
+          "metrics/rpc/increment_avg_time": {
+            "metric": "rpc.rpc.increment_avg_time",
+            "pointInTime": true,
+            "temporal": true
+          }
+        }
+      },
+      {
+        "type": "jmx",
+        "metrics": {
+          "metrics/rpc/regionServerReport.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerReport.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/jvm/memMaxM":{
+            "metric" : "Hadoop:service=HBase,name=JvmMetrics.MemMaxM",
+            "pointInTime" : true,
+            "temporal" : false
+          },
+          "metrics/rpc/reportRSFatalError.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.reportRSFatalError.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/closeRegionMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.closeRegionMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/isMasterRunningAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.isMasterRunningAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/RpcQueueTimeAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.RpcQueueTimeAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteTableNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteTableNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/splitRegionAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.splitRegionAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getHTableDescriptorsMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getHTableDescriptorsMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getClusterStatus.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getClusterStatus.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/splitRegionNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.splitRegionNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getProtocolVersionAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolVersionAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/modifyColumnMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.modifyColumnMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getBlockCacheColumnFamilySummariesMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getBlockCacheColumnFamilySummariesMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getClosestRowBeforeMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getClosestRowBeforeMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getProtocolSignatureNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolSignatureNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/RpcSlowResponseMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.RpcSlowResponseMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/AverageLoad": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.averageLoad",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/openScannerNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.openScannerNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteTable.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteTable.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteColumn.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteColumn.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getCompactionStateMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getCompactionStateMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/stopMaster.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.stopMaster.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/regionServerReport.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerReport.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getHServerInfoAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getHServerInfoAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/modifyColumn.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.modifyColumn.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/rollHLogWriterMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.rollHLogWriterMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/offlineMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.offlineMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getProtocolSignatureMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolSignatureMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/ServerName": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.tag.serverName",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getHServerInfoMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getHServerInfoMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/splitSizeMaxTime": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.HlogSplitSize_max",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/execCoprocessorAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.execCoprocessorAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/RpcProcessingTimeMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.RpcProcessingTimeMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getClusterStatusMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getClusterStatusMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/offline.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.offline.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/ZookeeperQuorum": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.tag.zookeeperQuorum",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/hdfsDate": {
+            "metric": "hadoop:service=HBase,name=Info.hdfsDate",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/createTable.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.createTable.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/offlineMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.offlineMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/offline.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.offline.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/balanceNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.balanceNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getClosestRowBeforeNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getClosestRowBeforeNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/modifyColumnNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.modifyColumnNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getLastFlushTimeNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getLastFlushTimeNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/stopMaster.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.stopMaster.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteTable.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteTable.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/hdfsUrl": {
+            "metric": "hadoop:service=HBase,name=Info.hdfsUrl",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/jvm/NonHeapMemoryMax": {
+            "metric": "java.lang:type=Memory.NonHeapMemoryUsage[max]",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/multiMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.multiMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/revision": {
+            "metric": "hadoop:service=HBase,name=Info.revision",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/modifyColumnMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.modifyColumnMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/addColumnMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.addColumnMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getHTableDescriptorsNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getHTableDescriptorsNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/RpcQueueTimeMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.RpcQueueTimeMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/multiNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.multiNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getProtocolVersion.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolVersion.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/offline.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.offline.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteTable.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteTable.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/enableTableMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.enableTableMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/regionServerReportMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerReportMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/reportRSFatalErrorNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.reportRSFatalErrorNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/addColumn.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.addColumn.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/unassign.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.unassign.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/reportRSFatalErrorMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.reportRSFatalErrorMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/disableTable.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.disableTable.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/existsAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.existsAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/MasterActiveTime": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.masterActiveTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getBlockCacheColumnFamilySummariesNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getBlockCacheColumnFamilySummariesNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/createTable.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.createTable.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/rpcAuthorizationFailures": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.rpcAuthorizationFailures",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/hdfsUser": {
+            "metric": "hadoop:service=HBase,name=Info.hdfsUser",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/regionServerStartupAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerStartupAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/regionServerStartupNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerStartupNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteColumnNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteColumnNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/version": {
+            "metric": "hadoop:service=HBase,name=Info.version",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/splitTimeMaxTime": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.HlogSplitTime_max",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/synchronousBalanceSwitchNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.synchronousBalanceSwitchNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/stopMasterNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.stopMasterNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/splitTimeNumOps": {
+            "metric": "hadoop:service=Master,name=MasterStatistics.splitTimeNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/reportRSFatalErrorAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.reportRSFatalErrorAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/replicateLogEntriesNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.replicateLogEntriesNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/multiMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.multiMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteColumnMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteColumnMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getProtocolSignature.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolSignature.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getLastFlushTimeMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getLastFlushTimeMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/disableTable.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.disableTable.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/NumOpenConnections": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.NumOpenConnections",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/RpcQueueTimeNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.RpcQueueTimeNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/regionServerReportMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerReportMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/IsActiveMaster": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.tag.isActiveMaster",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/bulkLoadHFilesMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.bulkLoadHFilesMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/synchronousBalanceSwitch.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.synchronousBalanceSwitch.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/MasterStartTime": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.masterStartTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/balanceSwitchMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.balanceSwitchMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/unlockRowMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.unlockRowMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/incrementNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.incrementNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/reportRSFatalError.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.reportRSFatalError.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/balanceSwitch.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.balanceSwitch.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/execCoprocessorMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.execCoprocessorMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/enableTable.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.enableTable.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/putMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.putMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/flushRegionMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.flushRegionMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/nextNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.nextNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getOnlineRegionsAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getOnlineRegionsAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/createTableAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.createTableAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/modifyTable.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.modifyTable.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getAlterStatusAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getAlterStatusAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/assign.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.assign.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/regionServerStartup.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerStartup.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/balanceSwitch.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.balanceSwitch.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/isMasterRunningMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.isMasterRunningMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/existsNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.existsNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/compactRegionMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.compactRegionMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/bulkLoadHFilesMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.bulkLoadHFilesMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/rollHLogWriterNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.rollHLogWriterNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/unlockRowAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.unlockRowAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/openRegionsNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.openRegionsNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/checkAndDeleteMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.checkAndDeleteMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/stopMaster.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.stopMaster.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/splitRegionMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.splitRegionMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getHTableDescriptorsMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getHTableDescriptorsMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteColumn.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteColumn.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/moveMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.moveMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/shutdown.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.shutdown.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/appendNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.appendNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/appendAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.appendAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getClusterStatusNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getClusterStatusNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/RpcSlowResponseNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.RpcSlowResponseNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/splitSize_num_ops": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.HlogSplitSize_num_ops",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getLastFlushTimeMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getLastFlushTimeMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/checkAndPutNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.checkAndPutNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/splitTime_avg_time": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.HlogSplitTime_mean",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/createTableMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.createTableMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/incrementMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.incrementMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getAlterStatus.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getAlterStatus.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getCompactionStateMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getCompactionStateMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/splitTimeAvgTime": {
+            "metric": "hadoop:service=Master,name=MasterStatistics.splitTimeAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getStoreFileListMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getStoreFileListMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getProtocolSignature.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolSignature.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/RpcProcessingTimeAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.RpcProcessingTimeAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/incrementColumnValueNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.incrementColumnValueNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/enableTable.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.enableTable.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/stopMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.stopMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/multiAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.multiAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/createTable.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.createTable.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/shutdownAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.shutdownAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/openRegionMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.openRegionMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getBlockCacheColumnFamilySummariesMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getBlockCacheColumnFamilySummariesMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteColumn.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteColumn.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/modifyColumn.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.modifyColumn.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/disableTableNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.disableTableNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getProtocolVersion.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolVersion.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/replicateLogEntriesAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.replicateLogEntriesAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/cluster_requests": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.clusterRequests",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getHServerInfoMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getHServerInfoMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getClusterStatusMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getClusterStatusMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/rpcAuthenticationFailures": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.rpcAuthenticationFailures",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/Coprocessors": {
+            "metric": "hadoop:service=Master,name=Master.Coprocessors",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/unlockRowNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.unlockRowNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getAlterStatus.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getAlterStatus.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/regionServerStartup.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerStartup.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/balanceMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.balanceMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/modifyColumn.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.modifyColumn.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/incrementColumnValueMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.incrementColumnValueMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getProtocolVersionMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolVersionMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/RegionsInTransition": {
+            "metric": "hadoop:service=Master,name=Master.RegionsInTransition",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/balanceSwitchAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.balanceSwitchAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getAlterStatusMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getAlterStatusMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/unassignMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.unassignMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/nextAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.nextAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/rollHLogWriterMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.rollHLogWriterMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getAlterStatus.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getAlterStatus.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/stopAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.stopAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/hdfsVersion": {
+            "metric": "hadoop:service=HBase,name=Info.hdfsVersion",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/unassignMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.unassignMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/RpcSlowResponseAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.RpcSlowResponseAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/assignNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.assignNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getLastFlushTimeAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getLastFlushTimeAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getClusterStatusAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getClusterStatusAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/mutateRowNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.mutateRowNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getClosestRowBeforeMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getClosestRowBeforeMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/regionServerReport.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerReport.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getClusterStatus.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getClusterStatus.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/balanceAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.balanceAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/balanceSwitchNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.balanceSwitchNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/RegionServers": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.numRegionServers",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/bulkLoadHFilesAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.bulkLoadHFilesAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/compactRegionAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.compactRegionAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/disableTableMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.disableTableMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/closeMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.closeMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/enableTableNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.enableTableNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/openScannerMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.openScannerMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/moveMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.moveMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/checkAndPutMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.checkAndPutMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteTableAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteTableAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/assign.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.assign.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/ClusterId": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.tag.clusterId",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getProtocolVersionMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolVersionMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/regionServerStartupMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerStartupMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/RpcQueueTimeMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.RpcQueueTimeMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/createTableNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.createTableNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/RpcProcessingTimeMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.RpcProcessingTimeMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getAlterStatus.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getAlterStatus.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/splitSizeNumOps": {
+            "metric": "hadoop:service=Master,name=MasterStatistics.splitSizeNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/addColumnNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.addColumnNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/unassignNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.unassignNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/balance.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.balance.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/closeRegionNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.closeRegionNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getProtocolSignature.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolSignature.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/synchronousBalanceSwitchAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.synchronousBalanceSwitchAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/appendMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.appendMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/unlockRowMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.unlockRowMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getStoreFileListMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getStoreFileListMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/moveAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.moveAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/mutateRowMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.mutateRowMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getHTableDescriptors.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getHTableDescriptors.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getCompactionStateAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getCompactionStateAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/closeRegionMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.closeRegionMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/reportRSFatalError.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.reportRSFatalError.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/jvm/HeapMemoryMax": {
+            "metric": "java.lang:type=Memory.HeapMemoryUsage[max]",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/RpcSlowResponseMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.RpcSlowResponseMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/balanceSwitchMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.balanceSwitchMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/jvm/HeapMemoryUsed": {
+            "metric": "java.lang:type=Memory.HeapMemoryUsage[used]",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/balanceMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.balanceMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/lockRowMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.lockRowMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/openScannerMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.openScannerMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getStoreFileListAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getStoreFileListAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/openRegionsAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.openRegionsAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/disableTableMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.disableTableMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getOnlineRegionsNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getOnlineRegionsNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteColumnAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteColumnAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/replicationCallQueueLen": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.replicationCallQueueLen",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/putMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.putMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/modifyTableMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.modifyTableMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/reportRSFatalErrorMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.reportRSFatalErrorMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/flushRegionAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.flushRegionAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteColumn.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteColumn.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/offline.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.offline.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/splitTimeMinTime": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.HlogSplitTime_min",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/createTable.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.createTable.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/lockRowAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.lockRowAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/lockRowMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.lockRowMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/synchronousBalanceSwitch.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.synchronousBalanceSwitch.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getClusterStatus.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getClusterStatus.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/addColumn.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.addColumn.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/isMasterRunningNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.isMasterRunningNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/closeAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.closeAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/addColumn.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.addColumn.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/closeMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.closeMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/replicateLogEntriesMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.replicateLogEntriesMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/openRegionsMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.openRegionsMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/balance.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.balance.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/replicateLogEntriesMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.replicateLogEntriesMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/execCoprocessorMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.execCoprocessorMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/splitTime_num_ops": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.HlogSplitTime_num_ops",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/modifyTableAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.modifyTableAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/assignMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.assignMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/isMasterRunning.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.isMasterRunning.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/regionServerReport.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerReport.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/rpcAuthenticationSuccesses": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.rpcAuthenticationSuccesses",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/enableTable.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.enableTable.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/execCoprocessorNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.execCoprocessorNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/jvm/NonHeapMemoryUsed": {
+            "metric": "java.lang:type=Memory.NonHeapMemoryUsage[used]",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/move.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.move.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/shutdownMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.shutdownMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/assign.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.assign.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/regionServerReportNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerReportNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/addColumnAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.addColumnAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/isMasterRunning.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.isMasterRunning.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getProtocolVersion.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolVersion.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/modifyTable.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.modifyTable.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/rollHLogWriterAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.rollHLogWriterAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getRegionInfoNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getRegionInfoNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/ReceivedBytes": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.ReceivedBytes",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/move.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.move.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getProtocolSignatureAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolSignatureAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/modifyTableMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.modifyTableMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/incrementColumnValueAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.incrementColumnValueAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/modifyTableNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.modifyTableNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/disableTable.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.disableTable.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getClusterStatus.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getClusterStatus.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/modifyColumnAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.modifyColumnAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/reportRSFatalError.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.reportRSFatalError.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/DeadRegionServers": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.numDeadRegionServers",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/closeNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.closeNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/unassign.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.unassign.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/balance.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.balance.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/nextMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.nextMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/appendMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.appendMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/priorityCallQueueLen": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.priorityCallQueueLen",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getAlterStatusMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getAlterStatusMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/bulkLoadHFilesNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.bulkLoadHFilesNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/callQueueLen": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.callQueueLen",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/synchronousBalanceSwitchMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.synchronousBalanceSwitchMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/flushRegionNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.flushRegionNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/regionServerStartup.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerStartup.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/unassignAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.unassignAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getProtocolVersionNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolVersionNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/shutdown.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.shutdown.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/checkAndPutMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.checkAndPutMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/assignAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.assignAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/checkAndDeleteMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.checkAndDeleteMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/shutdownNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.shutdownNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getAlterStatusNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getAlterStatusNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/disableTable.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.disableTable.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/openRegionNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.openRegionNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/modifyColumn.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.modifyColumn.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/synchronousBalanceSwitch.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.synchronousBalanceSwitch.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getCompactionStateNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getCompactionStateNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getHTableDescriptorsAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getHTableDescriptorsAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/openRegionAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.openRegionAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/stopMaster.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.stopMaster.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getRegionInfoMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getRegionInfoMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/putNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.putNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/hdfsRevision": {
+            "metric": "hadoop:service=HBase,name=Info.hdfsRevision",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/url": {
+            "metric": "hadoop:service=HBase,name=Info.url",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getProtocolSignature.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolSignature.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/openRegionsMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.openRegionsMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/compactRegionNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.compactRegionNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/nextMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.nextMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getOnlineRegionsMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getOnlineRegionsMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/checkAndDeleteNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.checkAndDeleteNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/isMasterRunning.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.isMasterRunning.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteTable.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteTable.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/unassign.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.unassign.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getRegionInfoAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getRegionInfoAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/balance.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.balance.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getHServerInfoNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getHServerInfoNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/shutdown.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.shutdown.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteColumnMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteColumnMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getStoreFileListNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getStoreFileListNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteTableMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteTableMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/addColumn.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.addColumn.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/synchronousBalanceSwitchMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.synchronousBalanceSwitchMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/isMasterRunningMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.isMasterRunningMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/closeRegionAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.closeRegionAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/disableTableAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.disableTableAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/assign.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.assign.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/offlineAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.offlineAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/moveNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.moveNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/incrementColumnValueMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.incrementColumnValueMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/splitSize_avg_time": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.HlogSplitSize_mean",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/load/AverageLoad": {
+            "metric": "hadoop:service=Master,name=Master.AverageLoad",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/checkAndDeleteAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.checkAndDeleteAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/mutateRowAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.mutateRowAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/existsMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.existsMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/balanceSwitch.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.balanceSwitch.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/modifyTable.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.modifyTable.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/synchronousBalanceSwitch.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.synchronousBalanceSwitch.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/date": {
+            "metric": "hadoop:service=HBase,name=Info.date",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/incrementAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.incrementAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/flushRegionMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.flushRegionMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getOnlineRegionsMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getOnlineRegionsMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/stopNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.stopNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/user": {
+            "metric": "java.lang:type=Runtime.SystemProperties.user.name",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/stopMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.stopMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getHTableDescriptors.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getHTableDescriptors.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getClosestRowBeforeAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getClosestRowBeforeAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/offlineNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.offlineNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/SentBytes": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.SentBytes",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/incrementMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.incrementMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/deleteTableMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.deleteTableMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/checkAndPutAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.checkAndPutAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/openScannerAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.openScannerAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/stopMasterAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.stopMasterAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/assignMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.assignMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/compactRegionMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.compactRegionMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/openRegionMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.openRegionMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/addColumnMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.addColumnMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/RpcProcessingTimeNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.RpcProcessingTimeNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/existsMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.existsMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/enableTableMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.enableTableMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/splitSizeMinTime": {
+            "metric": "Hadoop:service=HBase,name=Master,sub=Server.HlogSplitSize_min",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/shutdown.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.shutdown.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/enableTableAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.enableTableAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/regionServerStartup.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerStartup.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/lockRowNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.lockRowNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getProtocolVersion.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolVersion.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/stopMasterMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.stopMasterMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/balanceSwitch.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.balanceSwitch.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/move.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.move.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getProtocolSignatureMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getProtocolSignatureMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/modifyTable.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.modifyTable.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/splitRegionMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.splitRegionMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/mutateRowMinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.mutateRowMinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/hbase/master/splitSizeAvgTime": {
+            "metric": "hadoop:service=Master,name=MasterStatistics.splitSizeAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/regionServerReportAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerReportAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/putAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.putAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getNumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getNumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/shutdownMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.shutdownMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getBlockCacheColumnFamilySummariesAvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getBlockCacheColumnFamilySummariesAvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getHTableDescriptors.aboveOneSec.MaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getHTableDescriptors.aboveOneSec.MaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/regionServerStartupMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.regionServerStartupMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/createTableMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.createTableMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getHTableDescriptors.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getHTableDescriptors.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/rpcAuthorizationSuccesses": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.rpcAuthorizationSuccesses",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/isMasterRunning.aboveOneSec.NumOps": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.isMasterRunning.aboveOneSec.NumOps",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/enableTable.aboveOneSec.AvgTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.enableTable.aboveOneSec.AvgTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/getRegionInfoMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.getRegionInfoMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/unassign.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.unassign.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/stopMasterMaxTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.stopMasterMaxTime",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/rpc/move.aboveOneSec.MinTime": {
+            "metric": "hadoop:service=HBase,name=RPCStatistics.move.aboveOneSec.MinTime",
+            "pointInTime": true,
+            "temporal": false
+          }
+        }
+      }
+    ]
+  }
+}

+ 164 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/files/draining_servers.rb

@@ -0,0 +1,164 @@
+#
+# 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.
+#
+
+# Add or remove servers from draining mode via zookeeper 
+
+require 'optparse'
+include Java
+
+import org.apache.hadoop.hbase.HBaseConfiguration
+import org.apache.hadoop.hbase.client.HBaseAdmin
+import org.apache.hadoop.hbase.zookeeper.ZKUtil
+import org.apache.commons.logging.Log
+import org.apache.commons.logging.LogFactory
+
+# Name of this script
+NAME = "draining_servers"
+
+# Do command-line parsing
+options = {}
+optparse = OptionParser.new do |opts|
+  opts.banner = "Usage: ./hbase org.jruby.Main #{NAME}.rb [options] add|remove|list <hostname>|<host:port>|<servername> ..."
+  opts.separator 'Add remove or list servers in draining mode. Can accept either hostname to drain all region servers' +
+                 'in that host, a host:port pair or a host,port,startCode triplet. More than one server can be given separated by space'
+  opts.on('-h', '--help', 'Display usage information') do
+    puts opts
+    exit
+  end
+  options[:debug] = false
+  opts.on('-d', '--debug', 'Display extra debug logging') do
+    options[:debug] = true
+  end
+end
+optparse.parse!
+
+# Return array of servernames where servername is hostname+port+startcode
+# comma-delimited
+def getServers(admin)
+  serverInfos = admin.getClusterStatus().getServerInfo()
+  servers = []
+  for server in serverInfos
+    servers << server.getServerName()
+  end
+  return servers
+end
+
+def getServerNames(hostOrServers, config)
+  ret = []
+  
+  for hostOrServer in hostOrServers
+    # check whether it is already serverName. No need to connect to cluster
+    parts = hostOrServer.split(',')
+    if parts.size() == 3
+      ret << hostOrServer
+    else 
+      admin = HBaseAdmin.new(config) if not admin
+      servers = getServers(admin)
+
+      hostOrServer = hostOrServer.gsub(/:/, ",")
+      for server in servers 
+        ret << server if server.start_with?(hostOrServer)
+      end
+    end
+  end
+  
+  admin.close() if admin
+  return ret
+end
+
+def addServers(options, hostOrServers)
+  config = HBaseConfiguration.create()
+  servers = getServerNames(hostOrServers, config)
+  
+  zkw = org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.new(config, "draining_servers", nil)
+  parentZnode = zkw.drainingZNode
+  
+  begin
+    for server in servers
+      node = ZKUtil.joinZNode(parentZnode, server)
+      ZKUtil.createAndFailSilent(zkw, node)
+    end
+  ensure
+    zkw.close()
+  end
+end
+
+def removeServers(options, hostOrServers)
+  config = HBaseConfiguration.create()
+  servers = getServerNames(hostOrServers, config)
+  
+  zkw = org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.new(config, "draining_servers", nil)
+  parentZnode = zkw.drainingZNode
+  
+  begin
+    for server in servers
+      node = ZKUtil.joinZNode(parentZnode, server)
+      ZKUtil.deleteNodeFailSilent(zkw, node)
+    end
+  ensure
+    zkw.close()
+  end
+end
+
+# list servers in draining mode
+def listServers(options)
+  config = HBaseConfiguration.create()
+  
+  zkw = org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.new(config, "draining_servers", nil)
+  parentZnode = zkw.drainingZNode
+
+  servers = ZKUtil.listChildrenNoWatch(zkw, parentZnode)
+  servers.each {|server| puts server}
+end
+
+hostOrServers = ARGV[1..ARGV.size()]
+
+# Create a logger and disable the DEBUG-level annoying client logging
+def configureLogging(options)
+  apacheLogger = LogFactory.getLog(NAME)
+  # Configure log4j to not spew so much
+  unless (options[:debug]) 
+    logger = org.apache.log4j.Logger.getLogger("org.apache.hadoop.hbase")
+    logger.setLevel(org.apache.log4j.Level::WARN)
+    logger = org.apache.log4j.Logger.getLogger("org.apache.zookeeper")
+    logger.setLevel(org.apache.log4j.Level::WARN)
+  end
+  return apacheLogger
+end
+
+# Create a logger and save it to ruby global
+$LOG = configureLogging(options)
+case ARGV[0]
+  when 'add'
+    if ARGV.length < 2
+      puts optparse
+      exit 1
+    end
+    addServers(options, hostOrServers)
+  when 'remove'
+    if ARGV.length < 2
+      puts optparse
+      exit 1
+    end
+    removeServers(options, hostOrServers)
+  when 'list'
+    listServers(options)
+  else
+    puts optparse
+    exit 3
+end

+ 34 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/files/hbaseSmokeVerify.sh

@@ -0,0 +1,34 @@
+#!/usr/bin/env bash
+#
+#
+# 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.
+#
+#
+conf_dir=$1
+data=$2
+hbase_cmd=$3
+echo "scan 'ambarismoketest'" | $hbase_cmd --config $conf_dir shell > /tmp/hbase_chk_verify
+cat /tmp/hbase_chk_verify
+echo "Looking for $data"
+grep -q $data /tmp/hbase_chk_verify
+if [ "$?" -ne 0 ]
+then
+  exit 1
+fi
+
+grep -q '1 row(s)' /tmp/hbase_chk_verify

+ 19 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/scripts/__init__.py

@@ -0,0 +1,19 @@
+#!/usr/bin/env python
+"""
+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.
+
+"""

+ 40 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/scripts/functions.py

@@ -0,0 +1,40 @@
+#!/usr/bin/env python
+"""
+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.
+
+"""
+
+import os
+import re
+import math
+import datetime
+
+from resource_management.core.shell import checked_call
+
+def calc_xmn_from_xms(heapsize_str, xmn_percent, xmn_max):
+  """
+  @param heapsize_str: str (e.g '1000m')
+  @param xmn_percent: float (e.g 0.2)
+  @param xmn_max: integer (e.g 512)
+  """
+  heapsize = int(re.search('\d+',heapsize_str).group(0))
+  heapsize_unit = re.search('\D+',heapsize_str).group(0)
+  xmn_val = int(math.floor(heapsize*xmn_percent))
+  xmn_val -= xmn_val % 8
+  
+  result_xmn_val = xmn_max if xmn_val > xmn_max else xmn_val
+  return str(result_xmn_val) + heapsize_unit

+ 144 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/scripts/hbase.py

@@ -0,0 +1,144 @@
+#!/usr/bin/env python
+"""
+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.
+
+"""
+import os
+
+from resource_management import *
+import sys
+
+def hbase(name=None # 'master' or 'regionserver' or 'client'
+              ):
+  import params
+
+  Directory( params.hbase_conf_dir,
+      owner = params.hbase_user,
+      group = params.user_group,
+      recursive = True
+  )
+
+  Directory (params.tmp_dir,
+             owner = params.hbase_user,
+             recursive = True
+  )
+
+  Directory (os.path.join(params.local_dir, "jars"),
+             owner = params.hbase_user,
+             group = params.user_group,
+             mode=0775,
+             recursive = True
+  )
+
+  XmlConfig( "hbase-site.xml",
+            conf_dir = params.hbase_conf_dir,
+            configurations = params.config['configurations']['hbase-site'],
+            configuration_attributes=params.config['configuration_attributes']['hbase-site'],
+            owner = params.hbase_user,
+            group = params.user_group
+  )
+
+  XmlConfig( "hdfs-site.xml",
+            conf_dir = params.hbase_conf_dir,
+            configurations = params.config['configurations']['hdfs-site'],
+            configuration_attributes=params.config['configuration_attributes']['hdfs-site'],
+            owner = params.hbase_user,
+            group = params.user_group
+  )
+
+  XmlConfig("hdfs-site.xml",
+            conf_dir=params.hadoop_conf_dir,
+            configurations=params.config['configurations']['hdfs-site'],
+            configuration_attributes=params.config['configuration_attributes']['hdfs-site'],
+            owner=params.hdfs_user,
+            group=params.user_group
+  )
+
+  if 'hbase-policy' in params.config['configurations']:
+    XmlConfig( "hbase-policy.xml",
+            conf_dir = params.hbase_conf_dir,
+            configurations = params.config['configurations']['hbase-policy'],
+            configuration_attributes=params.config['configuration_attributes']['hbase-policy'],
+            owner = params.hbase_user,
+            group = params.user_group
+    )
+  # Manually overriding ownership of file installed by hadoop package
+  else: 
+    File( format("{params.hbase_conf_dir}/hbase-policy.xml"),
+      owner = params.hbase_user,
+      group = params.user_group
+    )
+
+  File(format("{hbase_conf_dir}/hbase-env.sh"),
+       owner = params.hbase_user,
+       content=InlineTemplate(params.hbase_env_sh_template)
+  )     
+       
+  hbase_TemplateConfig( params.metric_prop_file_name,
+    tag = 'GANGLIA-MASTER' if name == 'master' else 'GANGLIA-RS'
+  )
+
+  hbase_TemplateConfig( 'regionservers')
+
+  if params.security_enabled:
+    hbase_TemplateConfig( format("hbase_{name}_jaas.conf"))
+  
+  if name != "client":
+    Directory( params.pid_dir,
+      owner = params.hbase_user,
+      recursive = True
+    )
+  
+    Directory (params.log_dir,
+      owner = params.hbase_user,
+      recursive = True
+    )
+
+  if (params.log4j_props != None):
+    File(format("{params.hbase_conf_dir}/log4j.properties"),
+         mode=0644,
+         group=params.user_group,
+         owner=params.hbase_user,
+         content=params.log4j_props
+    )
+  elif (os.path.exists(format("{params.hbase_conf_dir}/log4j.properties"))):
+    File(format("{params.hbase_conf_dir}/log4j.properties"),
+      mode=0644,
+      group=params.user_group,
+      owner=params.hbase_user
+    )
+  if name in ["master","regionserver"]:
+    params.HdfsDirectory(params.hbase_hdfs_root_dir,
+                         action="create_delayed",
+                         owner=params.hbase_user
+    )
+    params.HdfsDirectory(params.hbase_staging_dir,
+                         action="create_delayed",
+                         owner=params.hbase_user,
+                         mode=0711
+    )
+    params.HdfsDirectory(None, action="create")
+
+def hbase_TemplateConfig(name, 
+                         tag=None
+                         ):
+  import params
+
+  TemplateConfig( format("{hbase_conf_dir}/{name}"),
+      owner = params.hbase_user,
+      template_tag = tag
+  )

+ 43 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/scripts/hbase_client.py

@@ -0,0 +1,43 @@
+#!/usr/bin/env python
+"""
+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.
+
+"""
+
+import sys
+from resource_management import *
+
+from hbase import hbase
+
+         
+class HbaseClient(Script):
+  def install(self, env):
+    self.install_packages(env)
+    self.configure(env)
+    
+  def configure(self, env):
+    import params
+    env.set_params(params)
+    
+    hbase(name='client')
+
+  def status(self, env):
+    raise ClientComponentHasNoStatus()
+
+
+if __name__ == "__main__":
+  HbaseClient().execute()

+ 74 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/scripts/hbase_decommission.py

@@ -0,0 +1,74 @@
+#!/usr/bin/env python
+"""
+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.
+
+"""
+
+from resource_management import *
+
+
+def hbase_decommission(env):
+  import params
+
+  env.set_params(params)
+  kinit_cmd = params.kinit_cmd
+
+  File(params.region_drainer,
+       content=StaticFile("draining_servers.rb"),
+       mode=0755
+  )
+  
+  if params.hbase_excluded_hosts and params.hbase_excluded_hosts.split(","):
+    hosts = params.hbase_excluded_hosts.split(",")
+  elif params.hbase_included_hosts and params.hbase_included_hosts.split(","):
+    hosts = params.hbase_included_hosts.split(",")
+
+  if params.hbase_drain_only:
+    for host in hosts:
+      if host:
+        regiondrainer_cmd = format(
+          "{kinit_cmd} {hbase_cmd} --config {hbase_conf_dir} org.jruby.Main {region_drainer} remove {host}")
+        Execute(regiondrainer_cmd,
+                user=params.hbase_user,
+                logoutput=True
+        )
+        pass
+    pass
+
+  else:
+    for host in hosts:
+      if host:
+        regiondrainer_cmd = format(
+          "{kinit_cmd} {hbase_cmd} --config {hbase_conf_dir} org.jruby.Main {region_drainer} add {host}")
+        regionmover_cmd = format(
+          "{kinit_cmd} {hbase_cmd} --config {hbase_conf_dir} org.jruby.Main {region_mover} unload {host}")
+
+        Execute(regiondrainer_cmd,
+                user=params.hbase_user,
+                logoutput=True
+        )
+
+        Execute(regionmover_cmd,
+                user=params.hbase_user,
+                logoutput=True
+        )
+      pass
+    pass
+  pass
+  
+
+  pass

+ 70 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/scripts/hbase_master.py

@@ -0,0 +1,70 @@
+#!/usr/bin/env python
+"""
+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.
+
+"""
+
+import sys
+from resource_management import *
+
+from hbase import hbase
+from hbase_service import hbase_service
+from hbase_decommission import hbase_decommission
+
+         
+class HbaseMaster(Script):
+  def install(self, env):
+    self.install_packages(env)
+    
+  def configure(self, env):
+    import params
+    env.set_params(params)
+
+    hbase(name='master')
+    
+  def start(self, env):
+    import params
+    env.set_params(params)
+    self.configure(env) # for security
+
+    hbase_service( 'master',
+      action = 'start'
+    )
+    
+  def stop(self, env):
+    import params
+    env.set_params(params)
+
+    hbase_service( 'master',
+      action = 'stop'
+    )
+
+  def status(self, env):
+    import status_params
+    env.set_params(status_params)
+    pid_file = format("{pid_dir}/hbase-{hbase_user}-master.pid")
+    check_process_status(pid_file)
+
+  def decommission(self, env):
+    import params
+    env.set_params(params)
+
+    hbase_decommission(env)
+
+
+if __name__ == "__main__":
+  HbaseMaster().execute()

+ 66 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/scripts/hbase_regionserver.py

@@ -0,0 +1,66 @@
+#!/usr/bin/env python
+"""
+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.
+
+"""
+
+import sys
+from resource_management import *
+
+from hbase import hbase
+from hbase_service import hbase_service
+
+         
+class HbaseRegionServer(Script):
+  def install(self, env):
+    self.install_packages(env)
+    
+  def configure(self, env):
+    import params
+    env.set_params(params)
+
+    hbase(name='regionserver')
+      
+  def start(self, env):
+    import params
+    env.set_params(params)
+    self.configure(env) # for security
+
+    hbase_service( 'regionserver',
+      action = 'start'
+    )
+    
+  def stop(self, env):
+    import params
+    env.set_params(params)
+
+    hbase_service( 'regionserver',
+      action = 'stop'
+    )
+
+  def status(self, env):
+    import status_params
+    env.set_params(status_params)
+    pid_file = format("{pid_dir}/hbase-{hbase_user}-regionserver.pid")
+    check_process_status(pid_file)
+    
+  def decommission(self, env):
+    print "Decommission not yet implemented!"
+    
+
+if __name__ == "__main__":
+  HbaseRegionServer().execute()

+ 51 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/scripts/hbase_service.py

@@ -0,0 +1,51 @@
+#!/usr/bin/env python
+"""
+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.
+
+"""
+
+from resource_management import *
+
+def hbase_service(
+  name,
+  action = 'start'): # 'start' or 'stop' or 'status'
+    
+    import params
+  
+    role = name
+    cmd = format("{daemon_script} --config {hbase_conf_dir}")
+    pid_file = format("{pid_dir}/hbase-{hbase_user}-{role}.pid")
+    no_op_test = format("ls {pid_file} >/dev/null 2>&1 && ps `cat {pid_file}` >/dev/null 2>&1")
+    
+    if action == 'start':
+      daemon_cmd = format("{cmd} start {role}")
+      
+      Execute ( daemon_cmd,
+        not_if = no_op_test,
+        user = params.hbase_user
+      )
+    elif action == 'stop':
+      daemon_cmd = format("{cmd} stop {role}")
+
+      Execute ( daemon_cmd,
+        user = params.hbase_user,
+        # BUGFIX: hbase regionserver sometimes hangs when nn is in safemode
+        timeout = 30,
+        on_timeout = format("{no_op_test} && kill -9 `cat {pid_file}`")
+      )
+      
+      Execute (format("rm -f {pid_file}"))

+ 138 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/scripts/params.py

@@ -0,0 +1,138 @@
+#!/usr/bin/env python
+"""
+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.
+
+"""
+
+from functions import calc_xmn_from_xms
+from resource_management import *
+import status_params
+
+# server configurations
+config = Script.get_config()
+exec_tmp_dir = Script.get_tmp_dir()
+
+#RPM versioning support
+rpm_version = default("/configurations/cluster-env/rpm_version", None)
+
+#hadoop params
+if rpm_version:
+  hadoop_bin_dir = format("/usr/phd/current/hadoop-client/bin")
+  daemon_script = format('/usr/phd/current/hbase-client/bin/hbase-daemon.sh')
+  region_mover = format('/usr/phd/current/hbase-client/bin/region_mover.rb')
+  region_drainer = format('/usr/phd/current/hbase-client/bin/draining_servers.rb')
+  hbase_cmd = format('/usr/phd/current/hbase-client/bin/hbase')
+else:
+  hadoop_bin_dir = "/usr/bin"
+  daemon_script = "/usr/lib/hbase/bin/hbase-daemon.sh"
+  region_mover = "/usr/lib/hbase/bin/region_mover.rb"
+  region_drainer = "/usr/lib/hbase/bin/draining_servers.rb"
+  hbase_cmd = "/usr/lib/hbase/bin/hbase"
+
+hadoop_conf_dir = "/etc/hadoop/conf"
+hbase_conf_dir = "/etc/hbase/conf"
+hbase_excluded_hosts = config['commandParams']['excluded_hosts']
+hbase_drain_only = default("/commandParams/mark_draining_only",False)
+hbase_included_hosts = config['commandParams']['included_hosts']
+
+hbase_user = status_params.hbase_user
+hbase_principal_name = config['configurations']['hbase-env']['hbase_principal_name']
+smokeuser = config['configurations']['cluster-env']['smokeuser']
+_authentication = config['configurations']['core-site']['hadoop.security.authentication']
+security_enabled = config['configurations']['cluster-env']['security_enabled']
+
+# this is "hadoop-metrics.properties" for 1.x stacks
+metric_prop_file_name = "hadoop-metrics2-hbase.properties"
+
+# not supporting 32 bit jdk.
+java64_home = config['hostLevelParams']['java_home']
+
+log_dir = config['configurations']['hbase-env']['hbase_log_dir']
+master_heapsize = config['configurations']['hbase-env']['hbase_master_heapsize']
+
+regionserver_heapsize = config['configurations']['hbase-env']['hbase_regionserver_heapsize']
+regionserver_xmn_max = config['configurations']['hbase-env']['hbase_regionserver_xmn_max']
+regionserver_xmn_percent = config['configurations']['hbase-env']['hbase_regionserver_xmn_ratio']
+regionserver_xmn_size = calc_xmn_from_xms(regionserver_heapsize, regionserver_xmn_percent, regionserver_xmn_max)
+
+pid_dir = status_params.pid_dir
+tmp_dir = config['configurations']['hbase-site']['hbase.tmp.dir']
+# TODO UPGRADE default, update site during upgrade
+_local_dir_conf = default('/configurations/hbase-site/hbase.local.dir', "${hbase.tmp.dir}/local")
+local_dir = substitute_vars(_local_dir_conf, config['configurations']['hbase-site'])
+
+client_jaas_config_file = format("{hbase_conf_dir}/hbase_client_jaas.conf")
+master_jaas_config_file = format("{hbase_conf_dir}/hbase_master_jaas.conf")
+regionserver_jaas_config_file = format("{hbase_conf_dir}/hbase_regionserver_jaas.conf")
+
+ganglia_server_hosts = default('/clusterHostInfo/ganglia_server_host', []) # is not passed when ganglia is not present
+ganglia_server_host = '' if len(ganglia_server_hosts) == 0 else ganglia_server_hosts[0]
+
+# 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
+else:
+  rs_hosts = default('/clusterHostInfo/hbase_rs_hosts', '/clusterHostInfo/all_hosts') 
+
+smoke_test_user = config['configurations']['cluster-env']['smokeuser']
+smokeuser_permissions = "RWXCA"
+service_check_data = functions.get_unique_id_and_date()
+user_group = config['configurations']['cluster-env']["user_group"]
+
+if security_enabled:
+  _hostname_lowercase = config['hostname'].lower()
+  master_jaas_princ = config['configurations']['hbase-site']['hbase.master.kerberos.principal'].replace('_HOST',_hostname_lowercase)
+  regionserver_jaas_princ = config['configurations']['hbase-site']['hbase.regionserver.kerberos.principal'].replace('_HOST',_hostname_lowercase)
+
+master_keytab_path = config['configurations']['hbase-site']['hbase.master.keytab.file']
+regionserver_keytab_path = config['configurations']['hbase-site']['hbase.regionserver.keytab.file']
+smoke_user_keytab = config['configurations']['cluster-env']['smokeuser_keytab']
+hbase_user_keytab = config['configurations']['hbase-env']['hbase_user_keytab']
+kinit_path_local = functions.get_kinit_path(["/usr/bin", "/usr/kerberos/bin", "/usr/sbin"])
+if security_enabled:
+  kinit_cmd = format("{kinit_path_local} -kt {hbase_user_keytab} {hbase_principal_name};")
+else:
+  kinit_cmd = ""
+
+#log4j.properties
+if (('hbase-log4j' in config['configurations']) and ('content' in config['configurations']['hbase-log4j'])):
+  log4j_props = config['configurations']['hbase-log4j']['content']
+else:
+  log4j_props = None
+  
+hbase_env_sh_template = config['configurations']['hbase-env']['content']
+
+hbase_hdfs_root_dir = config['configurations']['hbase-site']['hbase.rootdir']
+hbase_staging_dir = "/apps/hbase/staging"
+#for create_hdfs_directory
+hostname = config["hostname"]
+hdfs_user_keytab = config['configurations']['hadoop-env']['hdfs_user_keytab']
+hdfs_user = config['configurations']['hadoop-env']['hdfs_user']
+hdfs_principal_name = config['configurations']['hadoop-env']['hdfs_principal_name']
+kinit_path_local = functions.get_kinit_path(["/usr/bin", "/usr/kerberos/bin", "/usr/sbin"])
+import functools
+#create partial functions with common arguments for every HdfsDirectory call
+#to create hdfs directory we need to call params.HdfsDirectory in code
+HdfsDirectory = functools.partial(
+  HdfsDirectory,
+  conf_dir=hadoop_conf_dir,
+  hdfs_user=hdfs_user,
+  security_enabled = security_enabled,
+  keytab = hdfs_user_keytab,
+  kinit_path_local = kinit_path_local,
+  bin_dir = hadoop_bin_dir
+)

+ 79 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/scripts/service_check.py

@@ -0,0 +1,79 @@
+#!/usr/bin/env python
+"""
+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.
+
+"""
+
+from resource_management import *
+import functions
+
+
+class HbaseServiceCheck(Script):
+  def service_check(self, env):
+    import params
+    env.set_params(params)
+    
+    output_file = "/apps/hbase/data/ambarismoketest"
+    test_cmd = format("fs -test -e {output_file}")
+    smokeuser_kinit_cmd = format("{kinit_path_local} -kt {smoke_user_keytab} {smoke_test_user};") if params.security_enabled else ""
+    hbase_servicecheck_file = format("{exec_tmp_dir}/hbase-smoke.sh")
+  
+    File( format("{exec_tmp_dir}/hbaseSmokeVerify.sh"),
+      content = StaticFile("hbaseSmokeVerify.sh"),
+      mode = 0755
+    )
+  
+    File( hbase_servicecheck_file,
+      mode = 0755,
+      content = Template('hbase-smoke.sh.j2')
+    )
+    
+    if params.security_enabled:    
+      hbase_grant_premissions_file = format("{exec_tmp_dir}/hbase_grant_permissions.sh")
+      grantprivelegecmd = format("{kinit_cmd} {hbase_cmd} shell {hbase_grant_premissions_file}")
+  
+      File( hbase_grant_premissions_file,
+        owner   = params.hbase_user,
+        group   = params.user_group,
+        mode    = 0644,
+        content = Template('hbase_grant_permissions.j2')
+      )
+      
+      Execute( grantprivelegecmd,
+        user = params.hbase_user,
+      )
+
+    servicecheckcmd = format("{smokeuser_kinit_cmd} {hbase_cmd} --config {hbase_conf_dir} shell {hbase_servicecheck_file}")
+    smokeverifycmd = format("{smokeuser_kinit_cmd} {exec_tmp_dir}/hbaseSmokeVerify.sh {hbase_conf_dir} {service_check_data} {hbase_cmd}")
+  
+    Execute( servicecheckcmd,
+      tries     = 3,
+      try_sleep = 5,
+      user = params.smoke_test_user,
+      logoutput = True
+    )
+  
+    Execute ( smokeverifycmd,
+      tries     = 3,
+      try_sleep = 5,
+      user = params.smoke_test_user,
+      logoutput = True
+    )
+    
+if __name__ == "__main__":
+  HbaseServiceCheck().execute()
+  

+ 26 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/scripts/status_params.py

@@ -0,0 +1,26 @@
+#!/usr/bin/env python
+"""
+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.
+
+"""
+
+from resource_management import *
+
+config = Script.get_config()
+
+pid_dir = config['configurations']['hbase-env']['hbase_pid_dir']
+hbase_user = config['configurations']['hbase-env']['hbase_user']

+ 81 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/templates/hadoop-metrics2-hbase.properties-GANGLIA-MASTER.j2

@@ -0,0 +1,81 @@
+{#
+# 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.
+#}
+
+
+# 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.
+
+# See http://wiki.apache.org/hadoop/GangliaMetrics
+#
+# Make sure you know whether you are using ganglia 3.0 or 3.1.
+# If 3.1, you will have to patch your hadoop instance with HADOOP-4675
+# And, yes, this file is named hadoop-metrics.properties rather than
+# hbase-metrics.properties because we're leveraging the hadoop metrics
+# package and hadoop-metrics.properties is an hardcoded-name, at least
+# for the moment.
+#
+# See also http://hadoop.apache.org/hbase/docs/current/metrics.html
+
+# HBase-specific configuration to reset long-running stats (e.g. compactions)
+# If this variable is left out, then the default is no expiration.
+hbase.extendedperiod = 3600
+
+# Configuration of the "hbase" context for ganglia
+# Pick one: Ganglia 3.0 (former) or Ganglia 3.1 (latter)
+# hbase.class=org.apache.hadoop.metrics.ganglia.GangliaContext
+hbase.class=org.apache.hadoop.metrics.ganglia.GangliaContext31
+hbase.period=10
+hbase.servers={{ganglia_server_host}}:8663
+
+# Configuration of the "jvm" context for ganglia
+# Pick one: Ganglia 3.0 (former) or Ganglia 3.1 (latter)
+# jvm.class=org.apache.hadoop.metrics.ganglia.GangliaContext
+jvm.class=org.apache.hadoop.metrics.ganglia.GangliaContext31
+jvm.period=10
+jvm.servers={{ganglia_server_host}}:8663
+
+# Configuration of the "rpc" context for ganglia
+# Pick one: Ganglia 3.0 (former) or Ganglia 3.1 (latter)
+# rpc.class=org.apache.hadoop.metrics.ganglia.GangliaContext
+rpc.class=org.apache.hadoop.metrics.ganglia.GangliaContext31
+rpc.period=10
+rpc.servers={{ganglia_server_host}}:8663
+
+#Ganglia following hadoop example
+hbase.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31
+hbase.sink.ganglia.period=10
+
+# default for supportsparse is false
+*.sink.ganglia.supportsparse=true
+
+.sink.ganglia.slope=jvm.metrics.gcCount=zero,jvm.metrics.memHeapUsedM=both
+.sink.ganglia.dmax=jvm.metrics.threadsBlocked=70,jvm.metrics.memHeapUsedM=40
+
+hbase.sink.ganglia.servers={{ganglia_server_host}}:8663

+ 80 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/templates/hadoop-metrics2-hbase.properties-GANGLIA-RS.j2

@@ -0,0 +1,80 @@
+{#
+# 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.
+#}
+
+# 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.
+
+# See http://wiki.apache.org/hadoop/GangliaMetrics
+#
+# Make sure you know whether you are using ganglia 3.0 or 3.1.
+# If 3.1, you will have to patch your hadoop instance with HADOOP-4675
+# And, yes, this file is named hadoop-metrics.properties rather than
+# hbase-metrics.properties because we're leveraging the hadoop metrics
+# package and hadoop-metrics.properties is an hardcoded-name, at least
+# for the moment.
+#
+# See also http://hadoop.apache.org/hbase/docs/current/metrics.html
+
+# HBase-specific configuration to reset long-running stats (e.g. compactions)
+# If this variable is left out, then the default is no expiration.
+hbase.extendedperiod = 3600
+
+# Configuration of the "hbase" context for ganglia
+# Pick one: Ganglia 3.0 (former) or Ganglia 3.1 (latter)
+# hbase.class=org.apache.hadoop.metrics.ganglia.GangliaContext
+hbase.class=org.apache.hadoop.metrics.ganglia.GangliaContext31
+hbase.period=10
+hbase.servers={{ganglia_server_host}}:8656
+
+# Configuration of the "jvm" context for ganglia
+# Pick one: Ganglia 3.0 (former) or Ganglia 3.1 (latter)
+# jvm.class=org.apache.hadoop.metrics.ganglia.GangliaContext
+jvm.class=org.apache.hadoop.metrics.ganglia.GangliaContext31
+jvm.period=10
+jvm.servers={{ganglia_server_host}}:8656
+
+# Configuration of the "rpc" context for ganglia
+# Pick one: Ganglia 3.0 (former) or Ganglia 3.1 (latter)
+# rpc.class=org.apache.hadoop.metrics.ganglia.GangliaContext
+rpc.class=org.apache.hadoop.metrics.ganglia.GangliaContext31
+rpc.period=10
+rpc.servers={{ganglia_server_host}}:8656
+
+#Ganglia following hadoop example
+hbase.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31
+hbase.sink.ganglia.period=10
+
+# default for supportsparse is false
+*.sink.ganglia.supportsparse=true
+
+.sink.ganglia.slope=jvm.metrics.gcCount=zero,jvm.metrics.memHeapUsedM=both
+.sink.ganglia.dmax=jvm.metrics.threadsBlocked=70,jvm.metrics.memHeapUsedM=40
+
+hbase.sink.ganglia.servers={{ganglia_server_host}}:8656

+ 44 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/templates/hbase-smoke.sh.j2

@@ -0,0 +1,44 @@
+{#
+# 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.
+#}
+
+#
+#
+# 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.
+#
+#
+disable 'ambarismoketest'
+drop 'ambarismoketest'
+create 'ambarismoketest','family'
+put 'ambarismoketest','row01','family:col01','{{service_check_data}}'
+scan 'ambarismoketest'
+exit

+ 23 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/templates/hbase_client_jaas.conf.j2

@@ -0,0 +1,23 @@
+{#
+# 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.
+#}
+
+Client {
+com.sun.security.auth.module.Krb5LoginModule required
+useKeyTab=false
+useTicketCache=true;
+};

+ 39 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/templates/hbase_grant_permissions.j2

@@ -0,0 +1,39 @@
+{#
+# 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.
+#}
+
+#
+# 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.
+#
+#
+grant '{{smoke_test_user}}', '{{smokeuser_permissions}}'
+exit

+ 26 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/templates/hbase_master_jaas.conf.j2

@@ -0,0 +1,26 @@
+{#
+# 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.
+#}
+
+Client {
+com.sun.security.auth.module.Krb5LoginModule required
+useKeyTab=true
+storeKey=true
+useTicketCache=false
+keyTab="{{master_keytab_path}}"
+principal="{{master_jaas_princ}}";
+};

+ 26 - 0
ambari-server/src/main/resources/stacks/PHD/3.0.0.0/services/HBASE/package/templates/hbase_regionserver_jaas.conf.j2

@@ -0,0 +1,26 @@
+{#
+# 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.
+#}
+
+Client {
+com.sun.security.auth.module.Krb5LoginModule required
+useKeyTab=true
+storeKey=true
+useTicketCache=false
+keyTab="{{regionserver_keytab_path}}"
+principal="{{regionserver_jaas_princ}}";
+};

Some files were not shown because too many files changed in this diff