本文へスキップ

Docker

Dockerはコンテナベースの仮想化プラットフォームで、JavaアプリケーションをDockerコンテナ内で実行する時、JVMオプションを追加して、アプリケーションの性能とリソースの使用を調整できます。この文書ではDockerfileを修正してJVMオプションを追加する方法を案内します。

ノート

Dockerがインストールされており、JavaアプリケーションのDockerイメージがビルドできる必要があります。

エージェントの適用

既存のDockerイメージに基づいて、WhaTapエージェント構成を追加したイメージをビルドします。

ノート

この文書では、Javaエージェントをインストールする場合のみ説明します。WhaTap Kubernetesモニタリングと一緒に適用する場合、次の文書をご参考ください。

Dockerのビルドディレクトリを作成する

Dockerのビルドディレクトリを作成します。

mkdir -p {Docker build dir}

エージェント設定ファイルの作成する

whatap.confファイルを作成します。

cat >{Docker build Dir}/whatap.conf <<EOL
# アクセスキーを入力します。
license=XXXXXXXXXXXXXX-XXXXXXXXXXXXXX-XXXXXXXXXXXXXX
# 収集サーバーのIP情報を入力します。
whatap.server.host=xx.xx.xx.xx/yy.yy.yy.yy
EOL

Dockerfile生成する

イメージをビルドするには、WhaTapのイメージから-javaagentのオプションに適用するjarファイルをコピーします。

cat >/home/silver/whatap/docker/Dockerfile <<EOL
FROM whatap/kube_mon as build
## 実際イメージの作成(既存のイメージにWhatapを追加)
## $Image_Name(イメージ名)
FROM $Image_Name
RUN mkdir -p /whatap
COPY --from=build /data/agent/micro/whatap.agent-*.jar /whatap
COPY ./whatap.conf /whatap/
#...
EOL

JAVA_OPTS適用する

JAVA_OPTに次の内容を追加します。

WHATAP_HOME=/whatap
WHATAP_JAR=ls ${WHATAP_HOME}/whatap.agent-*.jar | sort -V | tail -1
export JAVA_OPTS="-javaagent:${WHATAP_JAR} "

Dockerビルドする

Dockerをビルドします。

cd docker
docker build -t $Image_Name
ノート

Java 17 以降では、reflectionに関する次のオプションを追加します。


--add-opens=java.base/java.lang=ALL-UNNAMED

ノート

Javaエージェントファイル名は、Rename機能を活用して変更できます。Javaエージェント名を変更した場合は、Java_OPTSに新しいJavaエージェント名を登録してください。

Javaエージェント名の変更方法の例

java -cp whatap.agent-X.Y.Z.jar whatap.agent.setup.Rename -from whatap.agent-X.Y.Z.jar -to whatap.agent.jar

ヒープヒストグラム照会

WhaTapのJavaモニタリングでは、JVMメモリのヒープ占有オブジェクト現況(ヒープメモリ上のオブジェクト別サイズ)を照会できる機能を標準として提供します。 アプリケーション > インスタンスパフォーマンス分析メニューからヒープヒストグラムタブを選択してください。

Java 6~8バージョンでは、JVMオプションなしで標準対応しますが、一部のJavaバージョンによっては次のようにJVMオプションを適用する必要があります。

  • Java 9 ~ Java 15バージョン

    -Djdk.attach.allowAttachSelf=true
    example
    java -javaagent:{WHATAP_HOME}/whatap.agent-X.Y.Z.jar -Djdk.attach.allowAttachSelf=true -jar {application.jar}
  • Java 16バージョン以降

    -Djdk.attach.allowAttachSelf=true
    --add-opens=jdk.attach/sun.tools.attach=ALL-UNNAMED
    example
    java -javaagent:{WHATAP_HOME}/whatap.agent-X.Y.Z.jar -Djdk.attach.allowAttachSelf=true --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=jdk.attach/sun.tools.attach=ALL-UNNAMED -jar {application.jar}
ノート

Java 5以前の旧バージョン、IBM Javaには対応していません。

次の段階

  • オープンソース追跡

    アプリケーションで使用するフレームワークやオープンソースライブラリによって、エージェントオプションの追加が必要になる場合があります。 たとえば、フレームワークやオープンソースでspring-boot-3.x、feign-client-11、okhttp3-4.4使用の際は、次のようにオプションを設定します。

    whatap.conf
    weaving=spring-boot-3.0,feign-11,okhttp3-4.4

    ユーザーのアプリケーション環境に合わせたフレームワークやオープンソースライブラリを設定する方法は、次の文書を参照してください。

  • インストールの点検

    プロジェクトの作成とエージェントのインストール、JVMオプションまですべて適用したら、次の文書でチェック事項を確認します。

  • インストール問題の解決

    エージェントをインストールする際に発生する可能性がある問題と、これを解決するための具体的なガイドを提供します。 ファイアウォールの設定、SpringBoot及びTomcat JMXの設定、OSGIフレームワーク使用サーバーの設定など、様々な状況に対する解決策を案内します。 詳細については、次の文書を参照にしてください。

  • エージェント設定

    エージェント設定(whatap.conf)ファイルにオプションを適用して、モニタリングのための様々な機能を提供します。 デフォルト設定から、サーバーの接続とデータ転送の設定、複数のアプリケーションサーバーの設定ファイルの管理方法、トランザクションの追跡などが含まれます。 詳細については、次の文書を参照にしてください。

  • モニタリングの開始

    すべての設定を完了してから、アプリケーションサーバーを再起動します。 エージェントが情報の収集を開始します。 まず、アプリケーションメニューでモニタリングデータが収集されていることを確認します。 アプリケーションメニューの詳細については、次の文書を参照にしてください。