WebSphere Libertyは、Java EE / Jakarta EE / MicroProfileの実行ランタイム製品として、軽量かつ高速に起動するという特徴を持っています。これらの特徴により、コンテナ環境での迅速なデプロイやスケールアウトが可能になり、リソース消費を最小限に抑えながら複数のインスタンスを効率的に管理できます。
また、外部ツールとの親和性が高くDevOpsを実現しやすいこともあり,CI/CD環境と組み合わせることで効率的かつモダンな開発・運用環境の構築が可能になります。
コンテナオーケストレーションプラットフォームとして知られているOpenShift Container Platformの機能の中にも、「WebSphere Liberty Operator」というLibertyサーバーを効率的にデプロイ、管理、運用するための拡張機能が存在します。
本投稿では、WebSphere LibertyをOCPコンテナ環境で利用する際、アプリケーションで問題が発生した場合に重要となる、「WebSphere Liberty Operator」のサーバーログ、サーバーダンプおよびサーバートレース収集機能について、実際の操作手順を交えながらご紹介します。
これらの機能を利用することで、コンテナ内で実行されているLibertyサーバーからこれらの情報を簡単に収集でき、問題の解決に役立てることができます。
serviceability optionの有効化
サーバートレース、ダンプを収集するには、アプリケーションを最初にデプロイするタイミングでserviceability optionを有効化する必要があります。
OpenShiftクラスターにアクセス可能なターミナルから、以下のコマンドを実行します。
oc patch wlapp <websphere-application-name> -n dev --patch '{"spec":{"serviceability":{"volumeClaimName":"<volume-name>"}}}' --type=merge
ここで、websphere-application-nameには対象となるwebsphere上のアプリケーションの名前、volume-nameには収集したファイルを保存するための永続ボリュームの名前を入力します。
有効化が成功したことを確認するには、次のコマンドを実行し、アプリケーションのステータスを取得します。
oc get wlapp <websphere-application-name> -n dev -o wide
RECONCILEDの値がTrueであれば、有効化は成功しています。
サーバーダンプ、トレースはそれぞれ必要時および問題発生時にリクエストを実行する必要があります。次のセクションからは、リクエストの実行方法について確認していきます。
サーバーダンプのリクエスト
OpenShiftコンソール上で、[Operators] > [Installed Operators]にアクセスし、WebSphereLibertyDumpインスタンスの作成をクリックします。
次に、Licenseのチェックボックスをクリックし、podNameにLibertyサーバーが実行されているポッドの名前を入力、includeでスレッドダンプもしくはヒープダンプを選択します。
最下部のCreateボタンをクリックすることで、リクエストが完了し、サーバーダンプが実行されます。
ここで生成されるダンプファイルには、サーバーログ、構成、スレッドダンプもしくはヒープダンプを含むzipファイルが含まれます。
サーバートレースのリクエスト
OpenShiftコンソール上で、[Operators] > [Installed Operators]にアクセスし、WebSphereLibertyTraceインスタンスの作成をクリックします。
次に、Licenseのチェックボックスをクリックし、podNameにLibertyサーバーが実行されているポッドの名前を入力します。
maxFileSizeとmaxFilesで、最大トレースファイルサイズとロールオーバー前の最大ファイル数を指定することもできます。
最下部のCreateボタンをクリックすることで、リクエストが完了し、サーバートレースが実行されます。
生成されたファイルへのアクセス
生成されたダンプファイル、トレースファイルは「serviceability optionの有効化」で指定した永続ボリュームに保存されています。
OpenShiftクラスターにアクセス可能なターミナルから、以下のコマンドを実行します。
oc get pods
oc rsh <pod-name>
ここで、pod-nameにはLibertyサーバーが実行されているポッドの名前を入力します。
次に以下のコマンドを入力して、指定した永続ボリュームが含まれている、ポッドで実行されているコンテナ内のファイルを一覧表示します。
ls -R /serviceability/<project-name>
ここで、project-nameにはOCP上でLibertyサーバーが属するproject名を入力します。
以下に示すような出力が表示され、サーバーダンプ、トレース、ログを含むファイルが保存されていることを確認できました。
まとめ
OCPコンテナ環境でLibertyアプリケーションに問題が発生した場合に重要となる、「WebSphere Liberty Operator」のサーバーログ、サーバーダンプ、サーバートレース収集機能を確認しました。
これらの機能を活用することで、コンテナ環境の複雑性に対応し、システムの安定性と効率性を向上させることができます。
本ブログをご覧いただき、ありがとうございました。