CN113157658B - 客户端日志收集分发方法、装置及计算机设备 - Google Patents

客户端日志收集分发方法、装置及计算机设备 Download PDF

Info

Publication number
CN113157658B
CN113157658B CN202110522379.2A CN202110522379A CN113157658B CN 113157658 B CN113157658 B CN 113157658B CN 202110522379 A CN202110522379 A CN 202110522379A CN 113157658 B CN113157658 B CN 113157658B
Authority
CN
China
Prior art keywords
data
conversion
mirror image
proxy
file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110522379.2A
Other languages
English (en)
Other versions
CN113157658A (zh
Inventor
张中来
陈红
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Easyplay Interactive Network Technology Co ltd
Original Assignee
Interactive Entertainment Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Interactive Entertainment Co Ltd filed Critical Interactive Entertainment Co Ltd
Priority to CN202110522379.2A priority Critical patent/CN113157658B/zh
Publication of CN113157658A publication Critical patent/CN113157658A/zh
Application granted granted Critical
Publication of CN113157658B publication Critical patent/CN113157658B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了客户端日志收集分发方法、装置、计算机设备及存储介质,涉及大数据技术,接收和加载服务器发送的用于收集日志的代理镜像,并接收和存储服务器发送的用于写入用户端本地参数的第一脚本;若当前系统时间与上一日志采集时间之间的时间间隔等于日志采集周期,通过运行第一脚本获取当前本地参数,将当前本地参数传入代理镜像;根据数据流配置模板信息将当前本地参数进行数据流转换,得到对应的镜像容器数据;将镜像容器数据推送到目的端。实现了无需用户端本地安装日志收集系统或是通过指定API上传日志,降低了用户端日志收集成本,减少日志上传所占用带宽,提高了日志上传效率。

Description

客户端日志收集分发方法、装置及计算机设备
技术领域
本发明涉及日志监控技术领域,尤其涉及一种客户端日志收集分发方法、装置、计算机设备及存储介质。
背景技术
目前,常见的用户端日志收集方法有以下两种:一是服务端日志通过用户端上安装的FLUME(即日志收集系统)收集,并写入到Kafka(即分布式发布订阅消息系统)集群指定Topic(即主题)中;二是客户端日志通过指定API(即应用程序编程接口)上报到服务端,服务端将这些日志写入到Kafka、集群指定Topic中。但是目前的日志收集方法在用户端本地需要安装日志收集系统或是直接将日志文件通过指定API上传至服务器,不仅提高了用户端收集日志时使用成本,而且上传日志相对占用带宽,影响了日志收集上传的效率。
发明内容
本发明实施例提供了一种客户端日志收集分发方法、装置、计算机设备及存储介质,旨在解决现有技术中在用户端进行日志收集时,需在用户端本地需要安装日志收集系统或是直接将日志文件通过指定API上传至服务器,不仅提高了用户端收集日志时使用成本,而且上传日志相对占用带宽,影响了日志收集上传的效率问题。
第一方面,本发明实施例提供了一种客户端日志收集分发方法,其包括:
接收和加载服务器发送的用于收集日志的代理镜像,并接收和存储服务器发送的用于写入用户端本地参数的第一脚本;其中,所述代理镜像中包括数据流配置模板信息;
获取当前系统时间,判断所述当前系统时间与上一日志采集时间之间的时间间隔是否等于预设的日志采集周期;
若所述当前系统时间与上一日志采集时间之间的时间间隔等于所述日志采集周期,通过运行所述第一脚本获取当前本地参数,将所述当前本地参数传入所述代理镜像;
根据所述数据流配置模板信息将所述当前本地参数进行数据流转换,得到对应的镜像容器数据;以及
将所述镜像容器数据推送到目的端;
其中,所述根据所述数据流配置模板信息将所述当前本地参数进行数据流转换,得到对应的镜像容器数据,包括:
获取所述数据流配置模板信息对应的yml文件;其中,yml文件由配置文件编写语言编辑;
获取所述yml文件中对应的数据转换流,将所述当前本地参数根据所述数据转换流对应的数据转换过程依次进行数据转化,得到镜像容器数据。
第二方面,本发明实施例提供了一种客户端日志收集分发装置,其包括:
代理镜像加载单元,用于接收和加载服务器发送的用于收集日志的代理镜像,并接收和存储服务器发送的用于写入用户端本地参数的第一脚本;其中,所述代理镜像中包括数据流配置模板信息;
系统时间判断单元,用于获取当前系统时间,判断所述当前系统时间与上一日志采集时间之间的时间间隔是否等于预设的日志采集周期;
代理镜像数据写入单元,用于若所述当前系统时间与上一日志采集时间之间的时间间隔等于所述日志采集周期,通过运行所述第一脚本获取当前本地参数,将所述当前本地参数传入所述代理镜像;
镜像容器数据生成单元,用于根据所述数据流配置模板信息将所述当前本地参数进行数据流转换,得到对应的镜像容器数据;以及
数据推送单元,用于将所述镜像容器数据推送到目的端;
其中,所述镜像容器数据生成单元,包括:
模板文件获取单元,用于获取所述数据流配置模板信息对应的yml文件;其中,yml文件由配置文件编写语言编辑;
容器数据转换单元,用于获取所述yml文件中对应的数据转换流,将所述当前本地参数根据所述数据转换流对应的数据转换过程依次进行数据转化,得到镜像容器数据。
第三方面,本发明实施例又提供了一种计算机设备,其包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的客户端日志收集分发方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其中所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时使所述处理器执行上述第一方面所述的客户端日志收集分发方法。
本发明实施例提供了一种客户端日志收集分发方法、装置、计算机设备及存储介质,由用户端本地的代理镜像收集自动运行第一脚本所收集的用户日志,并经过代理镜像经数据转换后快速上传至目的端,无需用户端本地安装日志收集系统或是通过指定API上传日志,降低了用户端日志收集成本,减少日志上传所占用带宽,提高了日志上传效率。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的客户端日志收集分发方法的应用场景示意图;
图2为本发明实施例提供的客户端日志收集分发方法的流程示意图;
图3为本发明实施例提供的客户端日志收集分发装置的示意性框图;
图4为本发明实施例提供的计算机设备的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
为了更清楚的理解本申请的技术方案,下面对所涉及的执行主体进行详细介绍。下文是以用户端为执行主体描述技术方案。
用户端,在用户端上加载用于收集日志的代理镜像后,通过运行第一脚本即可传入本地的当前本地参数至代理镜像,由代理镜像对当前本地参数进行数据流转换得到对应的镜像容器数据后,最终由代理镜像将镜像容器数据推送到目的端。
服务器,在服务器中存储有代理镜像的各种更新版本,而且服务器中的代理镜像的最新版本可以推送至用户端进行加载。
目的端,其可为HBase数据库服务器、Kudu数据库服务器、HDFS文件系统服务器、或云平台中的其中任意一种,在用户端上经过代理镜像收集的镜像容器数据可以推送至目的端实现日志收集。
请参阅图1和图2,图1为本发明实施例提供的客户端日志收集分发方法的应用场景示意图;图2为本发明实施例提供的客户端日志收集分发方法的流程示意图,该方法通过安装于用户端的应用软件进行执行。
如图2所示,该方法包括步骤S101~S105。
S101、接收和加载服务器发送的用于收集日志的代理镜像,并接收和存储服务器发送的用于写入用户端本地参数的第一脚本;其中,所述代理镜像中包括数据流配置模板信息。
在本实施例中,当在用户使用的用户端(例如智能手机、平板电脑、笔记本电脑等)上安装了应用程序后,应用程序启动运行的过程中会不断产生日志数据,为了更好的对这些日志数据进行收集并上传至目的端,此时可以在用户端的本地接收和加载服务器发送的用于收集日志的代理镜像,并接收和存储服务器发送的用于写入用户端本地参数的第一脚本。通过运行第一脚本即可传入本地的当前本地参数至代理镜像,由代理镜像对当前本地参数进行数据流转换得到对应的镜像容器数据后,最终由代理镜像将镜像容器数据推送到目的端。其中,代理镜像(可以理解为日志数据收集代理镜像)可以视为一个数据容器。由于是在用户端上加载代理镜像,可以有效的较少客户端收集日志的使用成本。
在一实施例中,步骤S101之后还包括:
在所述代理镜像中加载jre环境;
在所述代理镜像中通过ENV指令创建容器声明环境变量;其中,所述容器声明环境变量包括Minifi的安装路径和Minifi安装数据对应的URL地址;
在所述代理镜像中通过RUN指令创建至少两个容器;其中,所创建的至少两个容器分别是Minifi主目录容器和Minifi子目录容器;
在所述代理镜像中通过ADD指令增加预设的Minifi安装配置参数;
在所述代理镜像中通过CMD指令增加各容器运行时的默认值。
在本实施例中,为了便于所述代理镜像适用于收集日志数据,此时需要完成对代理镜像的环境搭载。
具体是第一步通过FROM指令加载jre环境,例如通过FROM openjdk:8-jre-slim实现对jre环境的加载。
第二步通过ENV指令创建容器声明环境变量,其中ENV指令可以为镜像创建出来的容器声明环境变量,ENV指令声明的容器声明环境变量会被后面的特定指令(即ENV、ADD、COPY、WORKDIR、EXPOSE、VOLUME、USER)解释使用。本申请中具体通过ENV指令创建Minifi的安装路径和Minifi安装数据对应的URL地址这两个环境变量。
第三步通过RUN指令创建至少两个容器,其中RUN指令会在前一条命令创建出的镜像的基础上创建一个容器,并在容器中运行命令,在命令结束运行后提交容器为新镜像,新镜像被Dockerfile(即镜像文件)中的下一条指令使用。本申请中具体通过RUN指令创建Minifi主目录容器和Minifi子目录容器。
第四步是通过ADD指令增加预设的Minifi安装配置参数,其中ADD指令支持复制本地文件到镜像的功能。
第五步是通过CMD指令增加各容器运行时的默认值,这些默认值可以是一条指令,也可以是一些参数。一个Dockerfile中可以有多条CMD指令,但只有最后一条CMD指令有效,CMD指令在构建镜像时并不执行任何命令,而是在容器启动时默认将CMD指令作为第一条执行的命令。如果用户在命令行界面运行docker run命令时指定了命令参数,则会覆盖CMD指令中的命令。
通过上述过程完成了对镜像容器中的环境部署之后,即可正常启动以接收来自用户端所传输的日志数据并快速分发到目的端。
S102、获取当前系统时间,判断所述当前系统时间与上一日志采集时间之间的时间间隔是否等于预设的日志采集周期。
在本实施例中,当在用户端上完成了对代理镜像的加载后,需要定时通过代理镜像收集客户端的日志数据并上传至目的端。也即先获取当前系统时间,然后判断所述当前系统时间与上一日志采集时间之间的时间间隔是否等于预设的日志采集周期。若所述当前系统时间与上一日志采集时间之间的时间间隔等于所述日志采集周期,则表示此时已为日志定时上传时间点,用户端可以启动日志收集分发上传的流程。若所述当前系统时间与上一日志采集时间之间的时间间隔不等于所述日志采集周期,则表示此时不为日志定时上传时间点,用户端不用启动日志收集分发上传的流程,直至等到日志定时上传时间点才可日志收集分发上传的流程。通过代理镜像定时的上传用户端的日志数据,可确保日志数据的定时处理。
在一实施例中,步骤S101之后还包括:
若接收到代理镜像配置文件更新指令,将所述代理镜像配置文件更新指令发送至服务器;
接收服务器根据所述代理镜像配置文件更新指令对应发送的最新版本数据流配置模板信息;
将代理镜像中包括的数据流配置模板信息与所述最新版本数据流配置模板信息进行比较,判断所述最新版本数据流配置模板信息与所述数据流配置模板信息是否相同;
若所述最新版本数据流配置模板信息与所述数据流配置模板信息相同,执行所述获取当前系统时间,判断所述当前系统时间与上一日志采集时间之间的时间间隔是否等于预设的日志采集周期的步骤;
若所述最新版本数据流配置模板信息与所述数据流配置模板信息不相同,将所述数据流配置模板信息通过所述最新版本数据流配置模板信息进行更新,执行所述获取当前系统时间,判断所述当前系统时间与上一日志采集时间之间的时间间隔是否等于预设的日志采集周期的步骤。
在本实施例中,服务器中存储的代理镜像的版本可以不定期的进行更新,而且用户端可以随时向服务器发送代理镜像配置文件更新指令,以获取当前最新版本的代理镜像。用户端在进行代理镜像更新的过程中可能存在两种情况,一是用户端中当前存储的代理镜像版本与服务器中的当前最新版本的代理镜像是同一版本(此时用户端中的数据流配置模板信息与所述最新版本数据流配置模板信息相同则可表示两个代理镜像是同一版本)时则用户端中的代理镜像此时无需进行版本更新,二是用户端中当前存储的代理镜像版本与服务器中的当前最新版本的代理镜像不是同一版本(此时用户端中的数据流配置模板信息与所述最新版本数据流配置模板信息不相同则可表示两个代理镜像不是同一版本)时则用户端中的代理镜像此时可进行版本更新。当用户端接收到了服务器发送的最新版本数据流配置模板信息进行更新后,自动重启后生效。
其中,代理镜像中包括的数据流配置模板信息与所述最新版本数据流配置模板信息均以yml文件的形式存储,例如所述最新版本数据流配置模板信息对应的文件名称为ro_tw.txt.yml.v2,代理镜像中包括的数据流配置模板信息对应的文件名称为ro_tw.txt.yml.v1,此时两者对应的版本号并不相同,故需要将代理镜像中的数据流配置模板信息更新为ro_tw.txt.yml.v2对应的版本。
S103、若所述当前系统时间与上一日志采集时间之间的时间间隔等于所述日志采集周期,通过运行所述第一脚本获取当前本地参数,将所述当前本地参数传入所述代理镜像。
在本实施例中,若所述当前系统时间与上一日志采集时间之间的时间间隔等于所述日志采集周期,则表示此时已为日志定时上传时间点,在用户端的本地启动并运行第一脚本获取当前本地参数(可以理解为日志数据),将所述当前本地参数传入所述代理镜像后以通过所述代理镜像将当前本地参数上传至目的端。
在一实施例中,步骤S103包括:
解析获取所述第一脚本对应的目标应用ID、存放代理元数据和日志数据的第一目录、待推送数据存放的第二目录、代理镜像名称和代理镜像容器名称;
通过所述第一脚本获取所述目标应用ID所对应目标应用的当前本地参数;
将所述当前本地参数中的代理元数据和日志数据存储在代理镜像容器名称对应的代理镜像中所述第一目录对应的第一存储区域;
将所述当前本地参数中的待推送数据存储在代理镜像容器名称对应的代理镜像中所述第二目录对应的第二存储区域。
在本实施例中,所述第一脚本为shell脚本,该第一脚本具体实施时如下:
appid test--agent-dir/xd-log-agent1--monitor-dir/data--server-nameserver1–container-name xd-log-agent1;
其中,appid test表示目标应用ID,xd-log-agent1--monitor-dir表示第一目录,data--server-name表示第二目录,server1表示代理镜像名称,container-name xd-log-agent1表示代理镜像容器名称;通过运行上述shell脚本格式的第一脚本,可以自动获取用户端中的指定目录下的日志数据。而且在通过所述第一脚本获取所述目标应用ID所对应目标应用的当前本地参数后,可以将其中的代理元数据和日志数据存储在所述第一目录对应的第一存储区域,将其中的待推送数据存储在所述第二目录对应的第二存储区域。通过这一基于脚本的数据获取方式,提高了数据获取的自动化程度。
S104、根据所述数据流配置模板信息将所述当前本地参数进行数据流转换,得到对应的镜像容器数据。
在本实施例中,当通过第一脚本将当前本地参数传入代理镜像后,并不是直接将当前本地参数发送至目的端,而是将其根据述数据流配置模板信息进行数据流转换得到对应的镜像容器数据后再发送至目的端。通过对所述当前本地参数进行数据流转换,可以更加快速的将其转化为适用于容器数据传输的数据格式,提高数据分发的效率。
在一实施例中,步骤S104包括:
获取所述数据流配置模板信息对应的yml文件;其中,yml文件由配置文件编写语言编辑;
获取所述yml文件中对应的数据转换流,将所述当前本地参数根据所述数据转换流对应的数据转换过程依次进行数据转化,得到镜像容器数据。
在本实施例中,获取所述数据流配置模板信息对应的yml文件时,还可以解析该yml文件获取对应的MiNiFi配置文件。
其中,MiNiFi配置文件采用的MiNiFi技术是一种易于使用且功能强大的数据处理和分发技术,可以帮助用户建立和管理复杂的数据流,其可以直接在数据产生的源头收集和处理数据。
本申请中用户端可以理解为MiNiFi侧,目的端可以理解为NiFi集群,MiNiFi的配置由声明式的配置文件(YAML,即yml)驱动,可以通过主流的自动化管理工具辅助进行配置下发来管理大量的MiNiFi实例。MiNiFi侧的代理镜像通过点对点协议(例如HTTP/HTTPs)来将收集的数据传送到中央的NiFi集群中。在NiFi集群中,数据流需要一个Input Port和一个PublishKafka类型的processor,Input Port用来接收发送自MiNiFi侧的数据,PublishKafka类型的processor用于将收到的数据写入Kafka的指定topic中。
在一实施例中,所述获取所述yml文件中对应的数据转换流,将所述当前本地参数根据所述数据转换流对应的数据转换过程依次进行数据转化,得到镜像容器数据,包括:
获取所述yml文件中所述数据转换流对应的各数据转换子文件;其中,所述数据转换流对应的各数据转换子文件包括增加标签子文件、数据划分子文件、数据合并子文件、增加消息ID子文件、发布/订阅子文件、指标子文件、空白行移除子文件;
通过所述增加标签子文件对应的第一转化流程将所述当前本地参数进行标签增加,得到第一转换数据;
通过所述数据划分子文件对应的第二转换流程将所述第一转换数据进行对应的数据划分,得到第二转换数据;其中,所述第二转换数据中包括多个第二转换子数据;
获取通过所述数据合并子文件对应的第三转换流程及数据合并策略,通过所述数据合并子文件对应的第三转换流程及数据合并策略,将所述第二转换数据中包括多个第二转换子数据进行数据合并,得到第三转换数据;其中,所述第三转换数据中包括多个第三转换子数据,且所述第三转换子数据的总个数小于或等于所述第二转换子数据的总个数;
通过所述增加消息ID子文件对应的第四转换流程将所述第三转换数据中各第三转换子数据分别增加一一对应的消息ID,得到第四转换数据;
通过所述发布/订阅子文件中对应设置的订阅者信息,将所述第四转换数据中增加对应的订阅者信息,得到第五转换数据;
通过所述指标子文件中对应设置的文件监控指标,将所述第五转换数据增加对应的文件监控指标,得到第六转换数据;
通过所述空白行移除子文件对应的空白行移除流程将所述第六转换数据中的空白行删除,得到镜像容器数据。
在本实施例中,由于所述yml文件中所述数据转换流包括若干个数据转换子文件,以实现对数据的不同方式的处理。具体的,所述数据转换流对应的各数据转换子文件包括增加标签子文件、数据划分子文件、数据合并子文件、增加消息ID子文件、发布/订阅子文件、指标子文件、空白行移除子文件。通过上述6个子文件,可以依序对所述当前本地参数进行数据转化,从而得到最终的镜像容器数据。
其中,增加标签子文件对应记为AddTag子文件,用于将所述当前本地参数进行标签增加,得到第一转换数据。具体是对所述当前本地参数增加“待上传”这一标签,从而表示当前本地参数需要上传至目的端。
数据划分子文件对应记为SplitLarge子文件,用于将大文件划分为指定个数的小文件,实现将所述第一转换数据进行对应的数据划分得到第二转换数据。例如指定个数设置为10个,则将第一转换数据平均划分为10个大小相同的子数据,从而得到包括多个第二转换子数据的第二转换数据。
数据合并子文件对应记为MergeSmall子文件,用于根据预设的数据合并策略将多个第二转换子数据进行合并以得到第三转换数据。例如预设的数据合并策略是将每3组第二转换子数据合并成1组第三转换子数据,这样进行数据合并之后,减少了数据分组数,降低后续数据处理的次数。
增加消息ID子文件对应记为AddMsgID子文件,用于对每一分组的第三转换子数据均对应添加一个唯一的消息ID以组成第四转换数据。其中,每一第三转换子数据对应的消息ID可以由该第三转换子数据对应的哈希值来表示。
发布/订阅子文件对应记为FullPubSub子文件,其中PubSub是一种订阅发布模式,订阅发布模式定义了一种一对多的依赖关系,让多个订阅者对象同时监听某一个主题对象。这个主题对象在自身状态变化时,会通知所有订阅者对象,使它们能够自动更新自己的状态。
指标子文件对应记为MetricsFile子文件,可以将所述第五转换数据增加对应的文件监控指标,得到第六转换数据。
空白行移除子文件对应记为RemoveEmptyLine子文件,可以将第六转换数据中的空白行删除,从而得到镜像容器数据。
通过所述当前本地参数根据进行上述数据流方式的数据转换后,可以得到便于分发并传输至目的端的镜像容器数据。
S105、将所述镜像容器数据推送到目的端。
在本实施例中,当在镜像容器中完成了将所述当前本地参数进行数据流转换得到对应的镜像容器数据后,可以由镜像容器将所述镜像容器数据推送到目的端,实现对日志数据的及时分发传输。
其中,在镜像容器中可设置以下多种数据监听方式中的其中一种以实现启动对镜像容器中数据的分发上传。例如可支持写文件、HTTP(即超文本传输协议)、TCP(即传输控制协议)等数据监听方式,一旦检测到镜像容器中触发了上述数据协议中的一种,即可在此次镜像容器中完成此次的数据转化过程之后将所述镜像容器数据推送到目的端。
在一实施例中,所述目的端为HBase数据库服务器、Kudu数据库服务器、HDFS文件系统服务器、或云平台。
在本实施例中,当在用户端中的代理镜像中完成对日志数据的收集和数据转换得到镜像容器数据后,可以分发到不同的目的端,例如分发到HBase数据库服务器、Kudu数据库服务器、HDFS文件系统服务器、或云平台。通过这一分发方式,可以扩展数据分发的多样性。
在一实施例中,所述目的端为HDFS文件系统服务器;所述将所述镜像容器数据推送到目的端,包括:
将所述镜像容器数据依次进行小文件合并、内容合并及重置文件名得到待传输数据,将所述待传输数据发送至所述目的端。
在本实施例中,当所述目的端为HDFS文件系统服务器时,需要对所述镜像容器数据依次进行小文件合并(即MergeSmall处理)、内容合并(即MergeContent处理)及重置文件名(即ResetFilename处理)得到待传输数据,之后将所述待传输数据发送至HDFS文件系统服务器。其中,对所述镜像容器数据进行小文件合并处理时,预设设置了合并策略,例如所述镜像容器数据中包括10个小文件,且每一个小文件的数据大小都是4M,此时设置的合并策略是只要合并后的文件不超出128M即可,那么可以将这10个小文件合并成1个40M的文件。对合并后的镜像容器数据再进行内容合并时,是将之前10个小文件从文本层面上进行内容合并,合并完成后最终将文件名重置为指定的文件名(如UpdateData)后得到待传输数据,将所述待传输数据发送至所述目的端。
该方法实现了由用户端本地的代理镜像收集自动运行第一脚本所收集的用户日志,并经过代理镜像经数据转换后快速上传至目的端,无需用户端本地安装日志收集系统或是通过指定API上传日志,降低了用户端日志收集成本,减少日志上传所占用带宽,提高了日志上传效率。
本发明实施例还提供一种客户端日志收集分发装置,该客户端日志收集分发装置用于执行前述客户端日志收集分发方法的任一实施例。具体地,请参阅图3,图3是本发明实施例提供的客户端日志收集分发装置的示意性框图。该客户端日志收集分发装置100可以配置于用户端中。
如图3所示,客户端日志收集分发装置100包括:代理镜像加载单元101、系统时间判断单元102、代理镜像数据写入单元103、镜像容器数据生成单元104、数据推送单元105。
代理镜像加载单元101,用于接收和加载服务器发送的用于收集日志的代理镜像,并接收和存储服务器发送的用于写入用户端本地参数的第一脚本;其中,所述代理镜像中包括数据流配置模板信息。
在本实施例中,当在用户使用的用户端(例如智能手机、平板电脑、笔记本电脑等)上安装了应用程序后,应用程序启动运行的过程中会不断产生日志数据,为了更好的对这些日志数据进行收集并上传至目的端,此时可以在用户端的本地接收和加载服务器发送的用于收集日志的代理镜像,并接收和存储服务器发送的用于写入用户端本地参数的第一脚本。通过运行第一脚本即可传入本地的当前本地参数至代理镜像,由代理镜像对当前本地参数进行数据流转换得到对应的镜像容器数据后,最终由代理镜像将镜像容器数据推送到目的端。其中,代理镜像(可以理解为日志数据收集代理镜像)可以视为一个数据容器。由于是在用户端上加载代理镜像,可以有效的较少客户端收集日志的使用成本。
在一实施例中,客户端日志收集分发装置100还包括:
环境加载单元,用于在所述代理镜像中加载jre环境;
环境变量声明单元,用于在所述代理镜像中通过ENV指令创建容器声明环境变量;其中,所述容器声明环境变量包括Minifi的安装路径和Minifi安装数据对应的URL地址;
容器创建单元,用于在所述代理镜像中通过RUN指令创建至少两个容器;其中,所创建的至少两个容器分别是Minifi主目录容器和Minifi子目录容器;
配置参数增加单元,用于在所述代理镜像中通过ADD指令增加预设的Minifi安装配置参数;
容器默认值设置单元,用于在所述代理镜像中通过CMD指令增加各容器运行时的默认值。
在本实施例中,为了便于所述代理镜像适用于收集日志数据,此时需要完成对代理镜像的环境搭载。
具体是第一步通过FROM指令加载jre环境,例如通过FROM openjdk:8-jre-slim实现对jre环境的加载。
第二步通过ENV指令创建容器声明环境变量,其中ENV指令可以为镜像创建出来的容器声明环境变量,ENV指令声明的容器声明环境变量会被后面的特定指令(即ENV、ADD、COPY、WORKDIR、EXPOSE、VOLUME、USER)解释使用。本申请中具体通过ENV指令创建Minifi的安装路径和Minifi安装数据对应的URL地址这两个环境变量。
第三步通过RUN指令创建至少两个容器,其中RUN指令会在前一条命令创建出的镜像的基础上创建一个容器,并在容器中运行命令,在命令结束运行后提交容器为新镜像,新镜像被Dockerfile(即镜像文件)中的下一条指令使用。本申请中具体通过RUN指令创建Minifi主目录容器和Minifi子目录容器。
第四步是通过ADD指令增加预设的Minifi安装配置参数,其中ADD指令支持复制本地文件到镜像的功能。
第五步是通过CMD指令增加各容器运行时的默认值,这些默认值可以是一条指令,也可以是一些参数。一个Dockerfile中可以有多条CMD指令,但只有最后一条CMD指令有效,CMD指令在构建镜像时并不执行任何命令,而是在容器启动时默认将CMD指令作为第一条执行的命令。如果用户在命令行界面运行dockerrun命令时指定了命令参数,则会覆盖CMD指令中的命令。
通过上述过程完成了对镜像容器中的环境部署之后,即可正常启动以接收来自用户端所传输的日志数据并快速分发到目的端。
系统时间判断单元102,用于获取当前系统时间,判断所述当前系统时间与上一日志采集时间之间的时间间隔是否等于预设的日志采集周期。
在本实施例中,当在用户端上完成了对代理镜像的加载后,需要定时通过代理镜像收集客户端的日志数据并上传至目的端。也即先获取当前系统时间,然后判断所述当前系统时间与上一日志采集时间之间的时间间隔是否等于预设的日志采集周期。若所述当前系统时间与上一日志采集时间之间的时间间隔等于所述日志采集周期,则表示此时已为日志定时上传时间点,用户端可以启动日志收集分发上传的流程。若所述当前系统时间与上一日志采集时间之间的时间间隔不等于所述日志采集周期,则表示此时不为日志定时上传时间点,用户端不用启动日志收集分发上传的流程,直至等到日志定时上传时间点才可日志收集分发上传的流程。通过代理镜像定时的上传用户端的日志数据,可确保日志数据的定时处理。
在一实施例中,客户端日志收集分发装置100还包括:
更新指令发送单元,用于若接收到代理镜像配置文件更新指令,将所述代理镜像配置文件更新指令发送至服务器;
最新模板接收单元,用于接收服务器根据所述代理镜像配置文件更新指令对应发送的最新版本数据流配置模板信息;
模板信息比对单元,用于将代理镜像中包括的数据流配置模板信息与所述最新版本数据流配置模板信息进行比较,判断所述最新版本数据流配置模板信息与所述数据流配置模板信息是否相同;若所述最新版本数据流配置模板信息与所述数据流配置模板信息相同,执行所述获取当前系统时间,判断所述当前系统时间与上一日志采集时间之间的时间间隔是否等于预设的日志采集周期的步骤;
模板更新单元,用于若所述最新版本数据流配置模板信息与所述数据流配置模板信息不相同,将所述数据流配置模板信息通过所述最新版本数据流配置模板信息进行更新,执行所述获取当前系统时间,判断所述当前系统时间与上一日志采集时间之间的时间间隔是否等于预设的日志采集周期的步骤。
在本实施例中,服务器中存储的代理镜像的版本可以不定期的进行更新,而且用户端可以随时向服务器发送代理镜像配置文件更新指令,以获取当前最新版本的代理镜像。用户端在进行代理镜像更新的过程中可能存在两种情况,一是用户端中当前存储的代理镜像版本与服务器中的当前最新版本的代理镜像是同一版本(此时用户端中的数据流配置模板信息与所述最新版本数据流配置模板信息相同则可表示两个代理镜像是同一版本)时则用户端中的代理镜像此时无需进行版本更新,二是用户端中当前存储的代理镜像版本与服务器中的当前最新版本的代理镜像不是同一版本(此时用户端中的数据流配置模板信息与所述最新版本数据流配置模板信息不相同则可表示两个代理镜像不是同一版本)时则用户端中的代理镜像此时可进行版本更新。当用户端接收到了服务器发送的最新版本数据流配置模板信息进行更新后,自动重启后生效。
其中,代理镜像中包括的数据流配置模板信息与所述最新版本数据流配置模板信息均以yml文件的形式存储,例如所述最新版本数据流配置模板信息对应的文件名称为ro_tw.txt.yml.v2,代理镜像中包括的数据流配置模板信息对应的文件名称为ro_tw.txt.yml.v1,此时两者对应的版本号并不相同,故需要将代理镜像中的数据流配置模板信息更新为ro_tw.txt.yml.v2对应的版本。
代理镜像数据写入单元103,用于若所述当前系统时间与上一日志采集时间之间的时间间隔等于所述日志采集周期,通过运行所述第一脚本获取当前本地参数,将所述当前本地参数传入所述代理镜像。
在本实施例中,若所述当前系统时间与上一日志采集时间之间的时间间隔等于所述日志采集周期,则表示此时已为日志定时上传时间点,在用户端的本地启动并运行第一脚本获取当前本地参数(可以理解为日志数据),将所述当前本地参数传入所述代理镜像后以通过所述代理镜像将当前本地参数上传至目的端。
在一实施例中,代理镜像数据写入单元103包括:
第一脚本解析单元,用于解析获取所述第一脚本对应的目标应用ID、存放代理元数据和日志数据的第一目录、待推送数据存放的第二目录、代理镜像名称和代理镜像容器名称;
当前本地参数获取单元,用于通过所述第一脚本获取所述目标应用ID所对应目标应用的当前本地参数;
第一存储单元,用于将所述当前本地参数中的代理元数据和日志数据存储在代理镜像容器名称对应的代理镜像中所述第一目录对应的第一存储区域;
第二存储单元,用于将所述当前本地参数中的待推送数据存储在代理镜像容器名称对应的代理镜像中所述第二目录对应的第二存储区域。
在本实施例中,所述第一脚本为shell脚本,该第一脚本具体实施时如下:
appid test--agent-dir/xd-log-agent1--monitor-dir/data--server-nameserver1–container-name xd-log-agent1;
其中,appid test表示目标应用ID,xd-log-agent1--monitor-dir表示第一目录,data--server-name表示第二目录,server1表示代理镜像名称,container-name xd-log-agent1表示代理镜像容器名称;通过运行上述shell脚本格式的第一脚本,可以自动获取用户端中的指定目录下的日志数据。而且在通过所述第一脚本获取所述目标应用ID所对应目标应用的当前本地参数后,可以将其中的代理元数据和日志数据存储在所述第一目录对应的第一存储区域,将其中的待推送数据存储在所述第二目录对应的第二存储区域。通过这一基于脚本的数据获取方式,提高了数据获取的自动化程度。
镜像容器数据生成单元104,用于根据所述数据流配置模板信息将所述当前本地参数进行数据流转换,得到对应的镜像容器数据。
在本实施例中,当通过第一脚本将当前本地参数传入代理镜像后,并不是直接将当前本地参数发送至目的端,而是将其根据述数据流配置模板信息进行数据流转换得到对应的镜像容器数据后再发送至目的端。通过对所述当前本地参数进行数据流转换,可以更加快速的将其转化为适用于容器数据传输的数据格式,提高数据分发的效率。
在一实施例中,镜像容器数据生成单元104包括:
YML文件获取单元,用于获取所述数据流配置模板信息对应的yml文件;其中,yml文件由配置文件编写语言编辑;
数据转换流获取单元,用于获取所述yml文件中对应的数据转换流,将所述当前本地参数根据所述数据转换流对应的数据转换过程依次进行数据转化,得到镜像容器数据。
在本实施例中,获取所述数据流配置模板信息对应的yml文件时,还可以解析该yml文件获取对应的MiNiFi配置文件。
其中,MiNiFi配置文件采用的MiNiFi技术是一种易于使用且功能强大的数据处理和分发技术,可以帮助用户建立和管理复杂的数据流,其可以直接在数据产生的源头收集和处理数据。
本申请中用户端可以理解为MiNiFi侧,目的端可以理解为NiFi集群,MiNiFi的配置由声明式的配置文件(YAML,即yml)驱动,可以通过主流的自动化管理工具辅助进行配置下发来管理大量的MiNiFi实例。MiNiFi侧的代理镜像通过点对点协议(例如HTTP/HTTPs)来将收集的数据传送到中央的NiFi集群中。在NiFi集群中,数据流需要一个Input Port和一个PublishKafka类型的processor,Input Port用来接收发送自MiNiFi侧的数据,PublishKafka类型的processor用于将收到的数据写入Kafka的指定topic中。
在一实施例中,所述数据转换流获取单元,包括:
转换子文件获取单元,用于获取所述yml文件中所述数据转换流对应的各数据转换子文件;其中,所述数据转换流对应的各数据转换子文件包括增加标签子文件、数据划分子文件、数据合并子文件、增加消息ID子文件、发布/订阅子文件、指标子文件、空白行移除子文件;
第一转换单元,用于通过所述增加标签子文件对应的第一转化流程将所述当前本地参数进行标签增加,得到第一转换数据;
第二转换单元,用于通过所述数据划分子文件对应的第二转换流程将所述第一转换数据进行对应的数据划分,得到第二转换数据;其中,所述第二转换数据中包括多个第二转换子数据;
第三转换单元,用于获取通过所述数据合并子文件对应的第三转换流程及数据合并策略,通过所述数据合并子文件对应的第三转换流程及数据合并策略,将所述第二转换数据中包括多个第二转换子数据进行数据合并,得到第三转换数据;其中,所述第三转换数据中包括多个第三转换子数据,且所述第三转换子数据的总个数小于或等于所述第二转换子数据的总个数;
第四转换单元,用于通过所述增加消息ID子文件对应的第四转换流程将所述第三转换数据中各第三转换子数据分别增加一一对应的消息ID,得到第四转换数据;
第五转换单元,用于通过所述发布/订阅子文件中对应设置的订阅者信息,将所述第四转换数据中增加对应的订阅者信息,得到第五转换数据;
第六转换单元,用于通过所述指标子文件中对应设置的文件监控指标,将所述第五转换数据增加对应的文件监控指标,得到第六转换数据;
第七转换单元,用于通过所述空白行移除子文件对应的空白行移除流程将所述第六转换数据中的空白行删除,得到镜像容器数据。
在本实施例中,由于所述yml文件中所述数据转换流包括若干个数据转换子文件,以实现对数据的不同方式的处理。具体的,所述数据转换流对应的各数据转换子文件包括增加标签子文件、数据划分子文件、数据合并子文件、增加消息ID子文件、发布/订阅子文件、指标子文件、空白行移除子文件。通过上述6个子文件,可以依序对所述当前本地参数进行数据转化,从而得到最终的镜像容器数据。
其中,增加标签子文件对应记为AddTag子文件,用于将所述当前本地参数进行标签增加,得到第一转换数据。具体是对所述当前本地参数增加“待上传”这一标签,从而表示当前本地参数需要上传至目的端。
数据划分子文件对应记为SplitLarge子文件,用于将大文件划分为指定个数的小文件,实现将所述第一转换数据进行对应的数据划分得到第二转换数据。例如指定个数设置为10个,则将第一转换数据平均划分为10个大小相同的子数据,从而得到包括多个第二转换子数据的第二转换数据。
数据合并子文件对应记为MergeSmall子文件,用于根据预设的数据合并策略将多个第二转换子数据进行合并以得到第三转换数据。例如预设的数据合并策略是将每3组第二转换子数据合并成1组第三转换子数据,这样进行数据合并之后,减少了数据分组数,降低后续数据处理的次数。
增加消息ID子文件对应记为AddMsgID子文件,用于对每一分组的第三转换子数据均对应添加一个唯一的消息ID以组成第四转换数据。其中,每一第三转换子数据对应的消息ID可以由该第三转换子数据对应的哈希值来表示。
发布/订阅子文件对应记为FullPubSub子文件,其中PubSub是一种订阅发布模式,订阅发布模式定义了一种一对多的依赖关系,让多个订阅者对象同时监听某一个主题对象。这个主题对象在自身状态变化时,会通知所有订阅者对象,使它们能够自动更新自己的状态。
指标子文件对应记为MetricsFile子文件,可以将所述第五转换数据增加对应的文件监控指标,得到第六转换数据。
空白行移除子文件对应记为RemoveEmptyLine子文件,可以将第六转换数据中的空白行删除,从而得到镜像容器数据。
通过所述当前本地参数根据进行上述数据流方式的数据转换后,可以得到便于分发并传输至目的端的镜像容器数据。
数据推送单元105,用于将所述镜像容器数据推送到目的端。
在本实施例中,当在镜像容器中完成了将所述当前本地参数进行数据流转换得到对应的镜像容器数据后,可以由镜像容器将所述镜像容器数据推送到目的端,实现对日志数据的及时分发传输。
其中,在镜像容器中可设置以下多种数据监听方式中的其中一种以实现启动对镜像容器中数据的分发上传。例如可支持写文件、HTTP(即超文本传输协议)、TCP(即传输控制协议)等数据监听方式,一旦检测到镜像容器中触发了上述数据协议中的一种,即可在此次镜像容器中完成此次的数据转化过程之后将所述镜像容器数据推送到目的端。
在一实施例中,所述目的端为HBase数据库服务器、Kudu数据库服务器、HDFS文件系统服务器、或云平台。
在本实施例中,当在用户端中的代理镜像中完成对日志数据的收集和数据转换得到镜像容器数据后,可以分发到不同的目的端,例如分发到HBase数据库服务器、Kudu数据库服务器、HDFS文件系统服务器、或云平台。通过这一分发方式,可以扩展数据分发的多样性。
在一实施例中,所述目的端为HDFS文件系统服务器;所述数据推送单元105还用于:
将所述镜像容器数据依次进行小文件合并、内容合并及重置文件名得到待传输数据,将所述待传输数据发送至所述目的端。
在本实施例中,当所述目的端为HDFS文件系统服务器时,需要对所述镜像容器数据依次进行小文件合并(即MergeSmall处理)、内容合并(即MergeContent处理)及重置文件名(即ResetFilename处理)得到待传输数据,之后将所述待传输数据发送至HDFS文件系统服务器。其中,对所述镜像容器数据进行小文件合并处理时,预设设置了合并策略,例如所述镜像容器数据中包括10个小文件,且每一个小文件的数据大小都是4M,此时设置的合并策略是只要合并后的文件不超出128M即可,那么可以将这10个小文件合并成1个40M的文件。对合并后的镜像容器数据再进行内容合并时,是将之前10个小文件从文本层面上进行内容合并,合并完成后最终将文件名重置为指定的文件名(如UpdateData)后得到待传输数据,将所述待传输数据发送至所述目的端。
该装置实现了由用户端本地的代理镜像收集自动运行第一脚本所收集的用户日志,并经过代理镜像经数据转换后快速上传至目的端,无需用户端本地安装日志收集系统或是通过指定API上传日志,降低了用户端日志收集成本,减少日志上传所占用带宽,提高了日志上传效率。
上述客户端日志收集分发装置可以实现为计算机程序的形式,该计算机程序可以在如图4所示的计算机设备上运行。
请参阅图4,图4是本发明实施例提供的计算机设备的示意性框图。该计算机设备500是终端,终端可以是智能手机、平板电脑、笔记本电脑、台式电脑、个人数字助理和穿戴式设备等具有通信功能的电子设备。
参阅图4,该计算机设备500包括通过系统总线501连接的处理器502、存储器和网络接口505,其中,存储器可以包括存储介质503和内存储器504。
该存储介质503可存储操作系统5031和计算机程序5032。该计算机程序5032被执行时,可使得处理器502执行客户端日志收集分发方法。
该处理器502用于提供计算和控制能力,支撑整个计算机设备500的运行。
该内存储器504为存储介质503中的计算机程序5032的运行提供环境,该计算机程序5032被处理器502执行时,可使得处理器502执行客户端日志收集分发方法。
该网络接口505用于进行网络通信,如提供数据信息的传输等。本领域技术人员可以理解,图4中示出的结构,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的计算机设备500的限定,具体的计算机设备500可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,所述处理器502用于运行存储在存储器中的计算机程序5032,以实现本发明实施例公开的客户端日志收集分发方法。
本领域技术人员可以理解,图4中示出的计算机设备的实施例并不构成对计算机设备具体构成的限定,在其他实施例中,计算机设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。例如,在一些实施例中,计算机设备可以仅包括存储器及处理器,在这样的实施例中,存储器及处理器的结构及功能与图4所示实施例一致,在此不再赘述。
应当理解,在本发明实施例中,处理器502可以是中央处理单元(CentralProcessing Unit,CPU),该处理器502还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
在本发明的另一实施例中提供计算机可读存储介质。该计算机可读存储介质可以为非易失性的计算机可读存储介质,也可以是易失性的计算机可读存储介质。该计算机可读存储介质存储有计算机程序,其中计算机程序被处理器执行时实现本发明实施例公开的客户端日志收集分发方法。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的设备、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为逻辑功能划分,实际实现时可以有另外的划分方式,也可以将具有相同功能的单元集合成一个单元,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (10)

1.一种客户端日志收集分发方法,其特征在于,包括:
接收和加载服务器发送的用于收集日志的代理镜像,并接收和存储服务器发送的用于写入用户端本地参数的第一脚本;其中,所述代理镜像中包括数据流配置模板信息;
获取当前系统时间,判断所述当前系统时间与上一日志采集时间之间的时间间隔是否等于预设的日志采集周期;
若所述当前系统时间与上一日志采集时间之间的时间间隔等于所述日志采集周期,通过运行所述第一脚本获取当前本地参数,将所述当前本地参数传入所述代理镜像;
根据所述数据流配置模板信息将所述当前本地参数进行数据流转换,得到对应的镜像容器数据;以及
将所述镜像容器数据推送到目的端;
其中,所述根据所述数据流配置模板信息将所述当前本地参数进行数据流转换,得到对应的镜像容器数据,包括:
获取所述数据流配置模板信息对应的yml文件;其中,yml文件由配置文件编写语言编辑;
获取所述yml文件中对应的数据转换流,将所述当前本地参数根据所述数据转换流对应的数据转换过程依次进行数据转化,得到镜像容器数据。
2.根据权利要求1所述的客户端日志收集分发方法,其特征在于,所述接收和加载服务器发送的用于收集日志的代理镜像,并接收和存储服务器发送的用于写入用户端本地参数的第一脚本之后,还包括:
若接收到代理镜像配置文件更新指令,将所述代理镜像配置文件更新指令发送至服务器;
接收服务器根据所述代理镜像配置文件更新指令对应发送的最新版本数据流配置模板信息;
将代理镜像中包括的数据流配置模板信息与所述最新版本数据流配置模板信息进行比较,判断所述最新版本数据流配置模板信息与所述数据流配置模板信息是否相同;
若所述最新版本数据流配置模板信息与所述数据流配置模板信息相同,执行所述获取当前系统时间,判断所述当前系统时间与上一日志采集时间之间的时间间隔是否等于预设的日志采集周期的步骤;
若所述最新版本数据流配置模板信息与所述数据流配置模板信息不相同,将所述数据流配置模板信息通过所述最新版本数据流配置模板信息进行更新,执行所述获取当前系统时间,判断所述当前系统时间与上一日志采集时间之间的时间间隔是否等于预设的日志采集周期的步骤。
3.根据权利要求1所述的客户端日志收集分发方法,其特征在于,所述第一脚本为shell脚本;
所述通过运行所述第一脚本获取当前本地参数,将所述当前本地参数传入所述代理镜像,包括:
解析获取所述第一脚本对应的目标应用ID、存放代理元数据和日志数据的第一目录、待推送数据存放的第二目录、代理镜像名称和代理镜像容器名称;
通过所述第一脚本获取所述目标应用ID所对应目标应用的当前本地参数;
将所述当前本地参数中的代理元数据和日志数据存储在代理镜像容器名称对应的代理镜像中所述第一目录对应的第一存储区域;
将所述当前本地参数中的待推送数据存储在代理镜像容器名称对应的代理镜像中所述第二目录对应的第二存储区域。
4.根据权利要求1所述的客户端日志收集分发方法,其特征在于,所述获取所述yml文件中对应的数据转换流,将所述当前本地参数根据所述数据转换流对应的数据转换过程依次进行数据转化,得到镜像容器数据,包括:
获取所述yml文件中所述数据转换流对应的各数据转换子文件;其中,所述数据转换流对应的各数据转换子文件包括增加标签子文件、数据划分子文件、数据合并子文件、增加消息ID子文件、发布/订阅子文件、指标子文件、空白行移除子文件;
通过所述增加标签子文件对应的第一转化流程将所述当前本地参数进行标签增加,得到第一转换数据;
通过所述数据划分子文件对应的第二转换流程将所述第一转换数据进行对应的数据划分,得到第二转换数据;其中,所述第二转换数据中包括多个第二转换子数据;
获取通过所述数据合并子文件对应的第三转换流程及数据合并策略,通过所述数据合并子文件对应的第三转换流程及数据合并策略,将所述第二转换数据中包括多个第二转换子数据进行数据合并,得到第三转换数据;其中,所述第三转换数据中包括多个第三转换子数据,且所述第三转换子数据的总个数小于或等于所述第二转换子数据的总个数;
通过所述增加消息ID子文件对应的第四转换流程将所述第三转换数据中各第三转换子数据分别增加一一对应的消息ID,得到第四转换数据;
通过所述发布/订阅子文件中对应设置的订阅者信息,将所述第四转换数据中增加对应的订阅者信息,得到第五转换数据;
通过所述指标子文件中对应设置的文件监控指标,将所述第五转换数据增加对应的文件监控指标,得到第六转换数据;
通过所述空白行移除子文件对应的空白行移除流程将所述第六转换数据中的空白行删除,得到镜像容器数据。
5.根据权利要求1所述的客户端日志收集分发方法,其特征在于,所述接收和加载服务器发送的用于收集日志的代理镜像,并接收和存储服务器发送的用于写入用户端本地参数的第一脚本之后,还包括:
在所述代理镜像中加载jre环境;
在所述代理镜像中通过ENV指令创建容器声明环境变量;其中,所述容器声明环境变量包括Minifi的安装路径和Minifi安装数据对应的URL地址;
在所述代理镜像中通过RUN指令创建至少两个容器;其中,所创建的至少两个容器分别是Minifi主目录容器和Minifi子目录容器;
在所述代理镜像中通过ADD指令增加预设的Minifi安装配置参数;
在所述代理镜像中通过CMD指令增加各容器运行时的默认值。
6.根据权利要求1所述的客户端日志收集分发方法,其特征在于,所述目的端为HBase数据库服务器、Kudu数据库服务器、HDFS文件系统服务器、或云平台。
7.根据权利要求6所述的客户端日志收集分发方法,其特征在于,所述目的端为HDFS文件系统服务器;
所述将所述镜像容器数据推送到目的端,包括:
将所述镜像容器数据依次进行小文件合并、内容合并及重置文件名得到待传输数据,将所述待传输数据发送至所述目的端。
8.一种客户端日志收集分发装置,其特征在于,包括:
代理镜像加载单元,用于接收和加载服务器发送的用于收集日志的代理镜像,并接收和存储服务器发送的用于写入用户端本地参数的第一脚本;其中,所述代理镜像中包括数据流配置模板信息;
系统时间判断单元,用于获取当前系统时间,判断所述当前系统时间与上一日志采集时间之间的时间间隔是否等于预设的日志采集周期;
代理镜像数据写入单元,用于若所述当前系统时间与上一日志采集时间之间的时间间隔等于所述日志采集周期,通过运行所述第一脚本获取当前本地参数,将所述当前本地参数传入所述代理镜像;
镜像容器数据生成单元,用于根据所述数据流配置模板信息将所述当前本地参数进行数据流转换,得到对应的镜像容器数据;以及
数据推送单元,用于将所述镜像容器数据推送到目的端;
其中,所述镜像容器数据生成单元,包括:
模板文件获取单元,用于获取所述数据流配置模板信息对应的yml文件;其中,yml文件由配置文件编写语言编辑;
容器数据转换单元,用于获取所述yml文件中对应的数据转换流,将所述当前本地参数根据所述数据转换流对应的数据转换过程依次进行数据转化,得到镜像容器数据。
9.一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述的客户端日志收集分发方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时使所述处理器执行如权利要求1至7任一项所述的客户端日志收集分发方法。
CN202110522379.2A 2021-05-13 2021-05-13 客户端日志收集分发方法、装置及计算机设备 Active CN113157658B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110522379.2A CN113157658B (zh) 2021-05-13 2021-05-13 客户端日志收集分发方法、装置及计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110522379.2A CN113157658B (zh) 2021-05-13 2021-05-13 客户端日志收集分发方法、装置及计算机设备

Publications (2)

Publication Number Publication Date
CN113157658A CN113157658A (zh) 2021-07-23
CN113157658B true CN113157658B (zh) 2021-11-09

Family

ID=76874864

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110522379.2A Active CN113157658B (zh) 2021-05-13 2021-05-13 客户端日志收集分发方法、装置及计算机设备

Country Status (1)

Country Link
CN (1) CN113157658B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114584464A (zh) * 2022-03-07 2022-06-03 浪潮云信息技术股份公司 一种云平台全自动管理日志采集方法及终端
CN115576792A (zh) * 2022-11-24 2023-01-06 北京宝兰德软件股份有限公司 日志采集系统及方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108446326A (zh) * 2018-02-11 2018-08-24 江苏微锐超算科技有限公司 一种基于容器的异构数据管理方法及系统
CN110008286A (zh) * 2019-03-26 2019-07-12 华南理工大学 一种注塑成型装备大数据采集和存储系统及方法
CN110851234A (zh) * 2019-10-25 2020-02-28 中信梧桐港供应链管理有限公司 基于docker容器的日志处理方法及装置
CN110955578A (zh) * 2019-11-26 2020-04-03 深圳市信联征信有限公司 基于宿主机的日志收集方法、装置、计算机设备及存储介质
CN111258722A (zh) * 2020-02-14 2020-06-09 苏州浪潮智能科技有限公司 一种集群的日志采集方法、系统、设备以及介质
US10887415B1 (en) * 2018-05-09 2021-01-05 Architecture Technology Corporation Common agnostic data exchange systems and methods
CN112333267A (zh) * 2020-11-02 2021-02-05 中国人民解放军总医院 用于医疗设备物联网的数据采集终端

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108446326A (zh) * 2018-02-11 2018-08-24 江苏微锐超算科技有限公司 一种基于容器的异构数据管理方法及系统
US10887415B1 (en) * 2018-05-09 2021-01-05 Architecture Technology Corporation Common agnostic data exchange systems and methods
CN110008286A (zh) * 2019-03-26 2019-07-12 华南理工大学 一种注塑成型装备大数据采集和存储系统及方法
CN110851234A (zh) * 2019-10-25 2020-02-28 中信梧桐港供应链管理有限公司 基于docker容器的日志处理方法及装置
CN110955578A (zh) * 2019-11-26 2020-04-03 深圳市信联征信有限公司 基于宿主机的日志收集方法、装置、计算机设备及存储介质
CN111258722A (zh) * 2020-02-14 2020-06-09 苏州浪潮智能科技有限公司 一种集群的日志采集方法、系统、设备以及介质
CN112333267A (zh) * 2020-11-02 2021-02-05 中国人民解放军总医院 用于医疗设备物联网的数据采集终端

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
《云边协同网络流量采集系统研究与开发》;孙昊;《万方数据》;20210329;全文 *

Also Published As

Publication number Publication date
CN113157658A (zh) 2021-07-23

Similar Documents

Publication Publication Date Title
US8495160B2 (en) System for controlling retention of data messages
CN113157658B (zh) 客户端日志收集分发方法、装置及计算机设备
WO2019201039A1 (zh) 一种更新应用程序的方法、系统及应用服务器
US8930401B2 (en) Accessing and providing access to computer files over a computer network
WO2020233058A1 (zh) 代码下载的方法、装置、电子设备及计算机存储介质
US9229740B1 (en) Cache-assisted upload proxy
US10771333B2 (en) Systems and methods for continuous configuration deployment
CN111447248A (zh) 一种文件传输的方法及装置
US11579862B2 (en) Methods and systems for continuous asynchronous code deployment
CN114706658A (zh) 一种容器镜像数据处理方法、装置、设备及介质
US20220129381A1 (en) Blockchain cache system
CN115984022B (zh) 分布式支付系统统一对账方法和装置
CN111309366B (zh) 一种管理注册核心的方法、装置、介质和电子设备
CN113987089B (zh) 一种系统级联方法、数据处理方法及装置
CN111431951B (zh) 一种数据处理方法、节点设备、系统及存储介质
KR20130077357A (ko) P2p기반 업데이트 클라이언트, 서버 장치, 시스템 및 방법
JP6845787B2 (ja) ログ分析システム
CN110795408A (zh) 基于对象存储的数据处理方法、装置、服务器和存储介质
CN110597540A (zh) 一种金融终端的版本更新方法、装置、服务器和存储介质
WO2024104289A1 (zh) 一种消息处理方法、装置、设备及存储介质
CN116319837B (zh) 一种支持多协议的文件同步方法、装置、设备及存储介质
CN115361264B (zh) 节点管理方法、装置、节点、系统及存储介质
CN110929500B (zh) 文件比较方法及相关装置
CN114257598B (zh) 资源下载方法、装置、存储介质及电子设备
CN108280048B (zh) 信息处理方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20231025

Address after: Building C, No.888, Huanhu West 2nd Road, Lingang New District, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai

Patentee after: Shanghai EasyPlay Interactive Network Technology Co.,Ltd.

Address before: Room 006, 13 / F, building 2, 588 Zixing Road, Minhang District, Shanghai

Patentee before: Interactive Entertainment Co.,Ltd.