nginx+flume网络流量日志实时数据分析实战_日志数据分析

运行flume采集
 /export/server/flume-1.8.0/bin/flume-ng agent -c conf -f /export/server/flume-1.8.0/conf/web_log.conf -n a1  -Dflume.root.logger=INFO,console


image-20230511161942509

数据预处理-清洗

Flume采集获取的日志数据是不能直接用于分析的,需要做下预处理:
预处理需求:
1:剔除字段长度不够的日志数据
2:剔除对分析没有意义的字段
3:转换日期格式
4:对原日志数据进行切割,分隔符指定为 ‘\001’
5:对数据的有效行进行标记

数据清洗:
hadoop jar /export/data/mapreduce/web_log.jar cn.itcast.bigdata.weblog.pre.WeblogPreProcess   

网络流量日志数据分析-点击流模型数据

点击流概念

点击流(Click Stream)是指用户在网站上持续访问的轨迹。注重用户浏览网站的整个流程。用户对网站的每次访问包含了一系列的点击动作行为,这些点击行为数据就构成了点击流数据(Click Stream Data),它代表了用户浏览网站的整个流程。

image-20230511162032708

在点击流模型中,存在着两种模型数据:PageViews、Visits。

点击流模型pageviews

Pageviews模型数据专注于用户每次会话(session)的识别,以及每次session内访问了几步和每一步的停留时间。
在网站分析中,通常把前后两条访问记录时间差在30分钟以内算成一次会话。如果超过30分钟,则把下次访问算成新的会话开始。
大致步骤如下:
在所有访问日志中找出该用户的所有访问记录
把该用户所有访问记录按照时间正序排序
计算前后两条记录时间差是否为30分钟
如果小于30分钟,则是同一会话session的延续
如果大于30分钟,则是下一会话session的开始
用前后两条记录时间差算出上一步停留时间
最后一步和只有一步的 业务默认指定页面停留时间60s。

--得到pageviews模型
hadoop jar /export/data/mapreduce/web_log.jar  cn.itcast.bigdata.weblog.clickstream.ClickStreamPageView   

点击流模型Visits

Visits模型专注于每次会话session内起始、结束的访问情况信息。比如用户在某一个会话session内,进入会话的起始页面和起始时间,会话结束是从哪个页面离开的,离开时间,本次session总共访问了几个页面等信息。
大致步骤如下:
在pageviews模型上进行梳理
在每一次回收session内所有访问记录按照时间正序排序
第一天的时间页面就是起始时间页面
业务指定最后一条记录的时间页面作为离开时间和离开页面。

得到visits模型
hadoop jar /export/data/mapreduce/web_log.jar cn.itcast.bigdata.weblog.clickstream.ClickStreamVisit    

网络日志数据分析-数据加载

对于日志数据的分析,Hive也分为三层:ods层、dw层、app层

创建数据库
create database if not exists  web_log_ods;
create database if not exists  web_log_dw;
create database if not exists  web_log_app;

创建ODS层数据表
原始日志数据表
drop table if exists web_log_ods.ods_weblog_origin;
  create table web_log_ods.ods_weblog_origin(
  valid string , --有效标记
  remote_addr string, --访客ip
  remote_user string, --访客用户信息
  time_local string, --请求时间
  request string,  --请求url
  status string, --响应状态码
  body_bytes_sent string, --响应字节数
  http_referer string, --来源url
  http_user_agent string --访客终端信息
  ) 
  partitioned by (dt string)
  row format delimited fields terminated by '\001';


点击流模型pageviews表
drop table if exists web_log_ods.ods_click_pageviews;
create table  web_log_ods.ods_click_pageviews(
session string, --会话id
remote_addr string, --访客ip
remote_user string, --访客用户信息
time_local str
flume是一个分布式、可靠、高可用的数据采集、聚合和传输系统。在数据采集方面,flume可以很好地与nginx、kafka、mongodb等常见的数据处理工具和数据库进行集成。下面介绍一下基于nginx+flume+kafka+mongodb实现埋点数据采集的步骤: 1. 配置nginx服务器,将所有的http请求都转发到flume服务器上。可以使用nginx的proxy_pass指令来实现。 2. 在flume服务器上,配置flume agent来接收nginx服务器转发过来的http请求,并将请求数据转发给kafka服务器。flume的配置文件中需要设置source、channel和sink三个部分,具体配置可以参考flume官方文档。 3. 在kafka服务器上,创建一个topic来存储flume发送过来的http请求数据。可以使用kafka的命令行工具kafka-topics来创建topic。 4. 在flume服务器上,配置一个kafka sink来将http请求数据发送到kafka服务器上的指定topic中。 5. 在mongodb数据库中创建一个collection来存储http请求数据。可以使用mongodb的命令行工具mongo来创建collection。 6. 在flume服务器上,配置一个mongodb sink来将http请求数据从kafka服务器中消费,并将其存储到mongodb数据库中的指定collection中。 7. 启动nginxflume、kafka和mongodb服务,并进行测试。可以使用curl等工具模拟http请求,并查看数据是否能够被成功采集、存储到mongodb中。 以上就是基于nginx+flume+kafka+mongodb实现埋点数据采集的基本步骤。需要注意的是,具体的配置和实现过程可能会因为不同的业务需求而有所差异。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值