ARMS的查询调用链功能所支持的内置查询字段不具备业务意义,无法满足有业务场景的查询需求。借助ARMS业务监控,您可以为应用配置自定义参数提取规则,业务监控会获取相应业务参数并追加到调用链中,此后您可以根据自定义参数来查询调用链。
前提条件
您已经接入ARMS应用监控,详情请参见
应用监控概述。
注意 请确保将Agent升级至2.7.1或更高版本。
背景信息
ARMS提供查询调用链功能,支持的查询条件包括TraceId、接口名称、IP地址、HTTP状态码等,但这些查询条件都不具备具体的业务属性,如需查询用户ID、订单ID等含有业务信息的字段,则查询调用链功能无法满足需求。借助ARMS业务监控,这个问题即可迎刃而解。
接入ARMS业务监控后,只需配置自定义参数提取规则,ARMS业务监控就会通过Agent获取业务参数并追加到调用链中,您可以快速获得基于业务参数条件精准定位调用链的能力。
相较于ARMS的全息排查功能和业务监控的分组规则功能,业务监控的自定义参数提取功能更具优势,以下表格总结了三者的区别。
监控方式 |
接入成本 |
实时性 |
灵活性 |
业务监控(参数提取) |
低(基于Agent业务信息自动采集上报) |
实时(后台实时聚合运算并展现) |
高(可配置多条参数提取规则,且所有业务数据全量上报。) |
业务监控(分组规则) |
低(基于Agent业务信息自动采集上报) |
实时(后台实时聚合运算并展现) |
受限(只能配置1条分组规则,业务数据只取Top 10。) |
全息排查 |
高(需要改造应用程序,在日志中将业务信息和调用链关联起来。) |
实时 |
低(必须更改日志后才能展示新增分析需求的业务信息) |
配置自定义参数提取规则
要实现自定义参数查询调用链,需要先为应用配置自定义参数提取规则。ARMS支持以下两种方式:
方式一:使用ARMS控制台配置自定义参数提取规则
- 登录ARMS控制台。
- 在左侧导航栏选择,并在页面左上角选择目标地域。
- 在应用列表页面上,单击目标应用右侧操作列的设置。
- 在应用设置页面单击自定义参数页签,然后单击右上角的添加自定义参数。
- 在添加自定义参数对话框中输入以下信息,并单击确认。

参数 |
描述 |
是否必填 |
示例值 |
规则名称 |
自定义参数提取规则名称。 |
必填 |
业务参数提取 |
接口类型 |
目前仅支持HTTP入口。 |
必填 |
HTTP入口 |
参数提取规则 |
针对HTTP接口,支持从Parameter、Cookie、Method和Header中提取所需的业务字段,且支持设置多条参数提取规则。 |
必填 |
如需从业务请求接口curl "http://{domain}/api/buy?brand=SIEMENS" -H "account: 123456" 中提取brand和account数据,则添加以下参数提取规则:
- Parameter:brand
- Header:account
|
适用接口 |
默认情况下,参数提取规则针对所有业务接口,表达式为/** 。如需针对特定的业务接口,请在此设置。
|
选填 |
/** |
调用链全采 |
开启后对应业务接口将忽略应用调用链采样率限制并进行全量采集。默认关闭。 |
选填 |
关闭 |
方式二:使用ARMS SDK设置自定义标签baggage和tag
详情请参见ARMS SDK使用说明。
根据自定义业务参数查询调用链
配置自定义参数提取规则后,即可根据自定义的业务参数查询调用链。
- 在自定义参数页签上,单击目标规则右侧操作列的查询调用链。
- 在调用链路查询页签上输入以下参数,并单击查询。
说明 如需新增作为查询条件的参数名和参数值,请单击第一行参数值右侧的⊕图标。
参数名 |
参数值 |
日期(默认) |
查询调用链的时间范围,例如2020-07-01 00:00至2020-08-01 00:00 。
|
客户端名(默认) |
客户端名称。本示例中不涉及。 |
服务端名(默认) |
服务端名称。从下拉列表中选择设置了参数提取规则的应用名称。 |
http.parameters.brand |
本示例中为SIEMENS 。
|
http.parameters.account |
本示例中为123456 。
|
符合查询条件的结果将显示在下方列表中。

- 在查询结果中单击目标TraceId,例如耗时较长的TraceId。
- 在调用链路页签上查看调用链详情,并借助这些信息定位问题。

参数 |
描述 |
应用名称 |
设置了自定义参数提取规则的应用名称。 |
日志产生时间 |
日志的产生时间,精确到秒。 |
状态 |
红色表示该服务调用的本地调用链路中存在异常,绿色表示正常。 |
IP地址 |
该应用的IP地址。 |
调用类型 |
该次调用的调用类型,与自定义参数的接口类型对应。 |
服务名称 |
服务的名称,一般为接口名称。将鼠标指针悬浮于服务名称上,可在浮层中查看自定义参数,详情请参见验证结果。
|
方法栈 |
单击该列的放大镜图标后,可在对话框内查看方法栈的以下详情:
- 调用方法:本地方法栈调用方法,展开后显示的是该方法的下一层调用。
- 行号:本地方法的代码所在行数。
-
扩展信息:
- 参数:调用的输入参数。
- SQL:数据库调用的SQL语句。
- 异常:抛错的信息。
- 时间轴:本地调用链路每次方法调用的时间分布。
|
线程剖析 |
线程粒度的CPU耗时和每类线程数量的统计,详情请参见线程分析。
|
时间轴 |
各服务间调用链路的耗时,以及相对于整条调用链路的耗时分布。 |
验证结果
您可按照以下步骤验证自定义参数提取规则是否生效。
- 在调用链路页签的服务名称列,将鼠标指针悬浮于服务名称上。
- 在浮层的Tags区域查看是否有自定义的参数。

如果有您自定义的业务参数,则说明自定义参数提取规则生效。
在文档使用中是否遇到以下问题
更多建议
匿名提交