基于日志服务的GrowthHacking(1):数据埋点和采集(APP、Web、邮件、短信、二维码埋点技术)

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
日志服务 SLS,月写入数据量 50GB 1个月
简介: 数据质量决定运营分析的质量 在上文中,我们介绍了GrowthHacking的整体架构,其中数据采集是整个数据分析的基础,只有有了数据,才能进行有价值的分析;只有高质量的数据,才能驱动高质量的运营分析.可以说,数据质量决定了运营质量。

基于日志服务的GrowthHacking(1):数据埋点和采集(APP、Web、邮件、短信埋点技术)

数据质量决定运营分析的质量

在上文中,我们介绍了GrowthHacking的整体架构,其中数据采集是整个数据分析的基础,只有有了数据,才能进行有价值的分析;只有高质量的数据,才能驱动高质量的运营分析.可以说,数据质量决定了运营质量。

在实际生产中,我们常常面临数据采集的痛点:

  1. 数据分散在各处,有服务器日志,有前端日志,有APP日志。
  2. 各种端的日志,采集方式迥异,要投入大量研发资源,才能覆盖所有的平台。
  3. 收集、处理、清洗、标注数据,需要投入巨大的精力,80%的精力浪费在了这些前置步骤上。
  4. 不同端的数据格式千奇百怪,缺乏一种统一的数据规范。

从分析需求推演数据源

通常,我们要分析拉新的的转化率,产品的留存率,以及用户推荐和最终付费相关的所有指标,每种类型的指标对应的渠道如下图所示。

image.png

以拉新为例, 通常我们可选择的渠道有社交媒体(微信、微博), 线上推送(邮件、短信),内容营销(博客、微信公众号),广告(广告联盟),线下推广(二维码)。每一种渠道的表现如何,需要用数据证明。每一种渠道的数据采集方式各不相同。接下来将逐个介绍。

埋点规范

杂乱无章的数据,价值等于0!如果各个渠道的数据各不相同,那么我们在分析时,就有很大一部分精力浪费在整理数据上。为了保证数据的质量,我们需要制定出一份埋点的协议,保证在采集数据时,能够采集到完整的信息。

image.png

在日志采集中,一般包含两部分信息:事件和属性。下文以Web埋点为例,详细介绍web埋点包含的内容。

Web埋点

web埋点可用于在博客前端追踪用户的访问情况。

Web埋点规范

  • 属性信息:

    • 设备信息:

      1. DeviceId:设备标识。 在首次加载js时,在cookie中添加唯一id。
      2. 屏幕长宽
      3. 设备类别。
    • 用户信息:

      1. uid:用户id,用户唯一标识。
      2. session id:会话id,一次会话定义为连续的操作。
      3. 首次登陆时间。
      4. 会话开始时间。
    • 软件信息:

      1. 语言
      2. os
      3. user agent
      4. 网站title
      5. 网站host
      6. 网站网址

Web埋点技术:

日志服务提供了Web Tracking技术,可以直接在网页上嵌入一个一个透明图片,当网页发生曝光时,会自动发送日志到日志服务。

埋点样例:

![](https://yunlei-statics.cn-hangzhou.log.aliyuncs.com/logstores/blog-tracking/track_ua.gif?APIVersion=0.6.0&blog=${标题名称}&src=yunqi&author=${author})

Web Tracking 本质上是一个http GET请求,不仅可以用来采集曝光时间,还可以用来采集一些事件信息。通过在前端嵌入js sdk的方式,通过js采集用户的行为动作,并且通过js sdk发送到日志服务。

嵌入js sdk的样例:

<script type="text/javascript" src="loghub-tracking.js" async></script>

采集事件样例:

var logger = new window.Tracker('${host}','${project}','${logstore}');
logger.push('customer', 'zhangsan');
logger.push('product', 'iphone 6s');
logger.push('price', 5500);
logger.logger(); //发送日志
logger.push('customer', 'lisi');
logger.push('product', 'ipod');
logger.push('price', 3000);
logger.logger();

iOS埋点

开发者可在iOS应用中,嵌入日志服务的iOS SDK,自由灵活的采集所需要的事件日志, SDK分为Swift和Objective-C版本。

Android埋点

Android SDK 类似于iOS SDK ,可以嵌入Android APP中,采集事件信息。

小程序埋点

在小程序中,可以参考Web的采集方式,嵌入js sdk,通过js事件采集内容,并且通过js sdk把数据发送到日志服务。

<script type="text/javascript" src="loghub-tracking.js" async></script>

邮件打开率和转化率埋点

邮件打开率

参考web tracking技术,在邮件的html内容中,添加一个img标签,该img标签是一个1X1的空白图片,用户看不到该图片。当邮件被打开时,会自动发送一条日志到日志服务:

<img src="https://yunlei-statics.cn-hangzhou.log.aliyuncs.com/logstores/blog-tracking/track_ua.gif?APIVersion=0.6.0&title=${邮件标题}&src=yunqi&author=${author})">

当日志采集到日志服务端后,可以参考本系列的分析文章,进行分析。

邮件转化率

运营同学可能在邮件中嵌入了一些链接,邀请用户注册、登录、访问某个功能。为了追踪用户是否打开了这个链接,我们需要在web tracking上封装一层。把真实的链接B封装起来,先跳转到A,在A记录下日志后,再跳转到真实地址B。

image.png

例如一下案例:

  1. 在邮件中,我们需要跳转到https://promotion.aliyun.com/ntms/act/logdoclist.html
  2. 把上述链接url encode编码:https%3a%2f%2fpromotion.aliyun.com%2fntms%2fact%2flogdoclist.html。
  3. 通过中间服务器跳转,把上述编码的url,作为redirect参数传递:http://47.96.36.117/go.php?redirect=https%3a%2f%2fpromotion.aliyun.com%2fntms%2fact%2flogdoclist.html
  4. 在中间服务器上,调用web tracking,记录日志到日志服务,同时返回302跳转到真实的链接。

通过以上方式记录的跳转日志,可以分析营销邮件的转化率。

短信营销埋点

短信营销类似于邮件营销,在短信中,嵌入链接,追踪链接的打开率。短信相比于邮件特殊的地方在于,短信有字数限制,因此需要在短信中使用短域名,那么整体架构变成了这样:

image.png

在这个方案中,真实的链接经过三次跳转,第一次跳转到短域名服务器,第二次跳转到中间服务器,在中间服务器上记录日志,第三次跳转到真实的目标地址。

二维码扫描率追踪

二维码是线下营销的利器,通过扫描二维码可以快速转化。二维码本质上是一串文字的编码,通常是一个url,因此我们可以采用类似邮件追踪的办法,把真实的url进行编码,经过中间服务器的跳转,记录下来二维码的扫描次数。

image.png

中间链接http://47.96.36.117/go.php?redirect=https%3a%2f%2fpromotion.aliyun.com%2fntms%2fact%2flogdoclist.html生成的二维码:

image.png

真实链接生成的二维码:

image.png

上述两个二维码的目标地址是一致的,但第一个二维码给我们机会,能够记录下来用户扫码的记录,无疑可以帮助我们判断运营活动的效果。

总结

本文介绍了常见的渠道的埋点技术,每一种渠道的数据分析,请关注本系列文章。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
1天前
|
安全 JavaScript Java
后端技术在现代Web开发中的实践与挑战
本文旨在探讨后端技术在现代Web开发中的关键作用,分析其在数据处理、业务逻辑实现和系统安全等方面的重要性。通过阐述常见的后端技术和框架,如Node.js、Django和Spring Boot,展示它们在实际项目中的应用。同时,文章将讨论后端开发所面临的主要挑战,包括性能优化、扩展性和维护性问题,以及如何应对这些挑战。最终,通过对实际案例的分析,总结出一套行之有效的后端开发最佳实践,为开发者提供参考。
12 5
|
1天前
|
人工智能 关系型数据库 数据安全/隐私保护
后端技术在现代Web开发中的应用与挑战
本文将深入探讨后端技术在现代Web开发中的重要性,通过分析其在数据处理、业务逻辑实现和安全性保障方面的应用,揭示后端技术的核心价值。同时,本文还将讨论当前后端开发面临的主要挑战,如高并发处理、数据安全、微服务架构的复杂性等,并给出相应的解决方案。无论是后端开发者还是对后端技术感兴趣的读者,都可以通过这篇文章获得启发和指导。
|
12天前
|
前端开发 安全 Java
技术进阶:使用Spring MVC构建适应未来的响应式Web应用
【9月更文挑战第2天】随着移动设备的普及,响应式设计至关重要。Spring MVC作为强大的Java Web框架,助力开发者创建适应多屏的应用。本文推荐使用Thymeleaf整合视图,通过简洁的HTML代码提高前端灵活性;采用`@ResponseBody`与`Callable`实现异步处理,优化应用响应速度;运用`@ControllerAdvice`统一异常管理,保持代码整洁;借助Jackson简化JSON处理;利用Spring Security增强安全性;并强调测试的重要性。遵循这些实践,将大幅提升开发效率和应用质量。
39 7
|
14天前
|
安全 关系型数据库 数据库
FastAPI数据库操作秘籍:如何通过高效且安全的数据库访问策略,使你的Web应用飞速运转并保持数据完整性?
【8月更文挑战第31天】在构建现代Web应用时,数据库操作至关重要。FastAPI不仅简化了API创建,还提供了高效数据库交互的方法。本文探讨如何在FastAPI中实现快速、安全的数据处理。FastAPI支持多种数据库,如SQLite、PostgreSQL和MySQL;选择合适的数据库可显著提升性能。通过安装相应驱动并配置连接参数,结合ORM库(如Tortoise-ORM或SQLAlchemy),可以简化数据库操作。使用索引、批量操作及异步处理等最佳实践可进一步提高效率。同时,确保使用参数化查询防止SQL注入,并从环境变量中读取敏感信息以增强安全性。
27 1
|
14天前
|
开发框架 中间件 API
揭秘!Tornado技术如何颠覆传统,解锁Web开发速度极限?你的高效Web应用就差这一步!
【8月更文挑战第31天】Tornado 是 Python 生态中的一款高性能 Web 开发框架,以其非阻塞 I/O 模型和高并发处理能力著称。它采用协程和异步 I/O 实现了高效的并行处理,使服务器能同时处理大量连接。
24 1
|
8天前
|
关系型数据库 Java MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【9月更文挑战第6天】在Linux环境下安装JDK 1.8、Tomcat和MariaDB是搭建Java Web应用的关键步骤。本文详细介绍了使用apt-get安装OpenJDK 1.8、下载并配置Tomcat,以及安装和安全设置MariaDB(MySQL的开源分支)的方法。通过这些步骤,您可以快速构建一个稳定、高效的开发和部署环境,并验证各组件是否正确安装和运行。这为您的Java Web应用提供了一个坚实的基础。
24 0
|
14天前
|
物联网 C# 智能硬件
智能家居新篇章:WPF与物联网的智慧碰撞——通过MQTT协议连接与控制智能设备,打造现代科技生活的完美体验
【8月更文挑战第31天】物联网(IoT)技术的发展使智能家居设备成为现代家庭的一部分。通过物联网,家用电器和传感器可以互联互通,实现远程控制和状态监测等功能。本文将探讨如何在Windows Presentation Foundation(WPF)应用中集成物联网技术,通过具体示例代码展示其实现过程。文章首先介绍了MQTT协议及其在智能家居中的应用,并详细描述了使用Wi-Fi连接方式的原因。随后,通过安装Paho MQTT客户端库并创建MQTT客户端实例,演示了如何编写一个简单的WPF应用程序来控制智能灯泡。
32 0
|
14天前
|
Java Maven Apache
Struts 2 配置不再难!跟着这篇详解从零搭建开发环境
【8月更文挑战第31天】要搭建Struts 2开发环境,需先安装JDK,然后下载并解压Struts 2二进制包,将其核心库`struts2-core`添加到项目类路径中。使用Maven或Gradle时,可在配置文件中添加依赖。接着,在`web.xml`中配置Struts 2过滤器及其映射。`struts.xml`通常位于`src/main/resources`目录下,用于定义动作映射和拦截器等核心配置。最后,通过配置类路径下的`log4j.properties`文件,可以设置Struts 2的日志记录级别及输出方式。完成以上步骤后,即可开始基于Struts 2框架进行Web应用开发。
34 0
|
14天前
|
前端开发 Java UED
告别页面刷新时代:Struts 2 Ajax技术揭秘,轻松实现动态加载,Web应用焕然一新!
【8月更文挑战第31天】在Web应用开发中,用户体验至关重要。为减少页面刷新带来的不适,Ajax技术应运而生。Struts 2作为流行的Java EE框架,通过内置的Ajax支持简化了无刷新页面动态加载的实现。本文通过对比传统请求响应模式,展示了Struts 2如何轻松实现Ajax功能,提升了用户体验和开发效率,并灵活地实现了数据交换。然而,使用Ajax时还需注意SEO和跨域请求等局限性。
26 0
|
14天前
|
Java 数据库 API
JSF与JPA的史诗级联盟:如何编织数据持久化的华丽织锦,重塑Web应用的荣耀
【8月更文挑战第31天】JavaServer Faces (JSF) 和 Java Persistence API (JPA) 分别是构建Java Web应用的用户界面组件框架和持久化标准。结合使用JSF与JPA,能够打造强大的数据驱动Web应用。首先,通过定义实体类(如`User`)和配置`persistence.xml`来设置JPA环境。然后,在JSF中利用Managed Bean(如`UserBean`)管理业务逻辑,通过`EntityManager`执行数据持久化操作。
25 0

相关产品

  • 日志服务