Author: chetanm
Date: Tue Nov 24 09:47:19 2015
New Revision: 1716093
URL: http://svn.apache.org/viewvc?rev=1716093&view=rev
Log:
OAK-3654 - Integrate with Metrics for various stats collection
-- Made MetricRegistry access public so as to allow use in oak-run
-- Modified the ReadPropertyTest to provide config to enable Metric
integration. This can be done via setting system property enableMetrics to true
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/metric/MetricStatisticsProvider.java
jackrabbit/oak/trunk/oak-run/pom.xml
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadPropertyTest.java
jackrabbit/oak/trunk/oak-run/src/main/resources/logback.xml
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/metric/MetricStatisticsProvider.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/metric/MetricStatisticsProvider.java?rev=1716093&r1=1716092&r2=1716093&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/metric/MetricStatisticsProvider.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/metric/MetricStatisticsProvider.java
Tue Nov 24 09:47:19 2015
@@ -115,7 +115,7 @@ public class MetricStatisticsProvider im
return getStats(name, StatsType.TIMER);
}
- MetricRegistry getRegistry() {
+ public MetricRegistry getRegistry() {
return registry;
}
Modified: jackrabbit/oak/trunk/oak-run/pom.xml
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/pom.xml?rev=1716093&r1=1716092&r2=1716093&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-run/pom.xml Tue Nov 24 09:47:19 2015
@@ -394,6 +394,12 @@
<version>1.1</version>
</dependency>
+ <dependency>
+ <groupId>io.dropwizard.metrics</groupId>
+ <artifactId>metrics-core</artifactId>
+ <version>3.1.0</version>
+ </dependency>
+
<!-- Findbugs annotations -->
<dependency>
<groupId>com.google.code.findbugs</groupId>
Modified:
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadPropertyTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadPropertyTest.java?rev=1716093&r1=1716092&r2=1716093&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadPropertyTest.java
(original)
+++
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadPropertyTest.java
Tue Nov 24 09:47:19 2015
@@ -16,8 +16,30 @@
*/
package org.apache.jackrabbit.oak.benchmark;
+import java.lang.management.ManagementFactory;
+import java.util.Collections;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
import javax.jcr.Node;
+import javax.jcr.Repository;
import javax.jcr.Session;
+import javax.management.MBeanServer;
+
+import com.codahale.metrics.Metric;
+import com.codahale.metrics.MetricFilter;
+import com.codahale.metrics.Slf4jReporter;
+import com.google.common.util.concurrent.MoreExecutors;
+import org.apache.jackrabbit.oak.Oak;
+import org.apache.jackrabbit.oak.fixture.JcrCreator;
+import org.apache.jackrabbit.oak.fixture.OakRepositoryFixture;
+import org.apache.jackrabbit.oak.fixture.RepositoryFixture;
+import org.apache.jackrabbit.oak.jcr.Jcr;
+import org.apache.jackrabbit.oak.plugins.metric.MetricStatisticsProvider;
+import org.apache.jackrabbit.oak.stats.StatisticsProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* {@code ReadPropertyTest} implements a performance test, which reads
@@ -25,7 +47,7 @@ import javax.jcr.Session;
* third one, which does not exist.
*/
public class ReadPropertyTest extends AbstractTest {
-
+ private final Logger log = LoggerFactory.getLogger(getClass());
private Session session;
private Node root;
@@ -54,4 +76,40 @@ public class ReadPropertyTest extends Ab
session.save();
session.logout();
}
+
+ @Override
+ protected Repository[] createRepository(RepositoryFixture fixture) throws
Exception {
+ if (fixture instanceof OakRepositoryFixture){
+ return ((OakRepositoryFixture)fixture).setUpCluster(1, new
JcrCreator(){
+ @Override
+ public Jcr customize(Oak oak) {
+ boolean enableMetrics =
Boolean.getBoolean("enableMetrics");
+ if (enableMetrics) {
+ log.info("Enabling Metrics integration");
+ MBeanServer server =
ManagementFactory.getPlatformMBeanServer();
+ ScheduledExecutorService executor =
+
MoreExecutors.getExitingScheduledExecutorService(new
ScheduledThreadPoolExecutor(1));
+ MetricStatisticsProvider statsProvider = new
MetricStatisticsProvider(server, executor);
+ oak.getWhiteboard().register(StatisticsProvider.class,
+ statsProvider, Collections.emptyMap());
+
+ final Slf4jReporter reporter =
Slf4jReporter.forRegistry(statsProvider.getRegistry())
+
.outputTo(LoggerFactory.getLogger("org.apache.jackrabbit.oak.metrics"))
+ .convertRatesTo(TimeUnit.SECONDS)
+ .filter(new MetricFilter() {
+ @Override
+ public boolean matches(String name, Metric
metric) {
+ return
"SESSION_READ_DURATION".equals(name);
+ }
+ })
+ .convertDurationsTo(TimeUnit.MICROSECONDS)
+ .build();
+ reporter.start(30, TimeUnit.SECONDS);
+ }
+ return new Jcr(oak);
+ }
+ });
+ }
+ return super.createRepository(fixture);
+ }
}
Modified: jackrabbit/oak/trunk/oak-run/src/main/resources/logback.xml
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/resources/logback.xml?rev=1716093&r1=1716092&r2=1716093&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/resources/logback.xml (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/resources/logback.xml Tue Nov 24
09:47:19 2015
@@ -38,6 +38,9 @@
<logger name="org.apache.jackrabbit.oak.plugins.tika" level="INFO"/>
+ <!-- Metrics Reporting-->
+ <logger name="org.apache.jackrabbit.oak.metrics" level="INFO"/>
+
<logger
name="org.apache.jackrabbit.oak.plugins.segment.file.tooling.ConsistencyChecker"
level="DEBUG"/>
<root level="warn">