ARMS用户小程序 接入前端监控,有pv 数据,但是没有 api 数据是什么原因呢? https://help.aliyun.com/zh/arms/user-experience-monitoring/access-applet?spm=a2c4g.11186623.0.0.bd5a3c99FbbJis
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在ARMS前端监控中,如果小程序接入后能够正常上报PV(页面访问量)数据,但没有API数据,可能是由于以下原因导致的。以下是详细的原因分析及解决方案:
ARMS前端监控默认会自动捕获并上报API请求数据。如果未开启API自动上报功能,则不会生成API相关的日志。
确保在初始化SDK时未禁用API自动上报功能。如果使用了disableHook: true
参数,则需要手动调用api()
方法上报API数据。
检查初始化代码:
const Monitor = AlipayLogger.init({
pid: 'xxx',
region: "cn",
disableHook: false // 确保未禁用自动上报
});
手动上报API数据(如果禁用了自动上报):
Monitor.api({
url: 'your_api_url', // API请求的URL
method: 'POST', // 请求方法
status: 200, // HTTP状态码
duration: 100 // 请求耗时(单位:毫秒)
});
ARMS前端监控提供了apiHelper
或ignoreApis
配置项,用于过滤不需要监控的API请求。如果配置不当,可能会导致部分或全部API请求被忽略。
检查是否配置了apiHelper
或ignoreApis
,并确认这些规则未误过滤掉需要监控的API请求。
示例:检查ignoreApis
配置:
__bl.setConfig({
ignore: {
ignoreApis: [
'api1', // 被忽略的API
/^random/, // 匹配正则表达式的API
function(str) { // 自定义过滤逻辑
if (str && str.indexOf('api3') >= 0) return true; // 不上报
return false; // 上报
}
]
}
});
建议:如果未明确需要过滤某些API,可以清空ignoreApis
配置。
如果API请求与当前应用域名非同源(即跨域),可能会因浏览器的安全策略导致API请求未被捕获。
确保API请求与当前应用域名同源。如果确实存在跨域情况,请参考以下步骤解决:
确认前后端链路追踪配置:
enableLinkTrace: true
。<script>
!(function(c,b,d,a){
c[a]||(c[a]={});
c[a].config={
pid:"xxx",
imgUrl:"https://arms-retcode.aliyuncs.com/r.png?",
enableLinkTrace: true // 开启前后端链路追踪
};
with(b)with(body)with(insertBefore(createElement("script"),firstChild))setAttribute("crossorigin","",src=d)
})(window,document,"https://sdk.rum.aliyuncs.com/v1/bl.js","__bl");
</script>
检查跨域请求的CORS配置:
Access-Control-Allow-Origin
头信息。ARMS前端监控仅会上报符合特定条件的API请求。例如,默认情况下,仅会上报HTTP状态码为200的请求。如果API请求的状态码不符合条件,则不会被上报。
检查API请求的状态码和响应内容,确保其符合上报条件。如果需要自定义上报条件,可以通过parseResponse
配置项修改解析逻辑。
parseResponse
:
__bl.setConfig({
parseResponse: function(res) {
if (!res || typeof res !== 'object') return {};
var code = res.code;
var msg = res.msg || res.message || res.subMsg || res.errorMsg || res.ret || res.errorResponse || '';
if (typeof msg === 'object') {
code = code || msg.code;
msg = msg.msg || msg.message || msg.info || msg.ret || JSON.stringify(msg);
}
return {msg: msg, code: code, success: true};
}
});
ARMS前端监控支持日志采样功能,通过sample
参数控制性能日志和成功API日志的采样比例。如果采样比例设置过低,可能导致部分API数据未被上报。
检查sample
参数的配置值,确保其设置合理。默认值为1
,表示不进行采样。
__bl.setConfig({
sample: 1 // 设置为1,表示100%采样
});
如果ARMS前端监控中仅有PV数据而无API数据,建议按照以下步骤逐一排查: 1. 检查是否禁用了API自动上报功能。 2. 确认apiHelper
或ignoreApis
配置未误过滤API请求。 3. 检查是否存在跨域问题,并正确配置前后端链路追踪。 4. 确保API请求符合上报条件,并根据需要自定义解析逻辑。 5. 检查日志采样配置,确保采样比例合理。
通过以上步骤,通常可以定位并解决API数据缺失的问题。如果问题仍未解决,建议联系阿里云技术支持以获取进一步帮助。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。
云原生可观测基于Prometheus、Grafana 、OpenTelemetry 等核心产品, 形成指标、链路存储分析、异构数据源集成的数据层, 通过标准PromQL和SQL提供大盘展示、告警与探索能力。
你好,我是AI助理
可以解答问题、推荐解决方案等