Ref Guide builds are also failing due to duplicate section headings on two
pages.
https://builds.apache.org/job/Solr-reference-guide-master/5499/console:
build-site:
[java] ID occurs multiple times: configuration
[java] ...
file:/home/jenkins/jenkins-slave/workspace/Solr-reference-guide-master/solr/build/solr-ref-guide/html-site/monitoring-solr-with-prometheus-and-grafana.html
[java] ...
file:/home/jenkins/jenkins-slave/workspace/Solr-reference-guide-master/solr/build/solr-ref-guide/html-site/parallel-sql-interface.html
This will cause links between sections of the PDF to go to the wrong place, so each section must be
unique. I'd suggest in this case possibly changing the new page section heading "Configuration" to
"solr-exporter Configuration" or something similar.
On Tue, Feb 20, 2018 at 7:34 AM, Koji Sekiguchi <[email protected]
<mailto:[email protected]>> wrote:
I'm sorry. Let me check...
On 2018/02/20 20:50, Andrzej Białecki wrote:
Builds on jenkins are failing due to precommit failures in this code...
On 20 Feb 2018, at 09:47, [email protected] <mailto:[email protected]>
<mailto:[email protected] <mailto:[email protected]>> wrote:
Repository: lucene-solr
Updated Branches:
refs/heads/master dfc0fe86e -> 4bfcbc5c6
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4bfcbc5c/solr/contrib/prometheus-exporter/src/test/org/apache/solr/prometheus/scraper/config/SolrQueryConfigTest.java
<http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4bfcbc5c/solr/contrib/prometheus-exporter/src/test/org/apache/solr/prometheus/scraper/config/SolrQueryConfigTest.java>
----------------------------------------------------------------------
diff --git
a/solr/contrib/prometheus-exporter/src/test/org/apache/solr/prometheus/scraper/config/SolrQueryConfigTest.java
b/solr/contrib/prometheus-exporter/src/test/org/apache/solr/prometheus/scraper/config/SolrQueryConfigTest.java
new file mode 100644
index 0000000..c62d354
--- /dev/null
+++
b/solr/contrib/prometheus-exporter/src/test/org/apache/solr/prometheus/scraper/config/SolrQueryConfigTest.java
@@ -0,0 +1,121 @@
+/*
+ * 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
<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.prometheus.scraper.config;
+
+import org.apache.solr.SolrTestCaseJ4;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.LinkedHashMap;
+import java.util.List;
+
+/**
+ * Unit test for SolrQueryConfig.
+ */
+public class SolrQueryConfigTest extends SolrTestCaseJ4 {
+ @Test
+ public void testQueryConfig() throws Exception {
+ SolrQueryConfig queryConfig = new SolrQueryConfig();
+
+ assertNotNull(queryConfig);
+ }
+
+ @Test
+ public void testGetCollection() throws Exception {
+ SolrQueryConfig queryConfig = new SolrQueryConfig();
+
+ String expected = "";
+ String actual = queryConfig.getCollection();
+ assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testSetCollection() throws Exception {
+ SolrQueryConfig queryConfig = new SolrQueryConfig();
+
+ queryConfig.setCollection("collection1");
+
+ String expected = "collection1";
+ String actual = queryConfig.getCollection();
+ assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testGetPath() throws Exception {
+ SolrQueryConfig queryConfig = new SolrQueryConfig();
+
+ String expected = "";
+ String actual = queryConfig.getPath();
+ assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testSetPath() throws Exception {
+ SolrQueryConfig queryConfig = new SolrQueryConfig();
+
+ queryConfig.setPath("/select");
+
+ String expected = "/select";
+ String actual = queryConfig.getPath();
+ assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testGetParams() throws Exception {
+ SolrQueryConfig queryConfig = new SolrQueryConfig();
+
+ List<LinkedHashMap<String, String>> expected = new
ArrayList<>();
+ List<LinkedHashMap<String, String>> actual =
queryConfig.getParams();
+ assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testSetParams() throws Exception {
+ SolrQueryConfig queryConfig = new SolrQueryConfig();
+
+ LinkedHashMap<String,String> param1 = new LinkedHashMap<>();
+ param1.put("q", "*:*");
+
+ LinkedHashMap<String,String> param2 = new LinkedHashMap<>();
+ param2.put("facet", "on");
+
+ queryConfig.setParams(Arrays.asList(param1, param2));
+
+ List<LinkedHashMap<String, String>> expected =
Arrays.asList(param1, param2);
+ List<LinkedHashMap<String, String>> actual =
queryConfig.getParams();
+ assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testGetParamsString() throws Exception {
+ SolrQueryConfig queryConfig = new SolrQueryConfig();
+
+ LinkedHashMap<String,String> param1 = new LinkedHashMap<>();
+ param1.put("q", "*:*");
+ param1.put("fq", "manu:apple");
+
+ LinkedHashMap<String,String> param2 = new LinkedHashMap<>();
+ param2.put("facet", "on");
+
+ queryConfig.setParams(Arrays.asList(param1, param2));
+
+ String expected = "q=*:*&fq=manu:apple&facet=on";
+ String actual = queryConfig.getParamsString();
+ assertEquals(expected, actual);
+ }
+}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4bfcbc5c/solr/contrib/prometheus-exporter/src/test/org/apache/solr/prometheus/scraper/config/SolrScraperConfigTest.java
<http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4bfcbc5c/solr/contrib/prometheus-exporter/src/test/org/apache/solr/prometheus/scraper/config/SolrScraperConfigTest.java>
----------------------------------------------------------------------
diff --git
a/solr/contrib/prometheus-exporter/src/test/org/apache/solr/prometheus/scraper/config/SolrScraperConfigTest.java
b/solr/contrib/prometheus-exporter/src/test/org/apache/solr/prometheus/scraper/config/SolrScraperConfigTest.java
new file mode 100644
index 0000000..79d1204
--- /dev/null
+++
b/solr/contrib/prometheus-exporter/src/test/org/apache/solr/prometheus/scraper/config/SolrScraperConfigTest.java
@@ -0,0 +1,86 @@
+/*
+ * 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
<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.prometheus.scraper.config;
+
+import
org.apache.solr.prometheus.collector.config.SolrCollectorConfig;
+import org.apache.solr.SolrTestCaseJ4;
+import org.junit.Test;
+import org.yaml.snakeyaml.Yaml;
+
+import java.io.FileReader;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Unit test for SolrScraperConfig.
+ */
+public class SolrScraperConfigTest extends SolrTestCaseJ4 {
+ @Test
+ public void testScraperConfig() throws Exception {
+ String configFile =
getFile("conf/config.yml").getAbsolutePath();
+
+ SolrCollectorConfig config = new Yaml().loadAs(new
FileReader(configFile),
SolrCollectorConfig.class);
+
+ SolrScraperConfig scraperConfig = config.getMetrics();
+
+ assertNotNull(scraperConfig);
+ }
+
+ @Test
+ public void testGetJsonQueries() throws Exception {
+ String configFile =
getFile("conf/config.yml").getAbsolutePath();
+
+ SolrCollectorConfig collectorConfig = new Yaml().loadAs(new
FileReader(configFile),
SolrCollectorConfig.class);
+
+ SolrScraperConfig scraperConfig = collectorConfig.getMetrics();
+
+ assertNotNull(scraperConfig.getJsonQueries());
+ }
+
+ @Test
+ public void testSetJsonQueries() throws Exception {
+ List<String> jsonQueries = new ArrayList<>();
+
+ SolrScraperConfig scraperConfig = new SolrScraperConfig();
+
+ scraperConfig.setJsonQueries(jsonQueries);
+
+ assertNotNull(scraperConfig.getJsonQueries());
+ }
+
+ @Test
+ public void testGetQueryConfig() throws Exception {
+ String configFile =
getFile("conf/config.yml").getAbsolutePath();
+
+ SolrCollectorConfig collectorConfig = new Yaml().loadAs(new
FileReader(configFile),
SolrCollectorConfig.class);
+
+ SolrScraperConfig scraperConfig = collectorConfig.getMetrics();
+
+ assertNotNull(scraperConfig.getQuery());
+ }
+
+ @Test
+ public void testSetQueryConfig() throws Exception {
+ SolrQueryConfig queryConfig = new SolrQueryConfig();
+
+ SolrScraperConfig scraperConfig = new SolrScraperConfig();
+
+ scraperConfig.setQuery(queryConfig);
+
+ assertNotNull(scraperConfig.getQuery());
+ }
+}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4bfcbc5c/solr/solr-ref-guide/src/images/monitoring-solr-with-prometheus-and-grafana/grafana-solr-dashboard.png
<http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4bfcbc5c/solr/solr-ref-guide/src/images/monitoring-solr-with-prometheus-and-grafana/grafana-solr-dashboard.png>
----------------------------------------------------------------------
diff --git
a/solr/solr-ref-guide/src/images/monitoring-solr-with-prometheus-and-grafana/grafana-solr-dashboard.png
b/solr/solr-ref-guide/src/images/monitoring-solr-with-prometheus-and-grafana/grafana-solr-dashboard.png
new file mode 100644
index 0000000..69f21a4
Binary files /dev/null and
b/solr/solr-ref-guide/src/images/monitoring-solr-with-prometheus-and-grafana/grafana-solr-dashboard.png
differ
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4bfcbc5c/solr/solr-ref-guide/src/images/monitoring-solr-with-prometheus-and-grafana/solr-exporter-diagram.png
<http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4bfcbc5c/solr/solr-ref-guide/src/images/monitoring-solr-with-prometheus-and-grafana/solr-exporter-diagram.png>
----------------------------------------------------------------------
diff --git
a/solr/solr-ref-guide/src/images/monitoring-solr-with-prometheus-and-grafana/solr-exporter-diagram.png
b/solr/solr-ref-guide/src/images/monitoring-solr-with-prometheus-and-grafana/solr-exporter-diagram.png
new file mode 100644
index 0000000..96efece
Binary files /dev/null and
b/solr/solr-ref-guide/src/images/monitoring-solr-with-prometheus-and-grafana/solr-exporter-diagram.png
differ
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4bfcbc5c/solr/solr-ref-guide/src/monitoring-solr-with-prometheus-and-grafana.adoc
<http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4bfcbc5c/solr/solr-ref-guide/src/monitoring-solr-with-prometheus-and-grafana.adoc>
----------------------------------------------------------------------
diff --git
a/solr/solr-ref-guide/src/monitoring-solr-with-prometheus-and-grafana.adoc
b/solr/solr-ref-guide/src/monitoring-solr-with-prometheus-and-grafana.adoc
new file mode 100644
index 0000000..1ac55a2
--- /dev/null
+++
b/solr/solr-ref-guide/src/monitoring-solr-with-prometheus-and-grafana.adoc
@@ -0,0 +1,250 @@
+= Monitoring Solr with Prometheus and Grafana
+// 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
<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.
+
+You can monitor Solr using solr-exporter that exposes Solr's
metrics to
https://prometheus.io[Prometheus], and visualize metrics using
https://grafana.com[Grafana].
+
+It allows users to monitor not only Solr metrics which come from
<<metrics-reporting.adoc#metrics-api,Metrics API>> but also facet
counts which come from
<<searching.adoc#searching,Searching>>.
+
+.solr-exporter Diagram
+image::images/monitoring-solr-with-prometheus-and-grafana/solr-exporter-diagram.png[image,width=600]
+
+This feature is experimental status.
+
+== Running solr-exporter
+
+You can start solr-exporter by running `./bin/solr-exporter` from
the solr-exporter
directory.
+
+[source,plain]
+----
+$ cd ./contrib/prometheus-exporter
+$ ./bin/solr-exporter -p 9983 -b http://localhost:8983/solr -f
./conf/config.yml -n 8
+----
+
+If you are on Windows platform, you can start solr-exporter by
running
`.\bin\solr-exporter.cmd` instead.
+
+[source,plain]
+----
+> cd .\contrib\prometheus
+> .\bin\solr-exporter.cmd -p 9983 -b http://localhost:8983/solr -f
.\conf\config.yml -n 8
+----
+
+You can also connect to Solr in SolrCloud mode like this.
+
+[source,plain]
+----
+$ cd ./contrib/prometheus
+$ ./bin/solr-exporter -p 9983 -z localhost:2181/solr -f
./conf/config.yml -n 16
+----
+
+See command help:
+
+[source,plain]
+----
+$ ./bin/solr-exporter -h
+usage: SolrCollector [-h] [-v] [-p PORT] [-b BASE_URL] [-z
ZK_HOST] [-f CONFIG]
+ [-n NUM_THREADS]
+
+Prometheus exporter for Apache Solr.
+
+optional arguments:
+ -h, --help show this help message and exit
+ -p PORT, --port PORT solr-exporter listen port
+ -b BASE_URL, --baseurl BASE_URL
+ specify Solr base URL when connecting to
Solr in standalone
mode (for
+ example 'http://localhost:8983/solr')
+ -z ZK_HOST, --zkhost ZK_HOST
+ specify ZooKeeper connection string
when connecting to
Solr in
+ SolrCloud mode (for example
'localhost:2181/solr')
+ -f CONFIG, --config-file CONFIG
+ specify configuration file
+ -n NUM_THREADS, --num-thread NUM_THREADS
+ specify number of threads
+----
+
+The Solr's metrics exposed by solr-exporter can see at the
following URL.
+
+http://localhost:9983/metrics[http://localhost:9983/metrics]
<http://localhost:9983/metrics%5Bhttp://localhost:9983/metrics%5D>
+
+
+== Configuration
+
+The configuration is in `./config/config.yml`. An example with all
possible options:
+
+[source,plain]
+----
+ping:
+ query:
+ path: /admin/ping
+ jsonQueries:
+ - |-
+ . as $object | $object |
+ (if $object.status == "OK" then 1.0 else 0.0 end) as $value |
+ {
+ name : "solr_ping",
+ type : "GAUGE",
+ help : "See following URL:
https://lucene.apache.org/solr/guide/ping.html
<https://lucene.apache.org/solr/guide/ping.html>",
+ label_names : [],
+ label_values : [],
+ value : $value
+ }
+
+metrics:
+ query:
+ path: /admin/metrics
+ params:
+ - group: 'all'
+ - type: 'all'
+ - prefix: ''
+ - property: ''
+ jsonQueries:
+ # solr_metrics_jetty_response_count
+ - |-
+ .metrics["solr.jetty"] | to_entries | .[] | select(.key |
startswith("org.eclipse.jetty.server.handler.DefaultHandler")) |
select(.key |
endswith("xx-responses")) as $object |
+ $object.key | split(".") | last | split("-") | first as
$status |
+ $object.value.count as $value |
+ {
+ name : "solr_metrics_jetty_response_count",
+ type : "gauge",
+ help : "See following URL:
https://lucene.apache.org/solr/guide/metrics-reporting.html
<https://lucene.apache.org/solr/guide/metrics-reporting.html>",
+ label_names : ["status"],
+ label_values : [$status],
+ value : $value
+ }
+
+...
+
+collections:
+ query:
+ path: /admin/collections
+ params:
+ - action: 'CLUSTERSTATUS'
+ jsonQueries:
+ # solr_collections_cluster_status_live_nodes
+ - |-
+ .cluster.live_nodes | length as $value|
+ {
+ name :
"solr_collections_cluster_status_live_nodes",
+ type : "gauge",
+ help : "See following URL:
https://lucene.apache.org/solr/guide/collections-api.html#clusterstatus
<https://lucene.apache.org/solr/guide/collections-api.html#clusterstatus>",
+ label_names : [],
+ label_values : [],
+ value : $value
+ }
+
+...
+
+queries:
+ - query:
+ collection: collection1
+ path: /select
+ params:
+ - q: "*:*"
+ - start: 0
+ - rows: 0
+ - json.facet: |-
+ {
+ category: {
+ type: terms,
+ field: cat
+ }
+ }
+ jsonQueries:
+ # solr_facets_category
+ - |-
+ .facets.category.buckets[] as $object |
+ $object.val as $term |
+ $object.count as $value |
+ {
+ name : "solr_facets_category",
+ type : "gauge",
+ help : "Category facets",
+ label_names : ["term"],
+ label_values : [$term],
+ value : $value
+ }
+----
+
+|===
+|Name|Description
+
+|ping|Scrape <<ping.adoc#ping,Ping>> response.
+|metrics|Scrape <<metrics-reporting.adoc#metrics-api,Metrics API>>
response.
+|collections|Scrape <<collections-api.adoc#collections-api,Collections
API>> response.
+|queries|Scrape <<searching.adoc#searching,Search API>> response.
+|*.query|Query parameter for each features. You can specify
`collection`, `core`,
`path`, and `params`.
+|*.jsonQueries|JSON Query that is jq syntax. For more details, see
https://stedolan.github.io/jq/manual/[https://stedolan.github.io/jq/manual/]
<https://stedolan.github.io/jq/manual/%5Bhttps://stedolan.github.io/jq/manual/%5D>.
+|===
+
+jq query has to output JSON in the following format.
+
+[source,json]
+----
+{
+ name : "solr_ping",
+ type : "GAUGE",
+ help : "See following URL:
https://lucene.apache.org/solr/guide/ping.html
<https://lucene.apache.org/solr/guide/ping.html>",
+ label_names : ["base_url","core"],
+ label_values : ["http://localhost:8983/solr","collection1"],
+ value : 1.0
+}
+----
+
+It will be converted to the following exposition format.
+
+[source,plain]
+----
+# TYPE solr_ping gauge
+# HELP solr_ping See following URL:
https://lucene.apache.org/solr/guide/ping.html
<https://lucene.apache.org/solr/guide/ping.html>
+solr_ping{base_url="http://localhost:8983/solr
<http://localhost:8983/solr>",core="collection1"} 1.0
+----
+
+|===
+|Name|Description
+
+|name|The metric name to set. For more details, see
https://prometheus.io/docs/practices/naming/[https://prometheus.io/docs/practices/naming/]
<https://prometheus.io/docs/practices/naming/%5Bhttps://prometheus.io/docs/practices/naming/%5D>.
+|type|The type of the metric, can be `COUNTER`, `GAUGE`,
`SUMMARY`, `HISTOGRAM` or
`UNTYPED`. For more detauils, see
https://prometheus.io/docs/concepts/metric_types/[https://prometheus.io/docs/concepts/metric_types/]
<https://prometheus.io/docs/concepts/metric_types/%5Bhttps://prometheus.io/docs/concepts/metric_types/%5D>.
+|help|Help text for the metric.
+|label_names|Label names for the metric. For more details, see
https://prometheus.io/docs/practices/naming/[https://prometheus.io/docs/practices/naming/]
<https://prometheus.io/docs/practices/naming/%5Bhttps://prometheus.io/docs/practices/naming/%5D>.
+|label_values|Label values for the metric. For more details, see
https://prometheus.io/docs/practices/naming/[https://prometheus.io/docs/practices/naming/]
<https://prometheus.io/docs/practices/naming/%5Bhttps://prometheus.io/docs/practices/naming/%5D>.
+|value|Value for the metric. Value must be set to Double type.
+|===
+
+
+== Prometheus Settings
+
+You need to specify the solr-exporter listen address into
`scrape_configs` in
`prometheus.yml`. See following example:
+
+[source,plain]
+----
+scrape_configs:
+ - job_name: 'solr'
+ static_configs:
+ - targets: ['localhost:9983']
+----
+
+When you apply the above settings to prometheus, it will start to
pull Solr's metrics
from solr-exporter.
+
+
+== Grafana Dashboard
+
+A Grafana sample dashboard is provided at the following JSON file.
+
+`./conf/grafana-solr-dashboard.json`
+
+.Grafana Dashboard
+image::images/monitoring-solr-with-prometheus-and-grafana/grafana-solr-dashboard.png[image,width=800]
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4bfcbc5c/solr/solr-ref-guide/src/monitoring-solr.adoc
<http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4bfcbc5c/solr/solr-ref-guide/src/monitoring-solr.adoc>
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/monitoring-solr.adoc
b/solr/solr-ref-guide/src/monitoring-solr.adoc
index 0576e53..2fb7077 100644
--- a/solr/solr-ref-guide/src/monitoring-solr.adoc
+++ b/solr/solr-ref-guide/src/monitoring-solr.adoc
@@ -1,5 +1,5 @@
= Monitoring Solr
-:page-children: metrics-reporting, mbean-request-handler,
configuring-logging,
using-jmx-with-solr, performance-statistics-reference
+:page-children: metrics-reporting, mbean-request-handler,
configuring-logging,
using-jmx-with-solr, monitoring-solr-with-prometheus-and-grafana,
performance-statistics-reference
// 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
@@ -30,6 +30,8 @@ Common administrative tasks include:
<<using-jmx-with-solr.adoc#using-jmx-with-solr,Using JMX with
Solr>>: Describes how to
use Java Management Extensions with Solr.
+<<monitoring-solr-with-prometheus-and-grafana.adoc#monitoring-solr-with-prometheus-and-grafana,Monitoring
Solr with Prometheus and Grafana>>: Describes how to monitor Solr
with Prometheus and
Grafana.
+
<<performance-statistics-reference.adoc#performance-statistics-reference,Performance
Statistics Reference>>: Additional information on statistics
returned from JMX.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
<mailto:[email protected]>
For additional commands, e-mail: [email protected]
<mailto:[email protected]>