指導教學: 使用 Instana 追蹤 SDK 來檢測自訂排程器
排程器是定期執行工作的工具。 最常用的 Java 排程器是 quartz, Instana 支援現成可用的。
不過,如果您有不受支援的自訂內部排程器,您可以使用 Java 追蹤 SDK 來新增排程器的追蹤。
本指導教學顯示如何執行此動作。
程式碼範例
custom-scheduler-example 指導教學的程式碼範例位於 github.com。 它會實作簡式排程器,每 4 秒在 http://localhost:8080/ 上呼叫一次 Hello World 服務,並將回應列印至主控台。
未受 Instana 監視的來源
如果您執行範例,則會看到 HTTP 呼叫來自 未受監視的來源。

為何未監視來源?
程式碼範例使用 Apache HTTP 用戶端 進行送出呼叫。 Instana 代理程式支援 Apache HTTP 用戶端。 為何我們在 Instana 中看不到要求的來源?
原因是 Instana 只有在現有追蹤環境定義中發生送出呼叫時,才會指示這些呼叫。 在此範例中,送出呼叫由未檢測的自訂排程器觸發。 因此,未檢測呼叫,因為找不到現有的追蹤環境定義。
啟用「自訂排程器」的追蹤
為了啟用自訂排程器的追蹤,您必須先新增 Java 追蹤 SDK 作為相依關係。 對於 Maven ,它看起來如下:
<dependency>
<groupId>com.instana</groupId>
<artifactId>instana-java-sdk</artifactId>
<version>1.2.0</version>
</dependency>
若要在每次呼叫 HttpClientJob 時建立新的追蹤環境定義,請將 @Span 註釋新增至工作的 run() 方法:
@Span(type = Span.Type.ENTRY, value = "my-custom-scheduler")
public void run() {
// ...
}
每當呼叫 run() 方法時,此註釋會告知 Java 代理程式產生 ENTRY 文字段。
第三,將下列新增至 Instana 代理程式 configuration.yaml 檔案,以告知它應該掃描套件 com.instana.sample.* 中的 Java 類別是否有 @Span 註釋:
com.instana.plugin.javatrace:
instrumentation:
sdk:
packages:
- 'com.instana.sample'
現在,每一個 HelloWorldJob.run() 呼叫都會建立一個追蹤環境定義,送出的 HTTP 要求會在這個追蹤環境定義內執行。 您在 Instana 中看到如下:

現在會追蹤 HTTP GET 要求的來源,包括從 Apache HTTP 用戶端自動檢測收集的所有 meta 資料:

排程器工作本身會視覺化為具有未受監視來源的空呼叫:

摘要及 Outlook
在本指導教學中,我們為自訂排程器建立了新的追蹤環境定義,因此能夠將批次工作辨識為 Instana 中送出 HTTP 呼叫的來源。
如需 SDK 的完整參照,請檢視 SDK 的 JavaDoc。 例如, @SpanParam 和 @SpanReturn 註釋可讓您很容易擷取參數或回覆值作為遠距的其他資訊,這可能比在某些實務範例中明確呼叫 SpanSupport.annotate() 更方便。


