全息排查用于通过业务主键快速定位问题链路,需要和自定义监控功能搭配使用。本文介绍了使用全息排查的方法。

前提条件

  • 已成功创建一个应用监控任务,请参见为Java应用手动安装Agent
  • 已在应用的pom.xml文件中添加以下依赖。
    <dependency>
      <groupId>com.alibaba.arms.apm</groupId>
      <artifactId>arms-sdk</artifactId>
      <version>1.7.1</version>
    </dependency>
    说明
    • Maven仓库地址为:https://oss.sonatype.org。
    • 如果无法获取pom依赖,请直接下载arms-sdk-1.7.1.jar

获取TraceId与RpcId

满足上述前提条件后,即可通过以下代码获取TraceId与RpcId。

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

打印日志

获取TraceId与RpcId后,您可以根据业务需求打印和输出业务日志。以下是包含TraceId与RpcId的样例业务日志。该日志输出到文件/home/admin/logs/example/example.log中,但您也可以按需将其输出到日志服务Log Service(简称LOG,原SLS)、MQ等其他通道中。

2018-07-12 11:37:40|1e057c4015313666599651005d1201|0|username=xiao,age=22,action=login
2018-07-12 11:37:40|1e057c4015313666599651005d1201|0|username=xiao,age=22,action=search
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. 登录ARMS控制台
    2. 在左侧导航栏,选择应用监控 > 调用链路查询
    3. 在顶部菜单栏,选择目标地域。
    4. 调用链路查询页面的右上角设置日期范围,从最左侧的下拉列表,选择业务主键,在其右侧文本框,输入业务主键的值,例如username:kevin.yang

      指定时间区间内的所有调用链路显示在搜索结果中。

      搜索结果1
    5. 在搜索结果中,单击异常调用链路的TraceId,然后单击业务轨迹页签,显示该TraceId下的所有业务事件,并根据业务事件定位问题原因。
  • 方法二:查询全息排查事件。
    1. 登录ARMS控制台
    2. 在左侧导航栏,选择应用监控 > 全息排查事件查询
    3. 在顶部菜单栏,选择目标地域。
    4. 全息事件查询页面的参数值,设置日期范围,从全息排查事件集下拉列表,选择配置的事件集,例如quanxi,在查询条件文本框,输入业务主键的值,例如username:kevin.yang,然后单击查询

      指定时间区间内的所有调用链路显示在搜索结果中。

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

更多信息

创建全息排查事件集