APP日志埋点
- 前言
- 埋点
- 什么是埋点?
- 埋点目标
- 如何进行埋点流程
- 埋点方案设计
- 事件模型
- 埋点事件上报
- 日志存储平台
- 1. 亚马逊云S3
- 2. Kibana
- 总结
博客创建时间:2023.03.08
博客更新时间:2023.03.18
以Android studio build=7.0.0,SDKVersion 31来分析讲解。如图文和网上其他资料不一致,可能是别的资料版本较低而已。
前言
线上产品是产品运营的一种常规手段APP软件产品运营推广,对于线上产品,有时候开发会处于一种黑盒状态无法感知现状,只能通过客服和应用市场评价才知道线上问题。
当线上出现用户的使用问题后,开发也不太好恢复当时的情景进行排查解决。所以对线上产品进行用户操作行为进行埋点,便于产品的信息收集、上报和分析,可以帮助我们排查和解决线上的问题。
埋点
什么是埋点?
所谓埋点就是在应用中特定的流程收集一些信息,埋点是为了对产品进行全方位的持续追踪,通过数据分析不断指导优化产品。数据埋点的质量直接影响到数据,产品,运营等质量。
埋点的方式
- 自己公司研发在产品中注入代码统计,通常有客户端埋点和后台埋点。自定义程度高
- 第三方统计工具,如友盟、神策、Talkingdata、GrowingIO等。可能有数据安全风险
埋点的作用
- 产品迭代:产品的迭代离不开用户的行为数据,通过用户行为分析产品是否有问题,比如用户注册过程中的页面转化挖掘,这些数据都依赖埋点的上报
- 精准用户运营:对用户进行精细化运营需要对用户进行分层,用户的分层离不开用户的行为上报。比如针对用户的付费的RFM分群就基于用户的付费的时间以及金额的上报。
比如,谁在用这个产品?用户是否喜欢?是如何使用的?都有什么特征?哪些渠道带来的用户质量更高….我们可以用数据来回答这些问题。 - 完善用户画像:基本属性(性别、年龄、地区等),行为属性(设备操作习惯等)这些数据都依赖埋点的上报才可以获取到。
- 产品指标计算:公司内部涉及的常见的核心指标。如DAU(日活跃用户数), MAU(月活跃用户数), 活跃时长,留存率,付费用户数,付费金额这些指标都是需要通过埋点的上报然后进行计算完成的
埋点目标
埋点的目标不同,最终数据验证的效果也会有不同。如新版本上线的用户行为和功能效果数据验证(几种场景)
- 新功能是否得到用户的使用与认可?新版本增加的新功能,用户点击率怎样?
- 用户在核心使用路径上是否顺畅?有没有因为交互体验功能按钮的设计而导致无效点击增多?
- 针对某个特别的日期进行了产品内的广告banner推广或者促销,该活动运营的效果如何?
如何进行埋点流程
1. 了解产品形态
指的是整个产品的运作逻辑,关注的是用户角色,信息和渠道,以及他们之间的流转关系是什么样的,像是产品的一个蓝图和框架。
2. 了解业务逻辑
指的是要执行某个业务,用户角色需要走过的路径,会有什么角色参与,有什么功能模块(或子系统)参与,模块之间的关联性,数据之间的流向是什么样的。
3. 业务流程图
是在业务逻辑的基础上,对功能分解下来,比如唱吧的录歌业务逻辑,会有个模块是生成评分,那生成评分这个模块,她的具体业务流程是什么样的,会有什么细节流程,异常流程,提示等。
4. 将节点化的业务代码化
这一步骤,主要是将列出的重要节点(需要统计的节点)添加统计事件和统计参数。
5. 交付开发调整DRD
可以与产品经理和开发人员沟通协调,并交付所需要的数据指标体系。
6. 数据分析
后期数据库中有了相应节点的统计情况,之后就可以拿来分析了。
埋点方案设计
埋点的目标
每一个埋点的需求都是为了解决某个业务的需求,所以在写埋点方案的时候,需要明确这次方案是为了上报什么具体的数据
确认上报的变量
上报的变量主要由事件+其他参数变量 组成的,其中事件是必须的,用来标识这一次具体的操作,其他参数变量一般是和事件相关的。
明确事件的上报时机
事件的触发时机,往往是影响数据准确性的重要因素。
以用户的点击行为为例,比如统计用户点赞这个行为,我们是以用户点击点赞按钮的时候上报还是以用户成功点赞以后再上报,结果是有偏差的。
埋点的优先级
一般同时提的埋点需求是多个的。这时候就需要规划好自己的埋点需求的优先级。因为提到开发那边,他们也是根据你的优先级来做的。
事件模型
如果想要对用户的行为进行埋点收集数据,那么我们需要知道我们该收集那些信息,比如程序发生了什么事(Event)?该事件事谁产生的,什么设备?系统版本?(UserInfo)
class EventModel {
inner class Event {
//事件组
var eventGroup: String? = null
//事件类型:点击事件、浏览事件、日志事件
var eventType: String? = null
//事件名
var eventName: String? = null
//事件发生事件
var eventTime: String? = null
//事件其他数据
var eventData: String? = null
//事件发生对应产品
var eventProduct: String? = null
}
inner class UserInfo {
//设备品牌
var phoneBrand: String? = null
//设备类型
var phoneModel: String? = null
//设备名称
var phoneName: String? = null
//设备系统版本如Android 12
var sysVersion: String? = null
//设备系统类型,如鸿蒙、android
var sysType: String? = null
//用户国家
var userCountry: String? = null
//用户在平台中对应的userId
var userId: String? = null
}
}
埋点事件上报
不管是自己的日志平台还是第三方平台来保存日志,考虑到存储容量和费用问题,日志的生成都应该有一定限制和规则。
- 对关键行为进行上传,如果描述内容较多,可以对常见类型进行分类用代号码来进行标识
- 事件上报到平台时,如果如果有需要可以对日志进行压缩后上传
- 如果事件信息考虑到安全性,可以对日志先进行数据的加密,虽然这会影响一定的效率
日志存储平台
1. 亚马逊云S3
一般的公司可能有自己的日志埋点运营平台,也有些公司为了节省运行成本可能没有自己的平台,如果没有自己的日志存储平台那么我在此推荐一个平台亚马逊云S3
Amazon Simple Storage Service (Amazon S3) 是一种对象存储服务,提供行业领先的可扩展性、数据可用性、安全性和性能。关键可有5GB容量12月的免费套餐,可以先体验再决定后续是否续费。
2. Kibana
Kibana 是一款免费且开放的前端应用程序,其基础是 Elastic Stack,可以为 Elasticsearch 中索引的数据提供搜索和数据可视化功能。
尽管人们通常将 Kibana 视作 Elastic Stack(之前称作 ELK Stack,分别表示 Elasticsearch、Logstash 和 Kibana)的制图工具,但也可将 Kibana 作为用户界面来监测和管理 Elastic Stack 集群并确保集群安全性,还可将其作为基于 Elastic Stack 所开发内置解决方案的汇集中心。
埋点的宏观目标是为了获取数据指标来整体上验证产品的业务逻辑是否顺畅,之前的一些基本假设是否成立?这时候涉及需要验证的数据可能会涵盖:产品方向、市场运营和商业逻辑三大方面。
埋点本身其实是对产品的一个可视化健康检查,通过逻辑和数据,贯穿产品的整个生命周期,使产品逐步达到最佳状态。为未来产品优化方向给出指导意见。
产品的数据监控一般常用的数据指标也都不难掌握。关键是数据指标的设计要基于两点事实:
- 商业模式和业务背景
- 数据分析动机和目的
在日常的产品运营中,我们只用关注那些能影响公司核心业务的指标,以此来做快速的业务表现判断,能极大地提高效率,快速发现问题并解决。