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

多系统交互式日志查询方法、装置、设备及存储介质

文献发布时间:2023-06-19 09:46:20


多系统交互式日志查询方法、装置、设备及存储介质

技术领域

本发明涉及云监控领域,尤其涉及一种多系统交互式日志查询方法、装置、设备及存储介质。

背景技术

随着科技和跨系统之间相互联动的迅速发展,调用多系统操作日志的复杂度越来越高,对于复杂的跨系统调用,一次请求可能需要后台几台或上百台节点的支持。此时具体到一次请求已经很难通过人力确认其处理的完整流程因此一旦出现异常时,如何快速定位问题成为了一个首要面临的难题。

在现有的技术中,对于跨系统的日志查询解决方案通常采用的是分布式追踪结合日志聚合,这种解决方案将上下游接口的调用信息汇集在一起,其中可能有大量无关痛痒的日志,当检索某一日志时分析比较耗时;此外,该解决方案通常是通过关键字将相关日志聚合在一起,不能满足业务的精准化查询。

发明内容

本发明的主要目的在于解决现有跨系统日志查询技术的分析耗时长且查询精准度较弱的问题。

本发明第一方面提供了一种多系统交互式日志查询方法,包括:

基于预置定时日志采集脚本对所有系统进行日志采集操作,得到业务日志数据表;

获取用户输入的初始查询需求信息,根据所述初始查询需求信息确定目标系统和日志查询关键字;

在预置的搜索项配置模板实例库中查询与所述目标系统对应的搜索项配置模板实例;

根据所述日志查询关键字在所述搜索项配置模板实例中查询,得到中间输出关键字;

根据所述中间输出关键字和所述日志查询关键字在所述业务日志数据表中进行日志查询操作,得到并输出与所述日志查询关键字对应的所有日志。

可选的,在本发明第一方面的第一种实现方式中,所述基于预置定时日志采集脚本对所有系统进行日志采集操作,得到业务日志数据表包括:

当到达预置的日志采集时间点时,调用所述定时日志采集脚本进行日志采集,得到所有系统内的日志数据;

将所述日志数据按列进行分割,得到初始日志数据;

基于数据库工具将所述初始日志数据转化为数据库字段后分段存储,得到业务日志数据表。

可选的,在本发明第一方面的第二种实现方式中,所述根据所述初始查询需求信息确定目标系统包括:

解析所述初始查询需求信息,确定待查询的初始查询系统;

检测所述初始查询系统的上下游系统信息,确定中间查询系统;

根据所述初始查询系统和所述中间查询系统得到所述目标系统。

可选的,在本发明第一方面的第三种实现方式中,所述得到并输出与所述日志查询关键字对应的所有日志包括:

基于预置显示规则配置模块设定日志上下文显示阈值;

根据所述日志上下文显示阈值输出显示日志信息。

可选的,在本发明第一方面的第四种实现方式中,所述获取用户输入的初始查询需求信息包括:

生成数据获取请求;

对所述数据获取请求进行解析,得到数据获取请求解析结果;

根据所述数据获取请求解析结果获取初始需求查询信息。

可选的,在本发明第一方面的第五种实现方式中,所述将所述日志数据按列进行分割,得到初始日志数据包括:

解析所述日志数据,得到所述日志数据的分割关键字;

根据所述分割关键字将所述日志数据进行分割,得到初始日志数据。

可选的,在本发明第一方面的第六种实现方式中,所述调用所述定时日志采集脚本进行日志采集包括:

解析所述日志采集脚本,得到日志采集路径和日志保存路径;

扫描所述日志采集路径下的日志文件,将所述日志采集路径下的日志文件拷贝到所述日志保存路径下。

本发明第二方面提供了一种多系统交互式日志查询装置,包括:

数据采集模块,用于基于预置定时日志采集脚本对所有系统进行日志采集操作,得到业务日志数据表;

关键字获取模块,用于获取用户输入的初始查询需求信息,根据所述初始查询需求信息确定目标系统和日志查询关键字;在预置的搜索项配置模板实例库中查询与所述目标系统对应的搜索项配置模板实例;根据所述日志查询关键字在所述搜索项配置模板实例中查询,得到中间输出关键字;

日志输出模块,用于用于根据所述中间输出关键字和所述日志查询关键字在所述业务日志数据表中进行日志查询操作,得到并输出与所述日志查询关键字对应的所有日志。

可选的,在本发明第二方面的第一种实现方式中,所述数据采集模块具体用于:

当到达预置的日志采集时间点时,调用所述定时日志采集脚本进行日志采集,得到所有系统内的日志数据;

将所述日志数据按列进行分割,得到初始日志数据;

基于数据库工具将所述初始日志数据转化为数据库字段后分段存储,得到业务日志数据表。

可选的,在本发明第二方面的第二种实现方式中,所述数据采集模块具体用于:

解析所述日志采集脚本,得到日志采集路径和日志保存路径;

扫描所述日志采集路径下的日志文件,将所述日志采集路径下的日志文件拷贝到所述日志保存路径下。

可选的,在本发明第二方面的第三种实现方式中,所述关键字获取模块具体用于:

解析所述初始查询需求信息,确定待查询的初始查询系统;

检测所述初始查询系统的上下游系统信息,确定中间查询系统;

根据所述初始查询系统和所述中间查询系统得到所述目标系统。

可选的,在本发明第二方面的第四种实现方式中,所述关键字获取模块具体用于:

生成数据获取请求;

对所述数据获取请求进行解析,得到数据获取请求解析结果;

根据所述数据获取请求解析结果获取初始需求查询信息。

可选的,在本发明第二方面的第五种实现方式中,所述数据采集模块具体用于:

解析所述日志数据,得到所述日志数据的分割关键字;

根据所述分割关键字将所述日志数据进行分割,得到初始日志数据。

可选的,在本发明第二方面的第六种实现方式中,所述日志输出模块具体用于:

基于预置显示规则配置模块设定日志上下文显示阈值;

根据所述日志上下文显示阈值输出显示日志信息。

本发明第三方面提供了一种多系统交互式日志查询设备,包括:存储器和至少一个处理器,所述存储器中存储有指令;所述至少一个处理器调用所述存储器中的所述指令,以使得所述日志查询设备执行上述的多系统交互式日志查询方法。

本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的多系统交互式日志查询方法。

本发明提供的技术方案中,通过采集各系统的日志数据,得到业务日志数据表,其次确定目标系统和日志查询关键字,然后根据日志查询关键字在预置的搜索项配置模板实例库中查询相关模板,得到中间输出关键字,最后将日志查询关键字和中间输出关键字作为查询条件在业务日志数据表中查询得到与日志查询关键字对应的所有日志信息。本发明实施例中,可以针对业务精准化查询,并且可以在查询一个系统的日志时连同与其关联系统的日志一起查询出来

附图说明

图1为本发明实施例中多系统交互式日志查询方法的一个实施例示意图;

图2为本发明实施例中多系统交互式日志查询装置的一个实施例示意图;

图3为本发明实施例中多系统交互式日志查询设备的一个实施例示意图。

具体实施方式

本发明实施例提供了一种多系统交互式日志查询方法、装置、设备及存储介质,可以针对业务精准化查询,并且可以在查询一个系统的日志时连同与其关联系统的日志一起查询出来。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中多系统交互式日志查询方法的一个实施例包括:

101、基于预置的定时日志采集脚本对所有系统内的日志进行日志采集操作,得到业务日志数据表;

其中日志平台通过设定定时脚本获取各系统的日志,按列分割日志后将文件数据转化为了数据库字段进行存储,所述定时脚本即定时执行某些操作的指令集合,例如基于crontab执行定时执行shell脚本,基于循环和sleep方法实现定时执行的python脚本,基于Timer定时器实现定时执行的python脚本,基于调度模块schedule实现定时执行的python脚本,基于任务框架APScheduler实现的python脚本。本实施例中采用了基于crontab执行定时执行shell脚本的方法,首先在文本编辑器中写入脚本主逻辑语句,也就是脚本需要实现的功能,而这里写入就是采集功能的逻辑语句,包括采集对象的文件类型,例如日志类型文件(*.log),采集路径,例如/var/www/log,保存路径/var/www/logdata,在脚本主逻辑语句写入完成后将文件命名并保存为.sh格式的文件,例如getlog.sh,然后通过chmod命令赋予该脚本的执行权限chmod755getlog.sh,否则没有执行权限。最后开启crontab服务,通过编辑/etc/crontab文件设置需要执行的脚本文件getlog.sh和执行的时间。本实施例采集到了所有系统的日志数据,为下面的日志数据查找提供了数据支撑基础。

在本实施例中,所述101还包含以下步骤:

当到达预置的日志采集时间点时,调用所述定时日志采集脚本进行日志采集,得到所有系统内的日志数据;

其中采集时间可以固定时间采集,例如预先设定采集时间为13:00和15:00,当时间点为13:00和15:00时调用日志采集脚本,执行日志采集的相关指令,由系统内核对所述日志采集的相关指令进行解析,得到采集对象的类型(*.log),采集路径和保存路径,然后对采集路径下的文件进行扫描,将所有符合采集对象的文件拷贝到保存路径下。当然采集时间也可以设定为周期性采集,采用定时轮询的采集方式,这种采集方式的好处在于可以发现新产生的日志文件,由于在某一次日志文件采集时,可能某个日志文件正在生成,还没有在日志采集路径下生成文件,所以在这一次的日志采集中并没有采集到该日志文件。这种情况下周期性的采集可以弥补这种缺陷,例如设定采集周期为1小时,系统每过1小时就会去日志采集路径下采集日志文件,将日志文件拷贝到保存路径下。

将所述日志数据按列进行分割,得到初始日志数据;

将上述采集到的日志文件读取到内存中,通过指定关键字将其分割,得到日志的字符串片段,常见的日志分割方法如split方法分割、dd分割、head+tail分割、sed实现分割、awk实现分割,本实施例中采用了split方法分割,依次读取每一行日志,通过空格或者分隔符如逗号,竖线等分割为单个字符串,如第一列为年月日,第二列为时分秒,第三列为日志级别,对于日志级别的数据还可以进行二次分割,比如正则表达式提取http://开头的作为调用接口。例如读取到内存的某个日志片段a=“2017-12-27 10:56:57,737[INPo]LogUtils:legischedulerworker-21com.paic.cgibank.biz.action.cGICallopenAPICommonActionIdoprocessI调用openAPI开始,参数::(EMPR PROP-…”,将空格作为指定分割关键字符,用split方法将日志片段a分割为新数组b,即b=a.split(‘’),此时的新数组b=[‘2017-12-27’,‘10:56:57,737’,‘[INPo]LogUtils:legischedulerworker-21com.paic.cgibank.biz.action.cGICallopenAPICommonActionIdoprocessI调用openAPI开始,参数::(EMPR PROP-…’],而b[0]=2017-12-27,对应日志的日期,b[1]=10:56:57,737,对应日志的时间,b[2]对应日志的内容。

本实施例基于常见的数据分割方法将冗杂的日志分割为多个数据字段,提升了可存储性。

基于数据库工具将所述初始日志数据转化为数据库字段后分段存储,得到业务日志数据表。

在本实施例中,数据库工具如mysql数据库,在mysql数据库中新建一个业务日志数据库后,可以在所述业务日志数据库中仅新建一张数据表,表名为业务日志数据表,将之前按列分割的数据导入进表中,完成业务日志数据表的创建,请参考表1示例。除了将所有系统的日志字符串片段导入到同一张数据表之外,还可以根据系统名称建立多张业务日志数据表,例如A系统的日志建立一张表名为A系统业务日志数据表,B系统的日志建立一张表名为B系统业务日志数据表,C系统的日志建立一张表名为C系统业务日志数据表。这样为建立分表来存储各个系统的日志字符串片段可以提升数据检索时检索速度,更快地获取到相关的日志数据。

表1

本实施例将日志数据以表格的形式存储,基于现有的数据库工具可以方便地对其查找。

在本实施例中,所述101之前还可以包含以下步骤:

基于数据库工具创建初始搜索项配置模板实例库;

依次对所述初始搜索项配置模板实例库中的数据表定义查询目标字段信息,得到搜索项配置模板实例库。

本实施例中,数据库工具如mysql数据库新建库名为搜索项配置模板实例的数据库,根据业务需求,在数据库中建立数据表并定义字段与属性。例如表名为XY系统模板,表内为输入系统X、输出系统Y、接口名称、查询条件(可以为单个关键字也可以为多个关键字)、输出关键字(链路下级系统查询需要的关键字)。所述查询目标字段信息包括输入系统、输出系统、接口名称、查询条件、输出关键字。输入系统和输出系统仅包括进行过日志采集的系统,接口名称为各个系统内已定义的接口,所述查询条件可以为单个关键字或多个关键字,例如单个关键字“id=1112”,多个关键字“id=1112,url=appr/appl”,输出关键字为链路下级系统中查询所需要的关键字,如SerialNo=2222,所述输出关键字也可以为单个关键字或者多个关键字。

可以理解的是,本发明的执行主体可以为多系统交互式日志查询装置,还可以是终端或者服务器,具体此处不做限定。本发明实施例以服务器为执行主体为例进行说明。

102、获取用户输入的初始查询需求信息,根据所述初始查询需求信息确定目标系统和日志查询关键字;

本实施例中,用户在前端页面中初始查询需求信息,所述初始需求查询信息包括输入系统信息和用户输入的接口名称、输出系统、查询条件。查询条件可以为单个元素的集合亦可为多个元素的集合,具体集合内元素的数目是由业务场景的复杂度而决定,默认为单个查询条件,可以拓展增加查询条件。其中查询条件由业务差异化确定,确保通过查询条件的过滤能够快速精准地定位到对应的目标业务,可以设置and或or等逻辑表达式,也可以指定正则表达式提取关键字设置,也可以按照各系统预先设置的接口参数模板设置关键字。

在本实施例中,102中所述根据所述初始查询需求信息确定目标系统还包含以下步骤:

解析所述初始查询需求信息,确定待查询的初始查询系统;

检测所述初始查询系统的上下游系统信息,确定中间查询系统;

根据所述初始查询系统和所述中间查询系统得到所述目标系统。

本实施例中,对用户在前端页面上输入的初始查询需求信息进行数据的解析,如解析到初始查询需求信息中输入系统信息为X系统,那么由此确定初始查询系统为X系统,然后对去检测X系统的上游系统信息和下游系统信息,如上游系统为Y1、Y2系统,如下游系统D1、D2系统,最终得到目标系统信息X、Y1、Y2、D1、D2。

在本实施例中,102中所述获取用户输入的初始查询需求信息还包含以下步骤:

生成数据获取请求;

对所述数据获取请求进行解析,得到数据获取请求解析结果;

根据所述数据获取请求解析结果获取初始需求查询信息。

本实施例中,当用户点击查询按钮时,系统内的数据获取模块向系统发送数据获取请求,系统接收了数据获取请求后对数据获取请求进行解析,得到解析结果,如需要获取什么样的数据、从哪个路径获取等,最后将用户输入的信息发送过去,用户输入的信息可能存于浏览器的本地存储等位置。

103、在预置的搜索项配置模板实例库中查询与所述目标系统对应的搜索项配置模板实例;

本实施例中,所述搜索项配置模板实例库是由各个系统的搜索项配置模板实例组成,每两个存在关联关系的系统对应一个搜索项配置模板实例,且模板存在特定的命名规则,如A系统存在上游系统B,那么对应的搜索项配置模板实例名称为BA系统模板,命名时将上游系统放在前面;如A系统存在下游系统C,那么对应搜索项配置模板实例名称为AC系统模板。如上述目标系统为X、Y1、Y2、D1、D2,则在数据库工具中打开搜索项配置模板实例库,在所述搜索项配置模板实例中查找表名分别为Y1X系统模板、Y2X系统模板、XD1系统模板、XD2系统模板的数据表,查询sql为select*from information_schema.tables wheretable_schema='搜索项配置模板实例库'and table_name=(“Y1X系统模板”or“Y2X系统模板”or“XD1系统模板”or“XD2系统模板”。

104、根据所述日志查询关键字在所述搜索项配置模板实例中查询,得到中间输出关键字;

本实施例中,每一个搜索项配置模板实例都定义了输入系统、输出系统、接口名称、查询条件、输出关键字,通过查询搜索项配置模板实例可以快速获取到查询条件、输入系统(查询系统)、接口名称对应的输出系统的输出关键字,日志查询关键字为“id=1112,url=appr/appl”,根据此关键字在所述Y1X系统模板、Y2X系统模板、XD1系统模板、XD2系统模板中查找,得到Y1X系统模板的中间输出关键字“code=3568”、Y2X系统模板的中间输出关键字“attr=pl12”、XD1系统模板的中间输出关键字“tel=13561285527”、XD2系统模板的中间输出关键字“dav=645454,url=test/davr”。

105、据所述中间输出关键字和所述日志查询关键字在所述业务日志数据表中进行日志查询操作,得到并输出与所述日志查询关键字对应的所有日志。

本发明实施例中,根据日志查询关键字“id=1112,url=appr/appl”和中间输出关键字“code=3568”、“attr=pl12”、“tel=13561285527”、“dav=645454,url=test/davr”在业务日志数据表中查询对应的数据记录并输出显示这些数据记录的LOGS字段的内容部分,系统默认设定了日志上下文的阈值,可以通过设定阈值来控制上下文的显示行数,从而进一步精简查询结果。

在本实施例中,所述105还包含以下步骤:

基于预置显示规则配置模块设定日志上下文显示阈值;

根据所述日志上下文显示阈值输出显示日志信息。

本实施例中,通过点击前端页面按钮来调用显示规则配置模块,输入显示阈值从而控制上下文显示的行数,如果没有对显示规则进行设定,系统会采用默认的显示阈值。例如,点击“日志显示设定”按钮,输入显示行数数值为100,输入的数值类型必须为整数。显示模块根据显示规则显示日志上下文行数,例如,在显示规则配置时将显示阈值设定为了100时,那么点击查询按钮,显示结果为查询关键字上下各100行的日志信息;如果没有对显示规则进行设定,系统默认的显示阈值为50行,直接点击了查询,显示结果为查询关键字上下各50行的日志信息。需要说明的是如果日志不足默认显示规则对应的日志行数,那么直接输出该日志所有的信息。

本实施例将初始查询系统X中的日志关键字对应的所有关联日志全部输出显示,不仅问题日志一目了然,而且还满足了部分特定业务的需求。

上面对本发明实施例中多系统交互式日志查询方法进行了描述,下面对本发明实施例中多系统交互式日志查询装置进行描述,请参阅图2,本发明实施例中多系统交互式日志查询装置一个实施例包括:

数据采集模块201,用于基于预置定时日志采集脚本对所有系统进行日志采集操作,得到业务日志数据表;

关键字获取模块202,用于获取用户输入的初始查询需求信息,根据所述初始查询需求信息确定目标系统和日志查询关键字;在预置的搜索项配置模板实例库中查询与所述目标系统对应的搜索项配置模板实例;根据所述日志查询关键字在所述搜索项配置模板实例中查询,得到中间输出关键字;

日志输出模块203,用于根据所述中间输出关键字和所述日志查询关键字在所述业务日志数据表中进行日志查询操作,得到并输出与所述日志查询关键字对应的所有日志。

可选的,数据采集模块201还可以具体用于:

当到达预置的日志采集时间点时,调用所述定时日志采集脚本进行日志采集,得到所有系统内的日志数据;

将所述日志数据按列进行分割,得到初始日志数据;

基于数据库工具将所述初始日志数据转化为数据库字段后分段存储,得到业务日志数据表;

解析所述日志采集脚本,得到日志采集路径和日志保存路径;

扫描所述日志采集路径下的日志文件,将所述日志采集路径下的日志文件拷贝到所述日志保存路径下;

解析所述日志数据,得到所述日志数据的分割关键字;

根据所述分割关键字将所述日志数据进行分割,得到初始日志数据。

可选的,关键字获取模块202还可以具体用于:

解析所述初始查询需求信息,确定待查询的初始查询系统;

检测所述初始查询系统的上下游系统信息,确定中间查询系统;

根据所述初始查询系统和所述中间查询系统得到所述目标系统;

生成数据获取请求;

对所述数据获取请求进行解析,得到数据获取请求解析结果;

根据所述数据获取请求解析结果获取初始需求查询信息。

可选的,日志输出模块203还可以具体用于:

基于预置显示规则配置模块设定日志上下文显示阈值;

根据所述日志上下文显示阈值输出显示日志信息。

本发明实施例中,将功能模块化的实现,降低了系统的耦合性,而且更加容易维护。

上面图2模块化功能实体的角度对本发明实施例中的多系统交互式日志查询装置进行详细描述,下面从硬件处理的角度对本发明实施例中多系统交互式日志查询设备进行详细描述。

图3是本发明实施例提供的一种多系统交互式日志查询设备的结构示意图,该多系统交互式日志查询设备300可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)310(例如,一个或一个以上处理器)和存储器320,一个或一个以上存储应用程序333或数据332的存储介质330(例如一个或一个以上海量存储设备)。其中,存储器320和存储介质330可以是短暂存储或持久存储。存储在存储介质330的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对多系统交互式日志查询设备300中的一系列指令操作。更进一步地,处理器310可以设置为与存储介质330通信,在多系统交互式日志查询设备300上执行存储介质330中的一系列指令操作。

多系统交互式日志查询设备300还可以包括一个或一个以上电源340,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口360,和/或,一个或一个以上操作系统331,例如Windows Serve,Mac OS X,Unix,Linux,FreeBSD等等。本领域技术人员可以理解,图3示出的多系统交互式日志查询设备结构并不构成对多系统交互式日志查询设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

本发明还提供一种多系统交互式日志查询设备,所述多系统交互式日志查询设备包括存储器和处理器,存储器中存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行上述各实施例中的所述多系统交互式日志查询方法的步骤。

本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述多系统交互式日志查询方法的步骤。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

相关技术
  • 多系统交互式日志查询方法、装置、设备及存储介质
  • 多系统日志数据的构建方法、装置、设备及可读存储介质
技术分类

06120112297767