You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by sw...@apache.org on 2015/01/20 01:50:30 UTC

ambari git commit: AMBARI-9165. Support querying Metrics System Hbase metrics using Ambari API. (swagle)

Repository: ambari
Updated Branches:
  refs/heads/trunk 7e691292a -> af463646a


AMBARI-9165. Support querying Metrics System Hbase metrics using Ambari API. (swagle)


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

Branch: refs/heads/trunk
Commit: af463646ad94c65e768df7720ce28d9de58b2f4c
Parents: 7e69129
Author: Siddharth Wagle <sw...@hortonworks.com>
Authored: Mon Jan 19 15:52:46 2015 -0800
Committer: Siddharth Wagle <sw...@hortonworks.com>
Committed: Mon Jan 19 16:50:32 2015 -0800

----------------------------------------------------------------------
 .../internal/AbstractPropertyProvider.java      |   2 +-
 .../metrics/timeline/AMSPropertyProvider.java   |  46 ++++-
 .../controller/utilities/PropertyHelper.java    |   2 +-
 .../src/main/resources/ganglia_properties.json  |   6 +-
 .../timeline/AMSPropertyProviderTest.java       |  43 ++++
 .../resources/ams/embedded_host_metric.json     | 198 +++++++++++++++++++
 6 files changed, 286 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/af463646/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractPropertyProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractPropertyProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractPropertyProvider.java
index f13e1ba..abd242e 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractPropertyProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractPropertyProvider.java
@@ -128,7 +128,7 @@ public abstract class AbstractPropertyProvider extends BaseProvider implements P
   }
 
   protected void getPropertyInfoMap(String componentName, String propertyId, Map<String, PropertyInfo> propertyInfoMap) {
-    Map<String, PropertyInfo> componentMetricMap = componentMetrics.get(componentName);
+    Map<String, PropertyInfo> componentMetricMap = getComponentMetrics().get(componentName);
 
     propertyInfoMap.clear();
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/af463646/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProvider.java
index 8d29b4e..a2c94f2 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProvider.java
@@ -25,6 +25,7 @@ import org.apache.ambari.server.controller.spi.Request;
 import org.apache.ambari.server.controller.spi.Resource;
 import org.apache.ambari.server.controller.spi.SystemException;
 import org.apache.ambari.server.controller.spi.TemporalInfo;
+import org.apache.ambari.server.controller.utilities.PropertyHelper;
 import org.apache.ambari.server.controller.utilities.StreamProvider;
 import org.apache.hadoop.metrics2.sink.timeline.TimelineMetric;
 import org.apache.hadoop.metrics2.sink.timeline.TimelineMetrics;
@@ -33,10 +34,10 @@ import org.codehaus.jackson.map.AnnotationIntrospector;
 import org.codehaus.jackson.map.ObjectMapper;
 import org.codehaus.jackson.map.ObjectReader;
 import org.codehaus.jackson.xc.JaxbAnnotationIntrospector;
+
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
-import java.text.DecimalFormat;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
@@ -47,6 +48,10 @@ import java.util.Map;
 import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+
+import static org.apache.ambari.server.Role.HBASE_MASTER;
+import static org.apache.ambari.server.Role.HBASE_REGIONSERVER;
+import static org.apache.ambari.server.Role.METRIC_COLLECTOR;
 import static org.apache.ambari.server.controller.metrics.MetricsServiceProvider.MetricsService.TIMELINE_METRICS;
 import static org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
 
@@ -58,9 +63,9 @@ public abstract class AMSPropertyProvider extends MetricsPropertyProvider {
   private static final int COLLECTOR_DEFAULT_PORT = 6188;
 
   static {
-    TIMELINE_APPID_MAP.put("HBASE_MASTER", "HBASE");
-    TIMELINE_APPID_MAP.put("HBASE_REGIONSERVER", "HBASE");
-    TIMELINE_APPID_MAP.put("METRIC_COLLECTOR", "AMS-HBASE");
+    TIMELINE_APPID_MAP.put(HBASE_MASTER.name(), "HBASE");
+    TIMELINE_APPID_MAP.put(HBASE_REGIONSERVER.name(), "HBASE");
+    TIMELINE_APPID_MAP.put(METRIC_COLLECTOR.name(), "AMS-HBASE");
 
     mapper = new ObjectMapper();
     AnnotationIntrospector introspector = new JaxbAnnotationIntrospector();
@@ -338,6 +343,36 @@ public abstract class AMSPropertyProvider extends MetricsPropertyProvider {
     return resources;
   }
 
+  /**
+   * Return a propertyInfoMap for all metrics. Handles special case for
+   * METRIC_COLLECTOR metrics by returning HBase metrics.
+   */
+  @Override
+  public Map<String, Map<String, PropertyInfo>> getComponentMetrics() {
+    if (super.getComponentMetrics().containsKey(METRIC_COLLECTOR.name())) {
+      return super.getComponentMetrics();
+    }
+
+    Map<String, Map<String, PropertyInfo>> metricPropertyIds;
+    if (this.hostNamePropertyId != null) {
+      metricPropertyIds = PropertyHelper.getMetricPropertyIds(Resource.Type.HostComponent);
+    } else {
+      metricPropertyIds = PropertyHelper.getMetricPropertyIds(Resource.Type.Component);
+    }
+    Map<String, PropertyInfo> amsMetrics = new HashMap<String, PropertyInfo>();
+    if (metricPropertyIds.containsKey(HBASE_MASTER.name())) {
+      amsMetrics.putAll(metricPropertyIds.get(HBASE_MASTER.name()));
+    }
+    if (metricPropertyIds.containsKey(HBASE_REGIONSERVER.name())) {
+      amsMetrics.putAll(metricPropertyIds.get(HBASE_REGIONSERVER.name()));
+    }
+    if (!amsMetrics.isEmpty()) {
+      super.getComponentMetrics().putAll(Collections.singletonMap(METRIC_COLLECTOR.name(), amsMetrics));
+    }
+
+    return super.getComponentMetrics();
+  }
+
   private Map<String, Map<TemporalInfo, MetricsRequest>> getMetricsRequests(
               Set<Resource> resources, Request request, Set<String> ids) throws SystemException {
 
@@ -371,8 +406,7 @@ public abstract class AMSPropertyProvider extends MetricsPropertyProvider {
         Map<String, PropertyInfo> componentMetricMap = getComponentMetrics().get(componentName);
 
         // Not all components have metrics
-        if (componentMetricMap != null &&
-            !componentMetricMap.containsKey(id)) {
+        if (componentMetricMap != null && !componentMetricMap.containsKey(id)) {
           updateComponentMetricMap(componentMetricMap, id);
         }
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/af463646/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/PropertyHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/PropertyHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/PropertyHelper.java
index 4a92c66..c3d8e2f 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/PropertyHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/PropertyHelper.java
@@ -52,7 +52,7 @@ public class PropertyHelper {
   private static final Map<Resource.InternalType, Set<String>> PROPERTY_IDS = readPropertyIds(PROPERTIES_FILE);
   private static final Map<Resource.InternalType, Map<String, Map<String, PropertyInfo>>> JMX_PROPERTY_IDS = readPropertyProviderIds(JMX_PROPERTIES_FILE);
   private static final Map<Resource.InternalType, Map<String, Map<String, PropertyInfo>>> GANGLIA_PROPERTY_IDS = readPropertyProviderIds(GANGLIA_PROPERTIES_FILE);
-    private static final Map<Resource.InternalType, Map<String, Map<String, PropertyInfo>>> SQLSERVER_PROPERTY_IDS = readPropertyProviderIds(SQLSERVER_PROPERTIES_FILE);
+  private static final Map<Resource.InternalType, Map<String, Map<String, PropertyInfo>>> SQLSERVER_PROPERTY_IDS = readPropertyProviderIds(SQLSERVER_PROPERTIES_FILE);
   private static final Map<Resource.InternalType, Map<Resource.Type, String>> KEY_PROPERTY_IDS = readKeyPropertyIds(KEY_PROPERTIES_FILE);
 
   /**

http://git-wip-us.apache.org/repos/asf/ambari/blob/af463646/ambari-server/src/main/resources/ganglia_properties.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/ganglia_properties.json b/ambari-server/src/main/resources/ganglia_properties.json
index 5bcf754..4ba2f84 100644
--- a/ambari-server/src/main/resources/ganglia_properties.json
+++ b/ambari-server/src/main/resources/ganglia_properties.json
@@ -9304,17 +9304,17 @@
         "temporal":true
       },
       "metrics/hbase/regionserver/readRequestsCount":{
-        "metric":"hbase.regionserver.readRequestsCount",
+        "metric":"regionserver.Server.readRequestCount",
         "pointInTime":true,
         "temporal":true
       },
       "metrics/hbase/regionserver/regions":{
-        "metric":"hbase.regionserver.regions",
+        "metric":"regionserver.Server.regionCount",
         "pointInTime":true,
         "temporal":true
       },
       "metrics/hbase/regionserver/requests":{
-        "metric":"hbase.regionserver.requests",
+        "metric":"regionserver.Server.totalRequestCount",
         "pointInTime":true,
         "temporal":true
       },

http://git-wip-us.apache.org/repos/asf/ambari/blob/af463646/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProviderTest.java
index 31df3e2..321e209 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProviderTest.java
@@ -57,6 +57,7 @@ public class AMSPropertyProviderTest {
   private static final String MULTIPLE_COMPONENT_METRICS_FILE_PATH = FILE_PATH_PREFIX + "multiple_component_metrics.json";
   private static final String CLUSTER_REPORT_METRICS_FILE_PATH = FILE_PATH_PREFIX + "cluster_report_metrics.json";
   private static final String MULTIPLE_COMPONENT_REGEXP_METRICS_FILE_PATH = FILE_PATH_PREFIX + "multiple_component_regexp_metrics.json";
+  private static final String EMBEDDED_METRICS_FILE_PATH = FILE_PATH_PREFIX + "embedded_host_metric.json";
 
   @Test
   public void testPopulateResourcesForSingleHostMetric() throws Exception {
@@ -326,6 +327,48 @@ public class AMSPropertyProviderTest {
     Assert.assertEquals(238, val.length);
   }
 
+  @Test
+  public void testPopulateMetricsForEmbeddedHBase() throws Exception {
+    TestStreamProvider streamProvider = new TestStreamProvider(EMBEDDED_METRICS_FILE_PATH);
+    TestMetricHostProvider metricHostProvider = new TestMetricHostProvider();
+    ComponentSSLConfiguration sslConfiguration = mock(ComponentSSLConfiguration.class);
+
+    Map<String, Map<String, PropertyInfo>> propertyIds =
+      PropertyHelper.getMetricPropertyIds(Resource.Type.Component);
+
+    AMSPropertyProvider propertyProvider = new AMSComponentPropertyProvider(
+      propertyIds,
+      streamProvider,
+      sslConfiguration,
+      metricHostProvider,
+      CLUSTER_NAME_PROPERTY_ID,
+      COMPONENT_NAME_PROPERTY_ID
+    );
+
+    String propertyId = PropertyHelper.getPropertyId("metrics/hbase/regionserver", "requests");
+    Resource resource = new ResourceImpl(Resource.Type.Component);
+    resource.setProperty(HOST_NAME_PROPERTY_ID, "h1");
+    resource.setProperty(COMPONENT_NAME_PROPERTY_ID, "METRIC_COLLECTOR");
+    Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, TemporalInfo>();
+    temporalInfoMap.put(propertyId, new TemporalInfoImpl(1421694000L, 1421697600L, 1L));
+    Request request = PropertyHelper.getReadRequest(
+      Collections.singleton(propertyId), temporalInfoMap);
+    Set<Resource> resources =
+      propertyProvider.populateResources(Collections.singleton(resource), request, null);
+    Assert.assertEquals(1, resources.size());
+    Resource res = resources.iterator().next();
+    Map<String, Object> properties = PropertyHelper.getProperties(resources.iterator().next());
+    Assert.assertNotNull(properties);
+    URIBuilder uriBuilder = AMSPropertyProvider.getAMSUriBuilder("localhost", 8188);
+    uriBuilder.addParameter("metricNames", "regionserver.Server.totalRequestCount");
+    uriBuilder.addParameter("appId", "AMS-HBASE");
+    uriBuilder.addParameter("startTime", "1421694000");
+    uriBuilder.addParameter("endTime", "1421697600");
+    Assert.assertEquals(uriBuilder.toString(), streamProvider.getLastSpec());
+    Number[][] val = (Number[][]) res.getPropertyValue(propertyId);
+    Assert.assertEquals(188, val.length);
+  }
+
   public static class TestMetricHostProvider implements MetricHostProvider {
 
     @Override

http://git-wip-us.apache.org/repos/asf/ambari/blob/af463646/ambari-server/src/test/resources/ams/embedded_host_metric.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/ams/embedded_host_metric.json b/ambari-server/src/test/resources/ams/embedded_host_metric.json
new file mode 100644
index 0000000..57bcdc2
--- /dev/null
+++ b/ambari-server/src/test/resources/ams/embedded_host_metric.json
@@ -0,0 +1,198 @@
+{"metrics": [
+    {
+        "timestamp": 1421694001642,
+        "metricname": "regionserver.Server.totalRequestCount",
+        "appid": "ams-hbase",
+        "starttime": 1421694001642,
+        "metrics": {
+            "1421694001642": 2.7987195E7,
+            "1421694016642": 2.79875085E7,
+            "1421694031642": 2.7987777E7,
+            "1421694046642": 2.7987987E7,
+            "1421694061642": 2.7988699E7,
+            "1421694076642": 2.79889365E7,
+            "1421694091642": 2.7989142E7,
+            "1421694106642": 2.79894675E7,
+            "1421694181642": 2.8000151E7,
+            "1421694196642": 2.80006245E7,
+            "1421694211642": 2.8000884E7,
+            "1421694226642": 2.80011405E7,
+            "1421694241642": 2.8007886E7,
+            "1421694256642": 2.8008153E7,
+            "1421694301642": 2.8009251E7,
+            "1421694316642": 2.800963E7,
+            "1421694331642": 2.800997E7,
+            "1421694346642": 2.8010372E7,
+            "1421694361642": 2.8017095E7,
+            "1421694376642": 2.80173635E7,
+            "1421694391642": 2.8017682E7,
+            "1421694421642": 2.802002E7,
+            "1421694436642": 2.80203335E7,
+            "1421694451642": 2.8020605E7,
+            "1421694466642": 2.80209535E7,
+            "1421694481642": 2.8028664E7,
+            "1421694496642": 2.80289225E7,
+            "1421694511642": 2.8029146E7,
+            "1421694526642": 2.8029486E7,
+            "1421694541642": 2.8029964E7,
+            "1421694556642": 2.80304275E7,
+            "1421694571642": 2.80322E7,
+            "1421694586642": 2.8032413E7,
+            "1421694601642": 2.8039369E7,
+            "1421694661642": 2.8040753E7,
+            "1421694676642": 2.8041142E7,
+            "1421694691642": 2.8041627E7,
+            "1421694706642": 2.8041812E7,
+            "1421694721642": 2.8049947E7,
+            "1421694736642": 2.80503305E7,
+            "1421694781642": 2.8051441E7,
+            "1421694796642": 2.8051714E7,
+            "1421694811642": 2.8052037E7,
+            "1421694826642": 2.8052458E7,
+            "1421694841642": 2.8059579E7,
+            "1421694856642": 2.8059897E7,
+            "1421694871642": 2.806017E7,
+            "1421694886642": 2.806038E7,
+            "1421694901642": 2.8061101E7,
+            "1421694916642": 2.80623855E7,
+            "1421694931642": 2.8062591E7,
+            "1421694946642": 2.8062913E7,
+            "1421695021642": 2.8073599E7,
+            "1421695036642": 2.80740725E7,
+            "1421695051642": 2.8074332E7,
+            "1421695066642": 2.80745885E7,
+            "1421695081642": 2.8081334E7,
+            "1421695096642": 2.8081601E7,
+            "1421695141642": 2.8082699E7,
+            "1421695156642": 2.80830495E7,
+            "1421695171642": 2.8083418E7,
+            "1421695186642": 2.808382E7,
+            "1421695201642": 2.8090543E7,
+            "1421695216642": 2.8090783E7,
+            "1421695231642": 2.809113E7,
+            "1421695261642": 2.809192E7,
+            "1421695276642": 2.8092205E7,
+            "1421695291642": 2.8092502E7,
+            "1421695306642": 2.80928325E7,
+            "1421695321642": 2.8102056E7,
+            "1421695336642": 2.8102265E7,
+            "1421695351642": 2.8102499E7,
+            "1421695366642": 2.8102821E7,
+            "1421695381642": 2.8103275E7,
+            "1421695396642": 2.81037E7,
+            "1421695411642": 2.8103978E7,
+            "1421695426642": 2.81041895E7,
+            "1421695441642": 2.8111141E7,
+            "1421695501642": 2.8112513E7,
+            "1421695516642": 2.8112869E7,
+            "1421695531642": 2.8113378E7,
+            "1421695546642": 2.81135585E7,
+            "1421695561642": 2.8120164E7,
+            "1421695576642": 2.81205145E7,
+            "1421695621642": 2.8123174E7,
+            "1421695636642": 2.8123414E7,
+            "1421695651642": 2.8123761E7,
+            "1421695666642": 2.81241775E7,
+            "1421695681642": 2.8131297E7,
+            "1421695696642": 2.8131582E7,
+            "1421695711642": 2.8131879E7,
+            "1421695726642": 2.8132089E7,
+            "1421695741642": 2.8132801E7,
+            "1421695756642": 2.813301E7,
+            "1421695771642": 2.8133244E7,
+            "1421695786642": 2.8133566E7,
+            "1421695861642": 2.8142721E7,
+            "1421695876642": 2.8143166E7,
+            "1421695891642": 2.8143454E7,
+            "1421695906642": 2.81437135E7,
+            "1421695921642": 2.8151987E7,
+            "1421695936642": 2.8152197E7,
+            "1421695981642": 2.8153352E7,
+            "1421695996642": 2.81537025E7,
+            "1421696011642": 2.8154071E7,
+            "1421696026642": 2.8154473E7,
+            "1421696041642": 2.8161196E7,
+            "1421696056642": 2.8161436E7,
+            "1421696071642": 2.8161783E7,
+            "1421696101642": 2.8162573E7,
+            "1421696116642": 2.8162858E7,
+            "1421696131642": 2.8163155E7,
+            "1421696146642": 2.81634825E7,
+            "1421696161642": 2.8171232E7,
+            "1421696176642": 2.8171441E7,
+            "1421696191642": 2.8171675E7,
+            "1421696206642": 2.8172E7,
+            "1421696221642": 2.8173982E7,
+            "1421696236642": 2.81744155E7,
+            "1421696251642": 2.8174689E7,
+            "1421696266642": 2.81749005E7,
+            "1421696281642": 2.8181906E7,
+            "1421696341642": 2.8183278E7,
+            "1421696356642": 2.8183634E7,
+            "1421696371642": 2.8184143E7,
+            "1421696386642": 2.81843235E7,
+            "1421696401642": 2.8190983E7,
+            "1421696416642": 2.81913335E7,
+            "1421696461642": 2.8192462E7,
+            "1421696476642": 2.8192702E7,
+            "1421696491642": 2.8193049E7,
+            "1421696506642": 2.81934685E7,
+            "1421696521642": 2.820217E7,
+            "1421696536642": 2.8202455E7,
+            "1421696551642": 2.8202752E7,
+            "1421696566642": 2.8202962E7,
+            "1421696581642": 2.8203674E7,
+            "1421696596642": 2.8203883E7,
+            "1421696611642": 2.8204117E7,
+            "1421696626642": 2.8204439E7,
+            "1421696701642": 2.8213648E7,
+            "1421696716642": 2.8214093E7,
+            "1421696731642": 2.8214381E7,
+            "1421696746642": 2.82146375E7,
+            "1421696761642": 2.8221437E7,
+            "1421696776642": 2.8221647E7,
+            "1421696821642": 2.8224333E7,
+            "1421696836642": 2.82246835E7,
+            "1421696851642": 2.8225052E7,
+            "1421696866642": 2.8225454E7,
+            "1421696881642": 2.8232231E7,
+            "1421696896642": 2.82324505E7,
+            "1421696911642": 2.8232818E7,
+            "1421696941642": 2.8233608E7,
+            "1421696956642": 2.8233893E7,
+            "1421696971642": 2.823419E7,
+            "1421696986642": 2.82345175E7,
+            "1421697001642": 2.8242267E7,
+            "1421697016642": 2.8242476E7,
+            "1421697031642": 2.824271E7,
+            "1421697046642": 2.8243032E7,
+            "1421697061642": 2.8243486E7,
+            "1421697076642": 2.82439165E7,
+            "1421697091642": 2.8244189E7,
+            "1421697106642": 2.82444035E7,
+            "1421697121642": 2.8252937E7,
+            "1421697181642": 2.8254309E7,
+            "1421697196642": 2.8254665E7,
+            "1421697211642": 2.8255174E7,
+            "1421697226642": 2.82553545E7,
+            "1421697241642": 2.8262014E7,
+            "1421697256642": 2.82623645E7,
+            "1421697301642": 2.8263493E7,
+            "1421697316642": 2.8263733E7,
+            "1421697331642": 2.826408E7,
+            "1421697346642": 2.82644965E7,
+            "1421697361642": 2.827167E7,
+            "1421697376642": 2.8271955E7,
+            "1421697391642": 2.8272252E7,
+            "1421697406642": 2.8272465E7,
+            "1421697421642": 2.8274705E7,
+            "1421697436642": 2.8274914E7,
+            "1421697451642": 2.8275148E7,
+            "1421697466642": 2.827547E7,
+            "1421697541642": 2.8284679E7,
+            "1421697556642": 2.8285124E7,
+            "1421697571642": 2.8285412E7,
+            "1421697586642": 2.82856705E7
+        }
+    }
+]}
\ No newline at end of file