From 1f544d4530dad1aaf26c922bb28decc35019a497 Mon Sep 17 00:00:00 2001 From: Houston Putman Date: Tue, 17 Sep 2019 13:09:48 -0400 Subject: [PATCH 1/5] SOLR-13773: Prometheus Exporter GC and Heap options --- .../prometheus-exporter/bin/solr-exporter | 23 +++++++++++++++++-- .../prometheus-exporter/bin/solr-exporter.cmd | 5 +++- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/solr/contrib/prometheus-exporter/bin/solr-exporter b/solr/contrib/prometheus-exporter/bin/solr-exporter index ea349609ed44..48ab3eab5129 100755 --- a/solr/contrib/prometheus-exporter/bin/solr-exporter +++ b/solr/contrib/prometheus-exporter/bin/solr-exporter @@ -104,7 +104,23 @@ do CLASSPATH="$CLASSPATH":"$JAR" done -EXTRA_JVM_ARGUMENTS="-Xmx512m -Dlog4j.configurationFile=file:"$BASEDIR"/../../server/resources/log4j2-console.xml" +# Memory settings +JAVA_MEM_OPTS= +if [ -z "$SOLR_HEAP" ] && [ -n "$SOLR_JAVA_MEM" ]; then + JAVA_MEM_OPTS="$SOLR_JAVA_MEM" +else + SOLR_HEAP="${SOLR_HEAP:-512m}" + JAVA_MEM_OPTS="-Xms$SOLR_HEAP -Xmx$SOLR_HEAP" +fi + +# define default GC_TUNE +if [ -z ${GC_TUNE+x} ]; then + GC_TUNE='-XX:+UseG1GC' +else + GC_TUNE="$GC_TUNE" +fi + +EXTRA_JVM_ARGUMENTS="-Dlog4j.configurationFile=file:"$BASEDIR"/../../server/resources/log4j2-console.xml" # For Cygwin, switch paths to Windows format before running java if $cygwin; then @@ -115,7 +131,10 @@ if $cygwin; then [ -n "$REPO" ] && REPO=`cygpath --path --windows "$REPO"` fi -exec "$JAVACMD" $JAVA_OPTS \ +exec "$JAVACMD" \ + $JAVA_MEM_OPTS \ + $GC_TUNE \ + $JAVA_OPTS \ $EXTRA_JVM_ARGUMENTS \ -classpath "$CLASSPATH" \ -Dapp.name="solr-exporter" \ diff --git a/solr/contrib/prometheus-exporter/bin/solr-exporter.cmd b/solr/contrib/prometheus-exporter/bin/solr-exporter.cmd index 4ff47cf6d1f9..2df786a330e0 100644 --- a/solr/contrib/prometheus-exporter/bin/solr-exporter.cmd +++ b/solr/contrib/prometheus-exporter/bin/solr-exporter.cmd @@ -63,6 +63,9 @@ set BASEDIR=%~dp0.. :repoSetup +IF NOT "%SOLR_HEAP%"=="" set SOLR_JAVA_MEM=-Xms%SOLR_HEAP% -Xmx%SOLR_HEAP% +IF "%SOLR_JAVA_MEM%"=="" set SOLR_JAVA_MEM=-Xms512m -Xmx512m +IF "%GC_TUNE%"=="" set GC_TUNE=-XX:+UseG1GC if "%JAVACMD%"=="" set JAVACMD=java @@ -75,7 +78,7 @@ goto endInit @REM Reaching here means variables are defined and arguments have been captured :endInit -%JAVACMD% %JAVA_OPTS% %EXTRA_JVM_ARGUMENTS% -classpath "%CLASSPATH_PREFIX%;%CLASSPATH%" -Dapp.name="solr-exporter" -Dapp.repo="%REPO%" -Dbasedir="%BASEDIR%" org.apache.solr.prometheus.exporter.SolrExporter %CMD_LINE_ARGS% +%JAVACMD% %SOLR_JAVA_MEM% %GC_TUNE% %JAVA_OPTS% %EXTRA_JVM_ARGUMENTS% -classpath "%CLASSPATH_PREFIX%;%CLASSPATH%" -Dapp.name="solr-exporter" -Dapp.repo="%REPO%" -Dbasedir="%BASEDIR%" org.apache.solr.prometheus.exporter.SolrExporter %CMD_LINE_ARGS% if ERRORLEVEL 1 goto error goto end From 3d5928da1c256797bb665a5665707cc3fdf1889b Mon Sep 17 00:00:00 2001 From: Houston Putman Date: Wed, 18 Sep 2019 11:53:34 -0400 Subject: [PATCH 2/5] Removing the SOLR* suffix from memory options. --- solr/contrib/prometheus-exporter/bin/solr-exporter | 8 ++++---- solr/contrib/prometheus-exporter/bin/solr-exporter.cmd | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/solr/contrib/prometheus-exporter/bin/solr-exporter b/solr/contrib/prometheus-exporter/bin/solr-exporter index 48ab3eab5129..9dc717ea7c8e 100755 --- a/solr/contrib/prometheus-exporter/bin/solr-exporter +++ b/solr/contrib/prometheus-exporter/bin/solr-exporter @@ -106,11 +106,11 @@ done # Memory settings JAVA_MEM_OPTS= -if [ -z "$SOLR_HEAP" ] && [ -n "$SOLR_JAVA_MEM" ]; then - JAVA_MEM_OPTS="$SOLR_JAVA_MEM" +if [ -z "$JAVA_HEAP" ] && [ -n "$JAVA_MEM" ]; then + JAVA_MEM_OPTS="$JAVA_MEM" else - SOLR_HEAP="${SOLR_HEAP:-512m}" - JAVA_MEM_OPTS="-Xms$SOLR_HEAP -Xmx$SOLR_HEAP" + JAVA_HEAP="${JAVA_HEAP:-512m}" + JAVA_MEM_OPTS="-Xms$JAVA_HEAP -Xmx$JAVA_HEAP" fi # define default GC_TUNE diff --git a/solr/contrib/prometheus-exporter/bin/solr-exporter.cmd b/solr/contrib/prometheus-exporter/bin/solr-exporter.cmd index 2df786a330e0..e5bd65ef8a4d 100644 --- a/solr/contrib/prometheus-exporter/bin/solr-exporter.cmd +++ b/solr/contrib/prometheus-exporter/bin/solr-exporter.cmd @@ -63,8 +63,8 @@ set BASEDIR=%~dp0.. :repoSetup -IF NOT "%SOLR_HEAP%"=="" set SOLR_JAVA_MEM=-Xms%SOLR_HEAP% -Xmx%SOLR_HEAP% -IF "%SOLR_JAVA_MEM%"=="" set SOLR_JAVA_MEM=-Xms512m -Xmx512m +IF NOT "%JAVA_HEAP%"=="" set JAVA_MEM=-Xms%JAVA_HEAP% -Xmx%JAVA_HEAP% +IF "%JAVA_MEM%"=="" set JAVA_MEM=-Xms512m -Xmx512m IF "%GC_TUNE%"=="" set GC_TUNE=-XX:+UseG1GC if "%JAVACMD%"=="" set JAVACMD=java @@ -72,13 +72,13 @@ if "%JAVACMD%"=="" set JAVACMD=java if "%REPO%"=="" set REPO=%BASEDIR%\lib set CLASSPATH=%REPO%\*;%BASEDIR%\..\..\dist\solrj-lib\*;%BASEDIR%\..\..\dist\*;%BASEDIR%\lucene-libs\*;%BASEDIR%\..\..\server\solr-webapp\webapp\WEB-INF\lib\* -set EXTRA_JVM_ARGUMENTS=-Xmx512m -Dlog4j.configurationFile=file:///%BASEDIR%\..\..\server\resources\log4j2-console.xml +set EXTRA_JVM_ARGUMENTS=-Dlog4j.configurationFile=file:///%BASEDIR%\..\..\server\resources\log4j2-console.xml goto endInit @REM Reaching here means variables are defined and arguments have been captured :endInit -%JAVACMD% %SOLR_JAVA_MEM% %GC_TUNE% %JAVA_OPTS% %EXTRA_JVM_ARGUMENTS% -classpath "%CLASSPATH_PREFIX%;%CLASSPATH%" -Dapp.name="solr-exporter" -Dapp.repo="%REPO%" -Dbasedir="%BASEDIR%" org.apache.solr.prometheus.exporter.SolrExporter %CMD_LINE_ARGS% +%JAVACMD% %JAVA_MEM% %GC_TUNE% %JAVA_OPTS% %EXTRA_JVM_ARGUMENTS% -classpath "%CLASSPATH_PREFIX%;%CLASSPATH%" -Dapp.name="solr-exporter" -Dapp.repo="%REPO%" -Dbasedir="%BASEDIR%" org.apache.solr.prometheus.exporter.SolrExporter %CMD_LINE_ARGS% if ERRORLEVEL 1 goto error goto end From 06a5cd807f5e78a5381014a6e9f881e900d0400c Mon Sep 17 00:00:00 2001 From: Houston Putman Date: Wed, 18 Sep 2019 15:16:51 -0400 Subject: [PATCH 3/5] Adding info to the ref-guide. --- ...ring-solr-with-prometheus-and-grafana.adoc | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) 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 index 08edd1146d5c..b980267b4da5 100644 --- 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 @@ -108,12 +108,28 @@ The number of seconds between collecting metrics from Solr. The `solr-exporter` The Solr's metrics exposed by `solr-exporter` can be seen at: `\http://localhost:9983/solr/admin/metrics`. -=== Getting metrics from a secure Solr(Cloud) +=== Environment Variable Options + +The start commands provided with the Prometheus Exporter support the use of custom java options through the following environment variables: + +`JAVA_HEAP`:: +Sets the initial (`Xms`) and max (`Xmx`) Java heap size. The default is `512m`. + +`JAVA_MEM`:: +Custom java memory settings (e.g. `-Xms1g -Xmx2g`). This is ignored if `JAVA_HEAP` is provided. -Your Solr(Cloud) might be secured by measures described in <>. The security configuration can be injected into `solr-exporter` using environment variables in a fashion similar to other clients using <>. This is possible because the main script picks up two external environment variables and passes them on to the Java process: +`GC_TUNE`:: +Custom Java garbage collection settings. The default is `-XX:+UseG1GC`. + +`JAVA_OPTS`:: +Extra JVM options. + +`CLASSPATH_PREFIX`:: +Location of extra libraries to load when starting the `solr-exporter`. + +=== Getting metrics from a secure Solr(Cloud) -* `JAVA_OPTS` allows to add extra JVM options -* `CLASSPATH_PREFIX` allows to add extra libraries +Your Solr(Cloud) might be secured by measures described in <>. The security configuration can be injected into `solr-exporter` using environment variables in a fashion similar to other clients using <>. This is possible because the main script picks up <> and passes them on to the Java process. Example for a SolrCloud instance secured by <>, <> and <>: From fda1a5f2c21e30ac626b81629ca221dc7d0d38a7 Mon Sep 17 00:00:00 2001 From: Houston Putman Date: Wed, 18 Sep 2019 14:59:26 -0400 Subject: [PATCH 4/5] Adding changelog message. --- solr/CHANGES.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt index 22f334f2d968..18eb29fdc5b8 100644 --- a/solr/CHANGES.txt +++ b/solr/CHANGES.txt @@ -161,6 +161,8 @@ Improvements * SOLR-9658: Max idle time support for SolrCache implementations. (hoss, ab) +* SOLR-13773: Add Prometheus Exporter GC and Heap options. (Houston Putman) + Bug Fixes ---------------------- From 89f5a277c8954bccf7c82ac87756b9b925ca096f Mon Sep 17 00:00:00 2001 From: Anshum Gupta Date: Wed, 18 Sep 2019 13:20:52 -0700 Subject: [PATCH 5/5] Add 'via' section to CHANGELOG entry. --- solr/CHANGES.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt index 18eb29fdc5b8..310fe17804ea 100644 --- a/solr/CHANGES.txt +++ b/solr/CHANGES.txt @@ -161,7 +161,7 @@ Improvements * SOLR-9658: Max idle time support for SolrCache implementations. (hoss, ab) -* SOLR-13773: Add Prometheus Exporter GC and Heap options. (Houston Putman) +* SOLR-13773: Add Prometheus Exporter GC and Heap options. (Houston Putman via Anshum Gupta, David Smiley) Bug Fixes ----------------------