Docker Javaインストール
管理 > エージェントインストール > 下段のアプリケーションインストール クリック > 設置案内の中で Docker Java タブを選択
Dockerコンテナベースで動作するJavaアプリケーションのJVM Optionにエージェント適用の設定を追加し、コンテナイメージをパッケージングする過程を次のように案内します。
-
EKS Fargateは、対応予定です。
-
Javaアプリケーション連動過程に対する理解を助けるためにGit例示コードを提供します。次の文書を参考にしてください。
エージェントダウンロード
- Docker Install
- 直接設置
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のクラスターノード名が設定されます。エージェントが属するノード情報を受け取るために使用されます。ユーザーが任意に指定すると、正確なノードの識別ができなくなる可能性があります。
- 最新バージョンのエージェントをアプリケーションイメージに含
- 指定したバージョンのエージェントをアプリケーションイメージに含む
最新バージョンのエージェントをアプリケーションイメージに含めるように案内します。
-
アプリケーション画像にワタブエージェントを含めるには、まずDockrfileの最終イメージのビルド段階で次の内容を追加してください。
{YOUR_PROJECT_ROOT}
をエージェントをインストールしようとするプロジェクトの最上位パスに変更します。# WhaTapエージェント用のディレクトリをユーザーコンテナに作成
RUN mkdir -p /whatap
# WhaTap Javaエージェントをユーザーコンテナにコピー
COPY /data/agent/micro/whatap.agent.kube.jar /whatap
# 作成したwhatap.conf設定ファイルをユーザーコンテナにコピー
COPY {YOUR_PROJECT_ROOT}/whatap.conf /whatap/ -
Dockerfileの開始コマンドに次の内容を追加してください。
-javaagent:/whatap/whatap.agent.kube.jar -Dwhatap.micro.enabled=true
次のDockerfileで定義の例を参考にしてください。
DockerfileFROM openjdk:8-jdk-slim
RUN mkdir -p /app && mkdir /whatap
WORKDIR /app
COPY /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 -
Dockerをビルドします。
{YOUR_DOCKERFILE_DIR}
をDockerfileが位置したパスに変更します。cd {YOUR_DOCKERFILE_DIR}
docker build -t {IMAGE_NAME} .
指定したバージョンのエージェントをアプリケーションイメージに含めるように案内します。
-
アプリケーション画像にワタブエージェントを含めるには、まずDockrfileの最終イメージのビルド段階で次の内容を追加してください。
{YOUR_PROJECT_ROOT}
をエージェントをインストールしようとするプロジェクトの最上位パスに変更します。# WhaTapエージェント用のディレクトリをユーザーコンテナに作成
RUN mkdir -p /whatap
# WhaTap Javaエージェントをユーザーコンテナにコピー
COPY /data/agent/micro/whatap.agent-*.jar /whatap
# 作成したwhatap.conf設定ファイルをユーザーコンテナにコピー
COPY {YOUR_PROJECT_ROOT}/whatap.conf /whatap/ -
現在のWhaTapエージェントのバージョンを確認してください。
docker run whatap/kube_mon ls /data/agent/micro | grep -E 'whatap\.agent-(.*?\.)(.*?\.)(.*?\.)jar' | sort | tail -1
# 出力例
## whatap.agent-X.Y.Z.jar -
Dockerfileの開始コマンドに次の内容を追加します。X.Y.Zに、前もって確認したエージェントバージョンを入力します。
-javaagent:/whatap/whatap.agent-X.Y.Z.jar -Dwhatap.micro.enabled=true
次のDockerfileの定義例を参照にしてください。
DockerfileFROM openjdk:8-jdk-slim
RUN mkdir -p /app && mkdir /whatap
WORKDIR /app
COPY /data/agent/micro/whatap.agent-*.jar /whatap
COPY ./whatap.conf /whatap
COPY ./target/myApp.jar /app/
CMD ["java","-javaagent:/whatap/whatap.agent-X.Y.Z.jar","-Dwhatap.micro.enabled=true","-jar","/app/myApp.jar"]
EXPOSE 8080 -
Dockerをビルドします。
{YOUR_DOCKERFILE_DIR}
をDockerfileが位置したパスに変更します。cd {YOUR_DOCKERFILE_DIR}
docker build -t {IMAGE_NAME} .
-
インストールファイル(whatap.agent.java.tar.gz)をダウンロードするには、ダウンロードボタンを選択してください。
-
Dockerfileを作成できるサーバーにアップロードし、圧縮を解凍してください。
情報インストールするサーバーから直接ダウンロードするには、次のコマンドを実行してください。
wget https://api.whatap.io/agent/whatap.agent.java.tar.gz
-
圧縮を解除する際に、whatap ディレクトリが作成されます。whatap ディレクトリの whatap.conf ファイルで設定内容を確認し、次のように修正します。
license={licenseKey}
whatap.server.host={proxyServer}情報Kubernetes内のアプリケーションエージェントのオプション設定
Kubernetes内のアプリケーションエージェントに必要な設定を、whatap.confファイルに作成するか、エージェント配布時のコンテナ
env
フィールドを通して設定できます。-
whatap.confファイル内のオプションがコンテナ
env
フィールドに設定されたオプションよりも高い優先順位を持ちます。 -
whatap.confまたはコンテナ
env
に設定された値がない場合は、既定値が使用されます。 -
license
およびwhatap.server.host
オプションの場合、コンテナ環境変数設定を活用します。
設定ファイルの内容が変更されたり、重要な設定項目が消失した場合、正常に動作しない可能性があるため、Kubernetes環境内のコンテナ環境変数設定をお勧めします。その他のエージェント機能の制御オプションの詳細は、次の文書を参照してください。
ノートKubernetes環境での使用不可オプション
-
whatap.name
:収集サーバーがエージェントを識別する固有の名前です。この名前は、エージェントが実行されるオブジェクト情報に基づいて生成されます。ユーザーの任意指定の際、エージェントの識別に問題が発生する可能性があります。 -
whatap.onode
:デフォルトとして、Kubernetesのクラスターノード名が設定されます。エージェントが属するノード情報を受け取るために使用されます。ユーザーが任意に指定すると、正確なノードの識別ができなくなる可能性があります。
-
-
Dockerfileの開始コマンドに次の内容を追加します。_whatap_ディレクトリ内でエージェントファイルを確認した後、X.Y.Zに該当バージョンを入力します。
-javaagent:/whatap/whatap.agent-X.Y.Z.jar -Dwhatap.micro.enabled=true
次のDockerfileの定義例を参照にしてください。
DockerfileFROM openjdk:8-jdk-alpine
RUN mkdir -p /app && mkdir /whatap
WORKDIR /app
COPY ./whatap.agent-X.Y.Z.jar /whatap/
COPY ./whatap.conf /whatap/
COPY ./target/myApp.jar myApp.jar
COPY ./paramkey.txt /whatap/
CMD ["java","-javaagent:/whatap/whatap.agent-X.Y.Z.jar","-Dwhatap.micro.enabled=true","-jar","/app/myApp.jar"]
EXPOSE 8080
-
whatap-virtual-X.Y.Z.jar:モニタリング対象(サンプルアプリケーション)
-
whatap.agent-X.Y.Z.jar:WhaTapエージェント
-
エージェントのファイル名がwhatap.agent-1.2.3.jarの場合、X.Y.Zの部分を1.2.3に変更してください。
-
JVMオプション追加の詳細については、次の文書を参照してください。
Java 17バージョン以降の場合、reflectionに関する--add-opens=java.base/java.lang=ALL-UNNAMED
オプションを追加してください。
セキュリティキーの設定
SQL変数、HTTPクエリを検索、Thread停止機能を使用する場合は、セキュリティキーを設定してください。
-
Javaエージェント2.2.2バージョン以降
$WHATAP_HOME
パスに security.conf ファイルを作成した後、次のように 6桁の英数字のパスワードを入力してください。security.confparamkey=ABCDEF # SQL変数およびHTTPクエリの検索
threadkill=ABCDEF # Thread停止機能 -
Javaエージェント2.2.2バージョン未満
$WHATAP_HOME
パスに paramkey.txt ファイルを作成した後、次のように 6桁の英数字のパスワードを入力してください。paramkey.txtABCDEF # SQL変数およびHTTPクエリの検索、スレッド停止機能
Javaエージェント 2.2.2 のバージョン未満から2.2.2バージョンにアップデートする場合、既存の paramkey.txt ファイルのキー値が seuciry.conf ファイルのキー値に自動的に適用されます。例えば、paramkey.txt にFEDCBA
を使用して、バージョン2.2.2にアップデートした場合、security.conf ファイルには次のように適用されます。
paramkey=FEDCBA
threadkill=FEDCBA
paramkey.txt ファイルが存在しない場合、security.conf ファイルのキー値は、WHATAP というキー値で自動的に生成されます。
コンテナ環境変数の設定
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 形式のファイル名で出力されます。
-