运营运维系列文章
- APP线上产品的日志埋点方案
APP日志埋点
- 前言
- 什么是埋点?
- 埋点方案设计
- 事件模型
- 埋点事件上报
- 日志存储平台
- 1. 亚马逊云S3
- 2. Kibana
博客创建时间:2023.03.08
博客更新时间:2023.03.09
以Android studio build=7.0.0,SDKVersion 31来分析讲解。如图文和网上其他资料不一致,可能是别的资料版本较低而已。
前言
对于线上产品,有时候开发会处于一种黑盒状态无法感知现状,只能通过客服和应用市场评价才知道线上问题。当线上出现用户的使用问题后,开发也不太好恢复当时的情景进行排查解决。所以对线上产品进行用户操作行为进行埋点,便于产品的信息收集、上报和分析,可以帮助我们排查和解决线上的问题。
什么是埋点?
所谓埋点就是在应用中特定的流程收集一些信息,埋点是为了对产品进行全方位的持续追踪,通过数据分析不断指导优化产品。数据埋点的质量直接影响到数据,产品,运营等质量。
埋点的方式
- 自己公司研发在产品中注入代码统计,通常有客户端埋点和后台埋点。自定义程度高
- 第三方统计工具,如友盟、神策、Talkingdata、GrowingIO等。可能有数据安全风险
埋点的作用
-
产品迭代:产品的迭代离不开用户的行为数据,通过用户行为分析产品是否有问题,比如用户注册过程中的页面转化挖掘,这些数据都依赖埋点的上报
-
精准用户运营:对用户进行精细化运营需要对用户进行分层,用户的分层离不开用户的行为上报。比如针对用户的付费的RFM分群就基于用户的付费的时间以及金额的上报。
比如,谁在用这个产品?用户是否喜欢?是如何使用的?都有什么特征?哪些渠道带来的用户质量更高….我们可以用数据来回答这些问题。 -
完善用户画像:基本属性(性别、年龄、地区等),行为属性(设备操作习惯等)这些数据都依赖埋点的上报才可以获取到。
-
产品指标计算:公司内部涉及的常见的核心指标。如DAU(日活跃用户数), MAU(月活跃用户数), 活跃时长,留存率,付费用户数,付费金额这些指标都是需要通过埋点的上报然后进行计算完成的
埋点方案设计
埋点的目标
每一个埋点的需求都是为了解决某个业务的需求,所以在写埋点方案的时候,需要明确这次方案是为了上报什么具体的数据
确认上报的变量
上报的变量主要由事件+其他参数变量 组成的,其中事件是必须的,用来标识这一次具体的操作,其他参数变量一般是和事件相关的。
明确事件的上报时机
事件的触发时机,往往是影响数据准确性的重要因素。
以用户的点击行为为例,比如统计用户点赞这个行为,我们是以用户点击点赞按钮的时候上报还是以用户成功点赞以后再上报,结果是有偏差的。
埋点的优先级
一般同时提的埋点需求是多个的。这时候就需要规划好自己的埋点需求的优先级。因为提到开发那边,他们也是根据你的优先级来做的。
事件模型
如果想要对用户的行为进行埋点收集数据,那么我们需要知道我们该收集那些信息,比如程序发生了什么事(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 所开发内置解决方案的汇集中心。
相关链接:
- APP线上产品的日志埋点方案
扩展链接:
- 项目开发混淆从初识到理解
- 项目开发代码分支管理
博客书写不易,您的点赞收藏是我前进的动力,千万别忘记点赞、 收藏 ^ _ ^ !