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