本文へスキップ

Docker Javaインストール

管理 > エージェントインストール > 下段のアプリケーションインストール クリック > 設置案内の中で Docker Java タブを選択

Dockerコンテナベースで動作するJavaアプリケーションのJVM Optionにエージェント適用の設定を追加し、コンテナイメージをパッケージングする過程を次のように案内します。

ノート
  • EKS Fargateは、対応予定です。

  • Javaアプリケーション連動過程に対する理解を助けるためにGit例示コードを提供します。次の文書を参考にしてください。

エージェントダウンロード

WhaTapアプリケーションエージェントのインストールのために whatap.conf ファイルを作成してください。{YOUR_PROJECT_ROOT}は、エージェントをインストールしようとするプロジェクトの最上位パスに変更してください。

cat >{YOUR_PROJECT_ROOT}/whatap.conf <<EOL
whatap.server.host={proxyServer}
EOL
ノート

whatap.conf ファイルは、Kubernetes環境のConfigMap機能を使用して管理します。

最新バージョンのエージェントをアプリケーションイメージに含めるように案内します。

  1. アプリケーション画像にワタブエージェントを含めるには、まずDockrfileの最終イメージのビルド段階で次の内容を追加してください。{YOUR_PROJECT_ROOT}をエージェントをインストールしようとするプロジェクトの最上位パスに変更してください。

    # WhaTapエージェント用のディレクトリをユーザーコンテナに作成
    RUN mkdir -p /whatap

    # WhaTap Javaエージェントをユーザーコンテナにコピー
    COPY --from=whatap/kube_mon /data/agent/micro/whatap.agent.kube.jar /whatap

    # 作成したwhatap.conf設定ファイルをユーザーコンテナにコピー
    COPY {YOUR_PROJECT_ROOT}/whatap.conf /whatap/
  2. Dockerfileの開始コマンドに次の内容を追加してください。

    -javaagent:/whatap/whatap.agent.kube.jar -Dwhatap.micro.enabled=true

    次のDockerfileで定義の例を参考にしてください。

    Dockerfile
    FROM openjdk:8-jdk-slim
    RUN mkdir -p /app && mkdir /whatap
    WORKDIR /app
    COPY --from=whatap/kube_mon /data/agent/micro/whatap.agent.kube.jar /whatap
    COPY ./whatap.conf /whatap
    COPY ./target/myApp.jar /app/
    CMD ["java","-javaagent:/whatap/whatap.agent.kube.jar","-Dwhatap.micro.enabled=true","-jar","/app/myApp.jar"]
    EXPOSE 8080
  3. Dockerをビルドします。{YOUR_DOCKERFILE_DIR}をDockerfileが位置したパスに変更してください。

    cd {YOUR_DOCKERFILE_DIR}
    docker build -t {IMAGE_NAME} .
Tips

Java 17バージョン以降の場合、reflectionに関する--add-opens=java.base/java.lang=ALL-UNNAMEDオプションを追加してください。

セキュリティキーの設定

SQL変数、HTTPクエリを検索、Thread停止機能を使用する場合は、セキュリティキーを設定してください。

  • Javaエージェント2.2.2バージョン以降

    $WHATAP_HOMEパスに security.conf ファイルを作成した後、次のように 6桁の英数字のパスワードを入力してください。

    security.conf
    paramkey=ABCDEF # SQL変数およびHTTPクエリの検索
    threadkill=ABCDEF # Thread停止機能
  • Javaエージェント2.2.2バージョン未満

    $WHATAP_HOMEパスに paramkey.txt ファイルを作成した後、次のように 6桁の英数字のパスワードを入力してください。

    paramkey.txt
    ABCDEF # SQL変数およびHTTPクエリの検索、スレッド停止機能
Tips

Javaエージェント 2.2.2 のバージョン未満から2.2.2バージョンにアップデートする場合、既存の paramkey.txt ファイルのキー値が seuciry.conf ファイルのキー値に自動的に適用されます。例えば、paramkey.txtFEDCBAを使用して、バージョン2.2.2にアップデートした場合、security.conf ファイルには次のように適用されます。

paramkey=FEDCBA
threadkill=FEDCBA

paramkey.txt ファイルが存在しない場合、security.conf ファイルのキー値は、WHATAP というキー値で自動的に生成されます。

ノート
  • SQLパラメータ情報の記録に関するエージェント設定は、次の文書をご参照ください。

  • HTTPパラメータ情報の記録に関するエージェント設定は、次の文書をご参照ください。

コンテナ環境変数の設定

Dockerビルド後、Kubernetes環境内のコンテナ環境変数を設定してください。アプリケーション配布の yaml ファイルに次の内容を追加してください。

env:
- name: NODE_IP
valueFrom: {fieldRef: {fieldPath: status.hostIP}}
- name: NODE_NAME
valueFrom: {fieldRef: {fieldPath: spec.nodeName}}
- name: POD_NAME
valueFrom: {fieldRef: {fieldPath: metadata.name}}
- name: OKIND
value: {YOUR_OKIND_NAME}
- name: license
value: {licenseKey}
- name: whatap_server_host
value: {proxyServer}
- name: whatap_micro_enabled
value: "true"

次の例を参照してください。

apiVersion: apps/v1
kind: Deployment
metadata:
name: #DeploymentName
labels:
app: #AppLabel
spec:
replicas: 3
selector:
matchLabels:
app: #AppLabel
template:
metadata:
labels:
app: #AppLabel
spec:
containers:
- name: #ContainerName
image: nginx
ports:
- containerPort: 80
env:
- name: NODE_IP
valueFrom: {fieldRef: {fieldPath: "status.hostIP"}}
- name: NODE_NAME
valueFrom: {fieldRef: {fieldPath: "spec.nodeName"}}
- name: POD_NAME
valueFrom: {fieldRef: {fieldPath: "metadata.name "}}
- name: OKIND
value: #DeploymentName
- name: license
value: #licenseKey
- name: whatap_server_host
value: #proxyServer
- name: whatap_micro_enabled
value: "true"
ノート

環境変数の役割

  • NODE_IP: 現在のPodがホストされているノード(Node)のIPアドレスを収集します。

  • NODE_NAME: 現在Podが実行中のノードの名前を収集します。

  • POD_NAME: 現在のPodの名前を収集します。

  • OKIND(選択事項):Podに該当するアプリケーションをグループ化します。デプロイメント(Deployment) 名に設定すると、該当するPodを一つにグループ化します。

  • license:エージェント認証を確認するためのキーです。

  • whatap_server_host:WhaTap収集サーバーのホストIPです。

  • whatap_micro_enabled:コンテナとの連動を活性化します。

エージェントのインストール確認

  • エージェントが正常にインストールされたことを確認するには、ダッシュボード > アプリケーションサービスダッシュボードメニューに移動してください。

  • ダウンロードしたファイルをインストールした後にダッシュボードメニューからエージェントが表示されない場合は、次の事項を確認してください。

    • コンテナでps -ef | grep whatapコマンドを実行し、エージェントオプションを適用されていることを確認してください。

    • コンテナの /whatap/logs パスの内容を確認してください。エージェントログは logs/{whatapの設定ファイル名}-yyyymmdd.log 形式のファイル名で出力されます。