一种网站流量数据统计方法和系统与流程
未命名
08-03
阅读:104
评论:0

1.本发明涉及一种网站流量数据统计方法和系统。
背景技术:
2.网站流量统计是改进网站运营的重要手段之一,通过获取用户在网站的行为链路,可以分析用户群偏好或分析网站内容的热度,以及网站页面问题,针对这些问题,使网站的页面改进,用户体验提升,转化提升更加有针对性。常用网站流量统计方式主要有两种:1、在自己的网站服务器进行埋点、监测与分析;2、采用第三方提供的网站流量数据统计方式。方法1可以更加灵活地获得用户数据,但是在向第三方进行数据说明时缺乏说服力,且由于数据安全的问题,导致监测方无法与数据样本进行匹配,流量属性分析的准确性下降,且一般均为处理离线数据,缺失实时数据的即时触达与监测;方法2通常需要服务计费,且功能受限于第三方网站的功能规划,对于企业需要个性化定制场景,较为受限。
技术实现要素:
3.本发明要克服现有存在的上述缺点,提供一种网站流量数据统计方法和系统。本发明的网站流量数据统计的方法,通过获取用户在网站的行为,构造点击流模型,从而更具有针对性改进网站,包括:
4.(1)利用javascript埋点代码,在网站的页面添加数据统计代码和数据传输地址,用来创建、记录、收集用户访问行为信息;
5.(2)处理接收埋点服务器的信息,并以日志的形式记录,通过记录的头信息,浏览器信息,再将收集的日志数据通发送到下游的flume日志框架;
6.(3)分别将日志流进行离线批处理与实时流处理;
7.(4)离线批处理日志通过mapreduce数据清洗后存入hive中;
8.(5)通过etl、storm等计算工具按照业务逻辑进行计算,输出处理后的日志数据;
9.(6)根据实际需要,将日志数据分为多张表并持久化到数据库;
10.(7)数据可视化展示,通过图表组件,对流量数据进行可视化展示。
11.所述步骤(1)具体包括:
12.首先需在js代码实现埋点,编写特定的js脚本,记录页面uv、cookie、session等用户特征信息并将代码嵌入到需要做日志分析的web页面。
13.所述步骤(2)具体包括:通过埋点代码记录的用户基本信息,存在冗余信息或存在缺失信息,通过编写收集日志的服务端对日志进行预处理,包括url转码、日志信息进行统一格式,获取ip等,定义一个继承httpservlet类的logservlet类,重写doget或dopost方法,定义统一日志格式,并补全用户信息,将流量指标信息传入后台服务器;此外,为增加数据采集的丰富度,服务器添加日志记录组件,该组件通过定义@aoplog注解,并创建一个线程中唯一的logdata对象,logdata对象规范了应用中固定的日志打印格式,该对象不仅可打印接口参数还可用于记录服务方法中的过程参数,通过对接口植入切面,进行日志处理;
连通日志服务器与flume,通过日志的propertis配置,配置flume端口号、地址等信息将日志分别打印至flume和控制台。
14.所述步骤(3)包括:在flume的data目录下创建weblog.conf并配置相应的采集源、下沉目标即hdfs文件系统以及二者之间的传递通道采用文件的方式传递;每当有新文件出现,就分别将log4j传来的离线数据按时间分组存放到中hdfs,实时统计的数据则存入kafka的生产者中。
15.所述步骤(4)中:通过编写mapreduce程序进行离线数据清洗,定制任务调度模块,定时处理数据,将数据段进行分区、排序、规约、分组,并用“,”作为数据段间隔;该处理过程由于需要按照一定的时间规律进行重复计算,因而添加任务调度模块,由任务调度模块对mapreduce的处理进行统一管理和调度;最后将程序打包成jar包上传到linux并运行jar包,即可执行数据清洗的流程;并通过导入命令将清洗后的数据导入hive中,按时间进行分区;
16.针对需要实时处理的数据,通过storm进行流式的实时计算,storm对于持续产生的数据流的处理非常迅速,但是由于数据流的产生并不均匀,因此引进kafka使数据流均匀发送到storm订阅的topic,然后进行后续处理。
17.所述步骤(5)具体包括:利用etl对hive的数据进行分析,etl将业务系统的数据经过抽取、清洗转换之后加载到数据仓库;通过etl将日志数据整合到一起,根据业务逻辑,为客户的决策提供分析依据;查询用户归属地,计算总流量最高的地区。
18.所述步骤(6)中:将计算后的指标持久化到数据库,所述持久化步骤采用数据导出工具sqoop实现。
19.所述步骤(7)中:所述数据可视化页面采用echarts,定制开发对应的web程序实现。
20.实施本发明的网站流量数据统计的方法的系统,其特征在于:包括:
21.网站页面标注模块,用于利用javascript埋点代码,在网站的页面添加数据统计代码和数据传输地址,用来创建、记录、收集用户访问行为信息;
22.日志记录和发送模块,用于处理接收埋点服务器的信息,并以日志的形式记录,通过记录的头信息,浏览器信息,再将收集的日志数据通发送到下游的flume日志框架;
23.日志流处理模块,用于分别将日志流进行离线批处理与实时流处理;
24.离线批处理日志数据清洗模块,用于离线批处理日志通过mapreduce数据清洗后存入hive中;
25.日志数据处理模块,用于通过etl、storm计算工具按照业务逻辑进行计算,输出处理后的日志数据;
26.日志数据分表和持久化模块,用于根据实际需要,将日志数据分为多张表并持久化到数据库;
27.数据可视化模块,用于数据可视化展示,通过图表组件,对流量数据进行可视化展示。
28.本发明还包括一种计算设备,包括存储器和处理器,其中,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现本发明的方法。
29.本发明工作原理:
30.流量采集技术是监控网络流量的重要来源,为了能够在复杂的企业网站页面中有效地对页面流量进行分析,本发明主要包括三个部分,第一个部分是记录用户访问全过程,如用户ip地址、浏览器信息、操作系统信息、停留时间、会话记录等用户页面浏览、点击数据;并通过代码的日志组件记录服务器运行过程中的用户数据;第二个部分是记录数据处理部分,包括分别对离线流量数据与实时流量数据的并行清洗、过滤及日志分文件梳理;第三个部分是对于有效数据的分析部分,包括定义指标,从数据库中获取在线人数、周浏览量等业务指标。本发明基于flume日志收集框架、mapreduce并行程序设计框架处理数据,运用java spring开发框架结合hive、sqllite2数据库,完成对网站数据记录、监测与分析的全流程数据统计。
31.本发明针对现有技术的不足,通过获取用户在网站的行为,构造点击流模型,针对不同的数据类型进行流量数据的统计,从而更具有针对性改进网站。该方法主要涉及以下四个模块:数据采集模块、数据清洗模块、数据处理与数据展示模块。硬件消耗少,数据处理及时可靠,支持大数据处理,可扩展性好。
32.数据采集模块结合网站nginx日志文件与在网站页面添加数据统计的埋点javascript代码实现,统一处理并发送到日志服务器处理。利用flume配置代理agent收集日志并通过sink组件分别发送到消息中间件kafka与hdfs,处理实时与离线日志数据,根据数据类型分为:离线数据与实时数据,并采用不同的数据处理模块进行处理;数据清洗将数据统一为规整的格式化结构,利用mapreduce的key值进行数据的分区分组与排序,并将离线数据存储到数据仓库hive,通过etl计算工具将业务指标等数据最终将数据存入数据库中;实时数据经过storm实时计算后也将相应数据存入数据库;最终通过数据可视化界面进行展示。结合离线与实时的两种数据处理方式,保障网站流量数据的准确性与实时性。
33.本发明的系统可以应用于大数据网站流量统计场景,集成日志组件与数据,解耦大数据模块与前台应用服务器处理模块,解决应用服务器访问压力,保证网站流量的准确性与分析实时性。
34.本发明的优点:本发明在功能上基于成熟的mapreduce计算框架与storm大数据处理框架集成,保证了离线数据与实时数据并行分析的可行性,在实现系统的高可用性的同时,网站数据有效信息能即时触达运营人员,可即时调整对应的运营策略,且开发维护成本较低,也在一定程度保证数据的可靠性。
附图说明
35.图1为本发明的具体实施方法流程图。
36.图2为本发明的系统模块构成示意图。
37.图3为本发明的系统流程示意图。
38.图4为本发明的系统计算设备框架图。
39.图5为本发明的应用服务器系统架构图。
具体实施方式
40.上述实例是示例性的,不能理解为对本发明的限制,本发明的专利保护范围包括但不限于上述具体示例实施方式。任何符合本发明的一种网站流量数据统计的方法及系统
的权利要求说明的且任何本领域的技术人员在本发明范围内根据业务场景不同,业务指标不同,预训练词向量的选取、分词算法的变化、替换和变型,皆应落入本发明的专利保护范围。
41.实施例1
42.参照图1、图3、图4、图5,一种网站流量数据统计的方法,包括具体步骤如下:
43.(1)针对网站页面,首先需在js代码实现埋点,添加数据统计代码和设置数据传输代码,用以判断、创建、记录和传输页面流量数据与用户数据。js埋点代码如下:
44./*main function*/
45.function a1_main(){
46.var dest_path=数据接收地址;
47.var expire_time=会话超时时长;
48.//处理uv
49.//处理cookie
50.//处理session
51.//处理域名
52.}
53.(a)根据操作符设置不同的cookie:0表示不设置超时时间cookie是一个会话级别的cookie,cookie信息保存在浏览器内存当中浏览器关闭时cookie消失;1表示设置超时时间为10年以后cookie会一直保存在浏览器的临时文件夹里直到超时时间到来或用户手动清空cookie为止;2表示设置超时时间为1个小时以后cookie会一直保存在浏览器的临时文件夹里直到超时时间到来或用户手动清空cookie为止。
54.(b)与uv有关的cookie:uv_id的值,如果uv_id为空,为这个新uv配置id,为一个长度20的随机数字uv_id=get_random(20);设置cookie:uv保存时间为10年set_cookie("uv",uv_id,1);如果cookie值uv不为空,则获取uv_id;
55.(c)获取会话的session:如果cookie中不存在ss的值,说明这是一次新的会话,随机生成长度为10的ss_id=get_random(10);拼接格式为"会话编号_会话期内访问次数_客户端时间_网站";若存在,则判断会话是否超时,如超时,重新生成会话id,并设置会话中页面访问次数为0次,若无超时,则页面访问次数+1。
56.(d)除处理cookie之外,另有js埋点浏览器等信息等,将埋点信息传入日志框架中。页面加载时调用上述部分代码:
57.windows.onload()=function(){
58.a1_main();
59.}
60.(2)日志框架接收处理埋点服务器的信息:将记录的用户信息,页面信息,浏览器信息等埋点信息发送到下游的flume日志框架。
61.(a)由于埋点数据存在冗余信息或存在缺失信息,通过编写收集日志的服务端对日志进行预处理,包括url转码、日志信息进行统一格式,获取ip等,定义一个继承httpservlet类的logservlet类,重写doget或dopost方法,定义统一日志格式,并补全用户信息;
62.(b)此外,为追踪页面被浏览时的过程信息,服务器可添加日志记录组件,该组件通过定义@aoplog注解,并创建一个线程中唯一的logdata对象,logdata对象规范了应用中固定的日志打印格式,该对象不仅可打印接口参数还可用于记录服务方法中的过程参数,通过对接口植入切面,编写切面处理器,进行日志处理。连通日志服务器与flume,通过日志的propertis配置将日志分别打印至flume和控制台:
63.log4j.appender.flume=org.apache.flume.clients.log4jappender.log4jappender
64.log4j.appender.flume.hostname=flume地址
65.log4j.appender.flume.port=flume端口号
66.log4j.appender.flume.unsafemode=true
67.(3)分别将日志流进行离线批处理和实时流处理;
68.(a)离线批处理:在flume的data目录下创建weblog.conf,并配置相应的source(数据源)、channel(连接source与sink)、sink(数据目标),将log4j传来的离线数据按时间分组存放到hdfs中,
69.a1.sources=r1
70.a1.channels=c1
71.a1.sinks=k1
72.a1.sources.r1.type=avro
73.a1.sources.r1.bind=0.0.0.0
74.a1.sources.r1.port=44444
75.a1.sources.r1.interceptors=i1
76.a1.sources.r1.interceptors.i1.type=timestamp
77.a1.sinks.k1.type=hdfs
78.a1.sinks.k1.hdfs.path=hdfs地址
79.a1.sinks.k1.hdfs.filetype=datastream
80.a1.sinks.k1.hdfs.rollinterval=40
81.a1.sinks.k1.hdfs.rollsize=0
82.a1.sinks.k1.hdfs.rollcount=2000
83.a1.channels.c1.type=memory
84.a1.channels.c1.capacity=2000
85.a1.channels.c1.transactioncapacity=200
86.a1.sources.r1.channels=c1
87.a1.sinks.k1.channel=c1
88.(b)数据清洗:mapreduce采用行处理方式,定制mapreduce程序对采集到的原始日志数据进行预处理,比如清洗,格式整理,滤除脏数据等。首先读取文件数据,对不符合需求的数据进行过滤,将待处理的数据梳理成点击流模型数据。并将本次预处理的数据导入hive中。该处理过程由于需要按照一定的时间规律重复计算,如对每日数据定时处理,因而,添加任务调度模块,管理任务单元的调度。
[0089][0090][0091]
(c)再将hdfs中的数据存入hive表中时,按照时间进行分区。通过etl分析工具得出各种统计结果,并将结果持久化到mysql数据库中,最终通过echarts进行可视化处理,便于运营决策人员获取数据,更简单快捷地理解数据。
[0092]
(4)实时流处理;
[0093]
(a)在部署网站的的节点上添加flume的agent代理,将这些实时记录集中收集起来,然后在flume的sink组件处添加输送的目标地址。并将实时记录输送到kafka集群的,在sink组件处填写指向kafka集群的信息,flume配置如下:
[0094]
agent.sources=r1
[0095]
agent.sinks=k1
[0096]
agent.channels=c1
[0097]
#describe/configure the source
[0098]
agent.sources.r1.type=netcat
[0099]
agent.sources.r1.bind=192.168.223.128
[0100]
agent.sources.r1.port=8888
[0101]
#describe the sink
[0102]
agent.sinks.k1.type=org.apache.flume.sink.kafka.kafkasink
[0103]
agent.sinks.k1.kafka.bootstrap.servers=192.168.223.128:9092
[0104]
agent.sinks.k1.kafka.topic=log4j-flume-kafka
[0105]
agent.sinks.k1.serializer.class=kafka.serializer.stringencoder
[0106]
agent.sinks.k1.kafka.producer.acks=1
[0107]
agent.sinks.k1.custom.encoding=utf-8
[0108]
agent.channels.c1.type=memory
[0109]
agent.channels.c1.capacity=1000
[0110]
agent.channels.c1.transactioncapacity=100
[0111]
#将source and sink绑定到channel
[0112]
##配置传输通道
[0113]
agent.sources.r1.channels=c1
[0114]
agent.sinks.k1.channel=c1
[0115]
收集的实时记录就被存储在kafka的生产者端。
[0116]
(b)将kafka集群中要消费的数据,通过kafkaspout输送到storm集群。storm是个实时的、分布式以及具备高容错的计算系统。同hadoop一样storm也可以处理大批量的数据;数据在进入到storm集群后,通过storm的实时计算模型,通过域分组对数据流进行分组,如果某个数据流是基于一个名为“ip”的域名进行分组的,那么所有包含相同的“ip”的元组都会被分配到同一个任务中,这样就可以确保消息处理的一致性。按照业务指标做对应的计算,并将计算之后的结果持久化到db库当中去,这里一般可利用mysql或redis来做数据的持久化。
[0117]
实施例2
[0118]
参考附图2~图5,本实施例涉及用于实施实施例1的网站流量数据统计的方法的系统,包括:
[0119]
网站页面标注模块,用于利用javascript埋点代码,在网站的页面添加数据统计代码和数据传输地址,用来创建、记录、收集用户访问行为信息;
[0120]
日志记录和发送模块,用于处理接收埋点服务器的信息,并以日志的形式记录,通过记录的头信息,浏览器信息,再将收集的日志数据通发送到下游的flume日志框架;
[0121]
日志流处理模块,用于分别将日志流进行离线批处理与实时流处理;
[0122]
离线批处理日志数据清洗模块,用于离线批处理日志通过mapreduce数据清洗后存入hive中;
[0123]
日志数据处理模块,用于通过etl、storm计算工具按照业务逻辑进行计算,输出处理后的日志数据;
[0124]
日志数据分表和持久化模块,用于根据实际需要,将日志数据分为多张表并持久化到数据库;
[0125]
数据可视化模块,用于数据可视化展示,通过图表组件,对流量数据进行可视化展示。
[0126]
实施例3
[0127]
本发明还包括一种计算设备,包括存储器和处理器,其中,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现实施例1的一种网站流量数据统计的方法。
技术特征:
1.网站流量数据统计的方法,其特征在于,通过获取用户在网站的行为,构造点击流模型,从而更具有针对性改进网站,包括:(1)利用javascript埋点代码,在网站的页面添加数据统计代码和数据传输地址,用来创建、记录、收集用户访问行为信息;(2)处理接收埋点服务器的信息,并以日志的形式记录,通过记录的头信息,浏览器信息,再将收集的日志数据通发送到下游的flume日志框架;(3)分别将日志流进行离线批处理与实时流处理;(4)离线批处理日志通过mapreduce数据清洗后存入hive中;(5)通过etl、storm等计算工具按照业务逻辑进行计算,输出处理后的日志数据;(6)根据实际需要,将日志数据分为多张表并持久化到数据库;(7)数据可视化展示,通过图表组件,对流量数据进行可视化展示。2.根据权利要求1所述的一种网站流量数据统计的方法,其特征在于,所述步骤(1)具体包括:首先需在js代码实现埋点,编写特定的js脚本,记录页面uv、cookie、session等用户特征信息并将代码嵌入到需要做日志分析的web页面。3.根据权利要求1所述的一种网站流量数据统计的方法,其特征在于,所述步骤(2)具体包括:通过埋点代码记录的用户基本信息,存在冗余信息或存在缺失信息,通过编写收集日志的服务端对日志进行预处理,包括url转码、日志信息进行统一格式,获取ip等,定义一个继承httpservlet类的logservlet类,重写doget或dopost方法,定义统一日志格式,并补全用户信息,将流量指标信息传入后台服务器;此外,为增加数据采集的丰富度,服务器添加日志记录组件,该组件通过定义@aoplog注解,并创建一个线程中唯一的logdata对象,logdata对象规范了应用中固定的日志打印格式,该对象不仅可打印接口参数还可用于记录服务方法中的过程参数,通过对接口植入切面,进行日志处理;连通日志服务器与flume,通过日志的propertis配置,配置flume端口号、地址等信息将日志分别打印至flume和控制台。4.根据权利要求1所述的一种网站流量数据统计的方法,其特征在于,所述步骤(3)包括:在flume的data目录下创建weblog.conf并配置相应的采集源、下沉目标即hdfs文件系统以及二者之间的传递通道采用文件的方式传递;每当有新文件出现,就分别将log4j传来的离线数据按时间分组存放到中hdfs,实时统计的数据则存入kafka的生产者中。5.根据权利要求1所述的一种网站流量数据统计的方法,其特征在于,所述步骤(4)中:通过编写mapreduce程序进行离线数据清洗,定制任务调度模块,定时处理数据,将数据段进行分区、排序、规约、分组,并用“,”作为数据段间隔;该处理过程由于需要按照一定的时间规律进行重复计算,因而添加任务调度模块,由任务调度模块对mapreduce的处理进行统一管理和调度;最后将程序打包成jar包上传到linux并运行jar包,即可执行数据清洗的流程;并通过导入命令将清洗后的数据导入hive中,按时间进行分区;针对需要实时处理的数据,通过storm进行流式的实时计算,storm对于持续产生的数据流的处理非常迅速,但是由于数据流的产生并不均匀,因此引进kafka使数据流均匀发送到storm订阅的topic,然后进行后续处理。6.根据权利要求1所述的一种网站流量数据统计的方法,其特征在于,所述步骤(5)具
体包括:利用etl对hive的数据进行分析,etl将业务系统的数据经过抽取、清洗转换之后加载到数据仓库;通过etl将日志数据整合到一起,根据业务逻辑,为客户的决策提供分析依据;查询用户归属地,计算总流量最高的地区。7.根据权利要求1所述的一种网站流量数据统计的方法,其特征在于,所述步骤(6)中:将计算后的指标持久化到数据库,所述持久化步骤采用数据导出工具sqoop实现。8.根据权利要求1所述的一种网站流量数据统计的方法,其特征在于,所述步骤(7)中:所述数据可视化页面采用echarts,定制开发对应的web程序实现。9.实施权利要求1所述的网站流量数据统计的系统,其特征在于:网站页面标注模块,用于利用javascript埋点代码,在网站的页面添加数据统计代码和数据传输地址,用来创建、记录、收集用户访问行为信息;日志记录和发送模块,用于处理接收埋点服务器的信息,并以日志的形式记录,通过记录的头信息,浏览器信息,再将收集的日志数据通发送到下游的flume日志框架;日志流处理模块,用于分别将日志流进行离线批处理与实时流处理;离线批处理日志数据清洗模块,用于离线批处理日志通过mapreduce数据清洗后存入hive中;日志数据处理模块,用于通过etl、storm计算工具按照业务逻辑进行计算,输出处理后的日志数据;日志数据分表和持久化模块,用于根据实际需要,将日志数据分为多张表并持久化到数据库;数据可视化模块,用于数据可视化展示,通过图表组件,对流量数据进行可视化展示。10.一种计算设备,包括存储器和处理器,其中,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-8中任一项所述的方法。
技术总结
网站流量数据统计的方法,包括:利用JavaScript埋点代码,在网站的页面添加数据统计代码和数据传输地址,创建、记录、收集用户访问行为信息;处理接收埋点服务器的信息,并以日志的形式记录,通过记录的头信息,浏览器信息,再将收集的日志数据通发送到下游的Flume日志框架;分别将日志流进行离线批处理与实时流处理;离线批处理日志通过MapReduce数据清洗后存入Hive中;通过ETL、Storm等计算工具按照业务逻辑进行计算,输出处理后的日志数据;根据实际需要,将日志数据分为多张表并持久化到数据库;数据可视化展示,通过图表组件,对流量数据进行可视化展示。还包括一种网站流量数据统计系统。本发明结合离线与实时两种数据处理方式,保障网站流量数据的准确性与实时性。保障网站流量数据的准确性与实时性。保障网站流量数据的准确性与实时性。
技术研发人员:徐黎 沈程 孙婉琪 郭伟杰 王天放 刘敏
受保护的技术使用者:之江实验室
技术研发日:2023.03.10
技术公布日:2023/8/1
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/