Elasticsearchのモニタリング
Liferay Enterprise Search(LES)の サブスクリプション をお持ちの場合は、Elasticの KibanaモニタリングUI をLiferay DXPと統合できるため、Liferay自体の中でモニタリングアクティビティを実行できます。
Liferayのデータがインデックス化されているセキュリティで保護されたElasticsearchクラスターのモニタリングに必要な手順は以下の5つだけです。
-
Elasticsearchにデータ収集を有効にするように指示します。
-
Kibanaをダウンロードしてインストールします。
-
適切なセキュリティ設定でKibanaを構成します。
-
LESモニタリングアプリをインストールします。
-
Elasticsearchと通信するようにLESモニタリングアプリを設定します。
データ収集を有効にする
Elasticsearchではデフォルトでモニタリングが有効になっていますが、データ収集は有効になっていません。 この行をelasticsearch.yml
に追加して、データ収集を有効にします。
xpack.monitoring.collection.enabled: true
Elasticsearchを再起動してから、Kibanaをインストールします。
Kibanaをインストールする
KibanaのバージョンがElasticsearchのバージョンと一致していることを確認してください。 詳細は、 Liferay Enterprise Search互換性マトリックス を参照してください。
Elasticsearch 6.x が、 サポート終了 になりました。 Elasticsearch 6.xを使用しているLiferay 7.2システムは、Elasticsearch 7.17にアップグレードし、その後8.xにアップグレードしてください。 Elasticsearch 7 へのアップグレード を参照してください。
-
Kibanaをダウンロード して、解凍します。 ルートフォルダは Kibanaホーム と呼ばれます。
-
kibana.yml
でElasticsearchのURLを設定して、モニタリングデータの送信先をKibanaに指示します。elasticsearch.hosts: [ "https://localhost:9200" ]
ElasticsearchでTLS/SSLが有効になっていない場合、これは
http
URLです。それ以外の場合は、https
を使用します。セキュリティを設定していない場合は、Kibanaを起動します。
-
ここで認証を設定します。
[Kibana Home]/config/kibana.yml
で組み込みのkibana_system
ユーザーのパスワードを設定します。elasticsearch.username: "kibana_system" elasticsearch.password: "liferay"
セキュリティ設定の
kibana_system
ユーザーパスワードを使用します。 Kibanaをインストールすると、 [Management] ユーザーインターフェイスから組み込みのユーザーパスワードを変更できます。 -
証明書ファイルを提供して、暗号化の設定を開始します。 詳しくは Elastic社のガイド を参照してください。
Elasticsearch自体用に作成された ファイルを再利用するには、
[Elasticsearch Home]/config/certs
フォルダを[Kibana Home]/config/
フォルダにコピーします。Kibanaインスタンス用に個別の証明書を生成する場合は、Elasticsearchノード証明書と同じCAによって署名されていることを確認してください。
-
これらの設定を
kibana.yml
に追加します。elasticsearch.ssl.truststore.path: "config/certs/elastic-stack-ca.p12" elasticsearch.ssl.truststore.password: "liferay" elasticsearch.ssl.keystore.path: "config/certs/elastic-nodes.p12" elasticsearch.ssl.keystore.password: "liferay" elasticsearch.ssl.verificationMode: certificate server.ssl.enabled: true server.ssl.truststore.path: "config/certs/elastic-stack-ca.p12" server.ssl.truststore.password: "liferay" server.ssl.keystore.path: "config/certs/elastic-nodes.p12" server.ssl.keystore.password: "liferay" xpack.security.encryptionKey: "xsomethingxatxleastx32xcharactersx" xpack.security.session.idleTimeout: "1h" xpack.security.session.lifespan: "30d" # Below Kibana 7.6.0 (https://www.elastic.co/guide/en/kibana/7.6/release-notes-7.6.0.html) # only PEM format certificates and keys are supported. Comment out the trust/keystore # paths and passwords above and instead use: #elasticsearch.ssl.certificateAuthorities: [ "config/certs/ca.crt" ] #elasticsearch.ssl.certificate: config/certs/elastic-nodes.crt #elasticsearch.ssl.key: config/certs/elastic-nodes.key #server.ssl.certificateAuthorities: [ "config/certs/ca.crt" ] #server.ssl.certificate: config/certs/elastic-nodes.crt #server.ssl.key: config/certs/elastic-nodes.key
この手順の後、https://localhost:5601
でKibanaにアクセスし、Kibanaユーザーでサインインして設定を確認できます。 最後のステップは、KibanaをLiferayに接続することです。
続行する前にKibanaを停止してください。
LESモニタリングアプリをインストールして設定する
Liferay DXP 7.4より、Liferay Enterprise Search (LES)アプリケーションは、すべてのLiferay DXPバンドルとDockerコンテナに含まれています。 そのため、Liferay DXP 7.4+ではモジュールのインストールは不要です。 詳しくは、LESの起動を参照してください。
LESモニタリングアプリをダウンロードし、LPKGファイルを[Liferay Home]/deploy
フォルダにコピーしてインストールします。 Liferay DXPが実行されている場合、サーバーを再起動するように求められる場合があります。 また、Liferayを実行していない状態で、 LPKGファイルを[Liferay Home]/osgi/marketplace
フォルダに配置することもできます。
-
コネクターがインストールされ、KibanaとElasticsearchが安全に設定されたら、
com.liferay.portal.search.elasticsearch.monitoring.web.internal.configuration.MonitoringConfiguration.config
という名前の構成ファイルを作成します。Liferay DXP 7.2では、ファイルに
com.liferay.portal.search.elasticsearch6.xpack.monitoring.web.internal.configuration.XPackMonitoringConfiguration.config
という名前を付けます。 -
これらの設定を
.config
ファイルに配置します。kibanaPassword="liferay" kibanaUserName="elastic" kibanaURL="https://localhost:5601"
開発およびテスト中に、プロキシサーブレットログを有効にすると役立つ場合があります。
proxyServletLogEnable=B"true"
正確な構成値は、Kibanaの構成によって異なります。 たとえば、TLSを有効にしていない場合は、
kibanaURL="http://localhost:5601"
などのURLを使用します。または、システム設定からモニタリングアダプターを設定します。 グローバルメニューで、 [コントロールパネル] → [設定] → [システム設定] に移動し、[検索]カテゴリでElasticsearch Monitoringエントリを見つけます。 モニタリングコネクタのすべての設定オプションがそこに表示されます。
-
構成ファイルを
Liferay Home/osgi/configs
にデプロイすると、実行中のインスタンスが設定を適用します。 -
Kibana自体にさらに2つの設定を追加します。 1つ目は、Kibanaが
server.basePath
で始まるリクエストを書き換えることを禁止します。 2つ目は、KibanaのモニタリングUIのプロキシとして動作するモニタリングウィジェットのKibanaのベースパスを設定します。 これをkibana.yml
に追加します。[Liferay DXP 7.3]
server.rewriteBasePath: false server.basePath: "/o/portal-search-elasticsearch-monitoring/monitoring-proxy"
[Liferay DXP 7.2]
server.rewriteBasePath: false server.basePath: "/o/portal-search-elasticsearch-xpack-monitoring/xpack-monitoring-proxy"
server.basePath
を設定すると、KibanaのURL(https://localhost:5601
など)からKibana UIにアクセスできなくなります。 Kibana UIへのアクセスはすべてモニタリングウィジェットを経由し、Liferayにログインしたユーザーのみアクセス可能です。 URLを使用してウィジェットに直接移動します。http://localhost:8080/o/portal-search-elasticsearch-monitoring/monitoring-proxy/app/monitoring
-
LiferayのモニタリングウィジェットをKibanaのUIのプロキシとして使用していて、自己署名証明書を使用しているため、Kibanaの証明書を信頼するようにLiferayアプリケーションサーバーの起動JVMパラメーターを構成する必要があります。 2つのアプローチがあり、ここではTomcatで実証しています。
-
推奨される方法は、デフォルトの
cacerts
ファイルのコピーを作成し、秘密鍵なしで証明書をインポートしてから、カスタムトラストストアファイルを使用するようにアプリケーションサーバーを構成することです。-
Liferay JVM からデフォルトの
cacerts
ファイルをコピーし(JDK 8では$JAVA_HOME/jre/lib/security
に、JDK 11では$JAVA_HOME/lib/security
にあります)、名前をcacerts-custom.jks
に変更してください。 -
openssl
を使って、秘密鍵を除いたCAの証明書を取り出します。.p12
(例:elastic-stack-ca.p12
)が1つしかない場合は、以下を使用します。openssl pkcs12 -in elastic-stack-ca.p12 -out elastic-stack-ca.crt -nokeys
-
Javaの
keytool
を使って、証明書をカスタムJKSファイルにインポートします。keytool -importcert -file elastic-stack-ca.crt -keystore PATH/TO/cacerts-custom.jks
-
カスタムのトラストストアを使用するようにTomcatを設定します。
CATALINA_OPTS="${CATALINA_OPTS} -Djavax.net.ssl.trustStore=/PATH/TO/cacerts-custom.jks -Djavax.net.ssl.trustStorePassword=changeit"
-
-
または、Elasticsearchコネクターのセキュリティ設定に使用したのと同じファイルを使用して、トラストストアのパス、パスワード、タイプをアプリケーションサーバのスタートアップJVMパラメーターに追加します。
setenv.sh/bat
ファイルを通して、Tomcat サーバーのCATALINA_OPTS
にトラストストアとパスのパラメータを追加します。CATALINA_OPTS="${CATALINA_OPTS} -Djavax.net.ssl.trustStore=/path/to/elastic-nodes.p12 -Djavax.net.ssl.trustStorePassword=liferay -Djavax.net.ssl.trustStoreType=pkcs12"
-
-
スタックにKibana 7.11とJDK 11が含まれている場合は、TLSバージョン1.3を無効にする必要があります。
--tls-max-v1.2
をKIBANA_HOME/config/node.options
に追加して、Kibana自体でTLS 1.3を無効にします。 詳細および別の解決策については、 監視設定のトラブルシューティング を参照してください。
LiferayとKibanaを再起動します。
Liferayでのモニタリング
KibanaとLES Monitoringのインストール、設定、実行が完了したら、Elasticsearch Monitoringのウィジェットをページに追加します。
-
コンテンツページの [フラグメントとウィジェット] メニュー、またはウィジェットページの[Add Widgets]メニューを開きます。
-
ウィジェット検索バーを使用して モニタリング を検索し、 Elasticsearch Monitoring ウィジェットを[検索]カテゴリからページにドラッグします。 Liferay DXP 7.2の場合、ウィジェットは X-Pack Monitoring と呼ばれます。
詳細については、関連するElasticsearchのドキュメントを参照してください。
Kibana構成の例
以下は、上記で説明したkibana.yml
の完全版です。
# X-Pack Security enabled (Basic Auth)
elasticsearch.username: "kibana_system"
elasticsearch.password: "liferay"
elasticsearch.hosts: [ "https://localhost:9200" ]
# When TLS/SSL is enabled in X-Pack Security
xpack.security.encryptionKey: "xsomethingxatxleastx32xcharactersx"
xpack.security.session.idleTimeout: "1h"
xpack.security.session.lifespan: "30d"
# Enable TLS/SSL for out-bound traffic: from Kibana to Elasticsearch
elasticsearch.ssl.truststore.path: "config/certs/elastic-stack-ca.p12"
elasticsearch.ssl.truststore.password: "liferay"
elasticsearch.ssl.keystore.path: "config/certs/elastic-nodes.p12"
elasticsearch.ssl.keystore.password: "liferay"
elasticsearch.ssl.verificationMode: certificate
# Enable TLS/SSL for in-bound traffic: from browser or
# DXP (Elasticsearch Monitoring widget, proxy) to Kibana
server.ssl.enabled: true
server.ssl.truststore.path: "config/certs/elastic-stack-ca.p12"
server.ssl.truststore.password: "liferay"
server.ssl.keystore.path: "config/certs/elastic-nodes.p12"
server.ssl.keystore.password: "liferay"
# To use Kibana inside the Elasticsearch Monitoring widget
server.rewriteBasePath: false
server.basePath: "/o/portal-search-elasticsearch-monitoring/monitoring-proxy"
# Below Kibana 7.6.0 (https://www.elastic.co/guide/en/kibana/7.6/release-notes-7.6.0.html)
# only PEM format certificates and keys are supported. Comment out the trust/keystore
# paths and passwords above and instead use:
#elasticsearch.ssl.certificateAuthorities: [ "config/certs/ca.crt" ]
#elasticsearch.ssl.certificate: config/certs/elastic-nodes.crt
#elasticsearch.ssl.key: config/certs/elastic-nodes.key
#server.ssl.certificateAuthorities: [ "config/certs/ca.crt" ]
#server.ssl.certificate: config/certs/elastic-nodes.crt
#server.ssl.key: config/certs/elastic-nodes.key
モニタリング設定のトラブルシューティング
Liferay DXPがJDKバージョン11を使用し、Kibanaバージョン7.11と通信するように構成されている場合、次のようなエラーが発生することがあります。
SSLException: No PSK available. Unable to resume
このエラーは、Kibana 7.11のTLSバージョン1.3に依存していることが原因です。 推奨される解決策は、以下のいずれかの方法でLiferay DXP-KibanaスタックのTLS 1.3を無効にすることです。
- Tomcatのアウトバウンド接続でTLS 1.3を無効にします。 Tomcatの
setenv.bat/sh
(CATALINA_OPTS
に追加) 内の-Dhttps.protocols=TLSv1.1,TLSv1.2
を設定します。 - KibanaでTLS 1.3を無効にするには、
--tls-max-v1.2
をKIBANA_HOME/config/node.options
に追加します。 - 根本的な問題( JDK-8213202 )がすでに修正されている 互換性のあるJDKバージョン に切り替えてください。