SolrでのJMX

Java Management Extensions (JMX)は、複雑なシステムが、システムとツールがお互いを事前に知らなくてもツールによって制御できるようにするテクノロジーです。本質的に、これは複雑なシステムを表示および操作できる標準インターフェースです。

Solrは、Javaの世界の他の優れた市民と同様に、JMXインターフェースを介して制御できます。有効にすると、jconsoleなどのJMXクライアントを使用してSolrに接続できます。

JMXに不慣れな場合は、次の概要が役立つ場合があります:http://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html

JMXの構成

JMXサポートは、JMXレポーターセクションで説明されているように、メトリクスレポーターを定義することによって構成されます。

SolrのJVMで実行中の既存のMBeanサーバーがある場合、またはシステムプロパティ-Dcom.sun.management.jmxremoteを使用してSolrを起動する場合、solr.xmlでレポーターを明示的に定義していなくても、Solrは起動時にその場所を自動的に識別します。レポーター定義で定義されたパラメータを使用してMBeanサーバーの場所を定義することもできます。

MBeanサーバーの構成

Solrの7.0より前のバージョンでは、JMXサポートをsolrconfig.xmlで定義していました。これは、上記で定義したメトリクスレポーター構成に変更されました。レポーター構成のパラメータにより、既存のMBeanサーバーの場所またはアドレスを定義できます。

システムパラメータ-Dcom.sun.management.jmxremoteを渡すことで、Solrの起動時にMBeanサーバーを起動できます。MBeanサーバーの起動と制御に使用できる追加設定については、Oracleのドキュメント(http://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html)を参照してください。

Solr JMXへのリモート接続の構成

JConsoleやVisualVMなどのJMX対応のJavaプロファイリングツールをリモートのSolrサーバーに接続する必要がある場合は、Solrサーバーの起動時にリモートJMXアクセスを有効にする必要があります。solr.in.shまたはsolr.in.cmd(Windowsの場合)ファイルにあるENABLE_REMOTE_JMX_OPTSプロパティをtrueに変更するだけです。また、JMX RMIコネクターがバインドするポート(例:18983)を選択する必要があります。例えば、Solrのincludeスクリプトで

ENABLE_REMOTE_JMX_OPTS=true
RMI_PORT=18983

JMX RMIコネクターにより、Javaプロファイリングツールはポート18983に接続できるようになります。有効にすると、Solrの起動時に以下のプロパティがJVMに渡されます。

-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.local.only=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.port=18983 \
-Dcom.sun.management.jmxremote.rmi.port=18983

本番環境でのリモートJMXアクセスの有効化は推奨しませんが、本番環境に移行する前のパフォーマンスとユーザー受け入れテストの実行時に役立つことがあります。

これらの設定の詳細については、以下を参照してください: http://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html

NAT(例:AmazonのEC2サービス)の背後で実行されているマシンへのJMX接続は簡単な作業ではありません。java.rmi.server.hostnameシステムプロパティが役立つ場合がありますが、サーバー自体でjconsoleを実行し、リモートデスクトップを使用するのが最も簡単な解決策であることがよくあります。 http://web.archive.org/web/20130525022506/http://jmsbrdy.com/monitoring-java-applications-running-on-ec2-i を参照してください。