一种基于Nginx日志行为采集和跟踪的方法及装置
文献发布时间:2023-06-19 09:38:30
技术领域
本发明涉及大数据的技术领域,更具体地说,它涉及一种基于Nginx日志行为采集和跟踪的方法及装置。
背景技术
行为采集和跟踪,是指根据用户的操作采集用户的行为,进行用户各个行为的一系列跟踪,涉及到大量数据的采集和分析。能很好的根据用户行为和跟踪做用户分析,根据分析结果进行产品优化或集成到推荐系统里面。比如现在的友盟、growingio等统计平台。但是这些平台多为针对使用端进行采集,并与UI控件绑定在一起,移动端和前端的开发较复杂,开发的成本较高,且均为第三方平台,定制化低,无法集成到自己的系统进行定制开发。
发明内容
针对现有技术存在的不足,本发明的目的在于提供一种基于Nginx日志行为采集和跟踪的方法及装置,具有简单集成、高定制化和侵入性低的优点。
本发明的上述技术目的是通过以下技术方案得以实现的,一种基于Nginx日志行为采集和跟踪的方法,包括以下步骤:
获取必传参数,并通过DES加解密的方式,生成用户唯一码;
基于所述必传参数和所述用户唯一码,修改Nginx的配置文件,并打印请求内容输出至日志文件中;
设定扫描时间,以定期扫描和采集Nginx的分片日志记录;
定义日志参数模板字符串,生成实体类记录列表,然后对所述分片日志记录进行清洗,以在所述实体类记录列表中记录所需信息;
通过Java反射获取实体类中变量名,生成Mysql数据库结构字段,然后将所述实体类记录列表的数据导入Mysql数据库持久化;
基于所述Mysql数据库,生成配置表,并设置所述配置表中的对应关系,以生成核心报表;
获取所述核心报表,并对其进行筛选和展示。
在其中一个实施例中,所述生成用户唯一码的步骤还具体包括以下步骤:
客户端获取请求参数,发送至服务端;
所述服务端判断所述客户端是否有所述用户唯一码;
若否,则根据用户登录状态、userld、时间戳、随机码和客户端识别符,通过DES加解密的方式,生成所述用户唯一码,并返回给所述客户端。
在其中一个实施例中,所述设定扫描时间的步骤前还包括以下步骤:
通过java异步线程定时任务的方式,设定所述扫描时间。
在其中一个实施例中,所述请求内容包括请求参数、时间戳、用户唯一码、Get请求中的参数值、接口链接、HTTP响应代码和用户终端浏览器。
在其中一个实施例中,所述生成核心报表的步骤还包括以下步骤:
基于所述Mysql数据库,生成入库数据的所述核心报表;
基于用户注册接口的接口链接、调用时间和调用状态码,生成实时数据的所述核心报表。
本发明还提供一种基于Nginx日志行为采集和跟踪的装置,包括:
信息获取模块,用于获取必传参数,并通过DES加解密的方式,生成用户唯一码;
信息导入模块,用于根据所述必传参数和所述用户唯一码,修改Nginx的配置文件,并打印请求内容至日志文件中;
日志采集模块,用于设定扫描时间,以定期扫描和采集Nginx的分片日志记录;
日志清洗模块,用于定义日志参数模板字符串,生成实体类记录列表,然后对分片日志记录进行清洗,以在实体类记录列表中记录所需信息;
日志导入模块,用于通过Java反射获取实体类中变量名,生成Mysql数据库结构字段,然后将所述实体类记录列表的数据导入Mysql数据库持久化;
日志统计模块,用于根据所述Mysql数据库,生成配置表,并设置所述配置表中的对应关系,以生成核心报表;
日志展示模块,用于获取所述核心报表,并对其进行筛选和展示。
在其中一个实施例中,所述信息获取模块还包括:
端口信息提取子模块,用于客户端获取请求头参数,并将该所述请求头参数发送至服务端;
端口信息判断子模块,用于所述服务端判断所述客户端是否有所述用户唯一码;
其中,若所述服务端判断所述客户端若没有所述用户唯一码,则所述端口信息判断子模块根据用户登录状态、userld、时间戳、随机码和客户端识别符,通过DES加解密的方式,生成所述用户唯一码,并返回给所述客户端。
在其中一个实施例中,所述日志采集模块还包括:
时间设定子模块,用于执行java异步线程定时任务的方式,设定所述扫描时间。
在其中一个实施例中,所述日志统计模块还包括:
入库数据生成子模块,用于根据所述Mysql数据库,生成入库数据的所述核心报表;
实时数据生成子模块,用于根据用户注册接口的接口链接、调用时间和调用状态码,生成实时数据的核心报表。
本发明具有以下有益效果:
其一,通过Nginx日志信息做数据采集,提供一套集成清洗、导入、统计分析和展示的平台,成本制作较低,具有简单集成、高定制化和侵入性低的效果;
其二,可以实时地可视化展示各种数据的报表,使得用户在调取数据时,非常的便利。
附图说明
图1是本发明基于Nginx日志行为采集和跟踪的方法的步骤流程图;
图2是发明基于Nginx日志行为采集和跟踪的装置的结构框图。
具体实施方式
下面结合附图和实施例,对本发明进行详细描述。
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
如图1所示,一种基于Nginx日志行为采集和跟踪的方法,包括以下步骤:
S1、获取必传参数,并通过DES加解密的方式,生成用户唯一码。
具体的,生成用户唯一码的具体步骤:客户端获取请求参数,发送至服务端;服务端判断客户端是否有用户唯一码;若否,则根据用户登录状态、userld、时间戳、随机码和客户端识别符,通过DES加解密的方式,生成用户唯一码,并返回给所述客户端。
DES加密钥的加解密通过执行以下代码实现:
S2、基于所述必传参数和所述用户唯一码,修改Nginx的配置文件,并打印请求内容输出至日志文件中。
具体的,请求内容包括请求参数、时间戳、用户唯一码、Get请求中的参数值、接口链接、HTTP响应代码和用户终端浏览器。
S3、设定扫描时间,以定期扫描和采集Nginx的分片日志记录。
具体的,通过设置java异步线程定时任务的方法,按照设定的时间(如10分钟扫描一次),定期去扫描Nginx的分片日志记录,且自动记录采集的行数,下次扫描则自动跳过对应的行数往下采集。
S4、定义日志参数模板字符串,生成实体类记录列表,然后对所述分片日志记录进行清洗,以在所述实体类记录列表中记录所需信息。
具体的,在定义日志参数模板字符串时,可以根据自定义的Nginx日志模板参数,筛选用户需要的参数定义成参数模板字数串,如果输入post请求参数、用户唯一码、时间戳、Get请求中的参数值、接口链接等就可以根据名称通过java反射寄至获取日志对应参数名的值。
S5、通过Java反射获取实体类中变量名,生成Mysql数据库结构字段,然后将所述实体类记录列表的数据导入Mysql数据库持久化。
S6、基于所述Mysql数据库,生成配置表,并设置所述配置表中的对应关系,以生成核心报表。
具体的,生成核心报表的步骤还包括以下步骤:
基于Mysql数据库,生成入库数据的核心报表;
基于用户注册接口的接口链接、调用时间和调用状态码,生成实时数据的核心报表。
入库数据的核心报表:通过生成数据库记录的配置表,设置接口链接与名称的对应关系,定义接口链接与接口链接之间的线性关系,结合入库数据,生成接口流程步骤数据报表,同时通过用户唯一码统计行为数据和跟踪行为数据,多种方式生成数据库的核心报表。
实时数据的核心报表:以采集数据选取的多维度,生成实时数据的核心报表,如新增用户,可以通过注册接口的接口链接、时间戳和调用状态码,同样可以针对各个接口的业务实现对应数据的核心报表。
S7、获取核心报表,并对其进行筛选和展示。
具体的,也可以通过筛选采集数据的数据库字段为维度,结合展示图形的方式,动态实时获取生成数据,并进行统计和展示。
如图2所示,本发明还提供一种基于Nginx日志行为采集和跟踪的装置,包括:
信息获取模块,用于获取必传参数,并通过DES加解密的方式,生成用户唯一码;
信息导入模块,用于根据必传参数和所述用户唯一码,修改Nginx的配置文件,并打印请求内容至日志文件中;
日志采集模块,用于设定扫描时间,以定期扫描和采集Nginx的分片日志记录;
日志清洗模块,用于定义日志参数模板字符串,生成实体类记录列表,然后对分片日志记录进行清洗,以在实体类记录列表中记录所需信息;
日志导入模块,用于通过Java反射获取实体类中变量名,生成Mysql数据库结构字段,然后将实体类记录列表的数据导入Mysql数据库持久化;
日志统计模块,用于根据Mysql数据库,生成配置表,并设置所述配置表中的对应关系,以生成核心报表;
日志展示模块,用于获取核心报表,并对其进行筛选和展示。
具体的,信息获取模块还包括端口信息提取子模块和端口信息判断子模块。
端口信息提取子模块用于客户端获取请求头参数,并将该请求头参数发送至服务端;
端口信息判断子模块用于供服务端判断所述客户端是否有所述用户唯一码;
其中,若服务端判断客户端若没有用户唯一码,则端口信息判断子模块根据用户登录状态、userld、时间戳、随机码和客户端识别符,通过DES加解密的方式,生成用户唯一码,并返回给客户端。
日志采集模块还包括时间设定子模块。
时间设定子模块用于执行java异步线程定时任务的方式,设定扫描时间。
日志统计模块还包括入库数据生成子模块和实时数据生成子模块。
入库数据生成子模块用于根据Mysql数据库,生成入库数据的核心报表;
实时数据生成子模块,用于根据用户注册接口的接口链接、调用时间和调用状态码,生成实时数据的核心报表。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
- 一种基于Nginx日志行为采集和跟踪的方法及装置
- 基于电视机的行为日志采集方法及装置