Go 业务参数提取

更新时间:
复制 MD 格式

ARMS 支持无侵入地提取 Go 应用调用链路的业务参数,将请求和响应的指定参数写入 Span Attributes,帮助快速定位问题根因和追踪请求信息。通过控制台配置业务参数提取规则,可按需提取参数并配置自定义错误。

前提条件

  • 已为 Go 应用接入 ARMS Go探针。

  • Go 探针版本不低于 2.10.2版本。

支持范围说明

业务参数提取规则对框架和实际用法有一定要求。Go 版支持的参数提取类型和来源如下:

参数提取类型

参数提取来源

支持的框架

备注

HTTP 服务端请求

Header、Query Parameter

http 协议相关框架

-

HTTP 服务端响应

Header、Body

http 协议相关框架

Body 需为 JSON 格式。

HTTP 服务端响应

Body

http 协议相关框架

Body 需为 JSON 格式。

HTTP 客户端请求

Header、Body

http 协议相关框架

Body 需为 JSON 格式,如果 body 长度比较长,修改一下提取值长度限制。

HTTP 客户端响应

Header

http 协议相关框架

-

如果需要提取的参数来源不在上述支持范围内,可通过引入 OpenTelemetry SDK 添加自定义埋点,将业务参数作为 Attributes 写入 Span。

功能入口

  1. 登录 ARMS 控制台。

  2. 在左侧导航栏选择应用监控 > 应用列表,在顶部菜单栏选择目标地域,然后单击目标 Go 应用的名称。

  3. 在左侧导航栏单击应用设置,然后单击自定义参数页签。

业务参数提取规则区域,可以创建、查看和修改当前应用的业务参数提取规则。ARMS 探针会动态识别规则变化,并依照所有已启用的规则将业务参数提取出来。在自定义错误设置区域,可以配置自定义错误规则,对提取出来的业务参数值进行过滤。

新增提取规则

业务参数提取规则区域,按以下步骤创建提取规则:

  1. 单击新增规则

  2. 填写规则名称Attribute 名称

  3. 选择参数提取类型,并配置生效接口,指定规则作用的接口范围。

  4. 参数提取规则区域,添加参数来源并配置参数处理步骤。支持配置多个参数来源和处理步骤,若多个来源均可提取到参数,排序在前的优先级更高。

  5. 设置是否启用,然后单击保存

重要

首次创建提取规则需要重启应用使功能生效。后续添加规则无需重启,预计 1~2 分钟后开始生效。

规则创建完成并启用后将实时下发至客户端探针侧。业务参数被提取后将记录至对应调用链 Span 的 Attributes,可在调用链分析页面按需筛选查询。Attribute 名称默认具有 biz. 前缀,不允许重复。

规则配置说明

参数

说明

规则名称

该条规则的可读名称。

Attribute 名称

提取值对应的 Span Attribute 名称,默认以 biz. 开头,后续由多个单词组成,每个单词仅允许由大小写字母、数字、短划线(-)、下划线(_)组成,单词之间必须以一个半角句号(.)分隔。最多允许 10 个单词。

参数提取类型

需要提取的参数类型。

生效接口

规则作用的接口范围,探针仅对匹配成功的接口提取相应参数。

参数提取规则

定义待提取参数所在的实际载体来源和提取后的处理方式,支持配置多个参数来源和提取步骤。若多个来源均可提取到参数,排序在前的参数提取步骤优先级高于后者。

参数来源

待提取参数所在的实际载体来源。

参数处理步骤

流式的参数处理步骤,用于逐步解析参数载体并提取最终的参数值。可添加多条参数处理步骤,前者的解析结果会成为后者的输入。如果不添加处理步骤,则提取到的参数值为载体对象的 JSON 文本。

是否启用

该条规则是否启用。

参数处理方式

Go 版支持的参数处理方式如下:

参数处理方式

输入

输出

说明

JsonPath

JSON 字符串

String

支持点表示法的 JsonPath 语句。示例:$.data.code

Regex

String

String

支持基于命名分组的正则表达式语句,待提取的子串对应名为 res 的分组。示例:.*from:(?<res>[a-z]+).*

生效验证

参数提取规则配置完成后即可生效(首次创建规则除外,需重启应用后生效)。在调用链分析页面查看相关调用链,如果对应接口的 Span Attributes 已有自定义 Attribute 被写入,说明提取规则生效。

  1. 找到新增规则对应的 Attribute 名称。

  2. 调用链分析页面添加 attributes.$attributesName 作为查询条件,过滤相关 Span。

  3. 单击任意一条 Trace,在对应的 Span 下查看自定义的 Attributes。

管理规则

  • 启用/禁用规则:在目标规则右侧设置是否启用开关。

  • 编辑和删除:在目标规则右侧单击编辑删除,修改或删除对应规则。

  • 批量删除:选中需要删除的提取规则,单击批量删除

  • 批量复制:选中需要复制的提取规则,单击批量复制至其他应用,打开弹窗后选择复制到其他所有应用或指定应用。

    • 批量复制至其他应用需要 1~2 分钟时间生效。

    • 该功能仅复制参数提取规则,配套的自定义错误不会被复制到目标应用。

    • 参数提取规则要求 Attribute 名称唯一,如果目标应用已存在同样的 Attribute 名称,则该条规则不会被复制到目标应用。

常见问题

什么情况下会导致参数提取失败?

  • 参数提取类型或来源不在支持范围内,请参见支持范围说明确认当前框架和来源是否支持。

  • 参数处理步骤的语法配置有误,或输入类型与处理方式的要求不匹配。

  • Go 探针版本过低,不支持业务参数提取功能。

  • 生效接口的匹配规则配置有误,导致目标接口未被匹配。

Go 版目前不支持的业务参数来源如何提取?

可通过引入 OpenTelemetry SDK 为 Go 应用添加自定义埋点,将业务参数作为 Attributes 写入 Span。