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

最終更新日: 13 年 2023 月 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のを参照してください。 自動計装 のドキュメントで詳しく説明されています)。

  1. MFAデバイスに移動する  形跡 > 新人研修 をクリックして アプリケーションをインストルメント化する.
  2.  選択 Javaの場合は、 自動(推奨).
  3. JARファイルをコピーして、アプリケーションに添付します。 このJARファイルは、OpenTelemetryが提供するJavaクライアントライブラリです。
  4. プロンプトが表示されたら、次の情報を入力します。
    • サービスの名前空間
      これは、サービスのグループ化を表すために使用されます。 指定すると、自動作成された各サービスにプロパティとして追加され、名前空間を表す親サービスが作成されます。 これは、複数の基盤となるサービスを使用してアプリケーションを整理する場合に役立ちます。
    • サービス名
      これは、LogicMonitorポータルのサービスの表示名としても使用されます。 スペースを含む特殊文字は使用できません。
    • (オプション)サービス グループ
      これは、関連するサービスのグループを論理的に形成するために使用されます。 スペースを含む特殊文字は使用できません。
    • ホスト名
      これは、デバイス名を表すために使用される一意の名前です。
    • リソースタイプ
      これらは、これらのプロパティ (総称してリソースと呼ばれます) を認識できるようにする、デバイスまたはサービスに設定されたプロパティです。 
    • (オプション) カスタムタグ
      これらは、このサービスのすべての操作に関連付けられています。 たとえば、サービスのビジネスまたは技術的な優先順位を表すタグを追加できます。
  5. これは、デバイス名を表すために使用される一意の名前です。
    • リソースタイプ
    • これらは、これらのプロパティ (総称してリソースと呼ばれます) を認識できるようにする、デバイスまたはサービスに設定されたプロパティです。

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

  1. 提供した情報に基づいて生成されたコマンドをコピーし、アプリケーションが実行されているサーバーで実行します。 最後に、アプリケーションのJARを参照してください。 

注: OpenTelemetry Collectorが別のサーバーにインストールされている場合は、 Dotel.export.otlp.endpoint ローカルホストからOpenTelemetryCollectorが実行されているサーバーのIPへ。

LogicMonitorポータルの外部でJavaアプリケーションを自動的にインストルメント化する方法の詳細については、OpenTelemetryのを参照してください。 自動計装 のドキュメントで詳しく説明されています)。

KubernetesでJavaアプリケーションを自動的にインストルメント化する

  1. 指定します 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"
  1. を追加して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アプリケーションであるOpenTelemetrySDKを手動でインストルメント化し、トレースを作成および強化する方法の詳細については、OpenTelemetryのを参照してください。 手動計装 のドキュメントで詳しく説明されています)。 

記事上で