监控平台总结之面试常问答案

思路

延伸的面试题总结及答案:

1.说说前端监控平台/监控SDK架构设计和难点亮点?

架构设计
数据采集层:

SDK: 在前端集成的 SDK 负责采集数据,包括性能指标、用户行为、错误日志等。
数据收集: 实现高效的数据采集机制,支持实时数据传输,可能使用 fetch、XHR 或 Beacon 等 API。


数据处理层:

数据传输: 数据通过 HTTP 或 WebSocket 发送到服务器,确保传输的可靠性和安全性。
数据存储: 数据存储在数据库中,例如关系型数据库(MySQL)或 NoSQL 数据库(MongoDB)根据需要选择。


数据分析层(需要借助大数据,目前不需要提):

数据处理: 对采集到的数据进行处理和分析,生成报告和图表,使用数据处理工具或 ETL 工具(如 Apache Kafka、Spark)。
异常检测: 实现自动化的异常检测和警报系统,监控系统的健康状态。


展示层:

仪表盘: 提供可视化界面展示数据,如实时性能监控、错误日志、用户行为分析等。
报表: 生成定制化的报告,支持不同维度的分析(时间、用户、设备等)。

2.统计了哪些数据?为什么不用开源的平台,开源的平台有哪些?

目前:

性能指标:fp,fcp,lcp,静态资源加载,页面加载时间,请求响应时间(fetch,xhr)

错误异常:img图片资源错误,img/css/js资源加载错误,js语法错误

用户行为:点击事件,pv,用户路径变化
 

可拓展:

性能指标:内存使用,CPU使用

错误异常:网络错误

用户行为:表单提交(个人觉得不用)

网络性能:请求次数,请求大小,网络延迟

用户环境:浏览器操作系统,屏幕分辨率,网络类型

系统健康:资源使用情况,服务状态

3.Javascript错误如何统计的?框架的错误如何统计的?

js的错误大致分为3种,js资源加载错误,正常js语法错误,Promise中没有catch的错误,

一般会用addEventListener:error捕获资源加载错误,用window.onerror捕获js错误,Promise的catch的错误,前两种捕获不了,需要用unhandledrejection监听事件去捕获

4.SDK如何实现会话级别的错误上报去重?丢了怎么办?

// 错误信息,错误行号,错误列号,错误文件, uuid,可以用随机数的toString(36),生成唯一id,绝大概率去保证唯一,丢了也没关系,丢10条20条,不会影响数据结果,面试需注意

5.SDK采用什么样的上报策略?如何实现异常隔离?

 一般是三种情况,img上传,xhr(ajax上传),sendBeacon,推荐第三种,优先使用sendbeacon,因为会在cpu空余时间,requestIdleCallBack上传,如果浏览器window.navigate不存在这个方法,最好选用img上传,体积最小,性能最好。

异常隔离:sdk错误怎么办?加try catch,一旦sdk加载出现错误,直接catch出去,否则重写方法的错误会导致业务的崩溃

6.平台数据如何进行削峰限流?

削峰限流:sdk在接入某个大流量的系统, 利于秒杀,或者ka商家重点页面,错误增多会影响页面性能,此时要进行限流,可以设置采样率,做流量整形,粗暴的方法,就是Math.random() < 0.5

计数器算法:计数器算法就是单位时间内入库数量固定,后面的数据全部丢弃;缺点是无法应对恶意用户;漏桶算法:漏桶算法就是系统以固有的速率处理请求,当请求太多超过了桶的容量时,请求就会被丢弃;缺点是漏桶算法对于骤增的流量来说缺乏效率;
令牌桶算法:令牌桶算法就是系统会以恒定的速度往固定容量的桶里放入令牌,当请求需要被处理时就会从桶里取一个令牌,当没有令牌可取的时候就会据拒绝服务;

7.用户行为记录栈

有时候,我们需要去获取用户的一个行为追踪记录(比如说:出现了一个线上异常,我们要追溯异常如何发生,也就是说,用户自从打开我们的网站后,看了什么,点击了什么)

一般来说,我们谈论的用户行为记录栈,要追踪的事件包括:

  • 路由跳转行为 
  • 点击行为
  • ajax请求行为
  • 用户自定义事件

捕获上面的四个行为,只需要在上述四个时间的代码中做数据捕获就可以了

8.页面停留时长怎么统计

hash history

9.怎么捕获跨域问题

window.addEventListener('error', () => {console.log('error 跨域', error)
}, true)// 当前页面加载其他域的资源
<script src="http://www.baidu.com/xxxxx">

解决方法:

前端 script 加 crossorigin, 后端配置 Access-Control-Allow-Origin

如果不能修改服务端的请求头,可以考虑通过try/catch包含该js的用法,将错误抛出

10.sourceMap错误的信息sourcemap的处理?

监控大屏,监控告警规则

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/53400.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分类任务实现模型集成代码模版

分类任务实现模型&#xff08;投票式&#xff09;集成代码模版 简介 本实验使用上一博客的深度学习分类模型训练代码模板-CSDN博客&#xff0c;自定义投票式集成&#xff0c;手动实现模型集成&#xff08;投票法&#xff09;的代码。最后通过tensorboard进行可视化&#xff0…

(.NetCode)薪资水平在18k-20K之间面试题

1、您在.NET Core后端开发中通常使用哪些设计模式&#xff1f; 在.NET Core后端开发中&#xff0c;我经常使用单例(Singleton)、工厂(Factory)、观察者(Observer)和依赖注入(Dependency Injection)等设计模式。例如&#xff0c;单例模式用于确保全局只存在一个实例&#xff0c…

傅里叶变换家族

禹晶、肖创柏、廖庆敏《数字图像处理&#xff08;面向新工科的电工电子信息基础课程系列教材&#xff09;》 禹晶、肖创柏、廖庆敏《数字图像处理》资源二维码

java设计模式(行为型模式:状态模式、观察者模式、中介者模式、迭代器模式、访问者模式、备忘录模式、解释器模式)

6&#xff0c;行为型模式 6.5 状态模式 6.5.1 概述 【例】通过按钮来控制一个电梯的状态&#xff0c;一个电梯有开门状态&#xff0c;关门状态&#xff0c;停止状态&#xff0c;运行状态。每一种状态改变&#xff0c;都有可能要根据其他状态来更新处理。例如&#xff0c;如果…

华为OD机试 - 数组合并(Python/JS/C/C++ 2024 D卷 100分)

一、题目描述 现在有多组整数数组,需要将他们合并成一个新的数组。 合并规则从每个数组里按顺序取出固定长度的内容,合并到新的数组,取完的内容会删除掉。 如果改行不足固定长度,或者已经为空,则直接取出剩余部分的内容放到新的数组中继续下一行。 二、输入描述 第一…

C++学习笔记——day 1

1. 不能用非const修饰的指针指向const修饰的变量 2. c中的四种cast &#xff08;1&#xff09;static_cast 兼容类型之间的进行显式转换 &#xff08;1&#xff09;基本数据类型转化&#xff08;int 转 double&#xff09; &#xff08;2&#xff09;类层次结构中上行转换&am…

太细了有手就行,SpringCloud Alibaba+Nacos+Dubbo整合

SpringCloud AlibabaNacosDubbo&#xff0c;文末有完整项目代码链接 前言一、这几者之间关系二、准备工作1.Nacos2.SpringCloud Alibaba4.SpringCloud5.Dubbo项目中层级关系 三、代码调用逻辑1.dubbo-api模块2.account-api模块3.api-service模块4.逻辑梳理 四、Maven和配置1.pa…

尽快更新!Zyxel 路由器曝出 OS 命令注入漏洞,影响多个版本

近日&#xff0c;Zyxel 发布安全更新&#xff0c;以解决影响其多款商用路由器的关键漏洞&#xff0c;该漏洞可能允许未经认证的攻击者执行操作系统命令注入。 该漏洞被追踪为 CVE-2024-7261&#xff0c;CVSS v3 得分为 9.8&#xff0c;是一个输入验证故障&#xff0c;由用户提…

了解PD快充协议和QC快充协议

PD快充协议的实现依赖充电器与设备之间的通信协议&#xff0c;这种通信协议确保了充电器能够提供设备所需要的特定电压和电流。在快充技术中快充协议起到关键角色。 现在市面上最常见的快充协议有PD、QC、华为FCP/SCP、三星AFC协议 、VOOC闪充。PD和QC 协议属于公用协议 。华…

Beyond Compare4.2.4 64位OS最新密钥

亲测可用&#xff0c;拿来主义 6TTCoWi2N0Pvo2HGfqUpZfuaMhtf2zX0u1OuNeqTYkKKWh-CKwBWkPUG3CiAQ2q4MNPbf0t8gmPdoVyw64aU-zuQQt9d7Q6EcJT42by0Ekxfq3QLs40HRD3h5OLjFGpxClodRnTCNoAM39xsWm2aHZI0Z9KdXzLo1fo1OdNlaptoK17SsxNK-7JUtTztLwBM8BUwWA24ghoeLhFq39FMPpcdU7RttFJoos…

CSS 高级区块效果——WEB开发系列25

CSS提供了多种工具和属性&#xff0c;使我们能够创建视觉上引人注目的效果。今天我们继续将深入了解几种高级CSS效果&#xff1a;盒子阴影、滤镜、混合模式和文本背景裁剪&#xff0c;提升网页设计的质感和深度。 一、盒子阴影&#xff08;Box Shadow&#xff09; 对于盒子元素…

学会这2招,让你轻松提取长视频中的文案!

在当今数字化时代&#xff0c;短视频已成为备受欢迎的内容形式&#xff0c;众多品牌和营销人员借助短视频推广宣传产品。 短视频文案作为短视频内容的关键部分&#xff0c;能够在极短时间内向受众传达品牌信息和产品特点。 不过&#xff0c;短视频文案的提取和创作确实极具挑…

Python精选200Tips:81-90

No rules, no standard 081 缩进082 行长度083 空行084 空格085 文档字符串086 导入顺序087 命名规范088 类型提示089 注释090 主程序入口过了这一关,就可以享受用Python创造世界的感觉 运行系统:macOS Sonoma 14.6.1 Python编译器:PyCharm 2024.1.4 (Community Edition) P…

ceph中pg与pool关系

在Ceph中&#xff0c;PG&#xff08;Placement Group&#xff09;和Pool是非常重要的概念&#xff0c;它们在Ceph的存储架构中扮演着关键角色。理解这些概念有助于更好地管理和优化Ceph集群。下面详细介绍这两个概念及其相互关系。 Pool&#xff08;存储池&#xff09; 定义&am…

FFmpeg的日志系统(ubuntu 环境)

1. 新建.c文件 vim ffmpeg_log.c2. 输入文本 #include<stdio.h> #include<libavutil/log.h> int main() {av_log_set_level(AV_LOG_DEBUG);av_log(NULL,AV_LOG_INFO,"hello world");return 0; }当log level < AV_LOG_DEBUG 都可以印出来 #define A…

【重学 MySQL】十二、SQL 语言的规则与规范

【重学 MySQL】十二、SQL 语言的规则与规范 基本规则注释语法规则命名规则基本命名规则具体命名规范其他注意事项 数据导入指令 SQL&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;的规则与规范是确保SQL语句能够正确执行、提高代码可读性和可维…

【2024数模国赛赛题思路公开】国赛C题第三套思路丨无偿自提

C题参考思路 C题是一道优化问题&#xff0c;目的是根据题目所给的种植限制条件以及附件数据建立目标条件优化模型&#xff0c;优化种植策略&#xff0c;有利于方便田间管理&#xff0c;提高生产效益&#xff0c;减少各种不确定因素可能造成的种植风险。整个题目最重要的问题在…

Java框架第四课(对Spring的补充Spring web)

目录 一.Spring web的认识 (1)Spring Web概念 (2)Spring web的特点 (3)Springweb运行的流程 (4)Springweb运行的流程图 二.搭建Spring web 三.自定义处理器类搭建 (1)处理器类配置 (2)处理器类接受请求 (3)获得请求数据 四.拦截器 (1)关于拦截器&#xff1a; (2)拦截器的…

13、Flink SQL 的 时间属性 介绍

时间属性 a)概述 Flink 可以基于几种不同的 时间 概念来处理数据。 处理时间 指的是执行具体操作时的机器时间(例如 Java的 System.currentTimeMillis()) )事件时间 指的是数据本身携带的时间,这个时间是在事件产生时的时间。摄入时间 指的是数据进入 Flink 的时间;在系…

Axure中继器动态数据图表制作

在Axure RP中&#xff0c;中继器&#xff08;Repeater&#xff09;是一个非常强大的工具&#xff0c;它允许设计者动态地展示和交互数据&#xff0c;进而创建各种复杂的数据可视化图表&#xff0c;如柱状图、条形图、堆叠图、散点图和对比图。以下将详细介绍如何使用中继器来设…