一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于SQL语句的日志查询方法及其应用与流程

2022-07-30 09:13:26 来源:中国专利 TAG:

基于sql语句的日志查询方法及其应用
技术领域
1.本技术涉及日志搜索查询领域,特别是涉及一种基于sql语句的日志查询方法及其应用。


背景技术:

2.目前,软件应用程序的日志数据可以用于问题定位、故障排除、监控、取证等多个方面。一般情况下,在软件程序中使用日志插件,运行前配置日志文件格式和输出格式,软件程序运行过程中会通过日志插件不断往日志文件中写入日志数据。当程序遇到故障需要排查日志时需要登录服务器查看日志文件,对于一些隐蔽的问题,需要下载日志文件并使用一些分析工具进行定位排查。
3.虽然目前为了监控分析应用程序的日志,可以利用很多工具进行日志搜集和分析,例如elk(elasticsearch,logstash和kibana),然而通过这种方式进行日志搜集需要安装部署多个中间件,耗费资源,并且需要在软件程序中修改日志配置,侵入性较强。
4.为此,亟待一种能够使用sql查询日志文件的方法及其应用,能够在页面使用sql(structured query language)结构化查询语言对指定日志文件进行查询,根据关键信息编写sql语句即可快速筛选出需要相关的日志数据。


技术实现要素:

5.本技术实施例提供了一种基于sql语句的日志查询方法及其应用,针对目前技术需要安装部署多个中间件,耗费资源,并且需要在软件程序中修改日志配置,侵入性较强的问题。
6.本发明核心技术主要是统一提供sql语句的查询方式,支持将sql语句解析成不同的查询方式,能够有效降低运维人员的门槛,仅需掌握通用的sql语言即可对数据进行查询,无须关心数据具体的存储方式并掌握其他各种语言和表达式。
7.第一方面,本技术提供了基于sql语句的日志查询方法,所述方法包括以下步骤:
8.根据应用程序的运行环境配置日志文件的输出配置;
9.根据日志收集方式对日志文件进行收集,该日志收集方式包括日志文件收集、结构化数据库收集及非结构化数据库收集;
10.根据日志收集方式对应转换处理sql语句后进行查询;
11.对查询结果适配封装并返回。
12.进一步地,若日志收集方式为日志文件收集,则按照sql标准关键词及语法拆分sql语句,将通过拆分出的数组转换为正则表达式进行匹配查询。
13.进一步地,若日志收集方式为结构化数据库收集,则直接采用sql语句进行查询。
14.进一步地,若日志收集方式为非结构化数据库收集,则将sql语句转换适配为对应非结构化数据库的查询api进行查询。
15.进一步地,输出配置包括日志级别、日志文件存放路径、日志文件命名格式、文件
内日志内容格式、总日志文件最大大小、单个日志文件最大大小及日志文件最大保留周期。
16.进一步地,根据日志收集方式对日志文件进行收集中,依据自定义输出字段配置生成日志文件输出的相关配置的多个收集字段并保存该配置,查询结果以该配置输出。
17.进一步地,运行环境至少包括运行环境内存和硬盘信息。
18.第二方面,本技术提供了一种基于sql语句的日志查询装置,包括:
19.日志输出单元,用于根据应用程序的运行环境配置日志文件的输出配置;
20.日志收集单元,用于根据日志收集方式对日志文件进行收集,该日志收集方式包括日志文件收集、结构化数据库收集及非结构化数据库收集;
21.sql查询转换单元,用于根据日志收集方式对应转换处理sql语句后进行查询;
22.查询结果单元,用于对查询结果适配封装并返回。
23.第三方面,本技术提供了一种电子装置,包括存储器和处理器,存储器中存储有计算机程序,处理器被设置为运行计算机程序以执行上述的基于sql语句的日志查询方法。
24.第四方面,本技术提供了一种可读存储介质,可读存储介质中存储有计算机程序,计算机程序包括用于控制过程以执行过程的程序代码,过程包括根据上述的基于sql语句的日志查询方法。
25.本发明的主要贡献和创新点如下:1、与现有技术相比,本技术不需要手动配置日志文件,通过配置日志输出字段,选择一种日志收集方式对日志文件进行收集后使用sql语句对日志数据进行搜索查询,简化了日志配置,显著降低资源耗费,侵入性弱,并且能够使运维人员快速排查日志并定位到程序出现问题的原因;
26.2、与现有技术相比,本技术统一提供sql语句的查询方式,支持将sql语句解析成不同的查询方式,能够有效降低运维人员的门槛,仅需掌握通用的sql语言即可对数据进行查询,无须关心数据具体的存储方式并掌握其他各种语言和表达式。
27.本技术的一个或多个实施例的细节在以下附图和描述中提出,以使本技术的其他特征、目的和优点更加简明易懂。
附图说明
28.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
29.图1是根据本技术方法的流程图;
30.图2是根据本技术方法的一种实施方法的实现步骤图;
31.图3是根据本技术方法的一种实施方法的实现流程图;
32.图4是根据本技术方法的典型应用场景图;
33.图5根据本技术实施例的基于sql语句的日志查询装置的结构示意图;
34.图6是根据本技术实施例的电子装置的硬件结构示意图。
具体实施方式
35.这里将详细的对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相
反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
36.需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
37.目前现有技术为了监控分析应用程序的日志,可以利用很多工具进行日志搜集和分析,例如elk(elasticsearch,logstash和kibana),然而通过这种方式进行日志搜集需要安装部署多个中间件,耗费资源,并且需要在软件程序中修改日志配置,侵入性较强。
38.其中,logstash主要是用来负责搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。elasticsearch用来负责存储最终数据、建立索引和对外提供搜索日志的功能。它是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。kibana是一个优秀的前端日志展示框架,它可以非常详细的将日志转化为各种图表,为用户提供强大的数据可视化支持。
39.基于此,本发明通过配置日志输出字段,选择一种日志收集方式对日志文件进行收集后使用sql语句对日志数据进行搜索查询,简化了日志配置,降低资源耗费,侵入性弱,并且能够使运维人员快速排查日志并定位到程序出现问题的原因。
40.实施例一
41.具体地,本技术实施例提供了一种基于sql语句的日志查询方法,可以,具体地,参考图1,所述方法包括以下步骤:
42.根据应用程序的运行环境配置日志文件的输出配置;
43.其中,输出配置包括日志级别、日志文件存放路径、日志文件命名格式、文件内日志内容格式、总日志文件最大大小、单个日志文件最大大小及日志文件最大保留周期;
44.其中,运行环境至少包括运行环境内存和硬盘信息;
45.根据日志收集方式对日志文件进行收集,该日志收集方式包括日志文件收集、结构化数据库收集及非结构化数据库收集;
46.根据日志收集方式对应转换处理sql语句后进行查询;
47.其中,支持依据自定义输出字段配置生成日志文件输出的相关配置的多个收集字段并保存该配置,查询结果以该配置输出;
48.其中,若日志收集方式为日志文件收集,则按照sql标准关键词及语法拆分sql语句,将通过拆分出的数组转换为正则表达式进行匹配查询;
49.其中,若日志收集方式为结构化数据库收集,则直接采用sql语句进行查询;
50.其中,若日志收集方式为非结构化数据库收集,则将sql语句转换适配为对应非结构化数据库的查询api进行查询;
51.对查询结果适配封装并返回。
52.在本实施例中,如图2-3所示,本实施例的具体方法包括:
53.s1、根据系统(应用程序)所在运行环境自动计算出日志文件的保存配置,并且根据输出日志的字段配置生成日志文件输出的相关配置几个收集字段,则装置会保存该配置,查询输出结果的时候会按照这几个字段输出。
54.其中,这里支持自定义需要输出的字段,比如配置了logtype(日志类型)、line_number(行号)、message(内容)、log_time(日志时间)。
55.具体地,保存配置的自动计算过程为首先获取运行环境内存、硬盘信息,根据这些信息计算出总日志文件最大大小、单个日志文件最大大小、日志文件最大保留周期,计算公式为总日志文件最大大小(gb)=计算公式为内存大小(gb)*20% 硬盘大小(gb)*80%,单个日志文件的最大大小(mb)=硬盘大小(mb)/1024*10%,日志文件最大保留周期(天)=(总日志文件最大大小/单个日志文件最大大小)/日志级别数量。
56.日志级别固定为trace、debug、info、warn、error五种级别,日志存放路径则在当前应用程序包路径下创建logs目录,按日志级别再分别创建子目录,日志文件命名格式按log-{级别}-{日期}.{时间戳}进行命名,文件内日志内容格式按配置的字段值加空格按行输出。
57.按照格式生成配置后保存生效,系统运行则按照配置好的格式输出到日志文件。
58.s2、选择一种日志收集方式对日志进行收集,日志数据则根据不同的收集方式进入不同的存储介质。
59.根据提供的三种收集方式,默认情况下由上一步骤生成的日志输出配置将日志数据输出至日志文件当中;
60.若选择结构化数据库收集方式,则程序中产生的日志将发送到结构化数据库消息队列当中,消费者收集到一定数量的日志,根据配置好的数据库连接地址连接到数据库,按日志文件的命名方式log-{级别}-{日期}.{时间戳}创建表结构,如果表结构已经存在则无需创建,随后则将日志数据存储至指定表当中;
61.若选择非结构化数据库收集方式,则程序中产生的日志将发送到非结构化数据库消息队列当中,消费者收集到一定数量的日志,根据配置好的非结构化数据库连接地址连接到非结构化数据库,按日志文件的命名方式log-{级别}-{日期}.{时间戳}创建索引,如果索引已存在则无需创建,随后则将日志数据存储至指定索引当中。
62.s3、解析拆分在sql编辑器中根据选择的文件名编辑的sql语句,按照日志收集方式,转换成对应收集方式的查询方法,查询目标数据。具体实现方式为按照sql标准关键字及语法拆分sql语句,拆分select后面为查询字段,如果是通配符*则为查询所有字段,拆分from后面为目标文件名,拆分where后面为筛选条件,拆分join后为关联表名,拆分on后为关联字段名,将拆分出来的以键值对数组的形式暂存,作为后面转换的依据。日志收集方式为文件收集,则通过拆分出的数组里的信息实现了到正则表达式的转换,例如查询log-info-2022.03.30.10行号为211的日志数据,sql语句编写为:
63.select*from log-info-2022.03.30.10where line_number=211
64.转换为正则表达式为:
65.(?《log_time》\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2})(?《mills》.\d{3})\s*%{loglevel:log_type}\s*(?《program_file_name》([\s ]*))\s*line:211\s*-\s*%
{greedydata:message}
[0066]
日志收集方式为mysql,则直接通过sql查询mysql,日志收集方式为elasticsearch,则进行elasticsearch查询sdk的转换后再查询。这里的其他数据库按照对应的语句或者api进行转换后查询,不再赘述。
[0067]
s4、在sql转换查询完成之后对各类型收集方式的查询结果进行适配封装,确保返回数据结构的统一。查询结果字段按照配置生成,查询后的数据按照字段匹配封装成数组进行返回。
[0068]
其中,structured query language结构化查询语言。是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统,本文简称sql;
[0069]
正则表达式是对字符串(包括普通字符(例如,a到z之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。
[0070]
实施例二
[0071]
基于实施例一,如图4所示,本实施例的一个典型应用场景:
[0072]
在用户在某一应用系统使用过程中,提示了“系统异常”的错误,需要运维人员排查一下出现错误的原因。当前应用系统的日志收集方式是文件收集,并且配置了logtype(日志类型)、line_number(行号)、message(内容)、log_time(日志时间)几个收集字段,运维人员则进入日志管理页面,筛选出当天产生的warn、error、info三份日志文件进入sql编辑页面,根据info日志中产生的提示信息“系统异常”进行关联搜索查询,sql语句如下所示:
[0073]
select
[0074]
b.*
[0075]
from log-info-2022-03-30a
[0076]
join log-error-2022-03-30b on a.line_number=b.line_number
[0077]
join log-warn-2022-03-30c on a.line_number=c.line_number
[0078]
where a.message like'%系统异常%';
[0079]
根据查询结果展示,在logtype为error的数据展示中,即可从message字段获取到程序出现问题的关键位置,因此实现了快速排查定位并修复。
[0080]
实施例三,
[0081]
基于相同的构思,如图5所示,本技术还提出了一种基于sql语句的日志查询装置,包括:
[0082]
日志输出单元101,用于根据应用程序的运行环境配置日志文件的输出配置;
[0083]
其中,日志输出单元101用于配置日志文件输出格式(输出配置),日志输出格式(输出配置)包括日志级别、日志文件存放路径、日志文件命名格式、文件内日志内容格式、总日志文件最大大小、单个日志文件最大大小、日志文件最大保留周期,这些配置项无需配置,该单元自动识别当前应用程序所处运行环境进行计算,进行默认配置;
[0084]
如此日志输出单元101能够自动识别应用系统所处运行环境并计算出默认配置,
无需用户进行配置,解决了运维工程人员配置日志的繁琐并造成侵入性的问题。
[0085]
日志收集单元102,用于根据日志收集方式对日志文件进行收集,该日志收集方式包括日志文件收集、结构化数据库收集及非结构化数据库收集;
[0086]
其中,日志收集单元102用于日志数据的收集,根据日志收集配置将打印输出日志同步至指定的结构化数据库或非结构化数据库,作用是可以提升查询效率,然后数据落库后可以提供给第三方进行分析统计,其中日志收集配置可选择日志文件(默认)、结构化数据库、非结构化数据库三种数据收集方式,其中结构化数据库包括mysql、oracle等,非结构化数据库包括mongodb、elasticsearch等,结构化和非结构化数据库配置需要配置数据源连接地址及账号密码,确保连接成功。当收集方式配置为日志文件收集时需要选择需要输出的日志信息字段,日志信息直接按照输出单元配置输出到指定路径文件中;当收集方式为结构化数据库,日志信息会发送到消息队列,消费者根据数据库配置创建数据库连接,并自动创建日志表,监听到日志消息后存储至创建的表当中;当收集方式为非结构化数据库,日志信息同样发送至消息队列,消费者根据非结构化数据库配置创建连接,并自动创建索引,监听到日志消息后存储至创建的索引当中。
[0087]
如此,日志收集单元102提供了日志文件收集、结构化数据库收集、非结构化数据库收集三种收集方式,能够根据实际业务需求选择一种收集方式,如果只有排查系统故障、问题定位的需求选择日志文件收集方式即可,如果有排查系统故障、问题定位、日志分析的需求可选择结构化数据库收集,如果有排查系统故障、问题定位、日志分析、日志监控、高查询性能要求的则可选择非结构化数据库收集。这三种收集方式涵盖了目前日志场景应用大部分需求,解决了不同场景应用下日志数据的收集问题,简化很多了配置,避免了让运维工程人员手动收集日志的操作。
[0088]
sql查询转换单元103,用于根据日志收集方式对应转换处理sql语句后进行查询;
[0089]
其中,sql查询转换单元103用于将sql语句进行解析转换,根据日志输出单元和日志收集单元的配置查询目标数据,如果是日志文件收集方式,则将sql语句转换为正则表达式进行匹配查询,如果是结构化数据库则直接连接配置好的数据库地址,并查询相关表数据,如果是非结构化数据库则连接配置好的非结构化数据库地址,并将sql语句转换适配各非结构化数据库的查询api然后查询相关索引数据。
[0090]
如此,能够直接使用sql语句即可实现对多种日志收集方式的查询进行转换适配,例如日志收集方式为文件收集,文件数据的搜索方式是正则表达式,该单元实现了从sql到正则表达式的转换,日志收集方式为mysql,则直接通过sql查询mysql,日志收集方式为elasticsearch,则实现了从sql到elasticsearch查询sdk的转换。降低了查询分析日志的门槛,提升了系统问题排查定位的效率。
[0091]
查询结果单元104,用于将查询结果结构化,根据sql中需要查询的字段进行将查询结果数据封装成数组对象并进行返回。
[0092]
实施例四
[0093]
本实施例还提供了一种电子装置,参考图6,包括存储器404和处理器402,该存储器404中存储有计算机程序,该处理器402被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
[0094]
具体地,上述处理器402可以包括中央处理器(cpu),或者特定集成电路(applica
tionspecificintegratedcircuit,简称为asic),或者可以被配置成实施本技术实施例的一个或多个集成电路。
[0095]
其中,存储器404可以包括用于数据或指令的大容量存储器404。举例来说而非限制,存储器404可包括硬盘驱动器(harddiskdrive,简称为hdd)、软盘驱动器、固态驱动器(solidstatedrive,简称为ssd)、闪存、光盘、磁光盘、磁带或通用串行总线(universalserialbus,简称为usb)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器404可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器404可在数据处理装置的内部或外部。在特定实施例中,存储器404是非易失性(non-volatile)存储器。在特定实施例中,存储器404包括只读存储器(read-onlymemory,简称为rom)和随机存取存储器(randomaccessmemory,简称为ram)。在合适的情况下,该rom可以是掩模编程的rom、可编程rom(programmableread-onlymemory,简称为prom)、可擦除prom(erasableprogrammableread-onlymemory,简称为eprom)、电可擦除prom(electricallyerasableprogrammableread-onlymemory,简称为eeprom)、电可改写rom(electricallyalterableread-onlymemory,简称为earom)或闪存(flash)或者两个或更多个以上这些的组合。在合适的情况下,该ram可以是静态随机存取存储器(staticrandom-accessmemory,简称为sram)或动态随机存取存储器(dynamicrandomaccessmemory,简称为dram),其中,dram可以是快速页模式动态随机存取存储器404(fastpagemodedynamicrandomaccessmemory,简称为fpmdram)、扩展数据输出动态随机存取存储器(extendeddateoutdynamicrandomaccessmemory,简称为edodram)、同步动态随机存取内存(synchronousdynamicrandom-accessmemory,简称sdram)等。
[0096]
存储器404可以用来存储或者缓存需要处理和/或通信使用的各种数据文件,以及处理器402所执行的可能的计算机程序指令。
[0097]
处理器402通过读取并执行存储器404中存储的计算机程序指令,以实现上述实施例中的任意基于sql语句的日志查询方法。
[0098]
可选地,上述电子装置还可以包括传输设备406以及输入输出设备408,其中,该传输设备406和上述处理器402连接,该输入输出设备408和上述处理器402连接。
[0099]
传输设备406可以用来经由一个网络接收或者发送数据。上述的网络具体实例可包括电子装置的通信供应商提供的有线或无线网络。在一个实例中,传输设备包括一个网络适配器(network interface controller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备406可以为射频(radio frequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。
[0100]
输入输出设备408用于输入或输出信息。在本实施例中,输入的信息可以是sql语句等,输出的信息可以是查询结果等。
[0101]
实施例五
[0102]
本实施例还提供了一种可读存储介质,可读存储介质中存储有计算机程序,计算机程序包括用于控制过程以执行过程的程序代码,过程包括根据实施例一的基于sql语句的日志查询方法。
[0103]
需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
[0104]
通常,各种实施例可以以硬件或专用电路、软件、逻辑或其任何组合来实现。本发明的一些方面可以以硬件来实现,而其他方面可以以可以由控制器、微处理器或其他计算设备执行的固件或软件来实现,但是本发明不限于此。尽管本发明的各个方面可以被示出和描述为框图、流程图或使用一些其他图形表示,但是应当理解,作为非限制性示例,本文中描述的这些框、装置、系统、技术或方法可以以硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备或其某种组合来实现。
[0105]
本发明的实施例可以由计算机软件来实现,该计算机软件由移动设备的数据处理器诸如在处理器实体中可执行,或者由硬件来实现,或者由软件和硬件的组合来实现。包括软件例程、小程序和/或宏的计算机软件或程序(也称为程序产品)可以存储在任何装置可读数据存储介质中,并且它们包括用于执行特定任务的程序指令。计算机程序产品可以包括当程序运行时被配置为执行实施例的一个或多个计算机可执行组件。一个或多个计算机可执行组件可以是至少一个软件代码或其一部分。另外,在这一点上,应当注意,如图中的逻辑流程的任何框可以表示程序步骤、或者互连的逻辑电路、框和功能、或者程序步骤和逻辑电路、框和功能的组合。软件可以存储在诸如存储器芯片或在处理器内实现的存储块等物理介质、诸如硬盘或软盘等磁性介质、以及诸如例如dvd及其数据变体、cd等光学介质上。物理介质是非瞬态介质。
[0106]
本领域的技术人员应该明白,以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0107]
以上实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以作出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献