网站流量日志埋点收集- - 方案二--点击事件数据采集实现|学习笔记

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 快速学习网站流量日志埋点收集- -方案二--点击事件数据采集实现

开发者学堂课程【大数据分析之企业级网站流量运营分析系统开发实战(第一阶段)网站流量日志埋点收集- -方案二--点击事件数据采集实现】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/693/detail/12182


网站流量日志埋点收集- -方案二--点击事件数据采集实现


内容简介

一、页面点击事件

二、操作演示

本节内容我们学习自定义埋点收集用户行为数据的第二套方案:页面点击事件的采集。在这里我们将会学习如何通过去绑定相关事件来采集用户相关的行为数据。


一、页面点击事件

首先打开我们的资料,找到参考文档中的方案二

image.png

在这里为了方便,模拟了一个首页。

1.首先打开 index2.html,看到页面的 body 部分,我们创建了两个 a 标签。

一个跳转至 page1页面,另一个跳转至 page2页面。跳转中可以看到 clstag 属性是没有颜色的,所以这里存在一个小技巧:如果使用 Notoped++打开 html 页面,会发现当中只要是内置的属性,都以红色存在,因为 clstag 属性不是红色,说明它是用户自定义标签,这样的标签通常跟业务相关。

image.png

比如这里我们通过简单的三个单词 click|index|page1| 来告诉这个事件如果发生是怎样的数据,数据收集放在日志中,解读就是这里发生了点击事件,是从首页点击跳转至 page1,这样就可以清楚的知道这个行为发生在哪,是什么样的行为。

当然也可以结合具体业务进行各种标签的设置,不需要则可以舍去。

接下来查看埋点代码的编写(图中灰色部分)

代码为:

Var_maq =_ maq | |[];

_maq. push(['_ setAccount', 'AllenWoon']) ;

$ (function() {

$("a") .click (function() {

var clstag = $(this) .attr ("clstag") ;

var_ a_ value =$(this) .text() ;

_maq.push(['_ a_ value' ,_ a_ value]) ;

clstag = clstag.split('|');

for (i in clstag) {

_maq.push(['type'+i, clstag[i]]);

}

sendRequest() ;

})

}) ;

function sendRequest () {

var ma = document. createElement ('script') ;

ma.type = 'text/javascript' ;

ma.async = true;

ma.src = 'http://192.168 .227.153/ma.js';

var s = document . getEl ementsByTagName ('script') [0];

s.parentNode. insertBefore (ma, s) ;

}

</script>

在之前的采集过程是通过匿名函数自调用来触发采集,但在这里是通过点击事件来进行采集。首先为了方便书写 js,我们未写原生而是引入了 Jquery-3.2.1.min.js 。

这里给 a 标签绑定了一个 click 事件,接下来看下面的逻辑,首先是$(this),this表明哪个a标签被点击,this 就代表谁,通过 clatag 值去提取当中自定义标签属性值,接下来提取 text()文本值,提取之后把var clstag = $(this) .attr ("clstag") ;var_ a_ value =$(this) .text() ; 保存在我们创建的一个全局的数组 maq 中。之后因为标签值进行了优化,所以给它分割然后保存进数组中。保存完之后,我们调用了 sendRequest()方法,这个方法也是函数,我们发现它不再是匿名函数。

接下来看 function sendRequest () { 部分的逻辑,首先创建了一个 script 标签,是 js 标签,是异步加载的 src 属性地址是'http://192.168 .227.153/ma.js'; 然后找到 document . getEl ementsByTagName 的父标签,进行插入放在dom 文档树上。

这一段逻辑就是之前所讲匿名函数自调用加载创建标签的逻辑,只不过这里不是匿名函数自调用行为触发,而是通过点击事件行为触发,调用sendRequest()行为就完成了标签的数据和用户地点击行为一一对应,只要点击 a 标签,事件 sendRequest()就会触发,触发后方法就会被调用,数据就会被收集。

2.下面学习跳转页面 page1.html

首先打开 page1.html

里面是匿名函数自调用,逻辑还是动态创建标签引入采集事件的js。

3.ma.js 和 nginx.conf 的代码基本一样,重点要注意当收集的参数属性变多之后,当中进行解析拼接会变多。

4.比如在 nginx 中,因为传递过来的参数变多,解析的参数就变多了 如图。

image.png


二、操作演示

打开服务器,来到node-1机器,根据我们的架构图,我们模拟的是对外提供web服务的服务器,所以需要把首页,juery-3.2.1.min.js

和两个跳转页面放入机器中。这里需要强调:当你想要把方案部署起来并且成功时,一定要确定首页的 ip 和环境的ip 吻合。

1.首先打开 node-1,查看 ip 为153,等下采集数据的 js 将会位于这台机器上,跳转是跳转到自己本机151。接下来打开page1,page2确保验证,都是153,所以没问题。

2.来到 node-1,node-1使用的 apache service,所以静态资源路径是 var/www/html,选择首页,juery-3.2.1.min.js和两个跳转页面,将它们发送至 node-1中

image.png

  1. 上传成功后,在页面中进行查看。

打开浏览器,选择192.168.227.151/index2.html

image.png

4.点击 F12,这时候就是个正常访问页面

image.png

但是没有进行数据收集,原因是未点击标签点击1和点击2,点击事件不会触发,不会触发方法就不会被调用,就不会进行数据收集。

5.接下来启动 nginx

首先来到 nginx 的安装目录,目录在 usr/local/nginx

image.png

再 cd 到 html 中,放入采集数据的 ma.js,上传之前确定一下里面的 IP 是否发生改变,确认无误后上传

image.png

6.上传成功后,需要针对 nginx 的配置文件进行修改,cd 至 conf 中,把之前的配置删了,把新的配置放入,上传之后回到根目录下进行启动,启动使用 sbin/nginx -c conf/nginx.conf 。这样就完成相关项目的启动

7.接下来查看相关效果是否正确,按下 ctri+h,把缓存删除,清除之后按下 F12,为了查看效果,需要把日志打开tail -f logs/user_defined.log

image.png

打开页面刷新后,日志并未改变,所以没有在采集用户数据,因为未点击,采集数据的 js:http://192.168.227.153.ma.js 模拟访问后可以获取。

所以接下来看埋点采集的时刻,是否可以收集数据。

点击 page1,发现日志开始收集

当我们点击标签时会进行两条标签的收集,如,点击这是点击2,日志跳转了两次,因为点击标签的行为会触发一条数据的收集,然后这个行为会让页面打开,页面打开自己加载时匿名函数调用自己也会采集一次,所以会触发两条数据的收集。

这也从侧面告诉大家在我们常见的电商类网站中为什么相关的各种行为会被收集,很简单,因为正常浏览商品时背后会进行数据收集,作为后面分析的依据。

但是出现问题:我们点击的是中文字,代码却是乱码。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
PyTorch 算法框架/工具
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
本文介绍了PyTorch中的F.softmax()和F.log_softmax()函数的语法、参数和使用示例,解释了它们在进行归一化处理时的作用和区别。
377 1
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
|
1月前
|
数据可视化
Tensorboard可视化学习笔记(一):如何可视化通过网页查看log日志
关于如何使用TensorBoard进行数据可视化的教程,包括TensorBoard的安装、配置环境变量、将数据写入TensorBoard、启动TensorBoard以及如何通过网页查看日志文件。
193 0
|
3月前
|
jenkins 持续交付
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
|
1月前
|
监控 网络协议 CDN
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
|
5月前
|
存储 Java 关系型数据库
基于JSP的九宫格日志网站
基于JSP的九宫格日志网站
|
5月前
|
JSON 中间件 数据格式
Gin框架学习笔记(六)——gin中的日志使用
Gin框架学习笔记(六)——gin中的日志使用
171 0
|
6月前
|
安全 Linux 调度
【后台开发】TinyWebser学习笔记(4)定时器、日志系统(单例模式)、封装互斥锁信号量
【后台开发】TinyWebser学习笔记(4)定时器、日志系统(单例模式)、封装互斥锁信号量
37 1
|
6月前
|
C++ 索引
【Qt 学习笔记】如何在Qt中打印日志 | qDebug的使用 | Assistant的使用
【Qt 学习笔记】如何在Qt中打印日志 | qDebug的使用 | Assistant的使用
523 0
|
6月前
|
存储 弹性计算 监控
日志服务SLS最佳实践:通过SLS数据加工从VPC flowlog中过滤出跨region CEN流量
本文就通过一个客户的实际案例开介绍如何使用在无法直接开启CEN flowlog的情况下,使用SLS的数据加工能力,从VPC flowlog的数据中过滤出客户需要的流量日志出来。
135 0
日志服务SLS最佳实践:通过SLS数据加工从VPC flowlog中过滤出跨region CEN流量
|
11天前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
116 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板