云端内容采集( 下们WHO用户行为分析主要关心的指标可以概括WHO )
优采云 发布时间: 2021-10-24 20:01云端内容采集(
下们WHO用户行为分析主要关心的指标可以概括WHO
)
用户行为简介
用户行为分析的主要指标可以概括为:哪个用户在什么时候做了什么操作,在什么地方做了什么操作,为什么做这些操作,通过什么方法,用了多长时间等等,概括为WHO、WHEN、WHERE ,什么,为什么和如何,如何时间。
基于以上5W和2H,我们来讨论如何实现。
WHO首先需要x来获取登录用户的个人信息。用户名、角色等
WHEN,获取用户访问页面各个模块的时间、开始时间、结束时间等
WHAT,获取用户登录页面后做了哪些操作,点击了哪些页面和模块等。
WHY,分析用户点击这些模块的目的是什么
HOW,用户如何访问系统、网页、APP、小程序等。
HOW TIME,用户访问每个模块的时间,浏览某个页面等。
以上就是我们需要获取的数据。只有获得了相关数据,我们才能对用户的行为进行分析。
用户行为数据采集
埋点
埋点一般分为非埋点和代码埋点。这两者都有各自的优点和缺点。这里只是简单的介绍:
全埋点是一种埋点前端的方法。产品内嵌SDK,最统一的埋点,通过接口配置方法定义关键行为,埋点采集完成。这就是前端的埋法。点法之一。
优势:
缺点:
作为前端埋点,自然会有一些缺点
代码埋点,这也是我们目前使用的埋点方法。代码埋点分为前端代码埋点和后端代码埋点。前端埋点与全埋点类似,需要嵌入SDK。不同的是对于每个Event行为都需要调用SDK代码,传入必要的事件名称、属性参数等,然后发送到后台数据服务器。后端嵌入点通过后端模块调用SDK接口向后端服务器发送事件和属性。
我们使用代码埋点,分为前端和后端。嵌入是一个特别重要的过程。它是数据的来源。如果数据来源有问题,那么数据本身就有问题,分析结果也就失去了意义。
由于本人负责日志检测,即埋点后事件日志的检测报警,并通知对应的埋点开发商、运营商、产品方,所以在里面遇到了很多坑,大部分都在过程条款。的。
事件属性有一个元数据管理系统,行业中的一些服务也有这个结构。一般先定义事件和属性,然后埋点。原因是需要检查事件日志数据。需要检查事件是否存在,属性是否缺失,数据是否正常等。
遇到的坑:
数据不正确。这种情况很难被发现。需要在运营产品的分析中发现,这也是难受的。
有了上面的思路,我们来谈谈实现的相关技术问题,以及如何实现用户行为分析。
数据采集
根据操作定义的嵌入接口形式获取的用户访问日志数据,必须在后端和前端预先定义数据存储格式,即保存哪个字段内容,嵌入数据需要按约定的格式打包成统一的格式。, 便于存储和分析。
以下数据采集神器Flume出现了。
实时埋点数据采集一般有两种方法:
直接触发的日志发送到指定的HTTP端口,写入kafka,然后Flume消费kafka到HDFS
用户访问日志存储在磁盘上,flume agent部署在对应的主机上,将日志目录采集中的文件发送到kafka,然后flume部署在云端消费kafka数据到HDFS
那么Flume采集系统的设置就比较简单了,只需要两步:
Flume 配置模板:
a1.sources = source1a1.sinks = k1a1.channels = c1<br />a1.sources.source1.type = org.apache.flume.source.kafka.KafkaSourcea1.sources.source1.channels = c1a1.sources.source1.kafka.bootstrap.servers = kafka-host1:port1,kafka-host2:port2...a1.sources.source1.kafka.topics = flume-testa1.sources.source1.kafka.consumer.group.id = flume-test-group<br /># Describe the sinka1.sinks.k1.type = hdfsa1.sinks.k1.hdfs.path = /tmp/flume/test-dataa1.sinks.k1.hdfs.fileType=DataStream<br /># Use a channel which buffers events in memorya1.channels.c1.type = memorya1.channels.c1.capacity = 100a1.channels.c1.transactionCapacity = 100<br /># Bind the source and sink to the channela1.sources.source1.channels = c1a1.sinks.k1.channel = c1