在微服务分布式场景下,全链路追踪功能给业务提供了各个服务点执行情况的可视化快速分析定位能力。在定时任务场景下,业务执行链路可能比常规实时业务的执行链路更长,接入全链路追踪有助于查询任务执行耗时、分析执行异常等问题。本文介绍如何将定时任务接入全链路追踪。

前提条件

  • 客户端为1.7.0及以上版本。
  • 客户端依赖Trace插件。具体操作,请参见接入配置
  • 应用升级为专业版。具体操作,请参见如何升级为专业版

接入链路追踪

接入配置

以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配置即可启动完成接入。具体操作,请参见为Java应用手动安装Agent

  • 方案三:自建平台集成

    如果您采用了自建的全链路追踪平台,依然可以进行相应集成。以常见的skywalking为例,接入步骤如下所示。

    1. 下载skywalking agent安装包并完成配置。
    2. 在Java应用启动脚本中添加JVM参数:-javaagent:{agent.path}/skywalking-agent.jar
    3. 将Java业务应用依赖的SchedulerX Trace插件切换为skywalking类型,如下所示。
      <dependency>
          <groupId>com.aliyun.schedulerx</groupId>
          <artifactId>schedulerx-plugin-trace-skywalking</artifactId>
          <version>{最新version}</version>
      </dependency>
说明 全链路数据采集设置了默认采样率,并非每条执行链路都会被采集到。您可以根据业务场景设置相应采样率。

链路追踪查看

在完成上述配置和应用部署后,定时任务执行即可实现可视化全链路追踪能力。目前支持单机(含HTTP任务)、广播、可视化Map任务。

  1. 登录EDAS控制台
  2. 在左侧导航栏单击任务调度
  3. 在顶部菜单栏选择地域。
  4. 在左侧导航栏,单击执行列表,选择任务实例列表页签,然后在操作列按需执行以下操作。
    • 单机任务
      单击链路追踪详情中的TraceId,即可调整至相应执行调用链查看。因为该服务所属应用部署支持了全链路追踪能力(支持OpenTelemetry),所以该特性同样适用于单机HTTP任务。123
    • 广播任务
      单击详情。在任务实例详情页面,单击当前执行详情。每一个机器会有对应的TraceID展示且支持跳转查看调用链。4
    • 可视化Map任务
      单击详情。在任务实例详情页面,单击子任务列表。可视化Map任务为执行记录中的每一个子任务提供了执行链路的可视化查询支持。在执行记录详情的子任务列表中,可以根据每个子任务查看其TraceID并跳转查看其调用链。6