本文へスキップ

Docker

エージェントの適用

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

ノート

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

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

    mkdir -p {Docker build dir}
  2. 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
  3. 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
  4. JAVA_OPTに以下を追加します。

    WHATAP_HOME=/whatap
    WHATAP_JAR=ls ${WHATAP_HOME}/whatap.agent-*.jar | sort -V | tail -1
    export JAVA_OPTS="-javaagent:${WHATAP_JAR} "
  5. 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には対応していません。

モニタリングの開始

すべての設定を完了してからアプリケーションサーバーを再起動すると、エージェントが情報収集を開始します。次の文書を確認してください。