美文网首页
【网站点击流数据分析】03-数据采集

【网站点击流数据分析】03-数据采集

作者: Aluha_f289 | 来源:发表于2020-05-20 13:05 被阅读0次

1、需求

数据采集的需求广义上来说分为两大部分。

1)是在页面采集用户的访问行为,具体开发工作:

  1. 开发页面埋点js,采集用户访问行为
  2. 后台接受页面js请求记录日志

此部分工作也可以归属为“数据源”,其开发工作通常由web开发团队负责。
2)是从web服务器上汇聚日志到HDFS,是数据分析系统的数据采集,此部分工作由数据分析平台建设团队负责,具体的技术实现有很多方式:

Shell脚本
优点:轻量级,开发简单

缺点:对日志采集过程中的容错处理不便控制

Java采集程序
优点:可对采集过程实现精细控制

缺点:开发工作量大

Flume日志采集框架
成熟的开源日志采集系统,且本身就是hadoop生态体系中的一员,与hadoop体系中的各种框架组件具有天生的亲和力,可扩展性强

2、技术选型

在点击流日志分析这种场景中,对数据采集部分的可靠性、容错能力要求通常不会非常严苛,因此使用通用的flume日志采集框架完全可以满足需求。

本项目即使用flume来实现日志采集。

3、Flume日志采集系统搭建

3.1、数据源信息

本项目分析的数据用nginx服务器所生成的流量日志,存放在各台nginx服务器上,如:

/var/log/httpd/access_log.2015-11-10-13-00.log
/var/log/httpd/access_log.2015-11-10-14-00.log
/var/log/httpd/access_log.2015-11-10-15-00.log
/var/log/httpd/access_log.2015-11-10-16-00.log

3.2、数据内容样例

数据的具体内容在采集阶段其实不用太关心。

58.215.204.118 - - [18/Sep/2013:06:51:35 +0000] 
"GET /wp-includes/js/jquery/jquery.js?ver=1.10.2 HTTP/1.1" 
304 0 "http://blog.fens.me/nodejs-socketio-chat/" "Mozilla/5.0 
(Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0"

字段解析:

1、访客ip地址: 58.215.204.118

2、访客用户信息: - -

3、请求时间:[18/Sep/2013:06:51:35 +0000]

4、请求方式:GET

5、请求的url:/wp-includes/js/jquery/jquery.js?ver=1.10.2

6、请求所用协议:HTTP/1.1

7、响应码:304

8、返回的数据流量:0

9、访客的来源url:http://blog.fens.me/nodejs-socketio-chat/

10、访客所用浏览器:Mozilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0

3.3、日志文件生成规律

基本规律为:

当前正在写的文件为access_log;

文件体积达到256M,或时间间隔达到60分钟,即滚动重命名切换成历史日志文件;

形如: access_log.2015-11-10-13-00.log。

当然,每个公司的web服务器日志策略不同,可在web程序的log4j.properties中定义,如下:

log4j.appender.logDailyFile = org.apache.log4j.DailyRollingFileAppender 

log4j.appender.logDailyFile.layout = org.apache.log4j.PatternLayout 

log4j.appender.logDailyFile.layout.ConversionPattern = [%-5p][%-22d{yyyy/MM/dd HH:mm:ssS}][%l]%n%m%n 

log4j.appender.logDailyFile.Threshold = DEBUG 

log4j.appender.logDailyFile.ImmediateFlush = TRUE 

log4j.appender.logDailyFile.Append = TRUE 

log4j.appender.logDailyFile.File = /var/logs/access_log 

log4j.appender.logDailyFile.DatePattern = '.'yyyy-MM-dd-HH-mm'.log' 

log4j.appender.logDailyFile.Encoding = UTF-8

3.4、Flume采集实现

Flume采集系统的搭建相对简单:

  1. 在个web服务器上部署agent节点,修改配置文件
  2. 启动agent节点,将采集到的数据汇聚到指定的HDFS目录中
    如下图:


    image.png

版本选择:apache-flume-1.6.0
采集规则设计
采集源:nginx服务器日志目录
存放地:hdfs目录/home/hadoop/weblogs/
采集规则配置详情


agent1.sources = source1
agent1.sinks = sink1
agent1.channels = channel1
# Describe/configure spooldir source1
# agent1.sources.source1.type = spooldir
#agent1.sources.source1.spoolDir= /var/logs/nginx/#agent1.sources.source1.fileHeader = false
# Describe/configure tail -F source1

#使用exec作为数据源source组件
agent1.sources.source1.type = exec

#使用tail -F命令实时收集新产生的日志数据
agent1.sources.source1.command = tail -F /var/logs/nginx/access_log
agent1.sources.source1.channels = channel1

#configure host for source
#配置一个拦截器插件
agent1.sources.source1.interceptors = i1
agent1.sources.source1.interceptors.i1.type = host

#使用拦截器插件获取agent所在服务器的主机名
agent1.sources.source1.interceptors.i1.hostHeader = hostname
#配置sink组件为hdfs
agent1.sinks.sink1.type = hdfs

#指定文件sink到hdfs上的路径
agent1.sinks.sink1.hdfs.path=hdfs://hdp-node-01:9000/weblog/flume-collection/%y-%m-%d/%H-%M_%hostname
#指定文件名前缀
agent1.sinks.sink1.hdfs.filePrefix = access_log
agent1.sinks.sink1.hdfs.maxOpenFiles = 5000

#指定每批下沉数据的记录条数
agent1.sinks.sink1.hdfs.batchSize= 100
agent1.sinks.sink1.hdfs.fileType = DataStream
agent1.sinks.sink1.hdfs.writeFormat =Text

#指定下沉文件按1G大小滚动
agent1.sinks.sink1.hdfs.rollSize = 1024*1024*1024

#指定下沉文件按1000000条数滚动
agent1.sinks.sink1.hdfs.rollCount = 1000000

#指定下沉文件按30分钟滚动
agent1.sinks.sink1.hdfs.rollInterval = 30
agent1.sinks.sink1.hdfs.useLocalTimeStamp = true

#使用memory类型channel
agent1.channels.channel1.type = memory
agent1.channels.channel1.keep-alive = 120
agent1.channels.channel1.capacity = 500000
agent1.channels.channel1.transactionCapacity = 600

# Bind the source and sink to the channel
agent1.sources.source1.channels = channel1
agent1.sinks.sink1.channel = channel1

启动采集
在部署了flume的nginx服务器上,启动flume的agent,命令如下:

bin/flume-ng agent --conf ./conf -f ./conf/weblog.properties.2 -n agent

注意:启动命令中的 -n 参数要给配置文件中配置的agent名称。

相关文章

  • 【网站点击流数据分析】03-数据采集

    1、需求 数据采集的需求广义上来说分为两大部分。 1)是在页面采集用户的访问行为,具体开发工作: 开发页面埋点js...

  • 网站数据挖掘--基础部分(未完)

    标签(空格分隔): 数据挖掘 数据分析 数据采集 网站数据采集、功能配置、系统实施和基本运营都是网站数据分析师的工...

  • SparkCore项目实战|Top10热门品类|Top10热门品

    数据分析本项目的数据是采集电商网站的用户行为数据,主要包含用户的4种行为:搜索、点击、下单和支付。 (1)数据采用...

  • 了解爬虫1

    crapy爬虫=数据采集 简单:静态网站 难:动态、加密(逆向)、验证码(滑动、点击、倒立) 数据为王: 数据怎么...

  • 产品要懂点数据分析(三)- 分析过程

    数据采集 数据分析的对象就是数据,通过数据采集来获得数据。数据采集在《产品要懂点数据分析(一)-数据采集和数据指标...

  • 数据埋点和指标字典

    数据埋点 数据埋点是一种常用的数据采集方法,埋点是数据的来源,采集数据以帮助业务人员分析网站或者app的使用...

  • 新手必须要了解的数据埋点知识

    什么是数据埋点? 埋点是网站和APP等产品进行日常改进及数据分析的数据采集基础,我们主要用来采集用户行为数据(例如...

  • 数据仓库搭建

    全流程:数据采集->数据存储->数据分析->数据呈现 数据采集 首先我们从数据采集来说,数据采集的数据主要来自于日...

  • 大数据技术简介

    数据采集技术 数据存储技术 离线数据分析技术 实时数据分析技术 数据可视化技术 数据采集技术 离线采集数据库数据s...

  • 4.3数据埋点

    数据埋点,是一种常用的数据采集方法。埋点是数据的来源,采集的数据可以帮助业务人员分析网站或者app的使用情况、用户...

网友评论

      本文标题:【网站点击流数据分析】03-数据采集

      本文链接:https://www.haomeiwen.com/subject/yhigohtx.html