diff --git oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/jmx/DataType.java oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/jmx/DataType.java
new file mode 100644
index 0000000..a6a8fbe
--- /dev/null
+++ oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/jmx/DataType.java
@@ -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.
+ */
+
+package org.apache.jackrabbit.oak.commons.jmx;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import javax.management.DescriptorKey;
+
+/**
+ * Used to denote the type for annotated attribute
+ */
+@Target({ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+@Inherited
+@Documented
+public @interface DataType {
+    String NAME = "type";
+
+    @DescriptorKey(NAME)
+    DataTypeOption value();
+}
diff --git oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/jmx/DataTypeOption.java oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/jmx/DataTypeOption.java
new file mode 100644
index 0000000..7fc3c69
--- /dev/null
+++ oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/jmx/DataTypeOption.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.jackrabbit.oak.commons.jmx;
+
+public enum DataTypeOption {
+    /**
+     * Denotes that Type of data represents a CompositeData types for TimeSeries
+     * data as created by org.apache.jackrabbit.stats.TimeSeriesStatsUtil
+     */
+    TIME_SERIES
+}
diff --git oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/IndexStatsMBean.java oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/IndexStatsMBean.java
index aa3f5c6..60f366e 100644
--- oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/IndexStatsMBean.java
+++ oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/IndexStatsMBean.java
@@ -19,9 +19,12 @@ package org.apache.jackrabbit.oak.api.jmx;
 
 import javax.management.openmbean.CompositeData;
 
+import org.apache.jackrabbit.oak.commons.jmx.DataType;
 import org.apache.jackrabbit.oak.commons.jmx.Description;
 import org.apache.jackrabbit.oak.commons.jmx.Name;
 
+import static org.apache.jackrabbit.oak.commons.jmx.DataTypeOption.TIME_SERIES;
+
 public interface IndexStatsMBean {
 
     String TYPE = "IndexStats";
@@ -124,6 +127,7 @@ public interface IndexStatsMBean {
      *
      * @return the execution count time series
      */
+    @DataType(TIME_SERIES)
     CompositeData getExecutionCount();
 
     /**
@@ -131,6 +135,7 @@ public interface IndexStatsMBean {
      *
      * @return the execution times time series
      */
+    @DataType(TIME_SERIES)
     CompositeData getExecutionTime();
 
     /**
@@ -138,6 +143,7 @@ public interface IndexStatsMBean {
      *
      * @return the indexed nodes time series
      */
+    @DataType(TIME_SERIES)
     CompositeData getIndexedNodesCount();
 
     /**
diff --git oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/RepositoryStatsMBean.java oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/RepositoryStatsMBean.java
index 58c8c62..a0d0fbf 100644
--- oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/RepositoryStatsMBean.java
+++ oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/RepositoryStatsMBean.java
@@ -21,6 +21,10 @@ package org.apache.jackrabbit.oak.api.jmx;
 
 import javax.management.openmbean.CompositeData;
 
+import org.apache.jackrabbit.oak.commons.jmx.DataType;
+
+import static org.apache.jackrabbit.oak.commons.jmx.DataTypeOption.TIME_SERIES;
+
 /**
  * MBean for providing repository wide statistics.
  * This MBean exposes the time series provided by
@@ -33,75 +37,90 @@ public interface RepositoryStatsMBean {
     /**
      * @see org.apache.jackrabbit.api.stats.RepositoryStatistics.Type#SESSION_COUNT
      */
+    @DataType(TIME_SERIES)
     CompositeData getSessionCount();
 
     /**
      * @see org.apache.jackrabbit.api.stats.RepositoryStatistics.Type#SESSION_LOGIN_COUNTER
      */
+    @DataType(TIME_SERIES)
     CompositeData getSessionLogin();
 
     /**
      * @see org.apache.jackrabbit.api.stats.RepositoryStatistics.Type#SESSION_READ_COUNTER
      */
+    @DataType(TIME_SERIES)
     CompositeData getSessionReadCount();
 
     /**
      * @see org.apache.jackrabbit.api.stats.RepositoryStatistics.Type#SESSION_READ_DURATION
      */
+    @DataType(TIME_SERIES)
     CompositeData getSessionReadDuration();
 
     /**
      * @see org.apache.jackrabbit.api.stats.RepositoryStatistics.Type#SESSION_READ_AVERAGE
      */
+    @DataType(TIME_SERIES)
     CompositeData getSessionReadAverage();
 
     /**
      * @see org.apache.jackrabbit.api.stats.RepositoryStatistics.Type#SESSION_WRITE_COUNTER
      */
+    @DataType(TIME_SERIES)
     CompositeData getSessionWriteCount();
 
     /**
      * @see org.apache.jackrabbit.api.stats.RepositoryStatistics.Type#SESSION_READ_DURATION
      */
+    @DataType(TIME_SERIES)
     CompositeData getSessionWriteDuration();
 
     /**
      * @see org.apache.jackrabbit.api.stats.RepositoryStatistics.Type#SESSION_WRITE_AVERAGE
      */
+    @DataType(TIME_SERIES)
     CompositeData getSessionWriteAverage();
 
     /**
      * @see org.apache.jackrabbit.api.stats.RepositoryStatistics.Type#QUERY_COUNT
      */
+    @DataType(TIME_SERIES)
     CompositeData getQueryCount();
 
     /**
      * @see org.apache.jackrabbit.api.stats.RepositoryStatistics.Type#QUERY_DURATION
      */
+    @DataType(TIME_SERIES)
     CompositeData getQueryDuration();
 
     /**
      * @see org.apache.jackrabbit.api.stats.RepositoryStatistics.Type#QUERY_AVERAGE
      */
+    @DataType(TIME_SERIES)
     CompositeData getQueryAverage();
 
     /**
      * @see org.apache.jackrabbit.api.stats.RepositoryStatistics.Type#OBSERVATION_EVENT_COUNTER
      */
+    @DataType(TIME_SERIES)
     CompositeData getObservationEventCount();
 
     /**
      * @see org.apache.jackrabbit.api.stats.RepositoryStatistics.Type#OBSERVATION_EVENT_DURATION
      */
+    @DataType(TIME_SERIES)
     CompositeData getObservationEventDuration();
 
     /**
      * @see org.apache.jackrabbit.api.stats.RepositoryStatistics.Type#OBSERVATION_EVENT_AVERAGE
      */
+    @DataType(TIME_SERIES)
     CompositeData getObservationEventAverage();
 
     /**
      * Maximum length of observation queue in the respective time period.
      */
+    @DataType(TIME_SERIES)
     CompositeData getObservationQueueMaxLength();
 }
diff --git oak-core/src/main/java/org/apache/jackrabbit/oak/spi/whiteboard/TimeSeriesExporterMBean.java oak-core/src/main/java/org/apache/jackrabbit/oak/spi/whiteboard/TimeSeriesExporterMBean.java
new file mode 100644
index 0000000..c5a558e
--- /dev/null
+++ oak-core/src/main/java/org/apache/jackrabbit/oak/spi/whiteboard/TimeSeriesExporterMBean.java
@@ -0,0 +1,151 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.jackrabbit.oak.spi.whiteboard;
+
+import java.util.List;
+
+import javax.management.Attribute;
+import javax.management.AttributeList;
+import javax.management.AttributeNotFoundException;
+import javax.management.DescriptorRead;
+import javax.management.DynamicMBean;
+import javax.management.InvalidAttributeValueException;
+import javax.management.MBeanAttributeInfo;
+import javax.management.MBeanException;
+import javax.management.MBeanInfo;
+import javax.management.NotCompliantMBeanException;
+import javax.management.ReflectionException;
+import javax.management.RuntimeOperationsException;
+import javax.management.StandardMBean;
+import javax.management.openmbean.CompositeData;
+import javax.management.openmbean.OpenMBeanAttributeInfoSupport;
+import javax.management.openmbean.OpenMBeanInfoSupport;
+import javax.management.openmbean.SimpleType;
+
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import org.apache.jackrabbit.oak.commons.jmx.DataType;
+import org.apache.jackrabbit.oak.commons.jmx.DataTypeOption;
+import org.apache.jackrabbit.stats.TimeSeriesStatsUtil;
+
+class TimeSeriesExporterMBean implements DynamicMBean {
+    private static final String PER_SECOND = TimeSeriesStatsUtil.ITEM_NAMES[0];
+    private final MBeanInfo info;
+    private final StandardMBean mbean;
+
+    public <T> TimeSeriesExporterMBean(Class<T> iface, T bean) throws NotCompliantMBeanException {
+        this.mbean = createMBean(iface, bean);
+        this.info = buildInfo(mbean);
+    }
+
+    //~--------------------------------------< Unsupported Operations >
+
+    @Override
+    public Object getAttribute(String attribute)
+            throws AttributeNotFoundException, MBeanException, ReflectionException {
+        CompositeData data = (CompositeData) mbean.getAttribute(attribute);
+        long[] secs = (long[]) data.get(PER_SECOND);
+        //First element of the sec time series returns the latest values
+        return secs[0];
+    }
+
+    @Override
+    public AttributeList getAttributes(String[] attributes) {
+        //TODO Implement it
+        return null;
+    }
+
+    @Override
+    public MBeanInfo getMBeanInfo() {
+        return info;
+    }
+
+    public boolean hasTimeSeriesData(){
+        return info != null;
+    }
+
+    //~----------------------------------------< Metadata >
+
+    @Override
+    public AttributeList setAttributes(AttributeList attributes) {
+        return null;
+    }
+
+    @Override
+    public void setAttribute(Attribute attribute)
+            throws AttributeNotFoundException, InvalidAttributeValueException,
+            MBeanException, ReflectionException {
+        throw new AttributeNotFoundException(
+                "No attribute can be set in this MBean");
+    }
+
+    @Override
+    public Object invoke(String actionName, Object[] params, String[] signature)
+            throws MBeanException, ReflectionException {
+        throw new RuntimeOperationsException(new IllegalArgumentException(
+                "No operations defined for this OpenMBean"),
+                "No operations defined for this OpenMBean");
+    }
+
+    //~--------------------------------------------< Info >
+
+    private MBeanInfo buildInfo(StandardMBean stdBean) throws NotCompliantMBeanException {
+        MBeanInfo info = stdBean.getMBeanInfo();
+        List<OpenMBeanAttributeInfoSupport> attrs = Lists.newArrayList();
+        for (MBeanAttributeInfo attrInfo : info.getAttributes()) {
+            if (isTimeSeries(attrInfo)) {
+                OpenMBeanAttributeInfoSupport attr =
+                        new OpenMBeanAttributeInfoSupport(attrInfo.getName(), attrInfo.getDescription(),
+                                SimpleType.LONG, true, false, false);
+                attrs.add(attr);
+            }
+        }
+
+        if (attrs.isEmpty()) {
+            return null;
+        }
+
+        OpenMBeanAttributeInfoSupport[] attrArr = Iterables.toArray(attrs, OpenMBeanAttributeInfoSupport.class);
+
+        return new OpenMBeanInfoSupport(getClass().getName(),
+                "Simpler form of " + info.getDescription(),
+                attrArr,
+                null,
+                null,
+                null);
+    }
+
+    private static StandardMBean createMBean(Class iface, Object bean) throws NotCompliantMBeanException {
+        if (bean instanceof StandardMBean) {
+            return (StandardMBean) bean;
+        } else {
+            return new StandardMBean(bean, iface);
+        }
+    }
+
+    private static boolean isTimeSeries(MBeanAttributeInfo info) {
+        String name = getValue(info, DataType.NAME);
+        return DataTypeOption.TIME_SERIES.name().equals(name);
+    }
+
+    private static String getValue(DescriptorRead dr, String fieldName) {
+        return (String) dr.getDescriptor().getFieldValue(fieldName);
+    }
+}
diff --git oak-core/src/main/java/org/apache/jackrabbit/oak/spi/whiteboard/WhiteboardUtils.java oak-core/src/main/java/org/apache/jackrabbit/oak/spi/whiteboard/WhiteboardUtils.java
index b46328a..418fe3e 100644
--- oak-core/src/main/java/org/apache/jackrabbit/oak/spi/whiteboard/WhiteboardUtils.java
+++ oak-core/src/main/java/org/apache/jackrabbit/oak/spi/whiteboard/WhiteboardUtils.java
@@ -29,6 +29,7 @@ import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.management.MalformedObjectNameException;
+import javax.management.NotCompliantMBeanException;
 import javax.management.ObjectName;
 
 import org.apache.jackrabbit.oak.spi.commit.Observer;
@@ -75,11 +76,30 @@ public class WhiteboardUtils {
             table.put("type", ObjectName.quote(type));
             table.put("name", ObjectName.quote(name));
             table.put("id", String.valueOf(COUNTER.incrementAndGet()));
-            return whiteboard.register(iface, bean, ImmutableMap.of(
+
+            Registration reg1 = whiteboard.register(iface, bean, ImmutableMap.of(
                     "jmx.objectname",
                     new ObjectName("org.apache.jackrabbit.oak", table)));
+
+            TimeSeriesExporterMBean tsBean = new TimeSeriesExporterMBean(iface, bean);
+
+            if (!tsBean.hasTimeSeriesData()){
+                return reg1;
+            }
+
+            Hashtable<String, String> table2 = new Hashtable<String, String>(attrs);
+            table2.put("type", ObjectName.quote(type));
+            table2.put("name", ObjectName.quote(name + "-simple"));
+
+            Registration reg2 = whiteboard.register(Object.class, tsBean, ImmutableMap.of(
+                    "jmx.objectname",
+                    new ObjectName("org.apache.jackrabbit.oak", table2)));
+
+            return new CompositeRegistration(reg1, reg2);
         } catch (MalformedObjectNameException e) {
             throw new IllegalArgumentException(e);
+        } catch (NotCompliantMBeanException e) {
+            throw new IllegalArgumentException(e);
         }
     }
 
diff --git oak-core/src/test/java/org/apache/jackrabbit/oak/spi/whiteboard/TimeSeriesExporterMBeanTest.java oak-core/src/test/java/org/apache/jackrabbit/oak/spi/whiteboard/TimeSeriesExporterMBeanTest.java
new file mode 100644
index 0000000..97eca69
--- /dev/null
+++ oak-core/src/test/java/org/apache/jackrabbit/oak/spi/whiteboard/TimeSeriesExporterMBeanTest.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.jackrabbit.oak.spi.whiteboard;
+
+import java.io.Closeable;
+import java.io.IOException;
+
+import org.apache.jackrabbit.oak.Oak;
+import org.apache.jackrabbit.oak.api.ContentRepository;
+import org.apache.jackrabbit.oak.api.jmx.IndexStatsMBean;
+import org.apache.jackrabbit.oak.api.jmx.QueryEngineSettingsMBean;
+import org.apache.jackrabbit.oak.spi.security.OpenSecurityProvider;
+import org.junit.Test;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+public class TimeSeriesExporterMBeanTest {
+
+    @Test
+    public void simple() throws Exception{
+        Oak oak = new Oak().with(new OpenSecurityProvider()).withAsyncIndexing("async", 5);
+        ContentRepository repo = oak.createContentRepository();
+
+        Whiteboard wb = oak.getWhiteboard();
+        IndexStatsMBean mbean = WhiteboardUtils.getService(wb, IndexStatsMBean.class);
+        TimeSeriesExporterMBean dynBean = new TimeSeriesExporterMBean(IndexStatsMBean.class, mbean);
+        assertNotNull(dynBean.getMBeanInfo());
+
+        QueryEngineSettingsMBean qmbean = WhiteboardUtils.getService(wb, QueryEngineSettingsMBean.class);
+        TimeSeriesExporterMBean dynBean2 = new TimeSeriesExporterMBean(QueryEngineSettingsMBean.class, qmbean);
+        assertNull(dynBean2.getMBeanInfo());
+
+        close(repo);
+
+    }
+
+    private static void close(ContentRepository repo) throws IOException {
+        if (repo instanceof Closeable){
+            ((Closeable) repo).close();
+        }
+    }
+}
