前言

在软件使用过程中,会产生了大量的用户数据和行为数据,而这些数据记录了用户的行为和习惯等信息,为了给用户提供更好的体验,会对这些用户数据进行分析和利用,用来提升用户的体验,而数据采集作是整个链路上重要的一环,起到了很大作用,而埋点作为数据采集的手段,同样发挥着重要作用。

数据采集流程

一、埋点需求分析

1.埋点需求背景分析

首先我们要清楚埋点需求是什么,埋点主要是进行一些数据收集的行为,通过收集这些数据,数据使用者通过对数据进行分析,来实现各自的需求。产品可以用来分析用户使用习惯,验证产品方案效果,研发可以通过埋点监控应用质量,提升应用品质,AI工程师可以通过数据训练算法,实现搜索推荐等功能。为了达到各方的述求,对埋点数据会有着不同的要求。

2.埋点痛点分析

1)业务方痛点:

开发工期紧张,不能支持埋点添加和修改。

埋点必须跟版本走,不能立即生效。

2)开发痛点:

开发埋点工作量大,会占用业务开发时间。

修改业务代码,可能会影响埋点功能,不能及时发现。

3.埋点数据分析

1)数据时效性:

对于不同的使用方,对数据的时效性要求也不同,对于监控和一些在线系统,往往需要实时数据,而对于一些产品分析,失效要求会降低,比如T+1天就可以满足需求,所以埋点系统需要针对不同的使用方,设计不同的数据采集时效。

2)数据准确性:

数据准确性主要体现为数据采集准确性,特别是对于一些特定流程的数据采集,针对不同需求,进行不同方式的采集,比如页面曝光,页面浏览量,如何做到数据精准,满足产品和研发以及项目管理方的述求。

3)数据多元性:

数据多元性是指从多个维度进行数据采集,不同维度的数据可以展示不同的信息,同时不同维度的信息又有相互关联性,可以多方位了解信息和看待问题。

二、埋点事件

1.1事件定义

为了对用户行为进行统计和分析,我们使用一类被称为 "事件" 的消息来记录用户行为。‌

1.2事件组成

1.who:用户信息,身高、体重、性别、职业等等

2.when:时间信息,时间发生时间

3.where:环境信息 设备环境、网络环境、业务环境

4.what:事件信息 事件标识、事件参数,比如点击了哪个按钮,按钮标题。

1.3事件维度

1.访问级维度,浏览器访问还是移动设备访问。

2.页面级维度,访问的哪一个页面,首页还是个人信息页。

3.动作级维度, 点击、曝光还是滑动触发。

1.4事件类型

1.无埋点事件,指不需要额外开发,通过监听、通知进行的埋点。

2.埋点事件,指开发阶段,手动进行的埋点。

三、埋点采集方式

1.代码埋点

代码埋点,即在需要埋点的节点调用接口直接上传埋点数据,友盟、百度统计等第三方数据统计服务商大都采用这种方案,主要通过命令式代码调用,如下面这种方式:

[XMData eventId:@"123" param:@{@"pagename":@"首页"}];

优点:

准确性高,针对性强,可以进行特定场景埋点。

可以灵活获取业务数据参数。

缺点:

开发工作量大,每个埋点都需要开发实现。

代码入侵性大,和业务代码混杂在一起,容易出错。

后续维护比较麻烦,每次改动,都要以来开发修改。

修改不够灵活,需要依赖发版。

2.可视化埋点

可视化埋点,即通过可视化工具配置采集节点,在后台配置埋点数据,在客户端自动解析配置并上报埋点数据,从而实现所谓的“无痕埋点”, 代表方案是已经开源的Mixpanel;

优点:

埋点比较简单,不依赖开发。

灵活性大大提高,可以通过后台配置,添加删除埋点。

缺点:

前期开发成本大,SDK和后台开发成本都增加。

只能针对一些简单业务场景,不能获取复杂业务参数。

3.无埋点

无埋点,它并不是真正的不需要埋点,而是客户端利用hook拦截系统的响应事件,自动采集全部事件并上报埋点数据,在后端数据计算时过滤出有用数据,代表方案是国内的GrowingIO。

优点:

数据可回溯性,如果想看某个埋点,可以直接去后台参考,不需要依赖发版。

埋点覆盖面更全面,进行全面行为数据记录。

缺点:

数据量大,数据传输和数据存储要求高。

无用数据较多,浪费资源。

只能记录简单场景埋点。

四、埋点管理

1.埋点项目流程

1)业务产品提出埋点需求

包括业务数据、用户行为等数据

2)数据产品制定埋点方案

根据业务产品需求,制定合理的埋点方案

3)埋点方案评审

包括业务产品、数据产品、开发、测试,一起沟通埋点方案合理性。

4)开发埋点

开发根据业务埋点进行买点开发和自测。

5)测试埋点

测试根据业务埋点方案,进行测试验证。

6)埋点上线

埋点测试合格后,跟随业务一起上线。

7)埋点数据统计和可视化

对产生的业务埋点进行数据分析,后台可视化展示,供相关需求方使用。

埋点项目流程.001.jpeg

2.埋点开发和测试

2.1埋点开发

1.代码开发

主要涉及代码埋点,必须要研发手工埋点。

2.后台配置

可以针对所有埋点,不只是可视化埋点,设置配置项,比如上报网络,上报时效,每日流量熔断等等。

2.2埋点测试

1.日志log查看

测试埋点的时候,由于某些埋点要延时上报,不能实时查看,可以通过埋点log实时查看,还有是否触发。

2.后台数据查看

通过后台数据,可以查看埋点真实上报情况,确认埋点正确性。

3.埋点质量监控

有时因为开发同学错误修改一段代码,没考虑到会影响埋点,导致线上埋点事件丢失,很长时间没有发现,后来被产品发现,但是修复之前的埋点数据就没有,这种情况在实际开发过程中常常发生,如何避免这种事情发生呢?可以通过埋点质量监控来实现。可以检测必传参数是否确实,是否在合理范围等,在后台配置异常情况阈值,如果超出正常范围,发出报警提示,可以及早发现问题。

4.埋点数据分析和可视化

4.1数据分析

根据埋点数据,分析用户行为,比如分析某个业务的转换率,分析页面用户喜欢点击的位置,广告点击率等数据,用于后续业务改进。

4.2数据可视化

以电商数据为例,通过埋点记录的页面PV,UV等数据都可以,可视化的方式展示在页面上,如下图所示。

电商数据

php 服务端埋点,客户端埋点方案总结相关推荐

  1. ssm配置socket_ssm框架中集成websocket实现服务端主动向客户端发送消息

    找了很多配置文档及实例说明,也还是没能成功,最终在csdn博客中发现了基于stomp的消息推送的文章, 下面整理自csdn博客,https://blog.csdn.net/u013627689/art ...

  2. 服务端渲染vs客户端渲染到前后端同构

    关于服务端渲染与客户端渲染的优劣,互联网上已经有过很多的文章进行过分析,在这里我谈一下我个人的见解. 首先,还是来老生常谈一下关于两种渲染方式的主要优劣: 服务端渲染(仅列出当下最突出的优劣): 优: ...

  3. netty tcp服务端主动断开客户端_「Netty核心技术」6-ChannelPipeline源码

    ChannelPipeline是Channelhandler的容器,它负责ChannelHandler的管理和事件拦截与调度. 土话: ChannelPipeline就是用来管理Channelhand ...

  4. websocket服务端和html客户端进行二进制数据交互

    一.概念和理论理解 1.HTTP HTTP 是基于请求响应式的,即通信只能由客户端发起,服务端做出响应,无状态,无连接. 无状态:每次连接只处理一个请求,请求结束后断开连接. 无连接:对于事务处理没有 ...

  5. 内网穿透-利用frp进行远程桌面控制(window服务端,window客户端)

    内网穿透-利用frp进行远程桌面控制(window服务端,window客户端) 参考链接 https://blog.csdn.net/weixin_38416696/article/details/1 ...

  6. 【踩坑】cat3.x服务端部署, springboot客户端接入

    [踩坑]cat3.x服务端部署, springboot客户端接入 前言 服务器部署问题 1. 数据库连不上 2. 不要创建server.xml 客户端注册问题 1. client.xml信息错误 2. ...

  7. android java websocket client_websocket服务端,android客户端示例

    服务端库依赖详见章末 #####spring websocket服务端代码(会话过程) public class HandshakeInterceptor extends HttpSessionHan ...

  8. 华为云IoT智慧物流案例10 | 广和通L610模组FOTA升级(服务端FileZilla Server客户端FileZilla)

    华为云IoT智慧物流案例10 | 广和通L610模组FOTA升级(服务端FileZilla Server客户端FileZilla) 第一章 使用FileZilla Server搭建FTP服务器 第二章 ...

  9. 服务端渲染与客户端渲染详解(vue)

    1.客户端请求 (1)用户在浏览器输入请求的地址例如:172.0.0.1:8080 到服务器 服务器接受到客户端的请求拿到一个没有被数据渲染的空页面 (2)客户端拿到服务端的空字符串页面,然后从上往下 ...

  10. Socket服务端向指定客户端发送消息

    Socket服务端向指定客户端发送消息 解决思想 1.项目背景 2.如何上传与下发指令 3.解决方法 4.流程 解决思想 I.指定客户端远程地址是存起来的. II.服务端直接主动发信息给客户端,问题在 ...

最新文章

  1. python实现excel数据透视表_用python建立excel的数据透视表
  2. ViewState的使用
  3. 开发常见错误解决(7)连接到SQL Server 2005出错
  4. jvm性能调优实战 -55RPC调用引发的OOM故障
  5. [剑指offer] 矩阵覆盖
  6. BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别
  7. SQL ABAP ST05 hint
  8. 如何找出SAP Fiori launchpad URL start_up请求发起的具体位置
  9. 【caffe-Windows】训练自己数据——数据集格式转换
  10. Redux API之applyMiddleware
  11. python经典书籍:Python编程实战 运用设计模式、并发和程序库创建高质量程序
  12. Seastar:多核机器上编写高效复杂的服务器应用程序的 C++ 库
  13. Star Schema完全参考手册读书笔记五
  14. linux oracle查看服务,技术|如何查看 Linux 中所有正在运行的服务
  15. 使用C# WinForm实现打印小票的功能
  16. define语句换行\后不能有空格
  17. 关于SUSE linux
  18. Golang + Qt5 桌面开发终极解决方案
  19. Arcscan自动矢量化
  20. 干货丨1.3万字简述,PRD到底怎么写

热门文章

  1. NLP基础笔记1——中文分词技术
  2. surface pro的TF卡有时候不感应不到,需要重新插拔?
  3. Android开发这么久你竟然还不知道Dropbox?
  4. [专利与论文-12]:高级职称评定的面试和答辩注意事项
  5. 玩大灾变出现“igxprd32显示驱动程序已经停止正常工作”解决方法
  6. WINDOWS10 自带校验工具
  7. 多轮检索式对话——【ACL 2017】SMN
  8. ASP.Net Core数据加密
  9. Ubuntu下修改键盘排列
  10. 倡议书格式范文_倡议书的格式范文