掌桥专利:专业的专利平台
掌桥专利
首页

日志数据查询方法、装置、设备及存储介质

文献发布时间:2023-06-19 09:27:35


日志数据查询方法、装置、设备及存储介质

技术领域

本申请涉及数据查询技术领域,具体而言,涉及一种日志数据查询方法、装置、设备及存储介质。

背景技术

在当前大数据的场景之下,高速、实时的日志数据查询已经成为非常常见的需求,有助于用户可以快速定位业务或是程序的问题。

现有技术中一般通过用消息队列接收产生的日志数据,并将其进行结构化处理并落盘到预设存储系统上,通过每天的批处理将存储系统上的日志数据导入至数据仓库,从而给用户提供T+1级别的查询;而对于有高实时性查询需求的日志,则将日志数据进行处理后写入到某些分布式存储引擎或是搜索引擎(例如可以为Hbase、Elasticsearch、Kudu等)。

但是这样的日志查询方式,由于实时日志数据需要先写入某些分布式存储引擎或是搜索引擎后,再根据索引对各日志进行查询,不但查询方式复杂,并且这种先处理再查询的方式一般为流式查询,导致实时日志数据的查询速度低,吞吐量不高。

发明内容

本申请的目的在于,针对上述现有技术中的不足,提供一种日志数据查询方法、装置、设备及存储介质,以解决现有技术中实时日志数据的查询速度低,吞吐量不高的问题。

为实现上述目的,本申请实施例采用的技术方案如下:

第一方面,本申请一实施例提供了一种日志数据查询方法,所述方法包括:

获取日志查询请求,所述日志查询请求包括查询信息;

根据所述查询信息,确定待查询的日志数据的类型;

若所述待查询的日志数据的类型包括实时日志数据,则根据预设的批处理应用程序接口以及所述查询信息中的实时查询信息,生成批处理查询任务;

调用所述批处理应用程序接口,执行所述批处理查询任务,其中,根据所述批处理查询任务,从预设的分布式消息队列中确定满足所述实时查询信息的日志数据为目标实时日志数据;

返回目标日志数据,所述目标日志数据包括:所述目标实时日志数据。

可选地,所述实时查询信息包括:实时查询时间和实时查询关键字;

所述在执行所述批处理查询任务中从预设的分布式消息队列中确定满足所述实时查询信息的日志数据为目标实时日志数据,包括:

在执行所述批处理查询任务中,根据所述实时查询时间,确定所述分布式消息队中满足所述实时查询时间的目标虚拟数组中每个分区的偏移信息;

根据所述目标虚拟数组中多个分区的偏移信息,采用多个线程,同时查询所述目标虚拟数组中多个分区中的日志数据;其中,所述线程的个数大于或等于所述目标虚拟数组中分区的个数;

根据所述实时查询关键字,对从所述目标虚拟数组中查询到的日志数据进行过滤,得到所述目标实时日志数据。

可选地,所述根据所述目标虚拟数组中多个分区的偏移信息,采用多个线程,同时查询所述目标虚拟数组中多个分区中的日志数据,包括:

根据所述目标虚拟数组中多个分区的偏移信息,采用N个线程,同时查询所述目标虚拟数组中N个分区中的日志数据;其中,N为大于或等于2的整数。

可选地,所述根据所述目标虚拟数组中多个分区的偏移信息,采用多个线程,同时查询所述目标虚拟数组中多个分区中的日志数据,包括:

根据所述目标虚拟数组中多个分区的偏移信息,采用N×M个线程,同时分别查询所述目标虚拟数组中N个分区中的日志数据,其中,每个分区内具有M个子分区;N和M均为大于或等于2的整数。

可选地,所述根据所述目标虚拟数组中多个分区的偏移信息,采用N×M个线程,同时分别查询所述目标虚拟数组中N个分区中的日志数据之前,所述方法还包括:

根据所述目标虚拟数组中每个分区的偏移信息,确定所述每个分区的起始结束位置;

将所述起始结束为止之间的区间平均划分为M个子分区。

可选地,每个所述子分区的长度大于或等于预设的最小时间单元。

可选地,所述方法还包括:

若所述待查询的日志数据的类型还包括:离线日志数据,则调用所述批处理应用程序接口,从预设的存储系统上获取满足所述查询信息中的离线查询信息的日志数据为目标离线日志数据;

所述目标日志数据还包括:所述目标离线日志数据。

可选地,所述离线查询信息包括:离线查询时间和离线查询关键字;

所述调用所述批处理应用程序接口,从预设的存储系统上获取满足所述查询信息中所述离线日志数据对应的离线查询信息的日志数据为目标离线日志数据,包括:

调用所述批处理应用程序接口,从所述存储系统上读取满足所述离线查询时间的日志数据;

根据所述离线查询关键字,对从所述存储系统查询到的日志数据进行过滤,得到所述目标离线日志数据。

可选地,所述离线查询时间包括:第一离线查询时间,和第二离线查询时间;

所述调用所述批处理应用程序接口,从所述存储系统上读取满足所述离线查询时间的日志数据,包括:

调用所述批处理应用程序接口,从所述存储系统上读取满足所述第一离线查询时间的日志数据;

所述根据所述离线查询关键字,对从所述存储系统查询到的日志数据进行过滤,得到所述目标离线日志数据,包括:

根据所述第二离线查询时间和所述离线查询关键字,对从所述存储系统查询到的日志数据进行过滤,得到所述目标离线日志数据。

可选地,所述返回目标日志数据之前,所述方法还包括:

对所述目标实时日志数据和所述目标离线日志数据进行组合;

根据预设的排序规则,对组合后的日志数据进行排序后,得到查询文件;

所述返回目标日志数据,包括:

返回所述查询文件。

可选地,所述方法还包括:

将所述查询文件以及所述查询文件对应的查询信息存储至所述存储系统。

第二方面,本申请另一实施例提供了一种日志数据查询装置,所述装置包括:获取模块、确定模块、生成模块和返回模块,其中:

所述获取模块,用于获取日志查询请求,所述日志查询请求包括查询信息;

所述确定模块,用于根据所述查询信息,确定待查询的日志数据的类型;

所述生成模块,用于若所述待查询的日志数据的类型包括实时日志数据,则根据预设的批处理应用程序接口以及所述查询信息中的实时查询信息,生成批处理查询任务;

所述确定模块,具体用于调用所述批处理应用程序接口,执行所述批处理查询任务,其中,根据所述批处理查询任务,从预设的分布式消息队列中确定满足所述实时查询信息的日志数据为目标实时日志数据;

所述返回模块,用于返回目标日志数据,所述目标日志数据包括:所述目标实时日志数据。

可选地,所述实时查询信息包括:实时查询时间和实时查询关键字;所述装置还包括:查询模块和过滤模块,其中:

所述确定模块,具体用于在执行所述批处理查询任务中,根据所述实时查询时间,确定所述分布式消息队中满足所述实时查询时间的目标虚拟数组中每个分区的偏移信息;

所述查询模块,用于根据所述目标虚拟数组中多个分区的偏移信息,采用多个线程,同时查询所述目标虚拟数组中多个分区中的日志数据;其中,所述线程的个数大于或等于所述目标虚拟数组中分区的个数;

所述过滤模块,用于根据所述实时查询关键字,对从所述目标虚拟数组中查询到的日志数据进行过滤,得到所述目标实时日志数据。

可选地,所述查询模块,具体用于根据所述目标虚拟数组中多个分区的偏移信息,采用N个线程,同时查询所述目标虚拟数组中N个分区中的日志数据;其中,N为大于或等于2的整数。

可选地,所述查询模块,具体用于根据所述目标虚拟数组中多个分区的偏移信息,采用N×M个线程,同时分别查询所述目标虚拟数组中N个分区中的日志数据,其中,每个分区内具有M个子分区;N和M均为大于或等于2的整数。

可选地,所述确定模块,具体用于根据所述目标虚拟数组中每个分区的偏移信息,确定所述每个分区的起始结束位置;将所述起始结束为止之间的区间平均划分为M个子分区。

可选地,所述获取模块,具体用于若所述待查询的日志数据的类型还包括:离线日志数据,则调用所述批处理应用程序接口,从预设的存储系统上获取满足所述查询信息中的离线查询信息的日志数据为目标离线日志数据;所述目标日志数据还包括:所述目标离线日志数据。

可选地,所述离线查询信息包括:离线查询时间和离线查询关键字;

所述获取模块,具体用于调用所述批处理应用程序接口,从所述存储系统上读取满足所述离线查询时间的日志数据;

所述查询模块,具体用于根据所述离线查询关键字,对从所述存储系统查询到的日志数据进行过滤,得到所述目标离线日志数据。

可选地,所述离线查询时间包括:第一离线查询时间,和第二离线查询时间;

所述获取模块,具体用于调用所述批处理应用程序接口,从所述存储系统上读取满足所述第一离线查询时间的日志数据;

所述过滤模块,具体用于根据所述第二离线查询时间和所述离线查询关键字,对从所述存储系统查询到的日志数据进行过滤,得到所述目标离线日志数据。

可选地,所述生成模块,具体用于对所述目标实时日志数据和所述目标离线日志数据进行组合;根据预设的排序规则,对组合后的日志数据进行排序后,得到查询文件;

所述返回模块,具体用于返回所述查询文件。

可选地,所述装置还包括:存储模块,用于将所述查询文件以及所述查询文件对应的查询信息存储至所述存储系统。

第三方面,本申请另一实施例提供了一种日志数据查询设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当日志数据查询设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如上述第一方面任一所述方法的步骤。

第四方面,本申请另一实施例提供了一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如上述第一方面任一所述方法的步骤。

本申请的有益效果是:采用本申请提供的日志数据查询方法,对于实时日志数据的检索,由于提供了批处理应用程序的接口,并根据批处理应用程序接口和实时查询信息,生成对应的批处理查询任务,随后根据批处理应用程序接口执行各批处理查询任务,相对于现有技术中消息队列中各任务采用流式处理,本申请提供的方法通过批处理消息队列中各查询任务的方式,达到提高任务处理速度和吞吐量的作用。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本申请一实施例提供的日志数据查询方法的流程示意图;

图2为本申请另一实施例提供的日志数据查询方法的流程示意图;

图3为本申请一实施例提供的分布式消息队列Kafka的结构示意图;

图4为本申请另一实施例提供的日志数据查询方法的流程示意图;

图5为本申请另一实施例提供的日志数据查询方法的流程示意图;

图6为本申请另一实施例提供的日志数据查询方法的流程示意图;

图7为本申请另一实施例提供的日志数据查询方法的流程示意图;

图8为本申请另一实施例提供的日志数据查询方法的结构示意图;

图9为本申请一实施例提供的日志数据查询装置的结构示意图;

图10为本申请另一实施例提供的日志数据查询装置的结构示意图;

图11为本申请一实施例提供的日志数据查询设备的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。

通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

另外,本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。

为使本申请更便于理解,下述对本申请涉及到一些名词进行解释:

Kafka:一种大数据场景中最常用的分布式消息队列,其是一种高吞吐量的分布式发布订阅消息系统,可以处理消费者在网站中的所有动作流数据。

Kafka topic:Kafka中对数据的一种虚拟分组。

Kafka topic partition:每个Kafka topic中可以有多个子分区,用于Kafka中数据的分布式存储和计算。

Flink:一种当前非常热门的流式计算引擎,以数据并行和流水线方式执行任意流数据程序,也支持批处理计算,例如Flink的流水线运行时系统可以执行批处理和流处理程序。

Elasticsearch:一种当前热门的搜索存储引擎,它提供了一个分布式多用户能力的全文搜索引擎。

Hadoop分布式文件系统(HDFS):是指被设计成适合运行在通用硬件(commodityhardware)上的分布式文件系统(Distributed File System)。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。

API(Application Programming Interface,应用程序接口)是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。

需要指出的是,本申请所涉及的日志数据可以为预设应用在使用过程中的所产生的日志数据,例如,预设的游戏应用的客户端和/或服务端产生的日志数据。

如下结合多个具体的应用示例,对本申请实施例所提供的一种日志数据查询方法进行解释说明。图1为本申请一实施例提供的一种日志数据查询方法的流程示意图,如图1所示,该方法包括:

S101:获取日志查询请求。

可选地,日志查询请求例如可以为用户通过客户端发起的查询请求,客户端例如可以为:电脑、掌上电脑、手机、平板电脑等终端设备,其中,日志查询请求包括查询信息;用户确定日志查询请求的方式例如可以为:用户通过终端设备上的查询界面,或查询应用程序APP,输入日志查询请求,或根据选择界面,选择对应的信息,各信息组合后构成日志查询请求,并发送至服务器,服务器接收来自客户端的日志查询请求。

S102:根据查询信息,确定待查询的日志数据的类型。

示例地,在一些可能的实施例中,例如可以根据查询请求中的待查询日志数据的时间信息,确定待查询的日志数据的类型;或根据带查询日志数据对应的服务信息,确定待查询的日志数据的类型等,具体如何确定待查询日志数据的方式,可以根据用户需要灵活调整,并不以上述实施例给出的为限制。

若待查询的日志数据的类型包括实时日志数据,则执行S103。

S103:根据预设的批处理应用程序接口以及查询信息中的实时查询信息,生成批处理查询任务。

在本申请的一个实施例中,例如可以使用Flink批处理应用程序接口API结合实时查询信息,重新编写生成批处理查询任务,应当理解具体预设的批处理应用程序可以根据用户需要灵活调整,并不以上述实施例给出的为限。

S104:调用批处理应用程序接口,执行批处理查询任务。

其中,执行批处理查询任务的方式例如可以为:根据批处理查询任务,从预设的分布式消息队列中确定满足实时查询信息的日志数据为目标实时日志数据。

在本申请的一个实施例中,预设的分布式消息队列例如可以为:Kafka,具体预设的分布式消息队列的选择可以根据用户需要灵活调整,并不以上述实施例给出的为限。

相对于现有技术中,实时日志数据需要先写入某些分布式存储引擎或是搜索引擎后,再根据索引对各日志进行查询的查询方式,其不但查询方式复杂,并且这种查询的方式,预设的计算引擎(Flink)不提供批处理相关API,导致实时日志数据的查询是流式处理。然而采用本申请提供的方法中,可以使用预设的批处理应用程序接口结合实时查询信息,重新编写生成批处理查询任务,使得查询任务可以批处理并行执行,并且无需将实时日志数据处理写入其他分布式存储引擎或是搜索引擎,而是可以直接根据生成的批处理查询任务在预设的分布式消息队列中搜索确定目标实时日志数据。

S105:返回目标日志数据。

其中,目标日志数据包括:目标实时日志数据;向用户客户端返回日志查询请求对应的日志数据,以便用户对获取到的目标日志数据进行分析处理等。

采用本申请提供的日志数据查询方法,对于实时日志数据的检索,由于提供了批处理应用程序的接口,并根据批处理应用程序接口和实时查询信息,生成对应的批处理查询任务,随后根据批处理应用程序接口执行各批处理查询任务,相对于现有技术中消息队列中各任务采用流式处理,本申请提供的方法通过批处理消息队列中各查询任务的方式,达到提高任务处理速度和吞吐量的作用。

并且,本申请实施例的方法中,对于实时日志数据,无需引入新的存储引擎,便可直接从分布式消息队列中读取实时日志数据,避免了新的存储引擎介入,造成大量的存储资源浪费的问题。

可选地,在上述实施例的基础上,本申请实施例还可提供一种日志数据查询方法,如下结合附图对上述方法中确定目标实时日志数据的实现过程进行示例说明。图2为本申请另一实施例提供的一种日志数据查询方法的流程示意图,实时查询信息包括:实时查询时间和实时查询关键字;如图2所示,S104可包括:

S106:在执行批处理查询任务中,根据实时查询时间,确定分布式消息队中满足实时查询时间的目标虚拟数组中每个分区的偏移信息。

示例地,仍以预设的分布式消息队列例如为Kafka为例进行说明,由于Kafka中保存每条实时日志数据对应的时间戳,在查询任务中根据时间戳获取分布式消息队列如Kafka中虚拟数组如Kafka topic中每个分区对应的offset(偏移信息),以此确定查询的每个分区的起始和结束位置。

S107:根据目标虚拟数组中多个分区的偏移信息,采用多个线程,同时查询目标虚拟数组中多个分区中的日志数据。

其中,线程的个数大于或等于目标虚拟数组中分区的个数。

可选地,在本申请的一个实施例中,可以根据目标虚拟数组中多个分区的偏移信息,采用N个线程,同时查询目标虚拟数组中N个分区中的日志数据;其中,N为大于或等于2的整数。

图3为本申请一实施例提供的分布式消息队列中的目标虚拟分组的结构示意图,如图3所示,在本申请的另一个实施例中,分布式消息队列中的目标虚拟分组中如Kafkatopic,可包括多个分区如Kafka topic partition,每个分区内还具有M个子分区。如此,在实现过程中,可根据目标虚拟数组中多个分区的偏移信息,采用N×M个线程,同时分别查询目标虚拟数组中N个分区中的日志数据,N和M均为大于或等于2的整数。一个线程可用于访问目标虚拟数组中一个分区中的一个子分区。

在一种可能的示例实现方式中,划分子分区的方式例如可以为:

根据目标虚拟数组中每个分区的偏移信息,确定每个分区的起始结束位置;即对于每个分区中,根据其对应的开始时间戳(start-offset)和结束时间戳(end-offset),确定该分区对应的偏移信息,即偏移量,并在start-offset至end-offset之间的区间内,根据预设子分区数,将该分区中的偏移量平均分为M个子分区。

将起始结束位置之间的区间平均划分为M个子分区。

采用上述是实施例提供的方法,将线程多个分区再根据预设划分方式将各分区划分为包括M个子分区的分区,每一个线程去消费一个子分区的内容,Kafka最高支持的并发量与Kafka topic的总分区数相同,即将每个分区再分为M个子分区后,使得一共可以支持N*M个线程去并行消费分布式消息队列,提高了分布式消息队列所支持的并发量,实现了日志数据的高并发量的并行访问,大大提高批处理的吞吐量和日志数据访问速度。

其中,为了防止过滤切分影响处理速度,每个子分区的长度可大于或等于预设的最小时间单元,从而在保证不影响处理速度的情况下,提高批处理的吞吐量和处理速度。其中,该最小时间单元例如可以为最小记录值,即记录日志数据中的最小时间单元。

可选地,各分区中子分区的数量可以根据实时日志数据的查询数量确定,举例说明若查询实时日志数据的数据量大概为5万条每秒的日志,例如Kafka的分区数为20,若此时需要用100-200个并行度去查询实时日志数据,则对于每个Kafka topic中的子分区会再根据条数平均分为5份,即此时的N为20,M为5,此时可以支持100个线程去并行消费Kafka,从而提高了处理速度和吞吐量,应当理解子分区的具体数值可以根据用户需要灵活调整,上述实施例仅为示例性说明,具体子分区的设置可以根据用户需要确定。

S108:根据实时查询关键字,对从目标虚拟数组中查询到的日志数据进行过滤,得到目标实时日志数据。

可选地,实时查询关键字例如可以为服务对应的名称关键字、服务对应的服务器的关键字等,以当前日志数据查询为针对某一游戏A进行的,则关键字例如可以为游戏A的名称,或游戏A对应的服务器的名称等,具体实时查询关键字包括的内容根据用户需要灵活调整,并不以上述实施例给出的为限。

在本申请的另一实施例中,查询请求中除了查询关键字和查询信息,还可以包括其他的查询参数,例如只查询当前查询请求对应服务中,服务对应的用户活跃度大于预设活跃度阈值的日志数据等,具体查询请求中包括的内容可以根据用户需要灵活调整,本申请在此不做任何限制。

可选地,在上述实施例的基础上,本申请实施例还可提供一种日志数据查询方法,如下结合附图对上述方法中确定目标实时日志数据的实现过程进行示例说明。图4为本申请另一实施例提供的一种日志数据查询方法的流程示意图,若待查询的日志数据的类型还包括:离线日志数据,则如图4所示,该方法还包括:

S109:调用批处理应用程序接口,从预设的存储系统上获取满足查询信息中的离线查询信息的日志数据为目标离线日志数据。

其中,目标日志数据还包括:目标离线日志数据。

示例地,在本申请的一个实施例中,预设的存储系统例如可以为HDFS,但预设的存储系统的具体选择可以根据用户需要灵活调整,并不以上述实施例给出的为限。仍以使用预设的计算引擎,调用批处理应用程序接口为例,可以使用预设的计算引擎,调用批处理应用程序接口直接读取HDFS上存储的目标离线日志数据。

可选地,在上述实施例的基础上,本申请实施例还可提供一种日志数据查询方法,如下结合附图对上述方法中确定目标实时日志数据的实现过程进行示例说明。图5为本申请另一实施例提供的一种日志数据查询方法的流程示意图,离线查询信息包括:离线查询时间和离线查询关键字,如图5所示,S109可包括:

S110:调用批处理应用程序接口,从存储系统上读取满足离线查询时间的日志数据。

S111:根据离线查询关键字,对从存储系统查询到的日志数据进行过滤,得到目标离线日志数据。

其中,离线查询关键字可能包括的内容与实时查询关键字可能包括的类型相同,本申请在此不再赘述。

可选地,在上述实施例的基础上,本申请实施例还可提供一种日志数据查询方法,如下结合附图对上述方法中确定目标实时日志数据的实现过程进行示例说明。图6为本申请另一实施例提供的一种日志数据查询方法的流程示意图,离线查询时间包括:第一离线查询时间,和第二离线查询时间,如图6所示,S110可包括:

S112:调用批处理应用程序接口,从存储系统上读取满足第一离线查询时间的日志数据。

S111可包括:

S113:根据第二离线查询时间和离线查询关键字,对从存储系统查询到的日志数据进行过滤,得到目标离线日志数据。

示例地,在一些可能的实施例中,在对离线日志数据进行存储时,可以以预设时间范围为依据,将在预设时间范围内的所有离线日志数据打包放在同一个文件中,若对离线日志数据进行查询的过程中,查询请求对应的查询时间范围小于预设时间范围,则需要先获取预设时间范围对应的目标离线日志文件,再根据查询请求对应的查询时间范围,在目标离线日志文件中进行过滤,得到目标离线日志数据,此时预设时间范围即为第一离线查询时间,查询请求对应的查询时间范围即为第二离线查询时间;或者查询请求对应的查询时间范围大于预设时间范围,则需要获取所有与查询请求对应的查询时间有交集的离线日志文件为目标离线日志文件,再根据查询请求对应的查询时间,在目标离线日志文件中进行过滤,获取最终的目标离线日志数据。

举例说明:以对离线日志数据进行存储时,以每天的零点为起始位置,以每小时为预设时间范围,将间隔一小时,将一小时内的所有离线日志数据打包放在同一个文件中,若对离线日志数据进行查询的过程中,查询请求对应的查询时间范围13:15-14:15,则此时分别需要获取13:00-14:00的离线日志文件和14:00-15:00的离线日志文件,两个离线日志文件组合构成目标离线日志文件,再根据13:15-14:15这一时间范围,在目标离线日志文件中进行过滤,确定目标离线日志文件中在13:15-14:15内的日志文件作为目标离线日志数据。

可选地,在上述实施例的基础上,本申请实施例还可提供一种日志数据查询方法,如下结合附图对上述方法中的实现过程进行示例说明。图7为本申请另一实施例提供的一种日志数据查询方法的流程示意图,如图7所示,S105之前,该方法还包括:

S114:对目标实时日志数据和目标离线日志数据进行组合。

由于日志查询请求中可能同时包括离线日志查询请求和实时日志查询请求,所以需要将目标实时日志数据和目标离线日志数据进行组合,组合后的数据才为查询请求对应的完整数据。

S115:根据预设的排序规则,对组合后的日志数据进行排序后,得到查询文件。

可选地,在本申请的一个实施例中,预设的排序规则例如可以为根据各日志数据对应的时间戳,对各日志数据进行排序,但也可以为根据日志数据的内容确定预设的排序规则,具体预设的排序规则的设置方式可以根据用户需要灵活调整,并不以上述实施例给出的为限。该查询文件例如可以为对排序后的日志数据进行压缩后得到的文件。

对应地,S105可包括:

S116:返回查询文件。

在一些可能的实施例中,可以将查询文件以及查询文件对应的查询信息存储至存储系统,后续可以直接从存储系统中获取查询信息和对应的查询文件,以便运维人员根据获取到的数据进行分析等。

图8为本申请一实施例提供的日志数据查询方法的结构示意图,以预设的分布式消息队列例如为Kafka,预设的存储系统为HDFS为例进行说明,如图8所示,对实时日志数据的查询和对离线日志数据的查询可以直接在Kafka或HDFS中进行查询,并且还可以组合从HDFS和从Kafka过滤得到的日志数据,并将组合后的数据存储至数据仓库中,从而支持跨天的日志数据查询,公用一个数据仓库的方式,对于低频查询的海量日志数据,避免了冗余数据的长期存储占据资源,造成额外数据冗余的问题。

采用本申请提供的日志数据查询方法,对于实时日志数据的检索,由于提供了批处理应用程序的接口,并根据批处理应用程序接口和实时查询信息,生成对应的批处理查询任务,随后根据批处理应用程序接口执行各批处理查询任务,并且通过对根据目标虚拟数组中多个分区的偏移信息,采用N×M个线程,使得一共可以支持N*M个线程去并行消费分布式消息队列,从而进一步提高批处理的吞吐量和处理速度;并且公用一个数据仓库的方式,对于低频查询的海量日志数据,避免了冗余数据的长期存储占据资源,造成额外数据冗余的问题。

下述结合附图对本申请所提供的日志数据查询装置进行解释说明,该日志数据查询装置可执行上述图1-图8任一日志数据查询方法,其具体实现以及有益效果参照上述,如下不再赘述。

图9为本申请一实施例提供的日志数据查询装置的结构示意图,如图9所示,该装置包括:获取模块201、确定模块202、生成模块203和返回模块204,其中:

获取模块201,用于获取日志查询请求,日志查询请求包括查询信息;

确定模块202,用于根据查询信息,确定待查询的日志数据的类型;

生成模块203,用于若待查询的日志数据的类型包括实时日志数据,则根据预设的批处理应用程序接口以及查询信息中的实时查询信息,生成批处理查询任务;

确定模块202,具体用于调用批处理应用程序接口,执行批处理查询任务,其中,根据批处理查询任务,从预设的分布式消息队列中确定满足实时查询信息的日志数据为目标实时日志数据;

返回模块204,用于返回目标日志数据,目标日志数据包括:目标实时日志数据。

图10为本申请另一实施例提供的日志数据查询装置的结构示意图,实时查询信息包括:实时查询时间和实时查询关键字;如图10所示,该装置还包括:查询模块205和过滤模块206,其中:

确定模块202,具体用于在执行批处理查询任务中,根据实时查询时间,确定分布式消息队中满足实时查询时间的目标虚拟数组中每个分区的偏移信息;

查询模块205,用于根据目标虚拟数组中多个分区的偏移信息,采用多个线程,同时查询目标虚拟数组中多个分区中的日志数据;其中,线程的个数大于或等于目标虚拟数组中分区的个数;

过滤模块206,用于根据实时查询关键字,对从目标虚拟数组中查询到的日志数据进行过滤,得到目标实时日志数据。

可选地,查询模块205,具体用于根据目标虚拟数组中多个分区的偏移信息,采用N个线程,同时查询目标虚拟数组中N个分区中的日志数据;其中,N为大于或等于2的整数。

可选地,查询模块205,具体用于根据目标虚拟数组中多个分区的偏移信息,采用N×M个线程,同时分别查询目标虚拟数组中N个分区中的日志数据,其中,每个分区内具有M个子分区;N和M均为大于或等于2的整数。

可选地,确定模块202,具体用于根据目标虚拟数组中每个分区的偏移信息,确定每个分区的起始结束位置;将起始结束为止之间的区间平均划分为M个子分区。

可选地,获取模块201,具体用于若待查询的日志数据的类型还包括:离线日志数据,则调用批处理应用程序接口,从预设的存储系统上获取满足查询信息中的离线查询信息的日志数据为目标离线日志数据;目标日志数据还包括:目标离线日志数据。

可选地,离线查询信息包括:离线查询时间和离线查询关键字;

获取模块201,具体用于调用批处理应用程序接口,从存储系统上读取满足离线查询时间的日志数据;

查询模块205,具体用于根据离线查询关键字,对从存储系统查询到的日志数据进行过滤,得到目标离线日志数据。

可选地,离线查询时间包括:第一离线查询时间,和第二离线查询时间;

获取模块201,具体用于调用批处理应用程序接口,从存储系统上读取满足第一离线查询时间的日志数据;

过滤模块206,具体用于根据第二离线查询时间和离线查询关键字,对从存储系统查询到的日志数据进行过滤,得到目标离线日志数据。

可选地,生成模块203,具体用于对目标实时日志数据和目标离线日志数据进行组合;根据预设的排序规则,对组合后的日志数据进行排序后,得到查询文件;

返回模块204,具体用于返回查询文件。

如图10所示,该装置还包括:存储模块207,用于将查询文件以及查询文件对应的查询信息存储至存储系统。

上述装置用于执行前述实施例提供的方法,其实现原理和技术效果类似,在此不再赘述。

以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器(digital singnal processor,简称DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(CentralProcessing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称SOC)的形式实现。

图11为本申请一实施例提供的日志数据查询设备的结构示意图,该日志数据查询设备可以集成于终端设备或者终端设备的芯片。

如图11所示,该日志数据查询设备包括:处理器501、存储介质502和总线503。

处理器501用于存储程序,处理器501调用存储介质502存储的程序,以执行上述图1-图8对应的方法实施例。具体实现方式和技术效果类似,这里不再赘述。

可选地,本申请还提供一种程序产品,例如存储介质,该存储介质上存储有计算机程序,包括程序,该程序在被处理器运行时执行上述方法对应的实施例。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取存储器(英文:Random Access Memory,简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

相关技术
  • 日志数据查询方法、装置、设备及存储介质
  • 电子装置、数据调用日志生成及查询方法及存储介质
技术分类

06120112177283