在微服务分布式场景下,全链路追踪功能给业务提供了各个服务点执行情况的可视化快速分析定位能力。在定时任务场景下,业务执行链路可能比常规实时业务的执行链路更长,接入全链路追踪有助于查询任务执行耗时、分析执行异常等问题。本文介绍如何将定时任务接入全链路追踪。
接入链路追踪
接入配置
以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为例,接入步骤如下所示。
- 下载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任务。