美文网首页运营数据分析
数据埋点(浅谈埋点方式与上报收集)

数据埋点(浅谈埋点方式与上报收集)

作者: 93499f2d66ab | 来源:发表于2017-04-16 02:27 被阅读2029次

    由于工作安排原因,有幸二次接触产品运营的埋点任务。二次埋点发现自身对埋点机理未彻底弄清、明晰,因此整理了部分工作中的笔记及相关资料。如有错误之处,望请不吝赐教。

    本文将着重讨论对数据的埋点方式和上报收集,而非对数据的分析。前者对于现行使用的方式有较为统一的认识,后者数据分析在不同行业、企业有特定独立的规则,又由于企业保密性原因,在此不撰写了。

    一、埋点是什么

    定时、定点地在目标应用/网站上采集数据,将数据以日志的方式上报至服务器的过程。

    二、为什么要埋点

    企业方获得用户在产品上的使用数据,分析后利于产品优化迭代。

    三、埋点有哪些方式

    (1) 代码埋点

    原理:在应用App或界面初始化时,初始化埋点的SDK,在触发某个节点(如事件/页面)时调用SDK相应的方法,通过接口发送数据。通常为了减少用户上报数据时消耗过多流量,常见有两种解决方案:

    (一) 进行数据映射(简化数据,不传具体参数值,而是根据MAP-KEY映射关系),如应用端发送(0/0、1/)数据,由服务端将根据约定文档映射为(首页/模块一、第二个点击事件);

    (二) 非即时发送数据,将多条数据压缩打包,等待网络状况良好、或定时(5min)发送至服务端。

    优点:

    个性化自定义,能够根据企业自身业务特性自定义属性、事件,定制化获取数据。

    缺点:

    (一) 人力成本高,埋点工程涉及到由运营-产品-前端-服务端-后台一系列所有数据团队,不同系统/版本不易管理,所有方法均需人工注入,数据收集后需由服务端进行分析;

    (二) 版本更新前后,容易发生数据紊乱(若发生重要负责人离职,无相关文档沉淀,则可能造成“前功尽弃”的情况);

    (三) 起步难,前期为简单计数;需要企业长期且稳定地完善、不断根据业务更新。

    (2) 可视化埋点(又称为框架化埋点)

    原理:将核心代码与资源、配置分开,当应用App启动时从服务端更新配置和资源(plist),应用获知后,根据配置和部署信息相上报数据内容。

    实现方式:

    (一) 在需埋点的App中嵌入SDK,开启可视化埋点模式,并联通后台。嵌入的SDK根据后台要求,定时制作截图,制作截图时会将页面上所有对象进行遍历,遍历该页面上所有对象(如按钮、列表、View视图),获取其类名、属性、页面下坐标、长宽高等各方面信息;

    (二) 应用将以上数据上传至后台,后台根据截屏和数据重新渲染页面,并且将可埋点的对象标识出来;

    (三) 埋点使用者在截屏画面上选择相应需埋点的对象,后台根据埋点进行事件关联方面的配置,并将其保存和部署;

    (四) 应用中的SDK在启动或例行轮询时下载配置信息,根据配置信息,对相应对象添加行为监听,根据行为向服务端发送相应数据。

    下图截取神策数据的可视化埋点的后台操作截图作为说明。

    优点:

    解决了代码埋点人力成本和更新代价大的问题,只要在版本内有相应SDK,即不存在老版本迭代后无埋点问题;且对于不懂代码的产品运营,可通过后台可视化界面进行配置操作,并且生效。

    缺点:

    (一) 无法做到自定义获取数据,可视化埋点覆盖的功能有限;

    (二) 企业针对SDK开发难度相比代码埋点大,使用第三方SDK资源则有共同通病,下文说明。

    (3) 无埋点(全埋点)

    原理:在App中嵌入SDK,做统一的“全埋点”,将应用App中尽可能多的数据采集下来,通过界面配置的方式对关键行为进行定义,对定义的数据进行分析。

    实现方式:

    在应用中嵌入SDK,通过可视化方式(即上文可视化埋点方式),针对对象进行定义,服务端对定义的数据进行分析,后台加以展现。

    优点:

    提供了埋点的“后悔药”(数据回溯问题),只要部署了SDK,数据便开始采集;可以自动获取很多启发性的信息,可以通过热力图向用户展示各个控件、事件点击的概率更大;便于使用者发现页面僵尸按钮等等。

    缺点:

    (一) 缺点与可视化埋点相同,未解决个性化自定义获取数据的问题,缺乏数据获取的灵活性;

    (二) 企业针对SDK开发难度较大,一般由数据分析企业研发提供,使用第三方提供的埋点方案,有如下缺陷:

    1、数据源丢失,应用上报的数据上传至第三方服务端,可能造成企业泄密或用户的关键数据丢失;

    2、供应商数据丢包问题,无法根据应用特性进行改善。

    四、埋点上报的通用数据信息

    指的是通用数据信息,只要是涉及到代码埋点,一般都会获取如下数据。一般是在应用启动时,将相关数据进行上报。(也有许多应用如QQ空间,所有的日志上报参数仍包含通用数据信息)

    (一) 无限局域网地址(MAC地址):定义网卡地址,又称为物理地址、硬件地址,具有全球唯一性,用于定义网络设备的位置。

    (二) 手机设备号(IMEI):移动设备国际识别码,是手机的唯一标识码。用于区分终端唯一性,对于用户去重有一定意义;与MAC地址协同使用。

    (三) 终端系统/系统版本号:获取终端系统以及版本号,在查询某些版本上出现特定bug,具有一定辅助意义;(其他用途待发现补充)

    (四) 应用版本号:有利于版本迭代控制,作为数据的标记;

    (五) 网络状态:获取当前网络为3G/4G/wifi等,可针对用户人群所处的网络环境,针对性开发流量节省模式,或线下活动的wifi支持等;应用终端可做到网络状态更迭及时上报;

    (六) GPS地址:通过应用端获得GPS地址授权获得,用于分析不同地域人群的使用习惯,有利于绘制用户人群画像;

    (七) 用户ID:终端用户的唯一身份标识;

    (八) 触发时间:应用/事件触发时间,根据时间维度来分析某页面/事件等数据信息;

    五、代码埋点的意义与注意tips

    在如今“大数据”时代,任何一家想发展壮大的企业,在考虑使用第三方SDK数据产品的数据源丢失问题后,都会优先考虑自建数据团队进行代码埋点。获取埋点数据,监测并分析数据信息。因此作为产品运营,必须掌握代码埋点的相关技能,做到埋点项目的需求描述说明清楚全面,跟进项目、不断优化、提出分析优化。有如下问题需注意:

    1.明确所需数据内容,尽可能表述清楚每一个点击/页面所需监测的数据。否则,失之毫厘谬以千里。举个栗子:

    对于电商行业,监测搜索转化率最为正常不过。若在搜索筛选页要求上报搜索参数,实际研发可由服务端根据前端接口请求,在接口直接获取参数,无须让应用进行上报;若需获取的是由该搜索筛选页触发进入详情页,应用端在商品详情页上报搜索参数。二者就大有不同,服务端获取的搜索参数并非实际转化参数(后者获得),可能发生用户对搜索结果不满意而最终未形成转化的情况。因此需要二者数据进行纵向对比。

    总而言之,获取每一个数据,须描述清细节,研发团队才能对其有针对的、最优处理方案。

    2.向服务端明确说明每个指标的详细定义是什么,定义不清、不明,将导致最终数据分析结果的正确与否。比如最常见的PV(页面浏览量),不同的定义对最终后台显示的结果大有不同,对于用户进入该页面计为浏览量加一,或者用户进入该页,停留时长超过5s计为浏览量加一,不同定义方式,就会有不同的PV结果。

    3.确定各上下级页面的埋点是否覆盖完全,若发现页面离开应用占比极高:极有可能是该页面的下一级页面未进行埋点,导致没有数据上报,服务端分析为离开应用。若发现了漏埋点的情况,尽管能在更新版本中补充,但老版本的数据就永远丢失。所以在埋点规划时,产品运营确保埋点事项无遗漏。

    六、其他

    (1) 个人使用过的第三方数据产品体验

    (一) Umeng,阿里旗下的数据分析产品,通用性功能均有覆盖,在部分特定页面上有缺失,定制化弱,适合初创起步的企业应用。

    (二) Google Analytics,个人使用体验较好,对个人网页、应用所需的数据埋点都能满足,对数据结果展示较为喜欢,缺点是需翻墙查看;

    (三) 神策数据。位于上海的神策公司,可根据企业部署特定服务器,针对个性化定制,并且有对应业务员、开发工程师进行企业一对一对接,服务体验较为良好;但数据分析后台非工作范围内,未详细体验、研究过;

    (四) 诸葛io,国内领先、先行的数据分析公司,2013年是国内首家最早推出无埋点方案,但有运营朋友说丢包较为严重,未确认翔实与否。

    其他较为知名的数据产品:TalkingData、Mixpanel未使用过,希望有大神分享,或之后使用后补充。

    最后的叮嘱,数据埋点团队一定要留好数据埋点的规范定义文档,若发生团队埋点相关负责人离职,就会形成大坑。

    Ps:其他思考问题整理如下:

    (1) 为什么上报的数据颗粒级最好是“原子”最小化上报而非关系链上报?

    虽然关系链上报对于还原用户的真实操作非常方便,服务端根据用户访问的时间序列,将事件串联,一步步分析,对于关系跳转挖掘很是方便;但对于快速迭代的应用产品,一旦产品相关逻辑变动,则所有业务分析(服务端)、逻辑关系(前端)须重写,对于前端-服务端都将是巨大的人力投入,以及新老版本的数据关系链冲突问题。

    (2) 需要有专门负责人长期且稳定对代码埋点方式进行“买单”

    一旦数据进行埋点,且产品运营形成数据量化结果、以数据驱动决策的习惯后,则必须进行持续维护。因为数据埋点研发团队,需花费较高的人力资源;测试点位时,要求完整覆盖性测试,确保无遗漏。

    推荐阅读:

    (个人在简书上觉得较好的文章,以及部分文章内容有所参照)

    从0入门篇:http://www.jianshu.com/p/0a9263ea9671

    应用机理篇:http://www.jianshu.com/p/69859d580354(建议有代码基础或计算机机理基础看,对于理解埋点实现原理很受用)

    可视化埋点的流程展示、便于理解:http://www.jianshu.com/p/c2cb80a342c2

    无埋点好处:http://www.jianshu.com/p/6f47fc648e69

    可看下无埋点机理,以及了解iOS的runtime机制

    iOS的runtime机理:http://www.jianshu.com/p/98f39c4d0df8

    http://www.jianshu.com/p/69859d580354

    简单可理解为,runtime机制就是在应用中事件都会调用的方法中注入上报数据的埋点代码,知晓该点便于理解文章中的内容。

    相关文章

      网友评论

      • 5cd47dbd6f02:至今不知道可视化埋点还有无埋点的区别。感觉形式是一样的,就是操作方式上有差异。求细说。
        5cd47dbd6f02:@卓耀 嗯嗯,这样就明白了。嘿嘿。。谢谢。:yum:
        93499f2d66ab:不知道你定义的形式与操作方式,但大致理解你的意思。
        二者的不同在于:可视化先确定须获取的数据,应用端根据需求上报数据;无埋点是尽可能让应用端将所有数据上报至服务端,而后定义须分析的内容进行分析。

      本文标题:数据埋点(浅谈埋点方式与上报收集)

      本文链接:https://www.haomeiwen.com/subject/mnnoattx.html