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

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

相关文章

通过prometheus监控Tomcat运行状态的操作流程

《通过prometheus监控Tomcat运行状态的操作流程》文章介绍了如何安装和配置Tomcat,并使用Prometheus和TomcatExporter来监控Tomcat的运行状态,文章详细讲解了... 目录Tomcat安装配置以及prometheus监控Tomcat一. 安装并配置tomcat1、安装

Python中连接不同数据库的方法总结

《Python中连接不同数据库的方法总结》在数据驱动的现代应用开发中,Python凭借其丰富的库和强大的生态系统,成为连接各种数据库的理想编程语言,下面我们就来看看如何使用Python实现连接常用的几... 目录一、连接mysql数据库二、连接PostgreSQL数据库三、连接SQLite数据库四、连接Mo

Git提交代码详细流程及问题总结

《Git提交代码详细流程及问题总结》:本文主要介绍Git的三大分区,分别是工作区、暂存区和版本库,并详细描述了提交、推送、拉取代码和合并分支的流程,文中通过代码介绍的非常详解,需要的朋友可以参考下... 目录1.git 三大分区2.Git提交、推送、拉取代码、合并分支详细流程3.问题总结4.git push

C#实现系统信息监控与获取功能

《C#实现系统信息监控与获取功能》在C#开发的众多应用场景中,获取系统信息以及监控用户操作有着广泛的用途,比如在系统性能优化工具中,需要实时读取CPU、GPU资源信息,本文将详细介绍如何使用C#来实现... 目录前言一、C# 监控键盘1. 原理与实现思路2. 代码实现二、读取 CPU、GPU 资源信息1.

Kubernetes常用命令大全近期总结

《Kubernetes常用命令大全近期总结》Kubernetes是用于大规模部署和管理这些容器的开源软件-在希腊语中,这个词还有“舵手”或“飞行员”的意思,使用Kubernetes(有时被称为“... 目录前言Kubernetes 的工作原理为什么要使用 Kubernetes?Kubernetes常用命令总

使用zabbix进行监控网络设备流量

《使用zabbix进行监控网络设备流量》这篇文章主要为大家详细介绍了如何使用zabbix进行监控网络设备流量,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装zabbix配置ENSP环境配置zabbix实行监控交换机测试一台liunx服务器,这里使用的为Ubuntu22.04(

Python中实现进度条的多种方法总结

《Python中实现进度条的多种方法总结》在Python编程中,进度条是一个非常有用的功能,它能让用户直观地了解任务的进度,提升用户体验,本文将介绍几种在Python中实现进度条的常用方法,并通过代码... 目录一、简单的打印方式二、使用tqdm库三、使用alive-progress库四、使用progres

springboot健康检查监控全过程

《springboot健康检查监控全过程》文章介绍了SpringBoot如何使用Actuator和Micrometer进行健康检查和监控,通过配置和自定义健康指示器,开发者可以实时监控应用组件的状态,... 目录1. 引言重要性2. 配置Spring Boot ActuatorSpring Boot Act

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也