Java エージェント

Java エージェントは、トランザクションが実行される際に、アプリケーションとコンピューティング環境に関する詳細なパフォーマンス指標を収集します。Java エージェントは、Java 仮想マシン (JVM) 上で実行中のアプリケーションとリソースからこの情報を収集し、SixthSense プラットフォームに送信します。その後、リアルタイムおよび履歴レポート用のデータを処理、保存します。

Java アプリケーションの監視には、

  • エージェントを配置してアプリケーションサーバーのパフォーマンスと可用性を監視します。
  • アプリケーションコンポーネントの監視をテスト、調整、最適化します。
  • エージェントは、収集したデータを保存するためにアプリケーションサーバーの Java ヒープメモリの一部を使用します。
  • Java アプリケーションのヒープが頻繁に使用される場合は、Java エージェントのインストール時にヒープの割り当てを増やします。
  • トランザクションのトレースが大量にある場合は、JVM ヒープサイズを増やします。

前提条件

構成要件

  • エージェントのインストールに必要な前提条件の確認については、 エージェントのインストールに必要な前提条件の確認を参照してください。
  • SixthSense Java エージェント:「エージェントのダウンロード」を参照してください。
  • SixthSense コレクターの URL/IP(カスタマーサポートから提供されるお客様のテナントの URL)。
  • SIXTHSENSE_TOKEN:トークンへのアクセスについては 「SixthSense ポータルを利用開始する」にある アクセス トークンの取得 を参照してください。
note

エージェントはバックエンドのアドレスと通信するためにインターネットを使用します。 詳細については プロキシの有効化 を参照してください。

エージェントのダウンロードに必要なもの

変数説明
TOKENカスタマーサポートからアクセストークン

エージェントの設定

任意の Java アプリケーションを監視するには、SixSense Java エージェントをダウンロードするための有効なライセンスとアクセス権が必要です。

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

エージェントのダウンロードの前提条件

  • オンボーディングチームからのプライベートトークン
  • Java 7 エージェントの特定のバージョンのダウンロードリンク

エージェントをダウンロードするには、以下の手順を実行します。

  1. インターネットから/SixthSense が有効になっていることを確認します。 前提条件 を参照してください。
  2. curl を使用してエージェントをダウンロードします。 エージェントが Docker にダウンロードされている場合は、先に進む前に curl をインストールします。
export AGENT_VERSION="latest"
{
curl --header "PRIVATE-TOKEN: ${TOKEN}" --output agent.zip "https://artifacts-observability.sixthsense.rakuten.com/api/v4/projects/4/packages/generic/sixthsense/${AGENT_VERSION}/agent.zip"
}

エージェントの設定

インストルメント化が必要なアプリケーションサーバーに、エージェントのプライマリ .jar ファイル(sixthsense-agent.jar)へのパスを含めるように設定します。 アプリケーションサーバーの起動スクリプトを編集してパスを設定し、その後、アプリケーションサーバーを再起動します。 アプリケーションサーバーが再起動すると、Java エージェントが JVM およびアプリケーション環境のデフォルトコンポーネントとして検出されたクラスをインストルメント化します。 関連する具体的な手順は、アプリケーションサーバーによって異なります。

  • ダウンロードしたエージェントを解凍します。エージェントのダウンロード方法については、エージェントのダウンロード を参照してください。
  • エージェント.config ファイル(Agentフォルダ/Config/agent.config ファイル)に移動します。
note

アプリケーションが実行されているエージェントフォルダに、同じ権限(ユーザーおよびグループ)が設定されていることを確認してください。また、アプリケーションの親ディレクトリにエージェントフォルダをコピーします。

agent.config ファイルにアプリケーション情報を追加する

  1. アプリケーション名と team_id を追加します。
  2. 「agent.service_name」を設定して、ダッシュボードでアプリケーション名を識別できるようにします。

例えば、アプリケーション名が USER_APP であると仮定します。agent.config ファイル(Agentフォルダ/Config/agent.config ファイル)に移動し、更新します。

UI のサービス名:

agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}

OneCloud Platform を使用する場合は、以下のコマンドを使用します。

agent.config ファイルで、set agent.force_tls=${SW_AGENT_FORCE_TLS:false} と設定します。

  1. SixthSense ポータルからアクセストークンを取得します。 SixthSense ポータルを利用開始する」の アクセストークンへのアクセス を参照してください。
agent.authentication = ${SW_AGENT_AUTHENTICATION: <AccessToken>}

バックエンドコレクター URL を更新

collector.backend_service にバックエンドコレクター URL を設定します。

collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:grpc-collector-observability.sixthsense.rakuten.com:443}

OneCloud Platform を使用する場合は、以下のパラメータを使用します。

# イントラパブリックネットワークを使用してバックエンドに接続する場合:
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:133.237.176.44:80}
# オンクラウドプライベートネットワークを使用してバックエンドに接続する場合:
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:100.99.116.221:80}

アプリケーションのインストルメント化

:::注記 エージェントはインターネットを使用してバックエンドサービスにデータを送信します。 直接インターネットアクセスが有効になっていない場合は、楽天のバックエンドアドレスと通信できるプロキシを渡してください。 :::

プロキシを有効にする

以下のいずれかの方法でプロキシを有効にしてください。

  1. システム/コンテナレベルでプロキシを設定します。

例:

1 a. Windows サーバー:

システムレベルの環境変数に HTTP_PROXY、GRPC_PROXY_EXP を追加します

1 b. Linux サーバー:

~/.bashrc ファイルにプロキシを以下のように追加します。
export HTTP_PROXY= 10.0.0.1:3128 && export GRPC_PROXY_EXP=10.0.0.1:3128
  1. Java オプションにプロキシを追加して、JVM にプロキシを渡します。
JAVA_OPTS= -Dhttp.proxyHost=ip_address -Dhttp.proxyPort=3128 -Dhttps.proxyHost=ip_address -Dhttps.proxyPort=3128

-javaagent フラグの追加

エージェントの設定が完了したら、アプリケーションの起動時に、JVM フラグ -javaagent:Path を、startup/entrypoint アプリケーションファイルの SixthSense-agent.jar に追加します。

スタンドアローンアプリケーションで Java エージェントを実行する例

java -javaagent:{Path to SixthSense Agent Jar File →> /opt/sixthsense/sixthsense-agent.jar} -jar {Path-to-agent-folder/sixthsense-agent.jar}

:::注記 Windows ベースのアプリケーションの場合、アプリケーションへの引数 がWindows レジストリサービスから渡される場合、エージェントを統合するには、それらの引数にエージェントを渡す必要があります。 :::

Docker 環境でのエージェントの統合

以下のコマンドを追加します。

COPY agent agent/
ENTRYPOINT java -javaagent:/agent/sixthsense-agent.jar -jar your_application.jar
  • Docker イメージをビルドします。
  • 作成した Docker イメージを使用してアプリケーションを実行します。
  • ダッシュボード上で、上記で定義したアプリケーション名が表示されます。

Docker の例

# docker build -t adservice .
FROM openjdk:8-slim as builder
WORKDIR /app
COPY ["build.gradle", "gradlew", "./"]
COPY gradle gradle
RUN chmod +x gradlew
RUN ./gradlew downloadRepos
COPY . .
RUN chmod +x gradlew
RUN ./gradlew installDist
FROM openjdk:8-slim
# Download curl
RUN apt-get -y update && apt-get install -qqy && apt-get install -y curl && apt-get install -y unzip \
wget \
&& rm -rf /var/lib/apt/lists/*
# Here we are downloading the agent at runtime
# Sixthsense Agent
ARG TOKEN
ARG AGENT_VERSION
RUN mkdir -p /opt/sixthsense && \
curl -v --header "PRIVATE-TOKEN: ${TOKEN}" --output /opt/sixthsense/agent.zip "https://artifacts-observability.sixthsense.rakuten.com/api/v4/projects/4/packages/generic/sixthsense/${AGENT_VERSION}/agent.zip" && \
unzip /opt/sixthsense/agent.zip -d /opt/sixthsense && \
rm -rf /opt/sixthsense/agent.zip
ENV SW_AGENT_NAME=Your_app_name
ENV SW_AGENT_COLLECTOR_BACKEND_SERVICES=grpc-collector-observability.sixthsense.rakuten.com:443
ENV SW_AGENT_AUTHENTICATION=token_from_settings_section_in_sixthsense_ui
ENV SW_AGENT_FORCE_TLS=false in dockerfile for onecloud
WORKDIR /app
COPY --from=builder /app .
EXPOSE 9555
ENTRYPOINT java -javaagent:/opt/agent/sixthsense-agent.jar -jar /app/payments.jar

Docker イメージをビルドする際には、ビルド引数として変数(AGENT_VERSIONやTOKEN等)が渡されます。

docker build --build-arg AGENT_VERSION=v1.1 --build-arg TOKEN=token_from_onboarding adservice:v1

ログトレースの相関については、ログトレースの相関を参照してください。