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

2017-04-08 01:15:17 +08:00
 boolean93

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

感觉这样特别不科学:

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

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

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

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

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

有时候一个需求就是十个上报点,写的人要崩溃- -烦
wadjj
2017-04-08 09:17:53 +08:00
无埋点和可视化埋点都是噱头,只能统计可视的组件(按钮 菜单 链接 图片啥的),如果需要精细化运营分析,需求基本满足不了。
29995270
2017-04-08 10:31:07 +08:00
唉,我也是,埋点埋的我头皮发麻。之前为了方便用 aspectJ 写了一套框架,后来发现根本满足不了产品们各种埋点需求,最后只能手动埋
TIGERB
2017-04-08 10:32:22 +08:00
growingIO
tinyproxy
2017-04-08 13:12:36 +08:00
逻辑代码接一坨埋点代码这个问题,我们直接把必要的信息发到消息对接,开别的 worker 进程处理,反正 worker 挂了就挂了。
Miy4mori
2017-04-08 15:11:50 +08:00
事件模型说不定可以无埋点又好用
boolean93
2017-04-09 17:02:29 +08:00
@29995270 可以请教一下你之前用 AspectJ 实现的框架都做了哪些工作吗
qw30716
2017-04-11 16:32:34 +08:00
反正我的埋点也是手动的

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

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

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

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

© 2021 V2EX