アノテーション

ほとんどのユーザーにとって、すぐに使える計装は完全に十分であり、何もする必要はありません。 しかし時には、ユーザーが多くのコード変更を必要とせずに、独自のカスタムコードに対してスパンを作成したい場合があります。

メソッドにWithSpanアノテーションを追加すると、そのメソッドはスパンでラップされます。 SpanAttributeアノテーションを使用すると、メソッドの引数を属性としてキャプチャできます。

package otel;

import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.trace.SpanKind;
import io.opentelemetry.instrumentation.annotations.SpanAttribute;
import io.opentelemetry.instrumentation.annotations.WithSpan;
import org.springframework.stereotype.Component;

/** Test WithSpan */
@Component
public class TracedClass {

  @WithSpan
  public void tracedMethod() {}

  @WithSpan(value = "span name")
  public void tracedMethodWithName() {
    Span currentSpan = Span.current();
    currentSpan.addEvent("ADD EVENT TO tracedMethodWithName SPAN");
    currentSpan.setAttribute("isTestAttribute", true);
  }

  @WithSpan(kind = SpanKind.CLIENT)
  public void tracedClientSpan() {}

  public void tracedMethodWithAttribute(@SpanAttribute("attributeName") String parameter) {}
}

otel.instrumentation.annotations.enabledプロパティをfalseに設定することで、OpenTelemetryアノテーションを無効にできます。

WithSpanアノテーションの要素を使用してスパンをカスタマイズできます。

名前説明デフォルト値
valueStringスパン名ClassName.Method
kindSpanKindスパンのスパンの種類SpanKind.INTERNAL

SpanAttributeアノテーションのvalue要素から属性名を設定できます。

名前説明デフォルト値
valueString属性名メソッドパラメータ名

次のステップ

アノテーションの使用以外にも、OpenTelemetry APIを使用すると、カスタム計装に使用できるトレーサーを取得できます。