V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
diggzhang
V2EX  ›  程序员

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

  •  1
     
  •   diggzhang · 2016-03-18 15:56:00 +08:00 · 5626 次点击
    这是一个创建于 3197 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    目前的架构很简单,当用户产生行为后,前端获取后 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 。

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

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

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

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

    你们现在是如何做的呢?

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

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

    最终目标:前端埋点爽,后端数据爽。
    iyaozhen
        10
    iyaozhen  
       2016-03-18 18:56:25 +08:00 via Android
    两个方面做改进:
    1 、前端收集要做个库,基础数据(浏览器型号等)能自动收集,并提供接口给业务端写数据,然后通过 1x1px 图片 url get 传参数,通过 nginx 在服务端形成日志。
    2 、服务端 elk 处理日志
    fishioon
        11
    fishioon  
       2016-03-18 19:04:39 +08:00
    百度统计可以吗?
    mywaiting
        12
    mywaiting  
       2016-03-18 19:44:16 +08:00   ❤️ 1
    @practicer 好久没在 V2 这里看到这么有意思的回答了,感谢分享
    diggzhang
        13
    diggzhang  
    OP
       2016-03-20 15:43:34 +08:00
    @iyaozhen 同意!愈发肯定这是最佳实践了。
    @fishioon 主要是有一些高度耦合产品逻辑的行为,统计平台没法做到。
    practicer
        14
    practicer  
       2016-03-21 16:09:18 +08:00
    @diggzhang 现在进展怎么样了?还有有其他的想法吗?
    diggzhang
        15
    diggzhang  
    OP
       2016-03-22 10:24:13 +08:00
    @practicer 正在摸索 ELK ,安装有些坑,费劲了。版本变动貌似蛮大的,去年的 blog ,今年这才三月份就不管用了。可以进一步交流一下吗,如何联系到您?
    diggzhang
        16
    diggzhang  
    OP
       2016-03-22 10:28:35 +08:00
    practicer
        17
    practicer  
       2016-03-23 08:34:57 +08:00
    @diggzhang 加我的微信 nickysher
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3667 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 05:05 · PVG 13:05 · LAX 21:05 · JFK 00:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.