サポートセンターホーム


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

OpenTelemetryを利用したJavaアプリケーションのインストルメンテーションにアプローチする方法はXNUMXつあります。

  1. (推奨)自動インストルメンテーションは、開始するための最速の方法ですが、トレースデータの出力方法をあまり制御できません。 自動インストルメンテーションを使用すると、JARファイルをアプリケーションに添付して、そこからトレースデータをキャプチャするコードを挿入します。 サポートされているライブラリとフレームワーク。 操作名は自動的に設定されます。
  2. 手動インストルメンテーションは、自動インストルメンテーションでサポートされていないライブラリとフレームワークを使用するアプリケーションの唯一のオプションです。 手動インストルメンテーションを使用すると、OpenTelemetrySDKを使用してトレースデータをキャプチャして出力するコードをアプリケーションに記述します。

最終的には、手動と自動の両方の計装の組み合わせが必要になる場合があります。

必須条件

自動計装

LogicMonitorは、Javaアプリケーションの自動インストルメンテーション用の構成ウィザードを提供します。

1.右上に 形跡 ページ、選択 ご意見をお寄せください.

2。 選択 Java、自動計装を確認します。

ウィザードにより、アプリケーションに添付するJARファイルをダウンロードするように求められます。 このJARファイルは、OpenTelemetryが提供するJavaクライアントライブラリです。

3. JARのダウンロード後、次の情報を入力します。

  • (必須) サービス名 あなたは計装しています。 この名前は、LogicMonitorポータルのサービスの表示名としても使用されます。 スペースなどの特殊文字は使用できません。
  • (推奨) カスタムタグ これは、このサービスのすべての操作に関連付けられます。 たとえば、サービスのビジネスまたは技術的な優先順位を表すタグを追加したい場合があります。 見る 注意.
  • (オプション) サービス名前空間、サービスのグループ化を表すために使用できます。 指定すると、自動作成された各サービスにプロパティとして追加され、名前空間を表す親サービスが作成されます。 これは、基盤となる複数のサービスを使用してアプリケーションを整理する場合に役立ちます。

注意: LogicMonitorでは、トレースを既存の監視対象リソースにマップするために、次のカスタムタグが必要です。 ip, resource.type (kubernetes-pod、cloud、またはhostに設定する必要があります)、および host.name (これはKubernetesのポッド名である必要があります)。 可能な場合はこれらのカスタムタグを使用して、ログ、メトリック、およびアラートのコンテキストでトレースを表示できるようにすることをお勧めします。

4. XNUMXつのフィールドに入力した内容に基づいて、自動計測クライアントライブラリを正しい構成でアプリケーションにアタッチするためのコマンドが生成されます。 これらのコマンドをコピーして、アプリケーションが実行されているサーバーで実行します。 最後に、アプリケーションのJARを必ず参照してください。

注意: OpenTelemetry Collectorが別のサーバーにインストールされている場合は、Dotel.export.otlp.endpointの値をlocalhostからOpenTelemetryCollectorが実行されているサーバーのIPに更新する必要がある場合があります。

Kubernetesの構成

アプリケーションをKubernetesでインストルメント化する場合は、 javaagent 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"

Kubernetesポッドで実行されているアプリケーションでエージェントJARを利用できるようにするには、Dockerイメージを拡張して init JARをダウンロードし、単一のポッドでアプリケーションコンテナと共有されるボリュームにコピーするコンテナ:

initContainers:
      - name: attach-jar
        image: lm/provide-jar:v1
        volumeMounts:
        - mountPath: /mnt/shared
          name: otel-jar
      volumes:
      - name: otel-jar
        emptyDir: {}

どこ 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"]

手動計装

(1)OpenTelemetry自動計測でサポートされていないライブラリを使用している場合は、Javaアプリケーションの一部またはすべてを手動で計測する必要がある場合があります。 または(2)自動計測による操作の生成方法(操作の命名方法など)をカスタマイズする場合。 

Javaアプリケーションを手動でインストルメント化するための最良の指示源は、 OpenTelemetryの公式ドキュメント。 このドキュメントでは、OpenTelemetry SDKとトレーサーのインスタンス化、トレースの作成、およびそれらの強化について説明します。

記事上で