本文解答了关于前端监控的常见问题。
计费相关
使用相关
为什么有些监控页面或API名称中出现了星号(*)?
ARMS前端监控的页面统计是以实际打开的页面URL为基础,对各个维度进行统计。监控页面或API名称中的星号(*)并不是真实页面URL的一部分,而是表示这是经过URL收敛后的结果。换言之,它表示这不是一个具体的URL,而是一些相似URL的集合。
URL收敛算法说明
问题:“变量”会导致同类URL发散成多个,因而难以监控和分析。
目标:合并同类URL,用星号(*)代替不断变化的“变量”。
方案:采用我们自研的URL收敛算法,在尽可能保留语义信息的前提下,合并同类URL,减少URL总数。主要分为以下两步。
聚类:将相似URL归纳为一组。
“变量”识别:提取同组URL中不断变化的“变量”,并以星号(*)代替。
收敛过程如下图所示。
解决方案
关闭URL收敛的具体操作,请参考urlHelper。
为什么页面访问量列表和页面访问速度列表不一致?
这是因为您的应用是SPA( Single-Page Application,单页面应用),且开启了SPA自动解析。在SPA的应用场景下,页面访问量和页面访问速度的统计方法如下。
页面访问量:触发hashchange事件后会自动上报PV,以统计该Hash值对应页面的PV情况。所以在查看SPA应用的页面访问量列表时,可以查看对应的Hash页面的具体PV。
页面访问速度:因为SPA应用切换Hash值后,页面的访问速度不会变化,所以访问速度的统计不以Hash值为维度,这样不仅可以减少不必要的上报量,而且还可以清晰了解页面的性能情况。
为什么API日志中没有生成TraceId,导致无法跳转至对应的应用监控?
- 登录ARMS控制台。
- 在左侧导航栏选择 ,然后单击目标应用名称。
在左侧导航栏中选择 。
请在接入步骤页签检查您的ARMS探针配置项是否选中与应用监控关联。若未选中,请选中后,再重新将ARMS探针接入前端应用。
检查API日志中是否生成TraceId。若仍未生成TraceId,则执行步骤5。
检查您的页面请求和API请求的域名是否一致。为防止因跨域名验证导致API请求失败,因此若存在跨域名访问的情况,则不能正常生成TraceId。
解决方案,请参考API与当前应用域名非同源。
为什么在诊断JS错误时,会显示Source Map文件错误?
请确保文件后缀名为.js.map。
请确保账号有ARMS的写入权限,如果账号没有权限,请联系账号管理员。
用户控制台的设置和setConfig的关系是什么?
控制台的设置仅可以帮助您快速生成相应的配置代码,生成的代码仅在发布后生效,而修改setConfig是直接生效的。
此外,控制台的设置只能在接入时使用,接入完成后,您需要通过setConfig来修改配置。
SDK中应该如何配置环境和版本号?
您可以通过配置release参数来区分版本号,更多信息,请参见release。您也可以通过配置environment来区分不同环境,更多信息,请参见environment。
prod表示线上环境。
gray表示灰度环境。
pre表示预发环境。
daily表示日常环境。
local表示本地环境。
如何查看配置的版本号?
- 登录ARMS控制台。
- 在左侧导航栏选择 ,然后单击目标应用名称。
在左侧导航栏中选择 。
日志的版本号显示在日志列表区域的版本号列内。
您也可以在菜单栏内按照环境和版本筛选日志。只有在PV日志设置完成版本号后,才可以使用按照版本号筛选日志功能。
如何查看用户的页面停留时间?
- 登录ARMS控制台。
- 在左侧导航栏选择 ,然后单击目标应用名称。
- 在左侧导航栏选择 。
- 在会话列表中单击目标会话的会话ID,查看会话追踪详情页面。
将光标放置在访问时间轴列内的时间轴区域上,即可查看页面停留时间。
如何查看ARMS的前端自定义性能指标?
- 登录ARMS控制台。
- 在左侧导航栏选择 ,然后单击目标应用名称。
在左侧导航栏中选择 。
自定义性能指标展示在页面访问速度排行区域中。
ARMS配置未生效怎么处理?
原因可能是浏览器缓存未更新。您可以先在导航栏内选择访问明细后,切换版本号为最新配置的版本号并查看趋势图。如果未配置版本号,可以在SDK中配置release参数,请参见release。发布完成后,请观察最新版本是否符合预期。
为什么小程序JS Error没有上报?
小程序JS Error没有上报可能是因为在async方法下,信息被小程序底层的try catch捕获,导致错误信息上传失败。您可以尝试手动上报错误信息,请参见API参考。
可以监听console.error的JS Error吗?
在浏览器中,针对满足JS Error格式的错误信息,浏览器会静默上报。
在小程序端,您可尝试手动上报错误信息,请参见API参考。
在Weex环境中,小程序设置的UID为什么没生效?
如果未调用setConfig方法,请检查初始化配置时是否配置UID,如果缺失请补全。
如果调用了setConfig方法,请在setConfig中重新配置UID。
日志的保存时效是多长?
基础版的日志的保存时效为7天。
专家版的日志的保存时效为30天。
试用期创建的站点可以在开通专家版之后继续使用吗?
在试用期到期之后的15天内,站点将因为欠费被停用,您可以尝试重新启动应用。
在试用期到期之后的15天后,出于节约计算资源和存储资源的考虑,超出试用时间未开通专业版的站点将被删除,相关的资源也会释放,这部分数据是无法找回的。
ARMS应用版本和宿主版本分别是什么?
应用版本是当前线上项目的版本号,可以通过配置SDK的release字段来配置,请参见release。
宿主版本是SDK自动获取的,是当前项目所依附的App的版本号,目前因为没有对应宿主App版本的解析方案,只能解析到淘宝、支付宝或微信。
为什么控制台中不同模块的同一个页面的访问量差别大?
访问速度页面中:访问量=性能日志*Sample
维度页面中:访问量=PV日志
静默上报的性能日志只有在页面Onload之后才上报一次,即每次刷新页面,只会有一次性能日志上报。
开启单页应用模式后,每次切换路由都会有PV日志上报,即单页应用中,性能日志在量级上远远小于PV日志,导致对应的访问量差异大。
为什么duration会小于connect download?
ARMS资源加载的性能数据是从performance.getEntriesByType('resource')
中获取的,当获取页面资源时间详情有跨域限制时,默认情况下,跨域资源的性能数据中以下字段从performance.getEntriesByType('resource')
中获取的值为0。
redirectStart
redirectEnd
domainLookupStart
domainLookupEnd
connectStart
connectEnd
secureConnectionStart
requestStart
responseStart
部分时间属性由于计算方式中涉及以上字段,导致不准或者异常,例如:connect download:responseEnd - responseStart
,由于responseStart的时间戳是0,导致connect download大于duration。
对于您自用的CDN资源,设置响应头Timing-Allow-Origin允许获取资源时间,可以解决上述问题。
对于第三方资源,建议此时以duration的值为主参考。
如果调用__bl.performance()方法时不确定SDK是否已加载完成怎么办?
请参见SPA页面上报。