[18.0.0.1 以及更新版本]

啟用明確的分散式追蹤程式碼檢測

使用 @Traced 註釋,來檢測 OpenTracing 的類別和方法。

關於這項作業

套用 @Traced 註釋,為 OpenTracing 指定要追蹤的類別或方法。

程序

  1. @Traced 註釋套用至類別或方法。
    • 當您將 @Traced 註釋套用至類別時,會將註釋套用至該類別的所有方法。
    • 如果您將 @Traced 註釋套用至類別和方法,則會優先採用套用至方法的註釋。註釋會從方法開頭啟動跨距,並在方法結束時完成跨距。
  2. 選擇性的: 將引數套用至 @Traced 註釋。
    value=[true|false]

    value=[true] 引數是預設值。

    使用 @Traced(false),來標註特定的方法,並針對這些方法,阻止建立跨距。您也可以使用 @Traced(false),針對特定的 JAX-RS 端點,阻止建立跨距。當您將 @Traced(false) 用於 JAX-RS 端點方法時,將不會擷取上游的 SpanContext。任何您所建立的跨距,不論是針對出埠要求自動建立,或是使用所注入追蹤器明確建立,在跨距階層中都不會有一個上游的母項跨距。依預設,程式會追蹤所有的 JAX-RS 端點方法。

    operationName=<Name for the span>

    預設值是雙引號 ("")。

    如果您使用雙引號 ("") 作為 operationName 值,則 @Traced 註釋會使用預設作業名稱。如果所標註的方法不是 JAX-RS 端點,該方法之新跨距的預設作業名稱值會是 <package name>.<class name>.<method name>。如果您在類別上指定 operationName 值,類別會將該 operationName 值用於該類別的所有方法(除非其中有方法以其自己的 operationName 值置換該值)。

    下列範例顯示 @Traced 註釋的選用引數:

    @InterceptorBinding
    @Target({ TYPE, METHOD })
    @Retention(RUNTIME)
    public @interface Traced {
        @Nonbinding
        boolean value() default true;
        @Nonbinding
        String operationName() default "";
    }
  3. 存取所配置的追蹤器。
    1. 使用基礎 OpenTracing 追蹤器物件配置的實例。設定 MicroProfile 實作,以便將所配置的追蹤器與「環境定義和相依關係注入 (CDI)」搭配使用。
    2. 藉由注入您配置給此環境之特定應用程式的追蹤器類別,來存取所配置的追蹤器物件。每一個應用程式會收到不同的追蹤器實例。追蹤器物件可支援複雜的追蹤需求,例如:在商業方法內建立跨距。下列範例顯示所注入的追蹤器類別:
      @Inject
      io.opentracing.Tracer configuredTracer;
    1. 新增 tag、log 和 baggage 至跨距,如下列範例所示:
      configuredTracer.activeSpan().setTag(...);
      configuredTracer.activeSpan().log(...);
      configuredTracer.activeSpan().setBaggage(...);

指示主題類型的圖示 作業主題

檔名:twlp_dist_tracing_code_inst.html