dockerで立ち上げているSolr の JMX 機能を有効にしてモニタリングする
Solr備忘録シリーズ #2
Solrのモニタリングについては以下のQiitaが素晴らしいです。
上記でも触れられていますが、
jconsoleによるモニタリングは簡単なグラフだけですが、すぐ使えます。
まず、18983ポートを使うので docker-compose.yml にポートマッピングを追加します。
- "18983:18983"
そして、JMXを有効にするため、以下を environmentに追加します。
- "ENABLE_REMOTE_JMX_OPTS=true"
こんな感じになりました。
solr: image: solr ports: - "8983:8983" - "18983:18983" volumes: - ./solr/data:/opt/solr/server/solr/mycores restart: always environment: - "SOLR_JAVA_MEM=-Xms1024m -Xmx1024m" - "ENABLE_REMOTE_JMX_OPTS=true"
コンテナを立ち上げ直すと、JVMのArgsに関連する値が表示されるようになります。
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.port=18983 -Dcom.sun.management.jmxremote.rmi.port=18983 -Dcom.sun.management.jmxremote.ssl=false
こんな感じ。
続いて、ローカル端末にjdkをインストールします。 今回は最新の1.8を入れました。
$ java -version java version "1.8.0_101"
ただ jconsole と打ってENTERで立ち上げます。
szk416s-MacBook-Pro:~ szk416 $ jconsole
Remote Processで localhostの18983ポートに接続します。
警告が出ますが、まぁここでは Insecureで繋げにいきます。
しかし、 localhost:18983 (disconnected) と言われてしまいました。 再接続を聞かれますが、リトライしても変わりません。
The connection to localhost:18983 did not secceed. Would you like to try again?
どうやらhostのIPをセットする必要があるようです。
参考: あるホストのみjmx監視ができない | 日本Zabbixユーザー会
試しにローカル端末でIPを確認して、とりあえずハードコードですがセットしてみます。
szk416s-MacBook-Pro:~ szk416 $ ipconfig getifaddr en0 192.168.0.11
solr: image: solr ports: - "8983:8983" - "18983:18983" volumes: - ./solr/data:/opt/solr/server/solr/mycores restart: always environment: - "SOLR_JAVA_MEM=-Xms1024m -Xmx1024m" - "ENABLE_REMOTE_JMX_OPTS=true" command: "-Djava.rmi.server.hostname=192.168.0.11"
コンテナを立ち上げ直し、再接続します。
すると…
接続に成功!
これでモニタリングができるようになりました。