V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
boolean93
V2EX  ›  Android

大家的项目中,埋点都是怎么做的?所谓的无埋点又是怎样实现的?

  •  
  •   boolean93 · 2017-04-08 01:15:17 +08:00 · 11884 次点击
    这是一个创建于 2821 天前的主题,其中的信息可能已经有所发展或是发生改变。

    题主的项目中,有关埋点上报的内容,全部都是跟业务代码写在一起的。

    感觉这样特别不科学:

    1. 代码不美观。一串业务代码里或多或少总是会带一些统计相关的逻辑
    2. 引起不必要的 Crash 。有时候同事可能一不小心加了一段代码导致偶现的 Crash ,但此时测试刚好没测到。于是带上线了。像这类需求讲道理无论怎样是不允许影响正常业务的。
    3. 重复且枯燥无味的劳动。每次撸了需求还得专门找时间做埋点,测试还要抽时间测。浪费时间,还很无聊。
    4. 每个版本的埋点上报都不太一致,数据不能很快地看到,量也不会很大。如果能够把老版本就已经存在的点也上报上来该多好。
    5. blablabla 。。。

    所以我挺想自己造个轮子给项目里用,解决上述的一些问题。于是跑去查了查资料,发现有一个术语“无埋点”好像屌屌的。。。但搜了不少文章,都感觉弱弱的,只能通过 AOP 去做一些常规的点击啊跳转啊之类常用事件的自动统计。但如果是一些自定义的事件,或者是上报需要带上下文参数的,就 GG 了。。。

    于是来问问大家项目中的埋点都是怎么做的,有没有什么比较好的方案?

    9 条回复    2017-04-11 16:32:34 +08:00
    iyaozhen
        1
    iyaozhen  
       2017-04-08 01:47:48 +08:00
    没办法,纯体力劳动。我们这边还有 4 个端。一般流程是 server 端定好上报格式(规范、统一),然后各个客户端在具体业务逻辑的地方埋点上报。当然各端具体实现上是把上报模块独立出来,通用字段自动获取好,业务代码里面调用一下传几个业务参数就行,就和正常打日志差不多。
    boolean93
        2
    boolean93  
    OP
       2017-04-08 02:07:52 +08:00
    @iyaozhen 恩,基本差不多。但我们有一些犹如 main_key 这种类似的标识以便查询数据时快速查找,每次都要把这种标识写进一个 Constants 类里。所以每次添加上报的流程是:

    1. 找到对应的上报模块类,添加一个上报方法
    2. 找到 Constants 类,将 main_key 、及一些自定义字段的名称加入类中
    3. 找到需要埋点的地方,获取参数,调用上报模块类中写好的对应方法
    4. 跑去 Wiki 里把写好的埋点内容格式写进去

    有时候一个需求就是十个上报点,写的人要崩溃- -烦
    wadjj
        3
    wadjj  
       2017-04-08 09:17:53 +08:00 via iPhone
    无埋点和可视化埋点都是噱头,只能统计可视的组件(按钮 菜单 链接 图片啥的),如果需要精细化运营分析,需求基本满足不了。
    29995270
        4
    29995270  
       2017-04-08 10:31:07 +08:00 via Android
    唉,我也是,埋点埋的我头皮发麻。之前为了方便用 aspectJ 写了一套框架,后来发现根本满足不了产品们各种埋点需求,最后只能手动埋
    TIGERB
        5
    TIGERB  
       2017-04-08 10:32:22 +08:00
    growingIO
    tinyproxy
        6
    tinyproxy  
       2017-04-08 13:12:36 +08:00 via iPhone
    逻辑代码接一坨埋点代码这个问题,我们直接把必要的信息发到消息对接,开别的 worker 进程处理,反正 worker 挂了就挂了。
    Miy4mori
        7
    Miy4mori  
       2017-04-08 15:11:50 +08:00 via iPhone
    事件模型说不定可以无埋点又好用
    boolean93
        8
    boolean93  
    OP
       2017-04-09 17:02:29 +08:00
    @29995270 可以请教一下你之前用 AspectJ 实现的框架都做了哪些工作吗
    qw30716
        9
    qw30716  
       2017-04-11 16:32:34 +08:00
    反正我的埋点也是手动的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2773 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 293ms · UTC 14:25 · PVG 22:25 · LAX 06:25 · JFK 09:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.