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

前提条件

  • 已成功创建一个应用监控任务,请参见为 Java 应用安装探针

  • 已在应用的 pom 文件中添加以下依赖:

    <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. 在左侧导航中单击多维查询,进入实例列表页面的调用链查询标签页。

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

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

  • 方法二:全息排查事件查询。
    1. 在左侧导航栏中单击多维查询,并单击全息排查事件查询标签页。

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

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

更多信息