关于用户行为追踪,从收集到后端的疑问

2016-03-18 15:56:00 +08:00
 diggzhang

我们的产品会收集一些用户行为数据到后端供产品研究巴拉巴拉。

目前的架构很简单,当用户产生行为后,前端获取后 ajax 请求 API 发送到后端,后端 server 程序写一个 event 事件到数据库。

这样做前端很痛苦的,用户每产生一个行为,都要组合一个 json ,涵盖行为名字、触发实践以及各种状态,信息臃肿不堪。后端 API 压力大,数据库查询也因为量级太大导致各种慢查询。

其实,我不知道这个埋点收集方式,有什么术语去搜,胡碰乱撞期间发现一个关键字'collect metrics',似乎很接近‘收集埋点’,但很多文章说 collect metrics 趋向于服务器监控的味道。

继续调研发现, MixPanel 果然是业界首选。艾玛,我想做的其实就是一个自家版的 MixPanel 。

顺着这个思路,发现一些很成熟的技术栈'ELK'以及'TICK':

ELK: elastic.co

TICK: influxdata.com

基本锁定,如果想山寨一个 mixpanel 就是这样的技术选型了。

大概看了一下 ELK 应该已经比 TICK 成熟,但 TICK 技术栈的组合又似乎 born from collect 。

技术选型依然迷茫,甚至都不知道二选其一是否靠谱,如果大家有接触过行为收集的,诚恳求建议。

有可能埋点收集与交互完全解耦吗?

埋点信息,该如何设计才是最佳实?

整个流,该如何搭配,如何工作吗?

你们现在是如何做的呢?

5429 次点击
所在节点    程序员
17 条回复
knightdf
2016-03-18 16:28:03 +08:00
我们用的 elasticsearch
akira
2016-03-18 16:59:57 +08:00
TalkingData ?
practicer
2016-03-18 17:19:27 +08:00
我的公司使用 Google tag manager 获取自定义点击事件数据,
GTM 是一套 js 代码管理软件,提供了非常成熟的事件跟踪方案。
通过 GTM 能够与交互完全解耦,只需在 GTM 后台管理系统进行埋点跟踪,
全程不需要麻烦前端设计,基本能满足大部分的产品分析需求,
我已经给公司网站进行了上千个埋点,包括普通的关键位置点击事件,
长页面鼠标滚动事件,甚至 flash 产品内的点击事件,都可以通过 GTM 解决

至于数据展现平台,哪个顺手用哪个咯,但强烈推荐用 Google Analytics ,
搭配 GTM 可以说没有跟踪不到的内容,非常强大
diggzhang
2016-03-18 17:25:24 +08:00
@knightdf 似乎 sina 也在用 ELK ,翻过一篇博客如是说。
@akira talkingdata growingio 诸葛 io... 真想知道他们是怎么做的
@practicer GA 到了 X 百万了以后,如果不付费,会丢埋点 T_T
practicer
2016-03-18 17:40:31 +08:00
@diggzhang 前段时间查到的一个不付费的办法,还是用 GA 搜集数据
GA 搜集数据的原理是把带参数的 1 乘 1 像素图片请求到 GA 服务器,
GA 实际上已经获取了完整的数据,不过只对付费用户开放。但是如果
把这个图片复制一个出来再发到自己的服务器,就能通过查看服务器
网络日志获取到完整的数据。剩下要做的就是解析图片后面的参数并
存入数据库
diggzhang
2016-03-18 17:52:20 +08:00
@practicer Aha! 神之一手。 相当有意思的做法。拍案叫绝。
practicer
2016-03-18 18:00:40 +08:00
@diggzhang https://www.stickler.de/en/information/analytics/send-ga-hits-to-own-server ,附上具体流程,主要是用到了 GA 的一个方法 ---- sendHitTask
toposort
2016-03-18 18:03:42 +08:00
https://sp0.baidu.com/5bU_dTmfKgQFm2e88IuM_a/w.gif ,把参数带到请求后面,打点单独布个服务器,然后解析 access log ,保存到分布式存储,然后离线计算。。如果量小的话,直接存数据库
diggzhang
2016-03-18 18:17:22 +08:00
@toposort 啊哈! GA 就是这样做的,解析 img 里的 src
@practicer 我把这个办法分享给同事了,感谢你。送铜币。

最终目标:前端埋点爽,后端数据爽。
iyaozhen
2016-03-18 18:56:25 +08:00
两个方面做改进:
1 、前端收集要做个库,基础数据(浏览器型号等)能自动收集,并提供接口给业务端写数据,然后通过 1x1px 图片 url get 传参数,通过 nginx 在服务端形成日志。
2 、服务端 elk 处理日志
fishioon
2016-03-18 19:04:39 +08:00
百度统计可以吗?
mywaiting
2016-03-18 19:44:16 +08:00
@practicer 好久没在 V2 这里看到这么有意思的回答了,感谢分享
diggzhang
2016-03-20 15:43:34 +08:00
@iyaozhen 同意!愈发肯定这是最佳实践了。
@fishioon 主要是有一些高度耦合产品逻辑的行为,统计平台没法做到。
practicer
2016-03-21 16:09:18 +08:00
@diggzhang 现在进展怎么样了?还有有其他的想法吗?
diggzhang
2016-03-22 10:24:13 +08:00
@practicer 正在摸索 ELK ,安装有些坑,费劲了。版本变动貌似蛮大的,去年的 blog ,今年这才三月份就不管用了。可以进一步交流一下吗,如何联系到您?
diggzhang
2016-03-22 10:28:35 +08:00
practicer
2016-03-23 08:34:57 +08:00
@diggzhang 加我的微信 nickysher

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/264497

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX