在微服務(wù)分布式場景下,全鏈路追蹤功能給業(yè)務(wù)提供了各個服務(wù)點執(zhí)行情況的可視化快速分析定位能力。在定時任務(wù)場景下,業(yè)務(wù)執(zhí)行鏈路可能比常規(guī)實時業(yè)務(wù)的執(zhí)行鏈路更長,接入全鏈路追蹤有助于查詢?nèi)蝿?wù)執(zhí)行耗時、分析執(zhí)行異常等問題。本文介紹如何將定時任務(wù)接入全鏈路追蹤。

前提條件

接入鏈路追蹤

接入配置

以Spring Boot接入模式為例,在應(yīng)用程序的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>-->

應(yīng)用部署配置

  • 方案一:EDAS部署應(yīng)用 (推薦)
    • 如果您已經(jīng)使用了EDAS部署應(yīng)用服務(wù),那么已具備相應(yīng)的接入能力,本章節(jié)應(yīng)用部署可直接跳過。
    • 新用戶可以開通EDAS,通過EDAS平臺部署自己應(yīng)用程序即可自動接入全鏈路追蹤能力,無需額外配置。具體操作,請參見開始使用EDAS
  • 方案二:接入ARMS獨立部署

    參考ARMS應(yīng)用接入流程。按提示下載相關(guān)JAR包,并配置對應(yīng)應(yīng)用信息,在啟動腳本中添加arms javaagent配置即可啟動完成接入。具體操作,請參見為Java應(yīng)用手動安裝Agent

  • 方案三:自建平臺集成

    如果您采用了自建的全鏈路追蹤平臺,依然可以進行相應(yīng)集成。以常見的skywalking為例,接入步驟如下所示。

    1. 下載skywalking agent安裝包并完成配置。
    2. 在Java應(yīng)用啟動腳本中添加JVM參數(shù):-javaagent:{agent.path}/skywalking-agent.jar
    3. 將Java業(yè)務(wù)應(yīng)用依賴的SchedulerX Trace插件切換為skywalking類型,如下所示。
      <dependency>
          <groupId>com.aliyun.schedulerx</groupId>
          <artifactId>schedulerx-plugin-trace-skywalking</artifactId>
          <version>{最新version}</version>
      </dependency>
說明 全鏈路數(shù)據(jù)采集設(shè)置了默認采樣率,并非每條執(zhí)行鏈路都會被采集到。您可以根據(jù)業(yè)務(wù)場景設(shè)置相應(yīng)采樣率。

鏈路追蹤查看

在完成上述配置和應(yīng)用部署后,定時任務(wù)執(zhí)行即可實現(xiàn)可視化全鏈路追蹤能力。目前支持單機(含HTTP任務(wù))、廣播、可視化Map任務(wù)。

  1. 登錄EDAS控制臺
  2. 在左側(cè)導航欄單擊任務(wù)調(diào)度
  3. 在頂部菜單欄選擇地域。
  4. 在左側(cè)導航欄,單擊執(zhí)行列表,選擇任務(wù)實例列表頁簽,然后在操作列按需執(zhí)行以下操作。
    • 單機任務(wù)
      單擊鏈路追蹤詳情中的TraceId,即可調(diào)整至相應(yīng)執(zhí)行調(diào)用鏈查看。因為該服務(wù)所屬應(yīng)用部署支持了全鏈路追蹤能力(支持OpenTelemetry),所以該特性同樣適用于單機HTTP任務(wù)。123
    • 廣播任務(wù)
      單擊詳情。在任務(wù)實例詳情頁面,單擊當前執(zhí)行詳情。每一個機器會有對應(yīng)的TraceID展示且支持跳轉(zhuǎn)查看調(diào)用鏈。4
    • 可視化Map任務(wù)
      單擊詳情。在任務(wù)實例詳情頁面,單擊子任務(wù)列表。可視化Map任務(wù)為執(zhí)行記錄中的每一個子任務(wù)提供了執(zhí)行鏈路的可視化查詢支持。在執(zhí)行記錄詳情的子任務(wù)列表中,可以根據(jù)每個子任務(wù)查看其TraceID并跳轉(zhuǎn)查看其調(diào)用鏈。6