azl397985856 / real-time-debug

前面讲了前端监控,我们可以通过监控体系收集运行信息,同时讲解了前端远程调试,那么两者是否可以结合起来呢?

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

real-time-debug

前面讲了前端监控,我们可以通过监控体系收集运行信息,同时讲解了前端远程调试,那么两者是否可以结合起来呢?

前端监控

有了前端监控,理论上我们已经能够收集用户的信息,包括报错信息,性能信息,心跳信息。 这就为我们发现问题,定位问题,解决问题提供了铺垫。

前端远程调试

前端远程调试可以帮助我们调试远程的设备。 我们可以在远程服务器上还原案发现场,然后通过调试拥有案发现场的云端设备来定位并解决问题。这里有两个条件,分别是 远程服务器和云端设备。

远程服务器指的是部署有远程调试框架的服务器。

云端设备指的是用于还原用户设备的真实设备或虚拟设备,比如PC和各种型号的手机。

Combine

如何将两个系统结合起来?

首先,我们来看下,结合之后的效果是什么样的。

一个例子

用户a线上出现了一个问题,我们通过监控系统发现了这个问题,问题属于优先级比较高的,已经邮件通知了相关人员。

前端小k收到通知后打开监控系统-朱雀,通过检索用户找到了问题,点击debug按钮。这个时候 朱雀会根据用户的硬件信息自动去云端匹配最合适的设备,然后将该设备的使用权交给开发者小k。

云端设备打开网页,并还原案发现场。 这时候小k看到连接成功。

小k又打开了远程调试服务器-天道,这个时候它看到了云端设备发送的请求,已经通过内置的weirne查看了dom信息和其他信息。

但是并没有解决问题,小k想修改下代码,看下效果。 这时候小k熟练地切换了配置,将请求转发到本地,修改代码,刷新页面。发现问题解决了。

结合起来

通过刚才的例子,我们已经大概知道如何结合了。这里详细讲述一下。

首先天道需要足够的信息才能还原现场,这是单独做监控系统和远程调试系统不会过多涉及的。 这个我在前端远程调试里面提到过, 包括以下信息:用户轨迹,应用数据,其他调试信息。这就需要监控系统足够灵活去增加这些信息。 收集到信息,我们需要将信息应用到网页上,还原用户的操作。

其次朱雀需要管理云端设备,这部分是增加的独立功能。 这部分是增加的独立功能,具体涉及到的有查看所有设备及类型,控制设备打开app(可以是内置的浏览器,也可以是app内部的webview)加载网页, 设备使用分配(即分配给谁,时间多久后回收,调试端口号等)

对于第一点,其实是两部分工作。

第一个是前端监控系统的客户端需要将用户的信息 收集过来,这部分相对比较容易,我在前端远程调试部分也讲过思路,这里不再赘述。

第二个是前端监控系统的服务端需要将收集的信息应用到网页上。 这部分相对比较麻烦,思路有很多。比如对于纯数据驱动的应用,我们只需要将store 应用到app就可以了。 遗憾的是这对应用要求很高,基本不现实,这可以用来做辅助调试。 前面还提到了用户轨迹,我们是否可以通过重现用户轨迹重现问题呢? 理论上收集的用户轨迹足够细,是可以做到的,具体的收集思路有很多。 最常用的就是在各个地方手动埋点记录。

对于第二部分,其实就是对设备的管理。我们可以使用虚拟设备,也可以使用真实设备。其实这部分有很多成熟的技术可以参考的。

About

前面讲了前端监控,我们可以通过监控体系收集运行信息,同时讲解了前端远程调试,那么两者是否可以结合起来呢?