You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by ab...@apache.org on 2021/10/26 11:47:09 UTC
[solr] branch main updated: SOLR-15572: Improve the default
Prometheus exporter config performance.
This is an automated email from the ASF dual-hosted git repository.
ab pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git
The following commit(s) were added to refs/heads/main by this push:
new caf22f1 SOLR-15572: Improve the default Prometheus exporter config performance.
caf22f1 is described below
commit caf22f1925d6918de8d2cbcae6f9f57347ee96d1
Author: Andrzej Bialecki <ab...@apache.org>
AuthorDate: Tue Oct 26 13:46:47 2021 +0200
SOLR-15572: Improve the default Prometheus exporter config performance.
---
solr/CHANGES.txt | 2 ++
.../conf/solr-exporter-config.xml | 21 +++++++++++++++++----
.../solr/prometheus/exporter/MetricsQuery.java | 15 ++++++++++++---
.../solr/prometheus/scraper/SolrCloudScraper.java | 2 +-
...etheus-solr-exporter-integration-test-config.xml | 17 +++++++++++++----
...prometheus-solr-exporter-scraper-test-config.xml | 15 +++++++++++++--
.../exporter/SolrExporterIntegrationTest.java | 2 +-
7 files changed, 59 insertions(+), 15 deletions(-)
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index ae7c89e..412ae21 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -514,6 +514,8 @@ Improvements
all queries contending for the same set of locks on the cache. Fixed a bug with ramBytes usage reporting on filterCache.
Upgraded Caffeine Cache to 2.9.2 (Mike Drob)
+* SOLR-15572: Improve the default Prometheus exporter config performance. (ab)
+
Optimizations
---------------------
* SOLR-15433: Replace transient core cache LRU by Caffeine cache. (Bruno Roustant)
diff --git a/solr/contrib/prometheus-exporter/conf/solr-exporter-config.xml b/solr/contrib/prometheus-exporter/conf/solr-exporter-config.xml
index d25e033..f7638dd 100644
--- a/solr/contrib/prometheus-exporter/conf/solr-exporter-config.xml
+++ b/solr/contrib/prometheus-exporter/conf/solr-exporter-config.xml
@@ -263,10 +263,23 @@
<lst name="query">
<str name="path">/admin/metrics</str>
<lst name="params">
- <str name="group">all</str>
- <str name="type">all</str>
- <str name="prefix"></str>
- <str name="property"></str>
+ <!--
+ trim some of these expressions as needed if you don't care about
+ a particular group of metrics.
+ -->
+ <str name="expr">solr\.jetty:.*DefaultHandler.*</str>
+ <str name="expr">solr\.jvm:.*</str>
+ <str name="expr">solr\.node:.*</str>
+ <str name="expr">solr\.overseer:.*</str>
+ <str name="expr">solr\.core\..*:QUERY\..*</str>
+ <str name="expr">solr\.core\..*:ADMIN\..*</str>
+ <str name="expr">solr\.core\..*:CACHE\..*</str>
+ <str name="expr">solr\.core\..*:UPDATE\.updateHandler\..*</str>
+ <str name="expr">solr\.core\..*:CORE\.fs\..*</str>
+ <str name="expr">solr\.core\..*:HIGHLIGHTER\..*</str>
+ <str name="expr">solr\.core\..*:INDEX\..*</str>
+ <str name="expr">solr\.core\..*:REPLICATION\.replication\..*</str>
+ <str name="expr">solr\.core\..*:SEARCHER\.searcher\..*</str>
</lst>
</lst>
<arr name="jsonQueries">
diff --git a/solr/contrib/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/MetricsQuery.java b/solr/contrib/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/MetricsQuery.java
index 23e2d33..8de9693 100644
--- a/solr/contrib/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/MetricsQuery.java
+++ b/solr/contrib/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/MetricsQuery.java
@@ -18,6 +18,7 @@
package org.apache.solr.prometheus.exporter;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Optional;
@@ -98,7 +99,7 @@ public class MetricsQuery {
for (NamedList<?> request : requests) {
NamedList<?> query = (NamedList<?>) request.get("query");
@SuppressWarnings("unchecked")
- NamedList<String> queryParameters = (NamedList<String>) query.get("params");
+ NamedList<Object> queryParameters = (NamedList<Object>) query.get("params");
String path = (String) query.get("path");
String core = (String) query.get("core");
String collection = (String) query.get("collection");
@@ -107,8 +108,16 @@ public class MetricsQuery {
ModifiableSolrParams params = new ModifiableSolrParams();
if (queryParameters != null) {
- for (Map.Entry<String, String> entrySet : queryParameters.asShallowMap().entrySet()) {
- params.add(entrySet.getKey(), entrySet.getValue());
+ for (Map.Entry<String, Object> entrySet : queryParameters.asShallowMap().entrySet()) {
+ if (entrySet.getValue() instanceof Collection) {
+ @SuppressWarnings("unchecked")
+ Collection<Object> values = (Collection<Object>) entrySet.getValue();
+ for (Object value : values) {
+ params.add(entrySet.getKey(), String.valueOf(value));
+ }
+ } else {
+ params.add(entrySet.getKey(), String.valueOf(entrySet.getValue()));
+ }
}
}
diff --git a/solr/contrib/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/SolrCloudScraper.java b/solr/contrib/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/SolrCloudScraper.java
index 5efedc3..eedb216 100644
--- a/solr/contrib/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/SolrCloudScraper.java
+++ b/solr/contrib/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/SolrCloudScraper.java
@@ -130,7 +130,7 @@ public class SolrCloudScraper extends SolrScraper {
}
private Set<String> getCollections() throws IOException {
- return solrClient.getClusterStateProvider().getClusterState().getCollectionsMap().keySet();
+ return solrClient.getClusterStateProvider().getClusterState().getCollectionStates().keySet();
}
@Override
diff --git a/solr/contrib/prometheus-exporter/src/test-files/conf/prometheus-solr-exporter-integration-test-config.xml b/solr/contrib/prometheus-exporter/src/test-files/conf/prometheus-solr-exporter-integration-test-config.xml
index f2f96a0..fdd3e3d 100644
--- a/solr/contrib/prometheus-exporter/src/test-files/conf/prometheus-solr-exporter-integration-test-config.xml
+++ b/solr/contrib/prometheus-exporter/src/test-files/conf/prometheus-solr-exporter-integration-test-config.xml
@@ -92,10 +92,19 @@
<lst name="query">
<str name="path">/admin/metrics</str>
<lst name="params">
- <str name="group">all</str>
- <str name="type">all</str>
- <str name="prefix"></str>
- <str name="property"></str>
+ <str name="expr">solr\.jetty:.*DefaultHandler.*</str>
+ <str name="expr">solr\.jvm:.*</str>
+ <str name="expr">solr\.node:.*</str>
+ <str name="expr">solr\.overseer:.*</str>
+ <str name="expr">solr\.core\..*:QUERY\..*</str>
+ <str name="expr">solr\.core\..*:ADMIN\..*</str>
+ <str name="expr">solr\.core\..*:CACHE\..*</str>
+ <str name="expr">solr\.core\..*:UPDATE\.updateHandler\..*</str>
+ <str name="expr">solr\.core\..*:CORE\.fs\..*</str>
+ <str name="expr">solr\.core\..*:HIGHLIGHTER\..*</str>
+ <str name="expr">solr\.core\..*:INDEX\..*</str>
+ <str name="expr">solr\.core\..*:REPLICATION\.replication\..*</str>
+ <str name="expr">solr\.core\..*:SEARCHER\.searcher\..*</str>
</lst>
</lst>
<arr name="jsonQueries">
diff --git a/solr/contrib/prometheus-exporter/src/test-files/conf/prometheus-solr-exporter-scraper-test-config.xml b/solr/contrib/prometheus-exporter/src/test-files/conf/prometheus-solr-exporter-scraper-test-config.xml
index 7da8eff..de10dfe 100644
--- a/solr/contrib/prometheus-exporter/src/test-files/conf/prometheus-solr-exporter-scraper-test-config.xml
+++ b/solr/contrib/prometheus-exporter/src/test-files/conf/prometheus-solr-exporter-scraper-test-config.xml
@@ -94,8 +94,19 @@
<lst name="query">
<str name="path">/admin/metrics</str>
<lst name="params">
- <str name="group">all</str>
- <str name="type">all</str>
+ <str name="expr">solr\.jetty:.*DefaultHandler.*</str>
+ <str name="expr">solr\.jvm:.*</str>
+ <str name="expr">solr\.node:.*</str>
+ <str name="expr">solr\.overseer:.*</str>
+ <str name="expr">solr\.core\..*:QUERY\..*</str>
+ <str name="expr">solr\.core\..*:ADMIN\..*</str>
+ <str name="expr">solr\.core\..*:CACHE\..*</str>
+ <str name="expr">solr\.core\..*:UPDATE\.updateHandler\..*</str>
+ <str name="expr">solr\.core\..*:CORE\.fs\..*</str>
+ <str name="expr">solr\.core\..*:HIGHLIGHTER\..*</str>
+ <str name="expr">solr\.core\..*:INDEX\..*</str>
+ <str name="expr">solr\.core\..*:REPLICATION\.replication\..*</str>
+ <str name="expr">solr\.core\..*:SEARCHER\.searcher\..*</str>
</lst>
</lst>
<arr name="jsonQueries">
diff --git a/solr/contrib/prometheus-exporter/src/test/org/apache/solr/prometheus/exporter/SolrExporterIntegrationTest.java b/solr/contrib/prometheus-exporter/src/test/org/apache/solr/prometheus/exporter/SolrExporterIntegrationTest.java
index ceb4a4e..fa65ec0 100644
--- a/solr/contrib/prometheus-exporter/src/test/org/apache/solr/prometheus/exporter/SolrExporterIntegrationTest.java
+++ b/solr/contrib/prometheus-exporter/src/test/org/apache/solr/prometheus/exporter/SolrExporterIntegrationTest.java
@@ -23,7 +23,7 @@ import org.apache.lucene.util.LuceneTestCase.Slow;
import org.junit.Before;
import org.junit.Test;
-@org.apache.lucene.util.LuceneTestCase.AwaitsFix(bugUrl="https://issues.apache.org/jira/browse/SOLR-13786")
+//@org.apache.lucene.util.LuceneTestCase.AwaitsFix(bugUrl="https://issues.apache.org/jira/browse/SOLR-13786")
@Slow
public class SolrExporterIntegrationTest extends SolrExporterTestBase {