本文以 Java 应用为例,介绍从前期准备工作(开通链路追踪服务及相关依赖服务并授权)到将应用接入链路追踪的流程,帮助您快速上手体验链路追踪。

背景信息

为了帮助您快速上手体验链路追踪,本文以下列假设为背景:

  • 您需要对 Java 应用的链路信息进行追踪
  • 您已注册阿里云账号
  • 您尚未开通链路追踪服务及相关依赖服务

本文的内容包括:

  1. 开通链路追踪服务
  2. 开通链路追踪所依赖的相关服务
    • 开通日志服务 LOG
    • 开通访问控制 RAM
  3. 授权链路追踪读写您的日志服务数据
  4. 通过 Jaeger 客户端上报 Java 应用数据

开通链路追踪服务

请使用您的阿里云账号按照以下步骤开通链路追踪服务。

  1. 打开链路追踪产品主页,在页面右上角单击登录
  2. 在页面上输入您的阿里云账号和密码,并单击登录
  3. 在产品主页上单击立即开通,然后在云产品开通页页面上选择我已阅读并同意《链路追踪服务协议》,并单击立即开通
    注意 开通后,如果不使用则不会产生费用,仅当上报数据后才会产生费用。
    Activate Tracing Analysis

开通日志服务 LOG

请使用您的阿里云账号按照以下步骤开通日志服务 LOG。

  1. 打开日志服务 LOG 产品主页,在页面右上角单击登录
  2. 在页面上输入您的阿里云账号和密码,并单击登录
  3. 在产品主页上单击管理控制台,然后在新页面上单击创建简单日志服务
  4. 云产品开通页页面上选择我已阅读并同意 《日志服务服务协议》,并单击立即开通

开通访问控制 RAM

请使用您的阿里云账号按照以下步骤开通访问控制 RAM。

  1. 打开访问控制 RAM 产品主页,在页面右上角单击登录
  2. 在页面上输入您的阿里云账号和密码,并单击登录
  3. 在产品主页上单击立即开通,然后在访问控制开通页面上选择我已阅读并同意访问控制开通协议,并单击立即开通

授权链路追踪读写您的日志服务数据

请按照以下步骤授权链路追踪读写您的日志服务数据。

  1. 登录链路追踪控制台
  2. 概览页面上,单击授权链路追踪读写您的日志服务。
  3. 云资源访问授权页面上,选择所需的权限,并单击同意授权
    Accessing Log Role

通过 Jaeger 客户端上报 Java 应用数据

本文以通过 Jaeger 客户端上报 Java 应用数据为例。关于通过其他客户端上报数据和上报其他语言应用数据的方法,请参考文末的相关文档。

说明下载 Demo 工程,进入 manualDemo 目录,并按照 Readme 的说明运行程序。
  1. 打开 pom.xml,添加对 Jaeger 客户端的依赖。
    <dependency>
        <groupId>io.jaegertracing</groupId>
        <artifactId>jaeger-client</artifactId>
        <version>0.31.0</version>
    </dependency>
  2. 配置初始化参数并创建 Tracer。

    Tracer 对象可以用来创建 Span 对象(记录分布式操作时间)、跨机器透传数据(Extract/Inject 方法),或设置当前 Span(activeSpan)。Tracer 对象还配置了上报数据的网关地址、本机 IP、采样率、服务名等数据。您可以通过调整采样率来减少因上报数据产生的开销。

    注意 请将 <endpoint> 替换成链路追踪控制台概览页面上相应客户端和相应地域的接入点。关于获取接入点信息的方法,请参见前提条件中的获取接入点信息
    // 将 manualDemo 替换为您的应用名称
    io.jaegertracing.Configuration config = new io.jaegertracing.Configuration("manualDemo");
    io.jaegertracing.Configuration.SenderConfiguration sender = new io.jaegertracing.Configuration.SenderConfiguration();
    // 将 <endpoint> 替换为控制台概览页面上相应客户端和相应地域的接入点
    sender.withEndpoint("<endpoint>");
    config.withSampler(new io.jaegertracing.Configuration.SamplerConfiguration().withType("const").withParam(1));
    config.withReporter(new io.jaegertracing.Configuration.ReporterConfiguration().withSender(sender).withMaxQueueSize(10000));
    GlobalTracer.register(config.getTracer());
  3. 记录请求数据。
    Tracer tracer = GlobalTracer.get();
    // 创建 Span
    Span span = tracer.buildSpan("parentSpan").withTag("myTag", "spanFirst").start();
    tracer.scopeManager().activate(span, false);
    tracer.activeSpan().setTag("methodName", "testTracing");
    // ...业务逻辑
    secondBiz();
    span.finish();
  4. 等待 2-3 分钟后,登录链路追踪控制台并查看上报的链路数据。

后续步骤

将应用数据上报至链路追踪控制台后,您可以在链路追踪控制台执行以下后续操作:

链路追踪支持将 Java、PHP、Go、Python、JS、.NET、C++ 等语言的应用数据上报至控制台。支持的上报数据客户端包括 Jaeger 和 Zipkin。请在下方根据您的应用语言或者使用的客户端查看相应的应用接入文档。

按应用语言

接入 Java 应用

将 Java 应用接入链路追踪。

接入 PHP 应用

将 PHP 应用接入链路追踪。

接入 Go 应用

将 Go 应用接入链路追踪。

接入 Python 应用

将 Python 应用接入链路追踪。

接入 Node.js 应用

将 Node.js 应用接入链路追踪。

接入 .NET 应用

将 .NET 应用接入链路追踪。

接入 C++ 应用

将 C++ 应用接入链路追踪。

按客户端

Jaeger

通过 Jaeger 上报应用数据。

Zipkin

通过 Zipkin 上报应用数据。

SkyWalking

通过 SkyWalking 上报应用数据。

SkyWalking