APP线上产品的日志埋点方案

news2024/11/18 3:27:23

运营运维系列文章

  1. APP线上产品的日志埋点方案

APP日志埋点

  • 前言
  • 什么是埋点?
  • 埋点方案设计
  • 事件模型
  • 埋点事件上报
  • 日志存储平台
    • 1. 亚马逊云S3
    • 2. Kibana

博客创建时间:2023.03.08
博客更新时间:2023.03.09

以Android studio build=7.0.0,SDKVersion 31来分析讲解。如图文和网上其他资料不一致,可能是别的资料版本较低而已。


前言

对于线上产品,有时候开发会处于一种黑盒状态无法感知现状,只能通过客服和应用市场评价才知道线上问题。当线上出现用户的使用问题后,开发也不太好恢复当时的情景进行排查解决。所以对线上产品进行用户操作行为进行埋点,便于产品的信息收集、上报和分析,可以帮助我们排查和解决线上的问题。

什么是埋点?

所谓埋点就是在应用中特定的流程收集一些信息,埋点是为了对产品进行全方位的持续追踪,通过数据分析不断指导优化产品。数据埋点的质量直接影响到数据,产品,运营等质量。

埋点的方式

  1. 自己公司研发在产品中注入代码统计,通常有客户端埋点和后台埋点。自定义程度高
  2. 第三方统计工具,如友盟、神策、Talkingdata、GrowingIO等。可能有数据安全风险

埋点的作用

  1. 产品迭代:产品的迭代离不开用户的行为数据,通过用户行为分析产品是否有问题,比如用户注册过程中的页面转化挖掘,这些数据都依赖埋点的上报

  2. 精准用户运营:对用户进行精细化运营需要对用户进行分层,用户的分层离不开用户的行为上报。比如针对用户的付费的RFM分群就基于用户的付费的时间以及金额的上报。
    比如,谁在用这个产品?用户是否喜欢?是如何使用的?都有什么特征?哪些渠道带来的用户质量更高….我们可以用数据来回答这些问题。

  3. 完善用户画像:基本属性(性别、年龄、地区等),行为属性(设备操作习惯等)这些数据都依赖埋点的上报才可以获取到。

  4. 产品指标计算:公司内部涉及的常见的核心指标。如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. 对关键行为进行上传,如果描述内容较多,可以对常见类型进行分类用代号码来进行标识
  2. 事件上报到平台时,如果如果有需要可以对日志进行压缩后上传
  3. 如果事件信息考虑到安全性,可以对日志先进行数据的加密,虽然这会影响一定的效率
    在这里插入图片描述

日志存储平台

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 所开发内置解决方案的汇集中心。
在这里插入图片描述


相关链接

  1. APP线上产品的日志埋点方案

扩展链接:

  1. 项目开发混淆从初识到理解
  2. 项目开发代码分支管理

博客书写不易,您的点赞收藏是我前进的动力,千万别忘记点赞、 收藏 ^ _ ^ !

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/398500.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

git stash 暂存减少分支误操作的神器

背景 有时不小心在master或者develop分支上开发了代码,正要提交时才发现自己选错分支了,以前的笨方法是把要提交的代码,一个个记录下来,都保存另外一个文件中去,然后再切换到特性分支中,一个个覆盖到具体的…

问到ThreadLocal,看这一篇就够了|金三银四系列

ThreadLocal 原理和常见问题详解,用来复习准没错!点击上方“后端开发技术”,选择“设为星标” ,优质资源及时送达ThreadLocal 是什么?ThreadLocal 是线程本地变量。当使用 ThreadLocal 维护变量时,ThreadLo…

高效学 C++|组合类的构造函数

设计好MyString类后,就可以像使用普通类型一样使用它了。例如,类的对象可以像普通的变量一样作为另一个类的数据成员。【例1】 MyString类的对象作为CStudent类的数据成员。1. //MyString类的定义省略 2. //注意:保留其构造函数、析构函数、…

LeetCode——2379. 得到 K 个黑块的最少涂色次数

一、题目 给你一个长度为 n 下标从 0 开始的字符串 blocks ,blocks[i] 要么是 ‘W’ 要么是 ‘B’ ,表示第 i 块的颜色。字符 ‘W’ 和 ‘B’ 分别表示白色和黑色。 给你一个整数 k ,表示想要 连续 黑色块的数目。 每一次操作中&#xff0…

Java 中的拆箱和装箱

在 Java 中,每个基本数据类型都对应了一个包装类型,比如:int 的包装类型是 Integer,double 的包装类型是 Double…那么,基本数据类型和包装类型有什么区别呢? 大概有以下几点区别: 成员变量的…

详解Vue安装与配置(2023)

文章目录一、官网下载node.js二、安装Node.js三、环境配置四、idea导入vue项目五、IDEA添加Vue.js插件一、官网下载node.js Vue是前端开发框架。搭建框架,首先要搭建环境。搭建Vue的环境工具:node.js(JavaScript的运行环境)&…

【最重要的 G 代码命令列表】

【最重要的 G 代码命令列表】1. 什么是G代码?2. 如何阅读G代码命令?3. 最重要/最常见的 G 代码命令3.1 G00 – 快速定位3.2 G01 – 线性插值3.3 G02 – 顺时针圆形插值3.4 G00、G01、G02 示例 – 手动 G 代码编程3.4 G03 – 逆时针圆形插补3.5 G20/ G21 …

【Unity游戏破解】外挂原理分析

文章目录认识unity打包目录结构游戏逆向流程Unity游戏攻击面可被攻击原因mono的打包建议方案锁血飞天无限金币攻击力翻倍以上统称内存挂透视自瞄压枪瞬移内购破解Unity游戏防御开发时注意数据安全接入第三方反作弊系统外挂检测思路狠人自爆实战查看目录结构用il2cpp dumper例子…

yolov5双目检测车辆识别(2023年+单目+双目+python源码+毕业设计)

行人识别yolov5和v7对比yolo车距源码:yolov5双目检测车辆识别(2023年单目双目python源码毕业设计)上盒岛APP,开线上盲盒商店http://www.hedaoapp.com/yunPC/goodsDetails?pid4132 为了提高传统遗传算法(genetic algorithm, GA)IGA优化BP网络迭代时间过长以及精度偏…

ArrayList与LinkedList的区别 以及 链表理解

list接口中ArrayList、LinkedList都不是线程安全,Vector是线程安全 1、数据结构不同 ArrayList是Array(动态数组)的数据结构,LinkedList是Link(链表)双向链表的数据结构。 2、空间灵活性 ArrayList最好指定初始容量 LinkedList是比ArrayList灵活的&a…

Noah-MP陆面过程模型建模

【方式】:直播永久回放长期答疑群辅助全套资料【目标】:了解陆表过程的主要研究内容以及陆面模型在生态水文研究中的地位和作用;熟悉模型的发展历程,常见模型及各自特点;理解Noah-MP模型的原理,掌握Noah-MP…

用Python优雅地求解阿基米德分牛问题

文章目录题目大意sympy求解结果题目大意 问 太阳神有一牛群,由白、黑、花、棕四种颜色的公、母牛组成,其间关系如下,求每种牛的个数。 公牛中,白牛多于棕牛,二者之差为黑牛的1213\frac{1}{2}\frac{1}{3}21​31​&…

【Redis】搭建分片集群

目录 集群结构 准备实例和配置 启动 创建集群 测试 集群结构 分片集群需要的节点数量较多,这里我们搭建一个最小的分片集群,包含3个master节点,每个 master包含一个slave节点,结构如下: 这里我们会在同一台虚…

超详细CentOS7 NAT模式(无图形化界面即最小安装)网络配置

在此附上CentOS7(无图形化界面最小安装)安装教程 超详细VMware CentOS7(无图形化界面最小安装)安装教程 打开VMware—>点击编辑---->选择虚拟网络编辑器 打开虚拟网络编辑器后如下图所示: 从下图中我们看到标…

由Deep InfoMax开始对比学习

作者:KON 来源:投稿 编辑:学姐 作者介绍:Kon 擅长是自然语言处理、推荐系统,爱好是cv;著有cv相关专利一篇,西安交通大学软件专业本硕。 1.前言 本次给大家带来的是发表在「ICLR2019」上的一篇…

10Wqps评论中台,如何架构?B站是这么做的!!!

说在前面 在尼恩的(50)读者社群中,经常遇到一个 非常、非常高频的一个面试题,但是很不好回答,类似如下: 千万级数据,如何做系统架构?亿级数据,如何做系统架构&#xff1…

阿里云服务器使用教程:使用xshell、xFtp工具连接阿里云服务器(Centos7)并修改Centos7的yum源为阿里镜像源

目录 1、下载并安装xshell、xFtp 2、远程连接阿里云服务器 3、 修改Centos7的yum源为阿里镜像源 1、下载并安装xshell、xFtp XShell可以在Windows界面下来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。它支持 RLOGIN、SFTP、SERIAL、TELNET、…

STM32中断分组配置NVIC_PriorityGroup,移植操作系统需需注意NVIC_PriorityGroup_4

一、先说明中断分组的由来中断优先级分组表:优先级分组抢占优先级响应优先级bit[7:4] 分配情况备注NVIC_PriorityGroup_0取值:0取值:0~150:40bit抢占优先级、4bit响应优先级NVIC_PriorityGroup_1取值:0~1取值:0~71:31b…

关于热力图展示大量数据点耗时导致浏览器崩溃问题及解决方案

目录 问题描述 问题分析 解决方案 问题描述: Web前端在地图上加载空间数据库里存储的地块中心点时因为数据点太多从而导致页面崩溃。Mybatis查询大量数据时,耗时时间更长是主要原因。8万多条数据,数据库查询最慢0.6s, Mybatis查询结果需要…

【可信平台】开证问题汇总--1.无采购入库记录,2.箱码无产出记录

这里面的问题主要有两类, 批号无采购入库记录箱码无产出记录批号无采购入库记录 第一个问题,以批号 W200263242022100600018 为例。 MES里入库明细里能查到可信平台集成报错: 入库数量>采购数量 再看下入库明细里的情况: 可信平台集成提示物料库存不存在。(没有入库记…