以下の項では、Splunk AppDynamics for OpenTelemetry に関するいくつかの一般的な問題とトラブルシューティングについて説明します。

処理されていないスパン

一部のスパンが Splunk AppDynamics によって処理されていない場合は、次を試してください。

発信に必要な属性を確認する

発信をインストゥルメントするスパンの場合Splunk AppDynamics では、スパンオブジェクトに一意の属性を追加する必要があります。そうしないと、スパンは Splunk AppDynamics パイプラインからドロップされます。スパンの必須属性と推奨属性の両方について、以下の表を参照してください。

一部の属性は必須ではありませんが、フローマップでより正確に表現するために強く推奨されます。

HTTP

属性タイプ説明要件
http.method stringHTTP 要求メソッドGET、POST、HEAD必須
http.url string完全な HTTP リクエスト URLhttps://www.foo.bar/search?q=OpenTelemetry#SemConv*条件付き要件

http.host 

stringHTTP ホストヘッダーの値www.example.org

*条件付き要件

http.target stringHTTP リクエスト行または同等のもので渡される完全なリクエストターゲット。/path/12314/?q=ddds#123*条件付き要件
http.schemestring使用されたプロトコルを識別するスキームhttp、https*条件付き要件
net.peer.ip stringピアのリモートアドレス127.0.0.1*条件付き要件
net.peer.port intリモートポート番号80、8080、443*条件付き要件
net.peer.name stringリモートホスト名などexample.comRequired

*条件付き要件:スパンの作成時に次のいずれかが含まれている必要があります

  • http.url
  • http.schemehttp.hosthttp.target
  • http.schemenet.peer.namenet.peer.porthttp.target
  • http.schemenet.peer.ipnet.peer.porthttp.target

データベース

属性タイプ説明要件
db.system string使用されているデータベース管理システム(DBMS)製品の識別子other_sql必須
net.peer.ip stringピアのリモートアドレス(IPv4 の場合はドット付き 10 進数、IPv6 の場合は RFC5952127.0.0.1*条件付き要件
net.peer.name stringRemote Hostnameexample.com*条件付き要件

*条件付き要件:net.peer.ip または net.peer.name のいずれかを使用する必要があります。 

メッセージングキュー

属性タイプ説明要件
messaging.system stringメッセージングシステムを識別する文字列kafka、rabbitmq、rocketmq、activemq必須
messaging.destination stringメッセージの宛先名。これはスパン名と同じかもしれませんが、それでも必要です。MyQueue、MyTopicRequired

デフォルトの SpanKind を変更する

Splunk AppDynamics は、デフォルトのスパンの種類INTERNAL を処理しません。実装で INTERNAL スパンを送信している場合、それらのスパンはコントローラ UI フローマップに反映されません。SpanKind を次の代替スパンの種類のいずれかに設定する必要があります。

  • SERVER:スパンが同期 RPC または他のリモート要求のサーバー側の処理をカバーすることを示します。このスパンは、多くの場合、応答を待機することが予期されていたリモート CLIENT スパンの子です。
  • CLIENT:スパンが何らかのリモートサービスへのリクエストを記述していることを示します。このスパンは通常、リモート SERVER スパンの親であり、応答を受信するまで終了しません。
  • PRODUCER:スパンが非同期リクエストのイニシエータを記述することを示します。この親スパンは、対応する子 CONSUMER スパンの前に終了することが多く、子スパンが開始する前に終了することもあります。バッチ処理を使用したメッセージングシナリオでは、個々のメッセージをトレースするには、メッセージごとに新しい PRODUCER スパンを作成する必要があります。
  • CONSUMER:スパンが非同期 PRODUCER リクエストの子を記述することを示します。

SERVER スパンと CONSUMER スパンは entry スパンで、CLIENT スパンと PRODUCER スパンは exit スパンです。exit コールを検出可能にするには、entry スパンが exit スパンの前になければなりません。また、entry スパンが exit スパンの前にある限り、entry スパンと exit スパンの間に 1 つ以上の INTERNAL スパンが存在できます。

詳細については、「OpenTelemetry の仕様」を参照してください。

OpenTelemetry SDK(Java)を使用して SpanKindSERVER に設定する OpenTelemetry ドキュメントの例を次に示します。

Span span = tracer.spanBuilder("/resource/path").setSpanKind(SpanKind.SERVER).startSpan();
span.setAttribute("http.method", "GET");
span.setAttribute("http.url", url.toString());
JAVA

フローマップの不明な言語アイコン

フローマップに Unknown 言語アイコンが表示される場合は、telemetry.sdk.language リソース属性をアプリケーションの言語に設定する必要がある場合があります。詳細については、「リソース属性をアプリケーション言語 SDK に設定する」を参照してください。