アプリケーションを AppDynamics Java または Node.js エージェントでモニターする場合、AppDynamics エージェントが OpenTelemetry スパンデータとアプリケーション パフォーマンス モニタリング(APM)データの両方を報告するようにインストゥルメント化します。インストゥルメント化されると、エージェントは HTTP のエントリおよび終了リクエストから OpenTelemetry スパンデータを生成します。AppDynamics 相関ヘッダーは、OpenTelemetry バゲージヘッダー内に挿入されます。これにより、交差する OpenTelemetry ノードを介してビジネストランザクションとの相関が発生します。

たとえば、上の図は、AppDynamics Java エージェントが OpenTelemetry で有効になっている場合に、OpenTelemetry データがどのように報告されるかを示しています。Java エージェントは APM データを AppDynamics コントローラに送信し、OpenTelemetry スパンを OpenTelemetry Collector に送信します。Collector は、受信したスパンを OTLP/HTTP 経由で AppDynamics OpenTelemetry サービスに送信します。AppDynamics OpenTelemetry サービスは、スパンをトレースに統合し、トレースをコントローラに登録されているビジネストランザクションにマッピングします。コントローラ UI には、AppDynamics エージェントからの APM データと AppDynamics OpenTelemetry サービスからの OpenTelemetry データの両方が表示されます。 

はじめる前に

OpenTelemetry™ コレクタをデプロイして構成し、リソース属性を構成したことを確認してください

Java エージェントで OpenTelemetry を有効にする

OpenTelemetry で Java エージェントを有効にするには、Java エージェントバージョン 21.11.4 以降が必要です(Java エージェントバージョン 22.3.0 以降を使用することをお勧めします)。OpenTelemetry でサポートされる Java フレームワークのリストについては、「Supported Java Agent Frameworks for OpenTelemetry」を参照してください。

JVM システムプロパティに以下のシステムプロパティを追加します

  1. OpenTelemetry を有効にします。

    -Dappdynamics.opentelemetry.enabled=true
    JAVA
  2. トレースエクスポータを OTLP に設定します(OpenTelemetry 対応の Java エージェントは、OTLP 形式で OpenTelemetry スパンを送信します)。

    -Dotel.traces.exporter=otlp
    JAVA
  3. JVM の階層名(service.name 内)とアプリケーション名(service.namespace 内)を設定します。

    -Dotel.resource.attributes="service.name=Shop,service.namespace=Shopping"
    JAVA

    アプリケーション側で階層名とアプリケーション名を設定しない場合は、OpenTelemetry otel-config.yml ファイルまたは OTEL_RESOURCE_ATTRIBUTES  環境変数でそれらを設定するオプションがあります。「Configure Resource Attributes」を参照してください。

(オプション)コレクタのエンドポイントの設定

デフォルトでは、コレクタのエンドポイントは http://localhost:4317 を指しますが、必要に応じて設定できます。例: 

-Dotel.exporter.otlp.traces.endpoint=http://localhost:4318
JAVA

(オプション)バッチ処理のタイミングの設定

デフォルトのエクスポータスパンバッチ処理は 5000 ミリ秒ですが、エージェント側でエクスポータスパンバッチ処理を変更できます。

-Dotel.bsp.schedule.delay=60000
JAVA

Java 構成の例

-Dotel.traces.exporter=otlp
-Dotel.resource.attributes="service.name=DownTier,service.namespace=OTEL-application"
-Dappdynamics.opentelemetry.enabled=true
-Dappdynamics.controller.hostName=sample-controller.e2e.appd-test.com
-Dappdynamics.controller.port=443
-Dappdynamics.agent.accountName=OTEL-account
-Dappdynamics.agent.accountAccessKey=3ea55405-61b2-43bb-a8e0-58aff761a028
-Dappdynamics.controller.ssl.enabled=true
-Dappdynamics.agent.applicationName=ecommerce_OT
-Dappdynamics.agent.uniqueHostId=ecommerce_OT_1
-Dappdynamics.agent.tierName=DownTier
-Dappdynamics.agent.nodeName=DownNode
-javaagent:/<Java Agent Jar Path>/javaagent.jar
JAVA

Node.js エージェントで OpenTelemetry を有効にする

Node.js エージェントで OpenTelemetry を有効にするには、Node.js エージェントバージョン 22.3.0 以降が必要です

Node.js アプリケーションコードに以下の OpenTelemetry 構成を追加します。

  1. require ステートメントで OpenTelemetry を有効にします。

    Node.js アプリケーションの場合、OpenTelemetry の AppName および TierName は、Node.js require ステートメントの AppNameTierName から派生します。AppDynamics アプリケーション/階層に MY_APP/MY_TIER という名前が付けられている場合、OpenTelemetry アプリケーション/階層は MY_APP_OTEL/MY_TIER_OTEL になります。

    require("appdynamics").profile(
    {
      ...   
      openTelemetry: {
        enabled: <True:False> // openTelemetry is enabled or disabled
      }
      ... 
    }
    )
    JS
  2. スパンデータの追加のロギングを許可します。

    require("appdynamics").profile(
    {
      ...   
      openTelemetry: {
        debug: <True:False> // Additional logging, console dump of span data
        ... 
      }
      ...
    }
    )
    JS
  3. OpenTelemetry Collector の URL を追加します。

    require("appdynamics").profile(
    {     
      ...
      openTelemetry: {      
    	collector: {
    		url: <url> <http://host:port/v1/traces> // The default value is http://localhost:55680/v1/traces     
    	}
      ... 
     }
    )
    JS
  4. (オプション)バッチ処理パラメータを更新します。

    require("appdynamics").profile(
    {
      ...   
      openTelemetry: {
        exporter: {
          maxQueueSize: size_in_byte  the maximum queue size. After the size is reached spans are dropped. The default value is 2048. 
          scheduledDelayMillis: time_in_ms the delay interval in milliseconds between two consecutive exports. The default value is 5000. 
    	}
     	...
      }
    }
    )
    JS

Node.js 構成の例

require("appdynamics").profile(
{
  ...
  openTelemetry: {
    enabled: <True:False> // OpenTelemetry enabled or disabled
    debug: <True:False> // Additional logging, console dump of span data  
    collector: {
       url: <url> <http://host:port/v1/traces> // The default value is http://localhost:55680/v1/traces
     }
  }
  ... 
}
)
JS

次のステップ

AppDynamics for OpenTelemetry を使用してアプリケーションをインストゥルメント化すると、コントローラで OpenTelemetry データを表示できます。

OpenTelemetry™ は The Linux Foundation® の商標です。