热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

网站流量日志分析项目02

1.埋点收集数据实现视频01–埋点收集–系统部署架构图和采集流程梳理02–埋点收集–系统部署环境搭建03–埋点收集–方案一–基本功能数据采集实现04–埋点收集–方案二–点击事件

1. 埋点收集数据实现


视频

01–埋点收集–系统部署架构图和采集流程梳理
02–埋点收集–系统部署环境搭建
03–埋点收集–方案一–基本功能数据采集实现
04–埋点收集–方案二–点击事件数据采集实现
05–埋点收集–方案二–中文乱码问题解决


目标

​ 本章先总结整个采集架构的流程原理,再分别从如何部署环境实现页面浏览日志生成,到点击事件的监控记录等操作。


小结


  1. 系统部署架构图和采集流程梳理
    在这里插入图片描述

  2. 部署环境(node01安装httpd,node03安装nginx):

    软件位置:day18-项目\软件\网站流量日志自定义采集服务\部署相关

    配置文件位置:day18-项目\软件\网站流量日志自定义采集服务\参考文档

    安装文档:day18-项目\讲义\hadoop项目–网站流量日志分析–1.pdf

  3. 方案一:(页面刷新纪录用户数据)

    • node01:在 /var/www/html 下存放 index.html,修改index ma.js所存放的服务器ip(node03)
    • node03:在 nginx安装目录/html 下存放 ma.js ,修改ma.js发送图片请求的ip地址(node03);在 nginx安装目录/conf 下存放 nginx.conf
    • node01 上启动 httpd 服务,node03上启动nginx服务。
    • 刷新index.html页面,监控 logs/access.log
  4. 方案二:

    • node01:在 /var/www/html 下存放 index2.html、page1.html、page2.html、jquery-3.2.1.min.js,修改 index2.html 文件内部 ma.js 地址修改为 node03,其他 ip 地址为 node01 。
    • node03:在 nginx安装目录/html 下存放 ma.js (修改图片请求地址为node03)
    • node03:在 nginx安装目录/conf 下存放 nginx.conf
    • node01 上启动 httpd 服务,node03上启动nginx服务。
    • 监控 logs/user_define.log
    • 刷新index2.html,点击链接1 链接2。
  5. 重新编译Nginx,修复乱码问题:

    day18-项目\软件\网站流量日志自定义采集服务\参考文档\nginx中文乱码\ngx_http_log_module.c 存放到 src/http/modules/ngx_http_log_module.c 源码目录下,安装上文提到的文档重新编译。该操作需要重启nginx,否则无效。


2. Flume日志采集


视频

06–flume收集–新组件taildir source介绍
07–flume收集–配置文件编写和实操
08–flume收集–hdfs–基于文件闲置策略滚动


目标

​ 前一章介绍了数据从无到有的采集,本章介绍如何从 nginx 服务器将数据搬移到 Hadoop 集群上。使用Flume的 taildir source,即可以实现采集不断产生内容的多个日志文件,也可以实现断点续传。


小结


  • flume 新source taildir 特性: exec spooldir

    • 监控一个文件的变化
    • 监控一个文件夹下多个文件的变化
    • 支持断点续传功能 -json
  • 核心配置如下:

    a1.sources = r1
    a1.sources.r1.type = TAILDIR
    a1.sources.r1.positionFile = /var/log/flume/taildir_position.json 记录采集内容偏移量
    a1.sources.r1.filegroups = f1 f2
    a1.sources.r1.filegroups.f1 = /var/log/test1/example.log
    a1.sources.r1.filegroups.f2 = /var/log/test2/.*log.* 支持正则表达式

  • 在使用flume采集数据到 hdfs 的时候,以文件大小(128M)进行控制滚动:

    a1.sinks.k1.hdfs.rollInterval = 0 时间间隔
    a1.sinks.k1.hdfs.rollSize = 134217728 文件的大小
    a1.sinks.k1.hdfs.rollCount = 0 event数量
    a1.sinks.k1.hdfs.idleTimeout=30 数据容量未达到时,超时自动写到文件中


3. 数据清洗和模型构建


视频

09–数据预处理–目的意义和mr编程技巧
10–数据预处理–实现思路详解
11–数据预处理–mr代码实现
12–数据预处理–点击流模型概念


目标

​ Flume采集的数据中包含了一定的杂质,比如404,500响应的数据,这些数据是没有意义的,应该在分析前删除掉;比如在采集的过程中,有些字段无法获取到,需要对这些缺失的字段进行补全等。


小结


  1. 数据预处理的目标:在分析数据之前,将不规则的数据清洗编程统一规则的结构化数据
  2. 资料: ...\day19-项目\代码\
  3. 技术:MapReduce
    • 只有数据的清洗,只需要 Map 不要 Reduce 。
    • 可以将需要分析的多个字段可以封装成一个对象(实现Writable序列化接口)
    • 重写对象的 toString 方法,指定字段之间用 \001 进行分割,因为Hive默认的分隔符就是 \001
    • 针对无效的数据 / 静态资源,可以直接过滤,也可以通过建立标记位的形式进行逻辑删除
  4. 原始访问日志数据(access.log)是按照时间追加的,是散点状的数据;点击流模式所描述的是用户在网站持续访问的一条轨迹,可以通过原始日志数据梳理而来。
  5. 用户一天访问了好几个页面,如何判断该用户当天访问了该网站几次?
    • 通常业界以前后两条的记录的时间差是否在30分钟以内作为会话判断的标准。
    • 所谓点击流模型指的是在一个会话内的持续访问轨迹线。

4. PageView模型&VistView模型


视频

13–数据预处理–点击流模型之pageviews模型
14–数据预处理–点击流模型之visit模型
15–数据预处理–点击流模型pageviews编程实现思路
16–数据预处理–点击流模型pageviews代码实现
17–数据预处理–点击流模型visit编程实现思路
18–数据预处理–点击流模型visit代码实现


目标

​ 上一章介绍到点击流的概念,所谓的点击流模式,描述的是用户在网站持续访问的一条轨迹。通过分析我们可以得到各种各样的指标,比如哪个页面访问频次最高,哪个广告引流效果最好,哪个时间段访问频次最高等等。本章我们先讲解如何构建一个点击流模型及得到相关的模型数据。


小结

PageView模型:主要是计算每一个用户每一次会话内的访问页面的步骤和顺序。Map接收数据:

192.168.1.100 8:30:25 a.html
192.168.1.100 8:30:35 c.html
192.168.1.100 8:31:05 d.html
192.168.1.100 18:31:05 k.html
192.168.1.100 18:31:30 m.html

Map输出:key(ip),value(其他数据)

Reduce处理:


  1. 根据相同 IP 的按时间进行排序

    1. 计算每个页面停留时间( 当前页进入时间 — 上一页进入时间=上一个页面停留的时间)。如果两个页面之间超过30分钟,其配置新的会话 sessionID。最后一页停留时间默认为60s。
    2. 为每个sessionID设置 step。

Reduce输出:sessionID,IP,in_time,pagename,step,stayTime

session1 192.168.1.100 8:30:25 a.html 1 10s
session1 192.168.1.100 8:30:35 c.html 2 30s
session1 192.168.1.100 8:31:05 d.html 3 60ssession2 192.168.1.100 18:31:05 k.html 1 25s
session2 192.168.1.100 18:31:30 m.html 2 60s

VistView模型:计算出用户在一次会话内的操作轨迹

Map输出:key(session),value(其他数据)

Reduce处理:


  1. 根据相同 session 按 setp 进行排序
  2. 取出第一条数据和最后一条数据的部分数据输出

Reduce输出:sessionID,ip,in_page,in_time,out_page,out_time,totalPage

session1 192.168.1.100 a.html 8:30:25 d.html 8:31:05 3
session2 192.168.1.100 k.html 18:31:05 m.html 18:31:30 2

推荐阅读
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
author-avatar
幸运幸福一家人1314_332_887
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有