以下の項では、Splunk AppDynamics for OpenTelemetry に関するいくつかの一般的な問題とトラブルシューティングについて説明します。
処理されていないスパン
一部のスパンが Splunk AppDynamics によって処理されていない場合は、次を試してください。
発信に必要な属性を確認する
発信をインストゥルメントするスパンの場合、Splunk AppDynamics では、スパンオブジェクトに一意の属性を追加する必要があります。そうしないと、スパンは Splunk AppDynamics パイプラインからドロップされます。スパンの必須属性と推奨属性の両方について、以下の表を参照してください。
一部の属性は必須ではありませんが、フローマップでより正確に表現するために強く推奨されます。
HTTP
属性 | タイプ | 説明 | 例 | 要件 |
---|
http.method | string | HTTP 要求メソッド | GET、POST、HEAD | 必須 |
http.url | string | 完全な HTTP リクエスト URL | https://www.foo.bar/search?q=OpenTelemetry#SemConv | *条件付き要件 |
http.host
| string | HTTP ホストヘッダーの値 | www.example.org | *条件付き要件 |
http.target | string | HTTP リクエスト行または同等のもので渡される完全なリクエストターゲット。 | /path/12314/?q=ddds#123 | *条件付き要件 |
http.scheme | string | 使用されたプロトコルを識別するスキーム | http、https | *条件付き要件 |
net.peer.ip | string | ピアのリモートアドレス | 127.0.0.1 | *条件付き要件 |
net.peer.port | int | リモートポート番号 | 80、8080、443 | *条件付き要件 |
net.peer.name | string | リモートホスト名など | example.com | Required |
*条件付き要件:スパンの作成時に次のいずれかが含まれている必要があります。
http.url
http.scheme
、http.host
、http.target
http.scheme
、net.peer.name
、net.peer.port
、http.target
http.scheme
、net.peer.ip
、net.peer.port
、http.target
データベース
属性 | タイプ | 説明 | 例 | 要件 |
---|
db.system | string | 使用されているデータベース管理システム(DBMS)製品の識別子 | other_sql | 必須 |
net.peer.ip | string | ピアのリモートアドレス(IPv4 の場合はドット付き 10 進数、IPv6 の場合は RFC5952) | 127.0.0.1 | *条件付き要件 |
net.peer.name | string | Remote Hostname | example.com | *条件付き要件 |
*条件付き要件:net.peer.ip
または net.peer.name
のいずれかを使用する必要があります。
メッセージングキュー
属性 | タイプ | 説明 | 例 | 要件 |
---|
messaging.system | string | メッセージングシステムを識別する文字列 | kafka、rabbitmq、rocketmq、activemq | 必須 |
messaging.destination | string | メッセージの宛先名。これはスパン名と同じかもしれませんが、それでも必要です。 | MyQueue、MyTopic | Required |
デフォルトの 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)を使用して SpanKind
を SERVER
に設定する 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 に設定する」を参照してください。