チュートリアル: Instana トレースSDKを使用したカスタム中間関数の計測

Instana Tracing SDK を使用すると、カスタム中間関数を計測対象に追加し、 Instana によって自動的に計測されないアプリケーションロジックを可視化できます。

サンプル・コード

チュートリア custom-intermediate-span-samplee ルのサンプルコードについては、 「カスタム中間スパン サンプル」 を参照してください。 これは、 Instana Java SDK を使用して、 MongoDB を備えた Spring Boot アプリケーション内でカスタム中間スパンを作成する方法を示しています。

カスタム中間関数の計測

InstanaJava トレーサー SDK を有効化し、カスタム中間関数を計測するには、次の手順に従ってください:

  1. Java Trace SDK を依存関係として追加します。 Maven を使用している場合は、次の依存関係を追加 .xml してください:
    <dependency>
        <groupId>com.instana</groupId>
        <artifactId>instana-java-sdk</artifactId>
        <version>1.2.0</version>
    </dependency>
  2. SDKアノテーションの検出を有効にするには、 Javaconfiguration.yaml パッケージ名をSDKアノテーション付きでファイルに指定してください。

    # Java Tracing
    com.instana.plugin.javatrace:
      instrumentation:
        # By default no packages are scanned for SDK annotations.
        sdk:
          packages:
              - 'com.instana.sample.application'
    注: 指定されたパッケージは再帰的にスキャンされるため、最も一般的なパッケージ名のみを指定すれば十分です。
  3. 関数にスパン注釈を追加して、トレースでそれをキャプチャします。

    Instana の Java Tracer SDKを使用すると、メソッドに3つのスパンタイプのいずれかを割り当て、トレースにおけるその役割を定義できます。 特定の関数をキャプチャするには、関数定義に適切なスパン注釈を追加します。

    @Span(type = Type.INTERMEDIATE, value = "custom-instana-java-sdk")

    サンプル・コード:

    @Span(type = Span.Type.INTERMEDIATE, value = SPAN_NAME)
    public List<Profile> all(Boolean error) {
        try {
            if (error) {
                throw new Exception();
            }
            SpanSupport.annotate(Span.Type.INTERMEDIATE, SPAN_NAME, "tags.instana.java.sdk", "Success");
            return getAll();
        } catch (Exception e) {
            SpanSupport.annotate(Span.Type.INTERMEDIATE, SPAN_NAME, "tags.error", "true");
            SpanSupport.annotate(Span.Type.INTERMEDIATE, SPAN_NAME, "tags.instana.java.sdk", "Fail");
        }
        return Collections.emptyList();
    }
    
    private List<Profile> getAll() {
        return profileRepository.findAll();
    }
  4. オプション: スパンに追加情報を注釈として付加する。

    特定の状況では、SDKスパンに関連情報を追加することで、その発生元をより適切に表現できます。 span属性に追加するには、変換タグをspan内に組み込みます。 これらのタグは、メソッド SpanSupport.annotate(type, name, key, value) を使用して設定できます。

    SpanSupport.annotate(Span.Type.INTERMEDIATE, SPAN_NAME, "tags.instana.java.sdk","Success");
    図 1. 成功したスパンの詳細
    成功したスパンの詳細
  5. オプション: スパンを誤りとマークする。

    呼び出しを誤りとして指定するには、`<tag>` error を組み込みます:

    SpanSupport.annotate(Span.Type.INTERMEDIATE, SPAN_NAME, "tags.error","true");
  6. Instana UIでカスタム中間スパンとその注釈を含む完全なトレースを表示するには、次のコマンドを実行します。

    正常なトレースを表示するには、以下を実行してください:

    curl -X 'GET' 'http://localhost:8081/v1/instana/profile?error=false' -H 'accept: application/json'
    図 2. 成功したスパン
    成功したスパン

    エラートレースを表示するには、以下を実行してください:

    curl -X 'GET' 'http://localhost:8081/v1/instana/profile?error=true' -H 'accept: application/json'
    図 3. エラー範囲
    エラー範囲
    図 4. エラー範囲の詳細
    エラー範囲の詳細

サマリーと展望

このチュートリアルでは、カスタム中間関数用に新しいトレースコンテキストを作成します。これにより、 Instana において、この関数の実行が中間スパンとして認識されるようになります。

スパン概念は観測の粒度を高め、通話を着信、発信、内部通話に分類することで詳細な洞察を提供します。 SDKの直感的な統合プロセスは、 Maven の依存関係と設定ファイルによって示されており、アプリケーションへのシームレスな組み込みを容易にします。

InstanaJava SDK の完全なリファレンスは、 Java Trace SDK を参照してください。 例えば、`@ @SpanParam `および @SpanReturn `@`アノテーションを使用すると、パラメータや戻り値を追加情報としてスパンに簡単にキャプチャできます。これは、特定のシナリオでは SpanSupport.annotate() 明示的に`@`を呼び出すよりも便利な場合があります。