本文へスキップ

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

Kubernetes内のアプリケーションエージェントのオプション設定

Kubernetes内のアプリケーションエージェントに必要な設定を、whatap.confファイルに作成するか、エージェント配布時のコンテナenvフィールドを通して設定できます。

  • whatap.confファイル内のオプションがコンテナenvフィールドに設定されたオプションよりも高い優先順位を持ちます。

  • whatap.confまたはコンテナenvに設定された値がない場合は、既定値が使用されます。

  • licenseおよびwhatap.server.hostオプションの場合、コンテナ環境変数設定を活用します。

設定ファイルの内容が変更されたり、重要な設定項目が消失した場合、正常に動作しない可能性があるため、Kubernetes環境内のコンテナ環境変数設定をお勧めします。その他のエージェント機能の制御オプションの詳細は、次の文書を参照してください。

ノート

Kubernetes環境での使用不可オプション

  • whatap.name:収集サーバーがエージェントを識別する固有の名前です。この名前は、エージェントが実行されるオブジェクト情報に基づいて生成されます。ユーザーの任意指定の際、エージェントの識別に問題が発生する可能性があります。

  • whatap.onode:デフォルトとして、Kubernetesのクラスターノード名が設定されます。エージェントが属するノード情報を受け取るために使用されます。ユーザーが任意に指定すると、正確なノードの識別ができなくなる可能性があります。

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

  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 形式のファイル名で出力されます。