Skip to content

aliyun-sls/ot-client-helper

Repository files navigation

ot-client-helper

Ot-Client-Helper 是一套手动埋点生成 Trace 的入口 Span 的 API 脚手架工程,它不具备追踪上下文传递的能力,也不具备自动关闭 Span,需要手动管理 Span, 适用于 Android 只生成入口 Span 的场景

Ot-Client-Helper 生成的数据遵循 OT 格式,追踪数据会上传到 SLS Trace 实例中。

快速开始

buid.gradle 文件

 implementation 'com.aliyun.openservices:ot-clien-helper:1.0.1'

测试代码

// Context appContext=InstrumentationRegistry.getInstrumentation().getTargetContext();
Init(Configuration.Builder.newBuilder(appContext,"${access-key-id}","${access-key-secret}","${endpoint}","${project}","${instance}", "${service}").withResources(Collections.singletonMap("test","test1")));

Span span=createSpan("test").withResource("rest","rest").withAttribute("test1","test2").start();

span=span.withAttribute("test3","test5").occurError();

System.out.println(String.format("%s  %s",span.traceContext().contextKey(),span.traceContext().contextValue()));
// 创建的Span一定要调用Stop方法
span.stop();

参数介绍

变量 说明 示例
${endpoint} 日志服务的接入地址,格式为https://${region-endpoint},其中:
${region-enpoint} :Project 访问域名,支持公网和阿里云内网(经典网络、VPC)。更多信息,请参见服务入口
https://cn-hangzhou.log.aliyuncs.com
${project} 日志服务 Project 名称。 test-project
${instance} Trace 服务实例 ID。 test-traces
${access-key-id} 阿里云账号 AccessKey ID。
建议您使用只具备日志服务 Project 写入权限的 RAM 用户的 AccessKey(包括 AccessKey ID 和 AccessKey Secret)。授予 RAM 用户向指定 Project 写入数据权限的具体操作,请参见授权。如何获取 AccessKey 的具体操作,请参见访问密钥。
${access-key-secret} 阿里云账号 AccessKey Secret。
建议您使用只具备日志服务 Project 写入权限的 RAM 用户的 AccessKey。
${service} 服务名。根据您的实际场景配置。 Android

FAQ

  • 如何获取追踪上下文

通过Span.TraceContext()方法可以获取追踪上下文 注: Span.TraceContext()只具备生成 Trace 上下文能力,并不具备传递上下文的能力,上下文传递需要手动完成

  • 如何设置 Span 异常

通过Span.occurError()方法可以设置当前 Span 为异常状态

  • Android 时间和 Server 端时间不一致问题, 具体代码参考 TimeUtil.getServerTime()
  1. 利用 OKHttp 的 Interceptor 获取 Reponse 中的时间
  2. 利用SystemClock.elapsedRealtime()记录手机系统开机时间
  3. 现在服务器时间 = 以前服务器时间 + 现在手机开机时间 - 以前服务器时间的获取时刻的手机开机时间