Javaアプリケーションインストルメンテーション
最終更新日: 09 年 2024 月 XNUMX 日OpenTelemetryを利用したJavaアプリケーションのインストルメンテーションには、次のメソッドを使用できます。
- (推奨) 自動計装-このオプションは開始するための最速の方法ですが、トレースデータの出力方法をあまり制御できません。 LogicMonitorは、Javaアプリケーションの自動インストルメンテーション用のウィザードを提供します。
または、LogicMonitorポータルの外部でJavaアプリケーションを自動的にインストルメント化することもできます。 これには、サポートされているライブラリとフレームワークからトレースデータをキャプチャするコードを挿入するJARファイルをアプリケーションに添付する必要があります。 操作名は自動的に設定されます。
ご使用の環境でKubernetesを使用してJavaアプリケーションを実行している場合は、Kubernetesインフラストラクチャ内でアプリケーションを自動的にインストルメント化できます。 - 手動計装-これは、自動インストルメンテーションでサポートされていないライブラリとフレームワークを使用するアプリケーションの唯一のオプションです。 手動インストルメンテーションでは、OpenTelemetrySDKを使用してトレースデータをキャプチャして出力するコードをアプリケーションに記述します。 詳細については、を参照してください。 サポートされているライブラリ、フレームワーク、アプリケーションサーバー、およびJVM OpenTelemetryから。
環境によっては、自動計装と手動計装の両方の組み合わせが必要になる場合があります。
LogicMonitorを使用してJavaアプリケーションをインストルメント化するための要件
Javaアプリケーションをインストルメント化するには、トレースデータをLogicMonitorポータルに転送するようにOpenTelemetryCollectorをインストールして構成する必要があります。 詳細については、を参照してください。 OpenTelemetryコレクターのインストール.
LogicMonitorのインストルメンテーションウィザードを使用してJavaアプリケーションを自動的にインストルメント化する
ご注意: LogicMonitorポータルの外部でJavaアプリケーションを自動的に計測するには、OpenTelemetryのを参照してください。 自動計装 のドキュメントで詳しく説明されています)。
- MFAデバイスに移動する 形跡 > 新人研修 をクリックして アプリケーションをインストルメント化する.
- クリック 選択 Javaの場合は、 自動(推奨).
- JARファイルをコピーして、アプリケーションに添付します。 このJARファイルは、OpenTelemetryが提供するJavaクライアントライブラリです。
- プロンプトが表示されたら、次の情報を入力します。
- サービスの名前空間
これは、サービスのグループ化を表すために使用されます。 指定すると、自動作成された各サービスにプロパティとして追加され、名前空間を表す親サービスが作成されます。 これは、複数の基盤となるサービスを使用してアプリケーションを整理する場合に役立ちます。 - サービス名
これは、LogicMonitorポータルのサービスの表示名としても使用されます。 スペースを含む特殊文字は使用できません。 - (オプション)サービス グループ
これは、関連するサービスのグループを論理的に形成するために使用されます。 スペースを含む特殊文字は使用できません。 - ホスト名
これは、デバイス名を表すために使用される一意の名前です。 - リソースタイプ
これらは、これらのプロパティ (総称してリソースと呼ばれます) を認識できるようにする、デバイスまたはサービスに設定されたプロパティです。
- (オプション) カスタムタグ
これらは、このサービスのすべての操作に関連付けられています。 たとえば、サービスのビジネスまたは技術的な優先順位を表すタグを追加できます。
- サービスの名前空間
- これは、デバイス名を表すために使用される一意の名前です。
- リソースタイプ
- これらは、これらのプロパティ (総称してリソースと呼ばれます) を認識できるようにする、デバイスまたはサービスに設定されたプロパティです。
ご注意: LogicMonitorでは、トレースを既存の監視対象リソースにマップするために、次のカスタムタグが必要です。 ip
, resource.type
(kubernetes-pod、cloud、またはhostに設定する必要があります)、および host.name
(これはKubernetesのポッド名である必要があります)。 可能な場合はこれらのカスタムタグを使用して、トレースがログ、メトリック、およびアラートのコンテキストで表示されるようにします。
- 提供した情報に基づいて生成されたコマンドをコピーし、アプリケーションが実行されているサーバーで実行します。 最後に、アプリケーションのJARを参照してください。
ご注意: OpenTelemetry Collectorが別のサーバーにインストールされている場合は、 Dotel.export.otlp.endpoint
ローカルホストからOpenTelemetryCollectorが実行されているサーバーのIPへ。
LogicMonitorポータルの外部でJavaアプリケーションを自動的にインストルメント化する方法の詳細については、OpenTelemetryのを参照してください。 自動計装 のドキュメントで詳しく説明されています)。
KubernetesでJavaアプリケーションを自動的にインストルメント化する
- 指定します
javaagentflag
を使用して環境値として構成オプションを使用JAVA_TOOL_OPTIONS
次のようになります。
containers:
- name: server
image: gcr.io/google-samples/microservices-demo/adservice:v0.2.2
volumeMounts:
- mountPath: /mnt/auto-trace
name: otel-jar
ports:
- containerPort: 9555
env:
- name: PORT
value: "9555"
- name: JAVA_TOOL_OPTIONS
value: "-javaagent:/mnt/auto-trace/opentelemetry-javaagent-all.jar -Dotel.resource.attributes=service.name=adservice -Dotel.traces.exporter=otlp -Dotel.exporter.otlp.endpoint=10.74.8.33:55680"
- を追加してDockerイメージを拡張します
init
ダウンロードするコンテナJAR
そして、それを単一のポッド内のアプリケーションコンテナと共有されるボリュームにコピーします。
initContainers:
- name: attach-jar
image: lm/provide-jar:v1
volumeMounts:
- mountPath: /mnt/shared
name: otel-jar
volumes:
- name: otel-jar
emptyDir: {}
これにより、Kubernetesポッドで実行されているアプリケーションでエージェントJARを利用できるようになります。 The dockerfile
lm/provide-jar
画像は次のようになります。
FROM centos:7
RUN yum install -y curl
RUN curl -L "https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/download/v0.13.0/opentelemetry-javaagent-all.jar" > opentelemetry-javaagent-all.jar
RUN mkdir -p /mnt/shared
VOLUME /mnt/shared
ENTRYPOINT ["cp", "-v", "opentelemetry-javaagent-all.jar", "/mnt/shared"]
さらに、JavaアプリケーションをKubernetesインフラストラクチャにインストルメント化する場合、OpenTelemetryのKubernetesオペレーターを利用して、アプリケーションを自動的にインストルメント化できます。 詳細については、を参照してください。 Kubernetesのアプリケーション用のOpenTelemetryオペレーターを使用した自動インストルメンテーション.
Javaアプリケーションを手動でインストルメント化する
アプリケーションがOpenTelemetryの自動インストルメンテーションに対応していない場合、または自動インストルメンテーションによるトレースの生成方法をカスタマイズしたい場合は、Javaアプリケーションを手動でインストルメントすることができます。たとえば、操作の命名方法をカスタマイズしたい場合があります。Javaアプリケーションの手動インストルメント、OpenTelemetry SDK、トレースの作成と強化の詳細については、OpenTelemetryのを参照してください。 手動計装 のドキュメントで詳しく説明されています)。