全部产品
阿里云办公

全息排查最佳实践

更新时间:2018-07-20 18:35:26

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

前提条件

  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

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

配置全息排查事件集

按照自定义监控章节的说明创建一个自定义监控任务,使用上方的样例业务日志作为数据源,并按照下图方案自定义切分日志。

随后进入创建自定义监控任务的创建全息排查事件集步骤,并按照下图配置事件集。

  • 业务主键:表示搜索业务事件所使用的字段。在本文的示例中,业务主键是行为(action)和用户名称(username)。

  • 选择时间字段:必须选择业务时间,不能选择系统时间。

  • 流水号:设置 TraceId。

  • 流水序号:设置 RpcId。

配置好事件集后,请启动自定义监控任务。

全息排查功能的使用案例

本案例的业务日志表示用户的行为轨迹,对应的应用为购物网站。假设用户 kevin.yang 投诉称在 2018-07-12 14:20 以后下单失败,那么您可以通过以下两种方法来定位问题原因。

  • 方法 1:调用链查询。

    1. 在左侧菜单栏中单击多维查询,进入实例列表页面的调用链查询标签页。
    2. 在标签页上的日期参数值中输入日期范围,在最下方的参数名下拉列表中选择业务主键,并在右侧的参数值中输入业务主键的值,例如本例中的 username:kevin.yang,然后单击查询。指定时间区间内的所有调用链显示在搜索结果中。

    3. 在搜索结果中,单击异常调用链的 TraceId,然后单击业务轨迹标签页,显示该 TraceId 下的所有业务事件,并根据业务事件定位问题原因。

  • 方法 2:全息排查事件查询。

    1. 在左侧菜单栏中单击多维查询,并单击全息排查事件查询标签页。
    2. 在标签页上的日期参数值中输入日期范围,在全息排查事件集下拉框中选择前面配置的事件集,然后单击查询。指定时间区间内的所有调用链显示在搜索结果中。

    3. 在搜索结果中,单击调用链查询,然后单击业务轨迹标签页,显示该 TraceId 下的所有业务事件,并根据业务事件定位问题原因。

相关文档