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

前提條件

接入鏈路追蹤

接入配置

以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部署應用服務,那么已具備相應的接入能力,本章節(jié)應用部署可直接跳過。
    • 新用戶可以開通EDAS,通過EDAS平臺部署自己應用程序即可自動接入全鏈路追蹤能力,無需額外配置。具體操作,請參見開始使用EDAS
  • 方案二:接入ARMS獨立部署

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

  • 方案三:自建平臺集成

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

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

鏈路追蹤查看

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

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