在微服務分布式情境下,全鏈路追蹤功能給業務提供了各個服務點執行情況的可視化快速分析定位能力。在定時任務情境下,業務執行鏈路可能比常規即時業務的執行鏈路更長,接入全鏈路追蹤有助於查詢任務執行耗時、分析執行異常等問題。本文介紹如何將定時任務接入全鏈路追蹤。
前提條件
接入鏈路追蹤
接入配置
以Spring Boot接入模式為例,在應用程式的pom.xml檔案中添加依賴。
<dependency>
<groupId>com.aliyun.schedulerx</groupId>
<artifactId>schedulerx2-spring-boot-starter</artifactId>
<version>{最新版本}</version>
<!--如果使用logback,需要將log4j和log4j2排掉 -->
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 補充依賴鏈路追蹤擴充外掛程式 -->
<dependency>
<groupId>com.aliyun.schedulerx</groupId>
<artifactId>schedulerx-plugin-trace-opentelemetry</artifactId>
<version>{最新版本}</version>
</dependency>
<!-- skywalking則採用該外掛程式 -->
<!--<dependency>
<groupId>com.aliyun.schedulerx</groupId>
<artifactId>schedulerx-plugin-trace-skywalking</artifactId>
<version>{最新版本}</version>
</dependency>-->
應用部署配置
-
方案一:EDAS部署應用 (推薦)
-
如果您已經使用了EDAS部署應用服務,那麼已具備相應的接入能力,本章節應用部署可直接跳過。
-
新使用者可以開通EDAS,通過EDAS平台部署自己應用程式即可自動接入全鏈路追蹤能力,無需額外配置。具體操作,請參見開始使用EDAS。
-
-
方案二:接入ARMS獨立部署
參考ARMS應用接入流程。按提示下載相關JAR包,並配置對應應用資訊,在啟動指令碼中添加arms javaagent配置即可啟動完成接入。具體操作,請參見手動安裝探針。
-
方案三:自建平台整合
如果您採用了自建的全鏈路追蹤平台,依然可以進行相應整合。以常見的skywalking為例,接入步驟如下所示。
-
下載skywalking agent安裝包並完成配置。
-
在Java應用啟動指令碼中添加JVM參數:
-javaagent:{agent.path}/skywalking-agent.jar。 -
將Java業務應用依賴的SchedulerX Trace外掛程式切換為skywalking類型,如下所示。
<dependency> <groupId>com.aliyun.schedulerx</groupId> <artifactId>schedulerx-plugin-trace-skywalking</artifactId> <version>{最新version}</version> </dependency>
-
全鏈路資料擷取設定了預設採樣率,並非每條執行鏈路都會被採集到。您可以根據業務情境設定相應採樣率。
鏈路追蹤查看
在完成上述配置和應用部署後,定時任務執行即可實現可視化全鏈路追蹤能力。目前支援單機(含HTTP任務)、廣播、可視化Map任務。
-
登入分布式任務調度平台。
- 在頂部功能表列選擇地區。
-
在左側導覽列,單擊执行列表,選擇任務執行個體列表頁簽。
-
單擊操作列下詳情。
-
單機任務
單擊詳情中的TraceId,即可調整至相應執行調用鏈查看。因為該服務所屬應用部署支援了全鏈路追蹤能力(支援OpenTelemetry),所以該特性同樣適用於單機HTTP任務。在單機任務執行個體的詳情面板中,選擇基本資料頁簽,可查看該任務執行個體的TraceId(如
7bf737****),用於關聯鏈路追蹤系統。在鏈路追蹤詳情頁的調用鏈路Tab中,黃色提示條顯示當前調用鏈耗時超過3.00s並可一鍵觸達根因。診斷概要顯示根因應用為schedulerx-example-trace,Span名稱為com.alibaba.schedulerx.example.trace.processor.SimpleHelloProcessor.process,Span耗時3.00s,耗時佔比95.40%。時間軸展示兩個Span:SchedulerX調用類型的單機任務耗時3150ms,HTTP入口類型的/hello服務耗時3ms。 -
廣播任務
單擊詳情。在任務執行個體詳情頁面,單擊當前執行詳情。每一個機器會有對應的TraceID展示且支援跳轉查看調用鏈。廣播任務執行成功後,在左側任務執行個體列表中可查看執行狀態。單擊某條任務執行個體,右側當前執行詳情頁簽展示任務整體進度(已完成子任務數及百分比),下方按機器維度統計表格包含子任務IP、總量、隊列、運行、成功、失敗、TraceId和操作列。通過TraceId可追蹤任務執行鏈路,單擊操作列的查看堆棧可查看對應子任務的堆棧資訊。
-
可視化Map任務
單擊詳情。在任務執行個體詳情頁面,單擊子任務列表。可視化Map任務為執行記錄中的每一個子任務提供了執行鏈路的可視化查詢支援。在執行記錄詳情的子任務列表中,可以根據每個子任務查看其TraceID並跳轉查看其調用鏈。在任務執行個體列表中,單擊目標任務進入詳情,選擇右側子任務列表頁簽。子任務列表包含子任務ID、子任務名稱、狀態、worker、TraceId和操作列。其中TraceId列可查看各子任務的 Trace 追蹤識別碼,操作列支援重跑和日誌操作。
-