第三方软件
比如把抓到的crash trace存储起来
发布者:admin     浏览次数:     发布时间:2019-08-13 21:49

  crash信息抓取基本原理就是实现接Thread.UncaughtExceptionHandler实现了这个接口就可以在程序发生crash时候、调用到这里进行自己的处理逻辑,比如把抓到的crash trace存储起来,上报等。

  除了EventMessage 还有PerformMessage、DNSMessaget等、抓取到的数据如何在下一步、存储上报用同样的接口进行呢?所以我们封装了一个顶层类AppMessage该类里面带有一些通用的信息,比如app版本号、事件发生时间、手机类型Android or IOS、数据采集ID和一些通用方法等。

  代码中埋点对不同的种类比如检测内存泄漏、crash的可能就是一句初始化、一些具体业务逻辑可能需要在代码中放置很多数据抓取的代码,所以在monitor中 我们暂时有三种数据抓取方法:

  完备的前端监控系统是精细化运营的主要手段、它通过大数据来指导我们的运营策略、改善用户体验,同时也通过对数据半自动或者自动分析,来快速定位被监控系统的问题。

  所谓代码埋点,就是在程序中写上我们抓取业务流程、性能数据等的代码。因为代码中埋点适用范围广泛,可以处理数据类型多种多样、所以我们需要预先设计好我们的数据类型尽可能通用、达到少而覆盖全面、同时又能对不同的数据类型做统一的存储和上报处理。例如我们定义了EventMessage 包含字段event_code和event_remark 这样我们在抓取不同的Event时间、比如登录、支付等都可以这样处理,只是填写不同的event_code和event_remark

  抓取App运行数据、例如用户点击事件、性能数据、运行异常崩溃等,也叫数据采集、但是为了跟我们大的数据采集区分开、我们本文中统称为数据抓取。

  例如:缓存方式,当抓取的数据缓存时候、可以选择文件缓存、数据库缓存、内存缓存等;缓存时间、对于不同级别的监控,要求可以有立马上报、每天上报、每小时上报等;触发上报时机,例如将用户浏览页面的情况(浏览了哪些app页面)存储于本地数据库,等用户处于wifi环境时候把数据上传到服务器。

  实施:首先我们把所有的需要抓取的数据类型一一罗列出来、每一种数据类型都按照尽量少侵入业务代码的思路去整理出来它的抓取方法。我列举了一部分如下表格:

  要求:数据抓取是整个数据采集SDK与主应用的接入点,所以要求有少侵入,Api设计稳定合理,少而简单、有新的需求易扩展。

  随着流量红利逐渐消失,移动互联网时代正式进入了一个新的阶段,这个阶段要求我们对有限的流量进行精细化运营、深度挖掘加工,从而使流量进行有效转换和不断增长。

  luckinMonitor是一个单独的模块,以Lib形式供主应用使用,参照SDK标准它应该易学习并且对主模块侵入少。 这就要求接口尽可能少、功能尽可能明确。整个数据采集SDK第一步是数据抓取、所以我们对外的接口都是在这一层暴露出来。所以在数据抓取部分会介绍对外的接口。

  前端监控的第一个环节就是数据采集,其中移动APP的数据采集在数据采集中占主要的方面,本文就主要聊一聊Android端数据采集。

  代码中埋点指的就是在你写业务代码时候,加上抓取事件的代码。例如 你想知道一个Activity(页面)啥时候显示,那么你在onResume地方打一个带有时间戳的log,就是把这Activity显示时间给抓取到了。

  接下来把其他需要采集的数据进行逐条分析,跟业务关联比较紧密就不一一列举。根据采集数据方法的不同,我们来构造不同的数据采集器-具体实现抓取数据的类。外界对数据抓取技术研究也挺多,大概分为两类.

  为了方便使用,我们一般会把数据采集部分做