You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sh...@apache.org on 2016/11/28 12:42:01 UTC
lucene-solr:feature/metrics: SOLR-9788: Use instrumented jetty
classes provided by the dropwizard metric library. This also introduces a new
/admin/metrics API endpoint to return all registered metrics in JSON format
Repository: lucene-solr
Updated Branches:
refs/heads/feature/metrics [created] 497212e05
SOLR-9788: Use instrumented jetty classes provided by the dropwizard metric library. This also introduces a new /admin/metrics API endpoint to return all registered metrics in JSON format
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/497212e0
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/497212e0
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/497212e0
Branch: refs/heads/feature/metrics
Commit: 497212e05451c11088fb4f04d1c8e6092915dc40
Parents: c36ec0b
Author: Shalin Shekhar Mangar <sh...@apache.org>
Authored: Mon Nov 28 18:11:26 2016 +0530
Committer: Shalin Shekhar Mangar <sh...@apache.org>
Committed: Mon Nov 28 18:11:26 2016 +0530
----------------------------------------------------------------------
.../idea/solr/contrib/analytics/analytics.iml | 1 +
lucene/ivy-versions.properties | 3 ++
solr/CHANGES.txt | 3 ++
solr/core/ivy.xml | 1 -
.../SolrMetricsServletContextListener.java | 29 ++++++++++++++++++++
solr/server/build.xml | 4 +--
solr/server/etc/jetty.xml | 20 +++++++++++---
solr/server/ivy.xml | 15 ++++++++--
solr/webapp/web/WEB-INF/web.xml | 17 ++++++++++++
9 files changed, 83 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/497212e0/dev-tools/idea/solr/contrib/analytics/analytics.iml
----------------------------------------------------------------------
diff --git a/dev-tools/idea/solr/contrib/analytics/analytics.iml b/dev-tools/idea/solr/contrib/analytics/analytics.iml
index 10f51a7..d63d3e2 100644
--- a/dev-tools/idea/solr/contrib/analytics/analytics.iml
+++ b/dev-tools/idea/solr/contrib/analytics/analytics.iml
@@ -14,6 +14,7 @@
<orderEntry type="library" scope="TEST" name="JUnit" level="project" />
<orderEntry type="library" name="Solr core library" level="project" />
<orderEntry type="library" name="Solrj library" level="project" />
+ <orderEntry type="library" name="Solr example library" level="project" />
<orderEntry type="module" scope="TEST" module-name="lucene-test-framework" />
<orderEntry type="module" scope="TEST" module-name="solr-test-framework" />
<orderEntry type="module" module-name="lucene-core" />
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/497212e0/lucene/ivy-versions.properties
----------------------------------------------------------------------
diff --git a/lucene/ivy-versions.properties b/lucene/ivy-versions.properties
index 8526105..4f07f09 100644
--- a/lucene/ivy-versions.properties
+++ b/lucene/ivy-versions.properties
@@ -76,6 +76,9 @@ com.sun.jersey.version = 1.9
io.dropwizard.metrics.version = 3.1.2
/io.dropwizard.metrics/metrics-core = ${io.dropwizard.metrics.version}
/io.dropwizard.metrics/metrics-healthchecks = ${io.dropwizard.metrics.version}
+/io.dropwizard.metrics/metrics-jetty9 = ${io.dropwizard.metrics.version}
+/io.dropwizard.metrics/metrics-servlets = ${io.dropwizard.metrics.version}
+/io.dropwizard.metrics/metrics-json = ${io.dropwizard.metrics.version}
io.netty.netty-all.version = 4.0.36.Final
/io.netty/netty-all = ${io.netty.netty-all.version}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/497212e0/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index e234322..6d2714c 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -150,6 +150,9 @@ New Features
runtime without the need to modify solrconfig from the default configuration. hl.useFastVectorHighlighter is now
considered deprecated in lieu of hl.method=fastVector. (Timothy Rodriguez, David Smiley)
+* SOLR-9788: Use instrumented jetty classes provided by the dropwizard metric library. This also introduces a
+ new /admin/metrics API endpoint to return all registered metrics in JSON format. (shalin)
+
Optimizations
----------------------
* SOLR-9704: Facet Module / JSON Facet API: Optimize blockChildren facets that have
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/497212e0/solr/core/ivy.xml
----------------------------------------------------------------------
diff --git a/solr/core/ivy.xml b/solr/core/ivy.xml
index 5710da9..67e4379 100644
--- a/solr/core/ivy.xml
+++ b/solr/core/ivy.xml
@@ -50,7 +50,6 @@
<dependency org="log4j" name="log4j" rev="${/log4j/log4j}" conf="compile"/>
<dependency org="org.slf4j" name="slf4j-log4j12" rev="${/org.slf4j/slf4j-log4j12}" conf="compile"/>
<dependency org="org.slf4j" name="jcl-over-slf4j" rev="${/org.slf4j/jcl-over-slf4j}" conf="compile"/>
- <dependency org="io.dropwizard.metrics" name="metrics-core" rev="${/io.dropwizard.metrics/metrics-core}" conf="compile" />
<dependency org="org.easymock" name="easymock" rev="${/org.easymock/easymock}" conf="test"/>
<dependency org="cglib" name="cglib-nodep" rev="${/cglib/cglib-nodep}" conf="test"/>
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/497212e0/solr/core/src/java/org/apache/solr/servlet/SolrMetricsServletContextListener.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/servlet/SolrMetricsServletContextListener.java b/solr/core/src/java/org/apache/solr/servlet/SolrMetricsServletContextListener.java
new file mode 100644
index 0000000..f548688
--- /dev/null
+++ b/solr/core/src/java/org/apache/solr/servlet/SolrMetricsServletContextListener.java
@@ -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.
+ */
+
+package org.apache.solr.servlet;
+
+import com.codahale.metrics.MetricRegistry;
+import com.codahale.metrics.SharedMetricRegistries;
+import com.codahale.metrics.servlets.MetricsServlet;
+
+public class SolrMetricsServletContextListener extends MetricsServlet.ContextListener {
+ @Override
+ protected MetricRegistry getMetricRegistry() {
+ return SharedMetricRegistries.getOrCreate("/jetty");
+ }
+}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/497212e0/solr/server/build.xml
----------------------------------------------------------------------
diff --git a/solr/server/build.xml b/solr/server/build.xml
index 8600e17..ae4e650 100644
--- a/solr/server/build.xml
+++ b/solr/server/build.xml
@@ -39,8 +39,8 @@
<target name="resolve" depends="ivy-availability-check,ivy-fail,ivy-configure">
<sequential>
<!-- jetty libs in lib/ -->
- <ivy:retrieve conf="jetty,servlet" type="jar" log="download-only" symlink="${ivy.symlink}"
- pattern="lib/[artifact]-[revision].[ext]" sync="${ivy.sync}"/>
+ <ivy:retrieve conf="jetty,servlet,metrics" type="jar,bundle" log="download-only" symlink="${ivy.symlink}"
+ pattern="lib/[artifact]-[revision].[ext]" sync="${ivy.sync}"/>
<ivy:retrieve conf="logging" type="jar,bundle" log="download-only" symlink="${ivy.symlink}"
pattern="lib/ext/[artifact]-[revision].[ext]" sync="${ivy.sync}"/>
<!-- start.jar - we don't use sync=true here, we don't own the dir, but
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/497212e0/solr/server/etc/jetty.xml
----------------------------------------------------------------------
diff --git a/solr/server/etc/jetty.xml b/solr/server/etc/jetty.xml
index f1b94c8..0be9a45 100644
--- a/solr/server/etc/jetty.xml
+++ b/solr/server/etc/jetty.xml
@@ -29,9 +29,16 @@
<!-- Consult the javadoc of o.e.j.util.thread.QueuedThreadPool -->
<!-- for all configuration that may be set here. -->
<!-- =========================================================== -->
- <!-- uncomment to change type of threadpool
- <Arg name="threadpool"><New id="threadpool" class="org.eclipse.jetty.util.thread.QueuedThreadPool"/></Arg>
- -->
+ <Arg name="threadpool">
+ <New id="threadpool" class="com.codahale.metrics.jetty9.InstrumentedQueuedThreadPool">
+ <Arg name="registry">
+ <Call id="solrJettyMetricRegistry" name="getOrCreate" class="com.codahale.metrics.SharedMetricRegistries">
+ <Arg>/jetty</Arg>
+ </Call>
+ </Arg>
+ </New>
+ </Arg>
+
<Get name="ThreadPool">
<Set name="minThreads" type="int"><Property name="solr.jetty.threads.min" default="10"/></Set>
<Set name="maxThreads" type="int"><Property name="solr.jetty.threads.max" default="10000"/></Set>
@@ -106,7 +113,12 @@
<New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
</Item>
<Item>
- <New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler"/>
+ <New id="InstrumentedHandler" class="com.codahale.metrics.jetty9.InstrumentedHandler">
+ <Arg><Ref refid="solrJettyMetricRegistry"/></Arg>
+ <Set name="handler">
+ <New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler"/>
+ </Set>
+ </New>
</Item>
<Item>
<New id="RequestLog" class="org.eclipse.jetty.server.handler.RequestLogHandler"/>
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/497212e0/solr/server/ivy.xml
----------------------------------------------------------------------
diff --git a/solr/server/ivy.xml b/solr/server/ivy.xml
index 3a48224..ae8550a 100644
--- a/solr/server/ivy.xml
+++ b/solr/server/ivy.xml
@@ -18,7 +18,8 @@
-->
<ivy-module version="2.0">
<info organisation="org.apache.solr" module="server"/>
- <configurations defaultconfmapping="jetty->master;start->master;servlet->master;logging->master">
+ <configurations defaultconfmapping="metrics->master;jetty->master;start->master;servlet->master;logging->master">
+ <conf name="metrics" description="metrics jars" transitive="true"/>
<conf name="jetty" description="jetty jars" transitive="false"/>
<conf name="start" description="jetty start jar" transitive="false"/>
<conf name="servlet" description="servlet-api jar" transitive="false"/>
@@ -30,8 +31,16 @@
<dependency org="org.slf4j" name="slf4j-api" rev="${/org.slf4j/slf4j-api}" conf="logging"/>
<dependency org="org.slf4j" name="jcl-over-slf4j" rev="${/org.slf4j/jcl-over-slf4j}" conf="logging"/>
<dependency org="org.slf4j" name="jul-to-slf4j" rev="${/org.slf4j/jul-to-slf4j}" conf="logging"/>
- <dependency org="org.slf4j" name="slf4j-log4j12" rev="${/org.slf4j/slf4j-log4j12}" conf="logging"/>
-
+ <dependency org="org.slf4j" name="slf4j-log4j12" rev="${/org.slf4j/slf4j-log4j12}" conf="logging"/>
+
+ <dependency org="io.dropwizard.metrics" name="metrics-core" rev="${/io.dropwizard.metrics/metrics-core}" conf="metrics" />
+ <dependency org="io.dropwizard.metrics" name="metrics-servlets" rev="${/io.dropwizard.metrics/metrics-servlets}" conf="metrics" />
+ <dependency org="io.dropwizard.metrics" name="metrics-json" rev="${/io.dropwizard.metrics/metrics-json}" conf="metrics" />
+ <dependency org="io.dropwizard.metrics" name="metrics-jetty9" rev="${/io.dropwizard.metrics/metrics-jetty9}" conf="metrics" />
+ <dependency org="com.fasterxml.jackson.core" name="jackson-core" rev="${/com.fasterxml.jackson.core/jackson-core}" conf="metrics"/>
+ <dependency org="com.fasterxml.jackson.core" name="jackson-databind" rev="${/com.fasterxml.jackson.core/jackson-databind}" conf="metrics"/>
+ <dependency org="com.fasterxml.jackson.core" name="jackson-annotations" rev="${/com.fasterxml.jackson.core/jackson-annotations}" conf="metrics"/>
+
<dependency org="org.eclipse.jetty" name="jetty-continuation" rev="${/org.eclipse.jetty/jetty-continuation}" conf="jetty"/>
<dependency org="org.eclipse.jetty" name="jetty-deploy" rev="${/org.eclipse.jetty/jetty-deploy}" conf="jetty"/>
<dependency org="org.eclipse.jetty" name="jetty-http" rev="${/org.eclipse.jetty/jetty-http}" conf="jetty"/>
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/497212e0/solr/webapp/web/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/solr/webapp/web/WEB-INF/web.xml b/solr/webapp/web/WEB-INF/web.xml
index 5278ae5..935e411 100644
--- a/solr/webapp/web/WEB-INF/web.xml
+++ b/solr/webapp/web/WEB-INF/web.xml
@@ -75,6 +75,23 @@
<url-pattern>/*</url-pattern>
</filter-mapping>
+ <listener>
+ <listener-class>org.apache.solr.servlet.SolrMetricsServletContextListener</listener-class>
+ </listener>
+
+ <servlet>
+ <servlet-name>metrics</servlet-name>
+ <servlet-class>com.codahale.metrics.servlets.MetricsServlet</servlet-class>
+ <init-param>
+ <param-name>show-jvm-metrics</param-name>
+ <param-value>true</param-value>
+ </init-param>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>metrics</servlet-name>
+ <url-pattern>/admin/metrics/*</url-pattern>
+ </servlet-mapping>
+
<servlet>
<servlet-name>LoadAdminUI</servlet-name>
<servlet-class>org.apache.solr.servlet.LoadAdminUiServlet</servlet-class>