全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 智能硬件
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 更多
业务实时监控服务 ARMS

全息排查最佳实践

更新时间:2018-07-17 17:32:27

全息排查用于通过业务主键快速定位问题链路,需和应用监控功能搭配使用,本文介绍了全息排查最佳实践。

准备条件

  1. 首先确保您在 ARMS 控制台上创建了应用监控,并在您的 Java 程序中将应用监控的 Agent 进行挂载并启动,详情请参阅应用监控 Java 探针的安装;
  2. 在您的程序中引入arms-sdk-1.7.0.jar
  1. <dependency>
  2. <groupId>com.alibaba.arms.apm</groupId>
  3. <artifactId>arms-sdk</artifactId>
  4. <version>1.7.0</version>
  5. </dependency>

备注:如果pom获取有问题,可以直接下载arms-sdk-1.7.0-SNAPSHOT.jar

如何获取traceId与rpcId

在完成上述的准备条件之后即可获取traceId与rpcId,其获取方法如下

  1. Span span = Tracer.builder().getSpan();
  2. String traceId = span.getTraceId();
  3. String rpcId = span.getRpcId();

日志打印

获取到traceId与rpcId后,您可以根据自己的业务需求进行业务日志的打印与输出,如下为包含traceId和rpcId的样例业务日志,日志输出到文件/home/admin/logs/example/example.log,当然您也可以根据自己的需求将业务日志输出到SLS、MQ等其他通道中。

  1. 2018-07-12 11:37:40|1e057c4015313666599651005d1201|0|username=xiao,age=22,action=login
  2. 2018-07-12 11:37:40|1e057c4015313666599651005d1201|0|username=xiao,age=22,action=search
  3. 2018-07-12 11:37:40|1e057c4015313666599651005d1201|0|username=xiao,age=22,action=cart

上述每一条业务日志表示用户的行为轨迹。

配置全息排查事件集

以上述为例,新建一个自定义监控的任务,配置好数据源,并完成预览与切分,这里不进行赘述,如下图为切分好的字段。

1

进入到自定义任务的第三步进行事件集的配置。

事件集名称 事件集的名称必须进行设置;

业务主键 业务主键表示进行业务事件搜索的字段,在该案例中,业务主键被设置成行为(action)与用户名称(userName);

时间字段 业务时间,不能选择系统时间;

流水号 设置TraceID;

流水序号 设置RpcId;

2

上图为该案例中配置的全息排查事件集,启动对应的自定义任务即可。

全息排查的使用

该案例的业务日志表征用户的行为轨迹,其背后对应的应用为购物网站,某天业务方接受到用户(kevin.yang)的投诉:在2018-07-12 14:20后用户在进行购物下单时失败,需要业务方进行问题的定位。

1)方式1:多维查询>>调用链查询,输入查询时间范围,与业务主键的相关条件

3

通过查询条件可以找到对应时间段内该用户的链路信息,点击对应的traceId进入。点击链接即可查询该调用链轨迹与业务轨迹,进而进行问题定位于发现。

2)方式2:多维查询>>全息排查事件查询,输入查询时间范围,与业务主键的相关条件

6

备注:此处需要选择全息排查事件集才能进行查询。

本文导读目录