RUM模糊查询用法说明

ARMS会将用户体验监控数据写入用户名下的日志服务SLS进行存储,因此监控详情页面上所有图表、列表数据均需要通过SLS的查询语法来查询。本文介绍如何使用RUM的模糊查询功能。

模糊查询原理介绍

用户体验监控数据在SLS中的存储路径请参见ARMS可观测数据存储概述。您可以在监控详情页面通过SLS的查询语法来筛选监控数据,也可以基于已存储的全量数据进行二次开发。

查询语句和分析语句以|分割。其格式为:

查询语句|分析语句

查询语句可单独使用,分析语句必须与查询语句一起使用。即分析功能是基于查询结果或全量数据进行的。

重要
  • 查询语句中建议不超过30个条件。

  • 分析语句中无需填写FROM子句和WHERE子句,默认分析当前Logstore中的数据。分析语句不支持使用offset,不区分大小写,末尾无需加分号。

SLS实现模糊查询的方式有以下两种:

  • 通过查询语法实现:在查询语句中添加模糊查询的条件。

  • 通过SQL分析语法实现:在SQL Where条件中添加模糊查询的条件。

但由于RUM已预先定义过监控详情页面上的图表、列表对应的数据格式,因此目前RUM仅支持通过第一种方式查询,即在查询语句中添加模糊查询的筛选条件,不支持用户自定义SQL分析语句。

key: value*(用户输入的模糊匹配条件)| SQL(系统预定义,不支持修改)

模糊查询使用限制

  • 仅支持前缀匹配,首字符必须填写,不支持后缀匹配方式(如*abc),但是支持多个中间位置模糊匹配(如a*bc*)。

  • 匹配的文本长度不超过48个字符,超出将无法匹配到数据。

  • 模糊匹配的文本中,不能带有特殊字符(例如:),如果包含,需要将特殊字符替换为?*

  • 需要匹配的文本中如果包含了?&#= 这类分词符,匹配时只能匹配分词符前面或后面的部分,不能跨分词匹配,如果需要跨分词匹配,则需拆分为多个查询条件,详见下方的示例4

模糊查询使用示例

示例

Explorer模块

查询需求

查询语句

说明

示例1

页面访问

筛选路径以/cart开头的页面访问记录。

"view.name" : /cart*

使用前缀匹配,添加*代表匹配任意字符。

示例2

API请求

筛选URLhttp://120.55.XX.XX/images开头的API请求。

"resource.url" : http?//120.55.XX.XX/images/*

SLS查询语句不允许带有:,因此使用代替。

示例3

API请求

筛选URL中包含 www.example.com域名的API请求。

"resource.url" : http*www.example.com*

由于RUM的模糊匹配目前仅支持前缀匹配,因此需要将域名的前缀加上,否则无法查询数据。

示例4

API请求

筛选URL中包含 www.example.com/test?abc=123API请求。

"resource.url" : http?//www.example.com/test* and "resource.url" : abc* and "resource.url" : 123*

由于?=均为分词符,所以在匹配的时候,需要拆分为3个部分,分别做模糊匹配。