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

2024-09-07 08:52

本文主要是介绍监控平台总结之面试常问答案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

思路

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

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.chinasem.cn/article/1144621

相关文章

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

JVisualVM之Java性能监控与调优利器详解

《JVisualVM之Java性能监控与调优利器详解》本文将详细介绍JVisualVM的使用方法,并结合实际案例展示如何利用它进行性能调优,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1. JVisualVM简介2. JVisualVM的安装与启动2.1 启动JVisualVM2

MySQL基本查询示例总结

《MySQL基本查询示例总结》:本文主要介绍MySQL基本查询示例总结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Create插入替换Retrieve(读取)select(确定列)where条件(确定行)null查询order by语句li

使用Python实现实时金价监控并自动提醒功能

《使用Python实现实时金价监控并自动提醒功能》在日常投资中,很多朋友喜欢在一些平台买点黄金,低买高卖赚点小差价,但黄金价格实时波动频繁,总是盯着手机太累了,于是我用Python写了一个实时金价监控... 目录工具能干啥?手把手教你用1、先装好这些"食材"2、代码实现讲解1. 用户输入参数2. 设置无头浏

Linux区分SSD和机械硬盘的方法总结

《Linux区分SSD和机械硬盘的方法总结》在Linux系统管理中,了解存储设备的类型和特性是至关重要的,不同的存储介质(如固态硬盘SSD和机械硬盘HDD)在性能、可靠性和适用场景上有着显著差异,本文... 目录一、lsblk 命令简介基本用法二、识别磁盘类型的关键参数:ROTA查询 ROTA 参数ROTA

在.NET平台使用C#为PDF添加各种类型的表单域的方法

《在.NET平台使用C#为PDF添加各种类型的表单域的方法》在日常办公系统开发中,涉及PDF处理相关的开发时,生成可填写的PDF表单是一种常见需求,与静态PDF不同,带有**表单域的文档支持用户直接在... 目录引言使用 PdfTextBoxField 添加文本输入域使用 PdfComboBoxField

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

Python实现图片分割的多种方法总结

《Python实现图片分割的多种方法总结》图片分割是图像处理中的一个重要任务,它的目标是将图像划分为多个区域或者对象,本文为大家整理了一些常用的分割方法,大家可以根据需求自行选择... 目录1. 基于传统图像处理的分割方法(1) 使用固定阈值分割图片(2) 自适应阈值分割(3) 使用图像边缘检测分割(4)