系统日志处理方法、装置、计算机设备和存储介质与流程

文档序号:27613601发布日期:2021-11-29 12:34阅读:184来源:国知局
系统日志处理方法、装置、计算机设备和存储介质与流程

1.本技术涉及大数据处理技术领域,特别是涉及一种系统日志处理方法、装置、计算机设备和存储介质。


背景技术:

2.日志是软件系统中查找软件运行异常及错误的重要信息来源。而在微服务架构中,一个业务请求会经过多个服务,链路较长,收集端到端链路上的日志能够帮助研发人员判断异常及错误发生的具体位置。在系统的日常运维中,可以对系统运行的情况进行统计分析,为系统优化提供有效的数据分析。
3.目前,微服务应用日志处理主流用elk模式(elasticsearch+logstash+kibana),进行日志的收集、分析、存储和展示,其中logstash作为日志的汇聚,可以通过input、filter、output三部分,把日志收集、过滤、输出到elastic search中(也可以输出到文件或其他载体),elastic search作为分布式搜索引擎,提供了搜集、分析、存储数据的功能,kibana则是作为elastic search分析数据的页面展示。
4.然而,logstash日志采集过程是对日志信息按行采集,logstash在从文本日志文件里解析日志时,如果是报错日志,不能很好的解析汇总为完整的一条日志信息,将会影响搜索过程中对于这部分信息查询展示。


技术实现要素:

5.基于此,有必要针对上述技术问题,提供一种能够准确查询日志信息的系统日志处理方法、装置、计算机设备和存储介质。
6.一种系统日志处理方法,所述方法包括:
7.获取系统输出的日志,并创建对应的事件对象;
8.判断所述事件对象中是否存在异常报错字段;
9.当所述事件对象中存在异常报错字段时,则从所述异常报错字段中获取异常报错的类名和日志信息,并将每一类名和对应的日志信息作为一行日志进行排版;
10.将排版后的日志信息进行结构化处理得到结构化对象,并获取所述日志信息对应的服务器信息,将所述服务器信息添加至所述结构化对象中;所述属于同一日志的排版后的日志信息包括至少一行,所述结构化对象中包括所述日志信息;
11.将所述结构化对象进行序列化操作后进行存储,获取存储的序列化操作后的结构化对象,并对序列化后的所述结构化对象进行反序列化为结构化对象;
12.接收日志查询请求;
13.根据所述日志查询请求查询存储的结构化对象,并输出所查询到的结构化对象。
14.在其中一个实施例中,所述将排版后的日志信息进行结构化处理得到结构化对象,包括:
15.获取预先设置的结构化模板;
16.从排版后的日志信息的每一行提取日志内容;
17.获取所述事件对象对应的日志基础内容;
18.将所提取的日志内容以及日志基础内容存储至所述结构化模板中得到结构化对象。
19.在其中一个实施例中,所述将所述结构化对象进行序列化操作后进行存储,获取存储的序列化操作后的结构化对象,并对序列化后的所述结构化对象进行反序列化为结构化对象,包括:
20.将所述结构化对象存储至本地内存队列中,并对所述结构化对象进行序列化后存储至缓存队列中;
21.从所述缓存队列中提取序列化后的所述结构化对象,并对序列化后的所述结构化对象进行反序列化为结构化对象后存储。
22.在其中一个实施例中,所述从所述缓存队列中提取序列化后的所述结构化对象,并对对序列化后的所述结构化对象进行反序列化为结构化对象后存储,包括:
23.监听序列化后的所述结构化对象对应的消费信息;
24.从所述缓存队列中获取与所述消费信息对应的序列化后的结构化对象,并对对序列化后的所述结构化对象进行反序列化为结构化对象后存储。
25.在其中一个实施例中,所述从所述缓存队列中获取与所述消费信息对应的序列化后的结构化对象,包括:
26.按照预设时间间隔周期性地,从所述缓存队列中批量获取与所述消费信息对应的序列化后的结构化对象。
27.在其中一个实施例中,所述按照预设时间间隔周期性地,从所述缓存队列中批量获取与所述消费信息对应的序列化后的结构化对象,包括:
28.获取基于处理性能所预设的日志处理量;
29.按照预设时间间隔周期性地,从所述缓存队列中查询与所述消费信息对应的序列化后的结构化对象;
30.从所查询的结构化对象中提取与所述日志处理量对应数量的序列化后的结构化对象。
31.在其中一个实施例中,所述根据所述日志查询请求查询存储的结构化对象,并显示所查询到的结构化对象,包括:
32.根据所述日志查询请求查询存储的结构化对象;
33.获取所选择的预设的展示模板;
34.提取所述展示模板中的展示字段,并从所述结构化对象中提取与所述展示字段对应的展示内容;
35.将所述展示内容输入至所述展示模板中;
36.显示输入了展示内容的展示模板。
37.一种系统日志处理装置,所述装置包括:
38.日志获取模块,用于获取系统输出的日志;
39.判断模块,用于判断所述事件对象中是否存在异常报错字段;
40.排版模块,用于当所述事件对象中存在异常报错字段时,则从所述异常报错字段
中获取异常报错的类名和日志信息,并将每一类名和对应的日志信息作为一行日志进行排版;
41.结构化处理模块,用于将排版后的日志信息进行结构化处理得到结构化对象,并获取所述日志信息对应的服务器信息,将所述服务器信息添加至所述结构化对象中;所述属于同一日志的日志信息包括至少一行,所述结构化对象中包括所述日志信息;
42.存储模块,用于将所述结构化对象进行序列化操作后进行存储,获取存储的序列化操作后的结构化对象,并对序列化后的所述结构化对象进行反序列化为结构化对象;
43.查询请求接收模块,用于接收日志查询请求;
44.显示模块,用于根据所述日志查询请求查询存储的结构化对象,并显示所查询到的结构化对象。
45.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述的方法的步骤。
46.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法的步骤。
47.上述系统日志处理方法、装置、计算机设备和存储介质,通过预先对日志进行结构化处理,即将至少一行日志中的日志信息存储为结构化对象,这样当日志查询的时候,可以将查询的结构化对象一起输出,避免由于仅输出一行日志信息导致信息缺失的现象的产生,此外,本实施例中,直接对异常日志进行排版而不需要序列化处理,相较于elk或ebk方案减少了一次序列化和反序列化操作,可以提高日志处理的效率。
附图说明
48.图1为一个实施例中系统日志处理方法的应用环境图;
49.图2为一个实施例中系统日志处理方法的流程示意图;
50.图3为另一个实施例中系统日志处理方法的流程示意图;
51.图4为一个实施例中系统日志处理装置的结构框图;
52.图5为一个实施例中计算机设备的内部结构图。
具体实施方式
53.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
54.本技术提供的系统日志处理方法,可以应用于如图1所示的应用环境中。其中,其中日志平台102可以分别与各个微服务对应的服务器104以及用户终端106通过网络进行通信,且日志平台中可以集成有改进的elk模式的日志处理框架,该改进的elk模型的日志处理框架可以包括用于收集日志的日志收集部分logback,其中该日志收集部分logback可以获取系统输出的日志,并提供对日志的结构化处理接口,以创建对应的事件对象;判断事件对象中是否存在异常报错字段;当事件对象中存在异常报错字段时,则获取对应事件对象的日志信息,并对日志信息进行排版处理,将排版后的日志信息进行结构化处理得到结构化对象,排版后的日志信息包括至少一行,结构化对象中包括日志信息。该日志收集部分
logback可以与一缓存队列中间件相连接,以将结构化处理后的日志,即结构化对象存储到缓存队列中。具体地,日志收集部分logback将结构化对象存储至本地内存中,然后对本地内存中的日志对象进行序列化操作,获取存储的序列化操作后的结构化对象存储至缓存队列中,微服务系统从缓存队列中获取序列化后的结构化对象,并对序列化后的结构化对象进行反序列化为结构化对象,该缓存队列与微服务系统相连接,微服务系统与日志处理部分,即分布式搜索引擎elastic search相连接,从而使得微服务系统可以消费缓存队列中存储的结构化对象,并将所消费得到的结构化对象存储至分布式搜索引擎elastic search,从而分布式搜索引擎elastic search可以对存储的结构化对象进行存储、分析等,当分布式搜索引擎elastic search接收到用户终端106发送的日志查询请求后,则根据日志查询请求查询存储的结构化对象,并将所查询到的结构化对象输出至显示部分kibana。这样通过预先对日志进行结构化处理,即将至少一行日志中的日志信息存储为结构化对象,这样当日志查询的时候,可以将查询的结构化对象一起输出,避免由于仅输出一行日志信息导致信息缺失的现象的产生,且直接对异常日志进行排版而不需要序列化处理,相较于elk或ebk方案减少了一次序列化和反序列化操作,可以提高日志处理的效率。其中,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。其中,日志平台102是自主研发的日志处理服务,用于进行日志数据的接收、加工处理、存储和查询,而无需采用现有技术中的elk组件中的logstash。
55.在一个实施例中,如图2所示,提供了一种系统日志处理方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
56.s202:获取系统输出的日志,并创建对应的事件对象。
57.具体地,日志是微服务对应的服务器所产生的,其在每一次微服务被调用执行时,则产生对应的日志。
58.其中获取系统输出的日志是通过日志收集部分logback执行的,其可以获取到已配置的多个微服务对应的服务器所产生的日志,并会创建对应的事件对象,且事件对象中存在日志的相关内容,例如loggingevent事件对象,该loggingevent事件对象里存储有日志生成的时间、ndc(用来衡量测量系统识别系统变异的能力)、mdc(元数据控制器)、locationinformation(本地信息)、日志内容、线程信息、日志级别、异常代理throwableproxy等。
59.其中,通过自定义的日志监听器也即上文中的logback,监控系统日志输出事件的发生,并根据日志输出事件的级别与内容,按预设的处理逻辑与规则,生成结构化的应用日志对象,具体地可以参见下文。
60.s204:判断事件对象中是否存在异常报错字段。
61.s206:当事件对象中存在异常报错字段时,则获取对应事件对象的日志信息,并对日志信息进行排版处理。
62.具体地,异常报错字段可以是指异常代理throwableproxy字段,在rocketmqlogbackappender中会从loggingevent对象中获取日志生成的时间、日志内容、线程信息、日志级别、异常代理throwableproxy。如果异常代理throwableproxy存在,说明这个对象是异常报错日志对象,这部分日志需要特殊处理,因此对这部分信息进行排版处理。具体地,针对于异常类别的日志事件,日志监控器将获取到结构化的异常信息对象,并对异
常信息对象进行格式化处理,转化为多行堆栈信息的字符串,并存储至应用日志对象的异常堆栈信息属性中。
63.具体地,排版处理的具体方式是从异常代理throwableproxy中获取classname异常报错的类名以及信息内容message拼接起来作为报错信息的第一行,然后换行,第二行信息及接下来的具体报错信息都是相同的格式,格式为设置tab键开头,拼接throwableproxy的具体的异常堆栈信息,设置换行符,直到遍历将异常信息拼接完成。
64.其中可选地,排版处理是先获取到预先定义的日志信息对象,下文称为applog对象的数据结构,该数据结构的属性包括但不限于日志id、格式化日志时间、归属系统简称、应用名称、环境标识、日志输出类名、当前线程名称、日志级别、全局链路跟踪id、局部链路跟踪id、日志描述内容、主机名、应用实例ip、应用实例端口、应用进程id、caller调用数据、mdc拓展信息、异常堆栈信息等。
65.s208:将排版后的日志信息进行结构化处理得到结构化对象,属于排版后的日志信息包括至少一行,结构化对象中包括日志信息,结构化对象中包括日志信息。
66.具体地,结构化处理是指对日志中的日志信息进行提取,并按照预设的结构化对象的格式进行存储的过程,其中结构化对象中包含日志的内容以及当前服务器的信息,当前服务器的信息可以包括系统名称、服务名称、微服务环境标识、传输标识tranid、时间标识spanid等,日志的内容则可以包括异常日志和正常日志等信息。这样将一个事件对象对应的所有的有用的日志信息均存储到一个结构化对象中,从而在后续查询时,可以完整的输出该事件对象对应的有用的日志信息,避免日志信息的遗漏。其中之所以要采集当前服务器的信息是因为在微服务环境中,采集日志时还需要区分是那一台服务器产生的日志,因此为了保证日志的唯一性,还需要采集日志的对应的当前服务器的信息。
67.其中一个日志中可以包括至少一行日志信息,例如一行、两行以及三行及以上,传统地,针对两行及以上行日志的查询时,仅能通过关键字匹配到一行,导致日志信息不完整,为了避免该情况的产生,本实施例中,在获取日志的时候,则将日志进行结构化处理,即将日志的每一行中的日志信息进行结构化处理得到结构化对象,该结构化对象中包含所有的存在异常的日志信息,其中在排版后每一行日志是一个类名和对应的信息,因此在结构化的时候,根据结构化模板中的字段名与类名进行匹配,若匹配成功直接获取到对应的类名后的日志信息存储到对应的结构化模板的字段中,而不需要再对日志进行遍历处理,这样通过排版的方式提高了结构化的效率。可选地,此处日志收集部分logback还可以按照预先设置的模板仅将日志信息中的有用信息进行结构化处理,而无用信息进行删除,这样减少数据的处理量,提高后续的处理效率,其中无用信息可以是预先定义的或者是根据边缘检测等算法所确定的无用信息,即通过边缘检测算法所确定的与后续日志分析的相关性小于预设阈值的信息作为无用信息。
68.其中对日志进行结构化处理可以是基于logback日志组件提供的接口appender新增rocketmqlogbackappender接口,该rocketmqlogbackappender接口将日志进行结构化处理,即当日志收集部分logback收集到日志后,则调用rocketmqlogbackappender接口对日志进行结构化处理得到结构化对象,以保证属于同一个日志的日志信息均存储到该结构化对象中,进而后续查询时,若该结构化对象匹配成功,则直接将该结构化对象输出,其中结构化的时候不仅需要将排版后的信息进行结构化,为了保证信息的完整性,还将
loggingevent对象中没有的信息也一块补充到结构化日志对象中,包括appname、sysname、hostname、appip以及appport等信息。
69.s210:将结构化对象进行序列化操作后进行存储,获取存储的序列化操作后的结构化对象,并对序列化后的结构化对象进行反序列化为结构化对象。
70.具体地,在日志收集部分logback对日志进行处理得到结构化对象后,可以通过日志处理部分,即分布式搜索引擎elastic search存储该结构化对象,以便于在后续日志查询时,分布式搜索引擎elastic search可以直接查询已经存储的结构化对象得到所查询的日志。
71.具体地,监听器将applog对象存放至本地内存队列中,并通过异步方式将applog对象进行序列化操作,转换为特定通讯请求数据的格式(如json格式),并通过高性能的消息队列组件(如rocketmq)传输至日志处理服务(logcenter)。这样日志处理服务(logcenter)接收来自高性能的消息队列组件(如rocketmq)的日志对象消息,并将日志对象消息数据反序列化为日志信息对象(applog对象),根据预设的性能调优配置,进行日志的并发处理、加工与存储。
72.由于传统的elk或ebk方案,需要应用端将日志事件进行序列化操作(第1次序列化),转换为单行字符串格式的日志数据,并输出到日志文件中,logstash或filebean通过解析日志文件中单行字符串格式的日志数据,并按配置规则进行所序列化操作(第1次反序列化),转换为结构化的日志信息对象,再将日志信息对象序列化特定通讯请求数据的格式(如json格式),并传输至日志加工或存储模块(如elasticsearch),由加工或存储模块将请求的数据反序列化为日志信息对象,进行日志加工或存储操作。此类方案,需要进行两次的序列化与反序列化操作。而在本实施例中,只需对日志信息对象,进行一次的序列化与反序列操作,相对于传统elk或ebk方案来说,少了一次序列化与反序列化操作,在性能上有较大的提升。
73.s212:接收日志查询请求。
74.s214:根据日志查询请求查询存储的结构化对象,并输出所查询到的结构化对象。
75.具体地,日志查询请求可以是用户终端发送的,用于查询想要的日志的请求,服务器接收到该日志查询请求后,通过分布式搜索引擎elastic search查询存储的结构化对象,并输出所查询的结构化对象至显示部分kibana,这样结构化对象中包含所有的日志信息,从而可以保证获取所有的日志信息,不会存在信息遗漏的问题。
76.上述系统日志处理方法,通过预先对日志进行结构化处理,即将至少一行日志中的日志信息存储为结构化对象,这样当日志查询的时候,可以将查询的结构化对象一起输出,避免由于仅输出一行日志信息导致信息缺失的现象的产生。
77.在其中一个实施例中,将排版后的日志信息进行结构化处理得到结构化对象,包括:获取预先设置的结构化模板;从排版后的日志信息的每一行提取日志内容;将所提取的日志内容以及日志基础内容存储至结构化模板中得到结构化对象。
78.具体地,此处的结构化模板可以是预先设置的,其中包括了日志的内容以及当前服务器的信息,当前服务器的信息可以包括系统名称、服务名称、微服务环境标识、传输标识tranid、时间标识spanid等,日志的内容则可以包括异常日志和正常日志等信息。这样服务器可以根据结构化模板中的日志的内容以及当前服务器的信息从排版后的日志信息的
每一行提取日志内容,即遍历日志的每一行,以得到与结构化模板对应的日志内容,并为了保证信息的完整性,还将loggingevent对象中没有的信息也一块补充到结构化日志对象中,例如包括appname、sysname、hostname、appip以及appport等信息的日志基础内容一起补充到结构化对象中,也就是说将日志内容以及日志基础内容存储到结构化模板中即可以得到对应的结构化对象。
79.上述实施例中,通过预先设置结构化模板,保证了将同一个日志对应的内容同一存储到一个结构化对象中,且预先设定了需要提取的日志内容,并提取出来后存储到服务器中,便于后续日志的查询。
80.在其中一个实施例中,为了均衡日志收集部分logback和日志处理部分,即分布式搜索引擎elastic search的网络传输效率,降低网络堵塞,上述的将结构化对象进行序列化操作后进行存储,获取存储的序列化操作后的结构化对象,并对序列化后的结构化对象进行反序列化为结构化对象,包括:将结构化对象存储至本地内存队列中,并对所述结构化对象进行序列化后存储至缓存队列中;从缓存队列中提取序列化后的结构化对象,并对序列化后的结构化对象进行反序列化为结构化对象后存储。
81.其中引入了中间件缓存队列,上述日志收集部分logback在处理得到结构化对象后,可以将结构化对象进行序列化发送至缓存队列,具体地,日志收集部分logback将结构化对象存储至本地内存队列中,并通过异步方式将applog对象进行序列化操作,转换为特定通讯请求数据的格式(如json格式),并通过高性能的消息队列组件(如rocketmq)传输至日志处理服务(logcenter),也即上文中的这样微服务系统,这样微服务系统从缓存队列中提取序列化后的结构化对象,并对序列化后的结构化对象进行反序列化为结构化对象后存储,也即日志处理服务(logcenter)接收来自高性能的消息队列组件(如rocketmq)的日志对象消息,并将日志对象消息数据反序列化为日志信息对象(applog对象),根据预设的性能调优配置,进行日志的并发处理、加工与存储。可以避免日志收集部分logback和微服务系统处理效率不均衡,导致数据丢失的情况。此外,对结构化对象进行序列化是为了在传递和保存对象时保证结构化对象的完整性和可传递性。结构化对象转换为有序字节流以便在网络上传输或者保存在本地文件中。反序列化操作是指java反序列化操作,具体地是把字节序列恢复为java对象的过程。这是由于java对象需要转换为有序的字节流后,以便在网络上传输,当需要从网络中获取对象就需要对字节流进行一个反序列化,转为需要的对象使用。java序列化就是把java对象转换为字节序列的过程。
82.此外,传统地,日志收集部分logback是直接将日志传输存储到分布式搜索引擎elastic search,如果分布式搜索引擎elastic search宕机,或正存在性能问题,或网络存在问题的情况下,日志收集部分logback不能提供缓冲以及重试功能,具有日志数据丢失的隐患,由于分布式搜索引擎elastic search的处理能力是有限的,在不能无限接收在大量接收日志收集部分logback给过来的数据的日志信息时,如果分布式搜索引擎elastic search宕机,或者并发量很高的情况下,这时引入缓存队列存储结构化数据,可以重新将数据给到分布式搜索引擎elastic search,使得数据正常存入分布式搜索引擎elastic search,即在分布式搜索引擎elastic search服务正常后,微服务系统再次进行数据处理,从缓存队列中提取结构化数据存储至日志处理部分,防止了数据丢失。
83.在其中一个实施例中,还可以引入监听机制,即从缓存队列中提取序列化后的结
构化对象,并对序列化后的结构化对象进行反序列化为结构化对象后存储,包括:监听序列化后的所述结构化对象对应的消费信息;从缓存队列中获取与消费信息对应的序列化后的结构化对象从缓存队列中获取与消费信息对应的序列化后的结构化对象,并对序列化后的结构化对象进行反序列化为结构化对象后存储。
84.具体地,可以在微服务系统中增加rocketmq监听类,微服务系统在缓存队列rocketmq上定时消费应用日志信息,当监听到消费信息后,则微服务系统从缓存队列rocketmq中获取与消费信息对应的结构化对象,并将获取到的结构化对象存储至分布式搜索引擎elastic search。
85.上述实施例中,在增加缓存队列的情况下,进一步降低网络堵塞,此外还引入监听机制,以消费缓存队列上的数据。
86.在其中一个实施例中,从缓存队列中获取与消费信息对应的序列化后的结构化对象,包括:按照预设时间间隔周期性地,从缓存队列中批量获取与消费信息对应的序列化后的结构化对象。具体地,本实施例中主要是为了减少日志处理部分,即分布式搜索引擎elastic search与微服务系统的频繁交互,因此引入批量处理机制。此处的预设时间间隔是预先设置的数据读取间隔,一般为200毫秒,即微服务系统按照预设时间间隔周期性地,从缓存队列中批量获取与消费信息对应的结构化对象,例如批量获取到200毫秒内日志收集部分logback所搜集到的日志,并将所获得的日志存储至分布式搜索引擎elastic search。
87.在其中一个实施例中,按照预设时间间隔周期性地,从缓存队列中批量获取与消费信息对应的序列化后的结构化对象,包括:获取基于处理性能所预设的日志处理量;按照预设时间间隔周期性地,从缓存队列中查询与消费信息对应的结构化对象;从所查询的结构化对象中提取与日志处理量对应数量的结构化对象。
88.具体地,本实施例中是在批量处理的基础上,又设置了最大并发量,即日志处理量,该日志处理量可以是依赖于分布式搜索引擎elastic search的性能,并经过对分布式搜索引擎elastic search进行压力测试得到的,该日志处理量并非固定的。微服务系统可以按照预设时间间隔周期性地,从缓存队列中查询与消费信息对应的结构化对象,例如两万,但是若此时分布式搜索引擎elastic search日志处理量是一万,则微服务系统仅获取到分布式搜索引擎elastic search对应的日志处理量数量对应的结构化对象进行处理,即分次对该些日志信息进行处理,即分次从从所查询的结构化对象中提取与日志处理量对应数量的结构化对象以存储至分布式搜索引擎elastic search。且可选地,微服务系统可以按照结构化对象的缓存时间来获取到缓存队列中的结构化对象,并批量存储到分布式搜索引擎elastic search。
89.上述实施例中,考虑到了处理性能所预设的日志处理量,避免了分布式搜索引擎elastic search处理量大而导致宕机的情况的产生。
90.在其中一个实施例中,根据日志查询请求查询存储的结构化对象,并显示所查询到的结构化对象,包括:根据日志查询请求查询存储的结构化对象;获取所选择的预设的展示模板;提取展示模板中的展示字段,并从结构化对象中提取与展示字段对应的展示内容;将展示内容输入至展示模板中;显示输入了展示内容的展示模板。
91.具体地,此处查询请求是可以携带有搜索条件的,例如关键字,且还可以限定具体
的结构化对象的字段,若是没有限定具体的结构化对象的字段,则对所有结构化对象的所有字段均进行查询匹配。分布式搜索引擎elastic search查询找到特定的结构化对象后,则在kibana上根据查询到的结构化对象做定制化的排版展示。其中定制化展示具体的可以是利用显示部件kibana来实现,即在显示部件kibana上设置预设的展示模板,当需要展示时,则根据所选择的预设的展示模板;提取展示模板中的展示字段,并从结构化对象中提取与展示字段对应的展示内容,而非将分布式搜索引擎elastic search查询到的所有的数据都展示出来,且可选地,预设的展示模板可以根据查询的数据以及关注点的不同进行对应的选择。
92.上述实施例中,通过kibana直观地展示查询结果,通过kibana管理界面设置定制化排版,同时在kibana上可以根据定制化排班显示性能监控、日志总量统计、错误日志统计等可视化视图,对系统运行的情况进行统计分析,为系统优化提供有效的数据分析。
93.具体地,参见图3,图3为另一个实施例中的系统日志处理方法的流程图,在该实施例中,首先通过日志收集部分logback收集各个应用系统的日志,并创建对应的事件对象,判断事件对象中是否存在异常报错字段,若是,则获取对应事件对象的日志信息,并对日志信息进行排版处理,然后将排版后的日志信息在rocketmqlogbackappender类中进行结构化对象处理得到结构化对象,该结构化对象中可以包括系统名称、服务名称、环境标识、tranid、spanid及日志等信息,属于同一日志的排版后的日志信息包括至少一行,从而结构化对象中包括日志信息。监听器将applog对象存放至本地内存队列中,并通过异步方式将applog对象进行序列化操作,转换为特定通讯请求数据的格式(如json格式),并通过高性能的消息队列组件(如rocketmq)传输至日志处理服务(logcenter)。日志处理服务(logcenter)接收来自高性能的消息队列组件(如rocketmq)的日志对象消息,并将日志对象消息数据反序列化为日志信息对象(applog对象),根据预设的性能调优配置,进行日志的并发处理、加工与存储。rocketmqlogbackappender类将结构化对象发送到rocketmq的缓存队列中,从而微服务系统监听消费缓存队列rocketmq上的结构化对象的消费信息,微服务系统将从rocketmq上获取到的结构化对象存入日志处理队列等待批量处理,以将结构化对象批量存储于分布式搜索引擎elastic search中。从而待接收到查询请求时,则通过kibana展示日志信息。
94.上述系统日志处理方法,通过预先对日志进行结构化处理,即将至少一行日志中的日志信息存储为结构化对象,这样当日志查询的时候,可以将查询的结构化对象一起输出,避免由于仅输出一行日志信息导致信息缺失的现象的产生。
95.应该理解的是,虽然图2

3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2

3中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
96.在一个实施例中,如图4所示,提供了一种系统日志处理装置,包括:日志获取模块100、判断模块200、排版模块300、结构化处理模块400、存储模块500、查询请求接收模块600和显示模块700,其中:
97.日志获取模块100,用于获取系统输出的日志,并创建对应的事件对象;
98.判断模块200,用于判断事件对象中是否存在异常报错字段;
99.排版模块300,用于当事件对象中存在异常报错字段时,则获取对应所述事件对象的日志信息,并对日志信息进行排版处理;
100.结构化处理模块400,用于将排版后的日志信息进行结构化处理得到结构化对象,排版后的日志信息包括至少一行,结构化对象中包括日志信息;
101.存储模块500,用于将结构化对象进行序列化操作后进行存储,获取存储的序列化操作后的结构化对象,并对序列化后的结构化对象进行反序列化为结构化对象;
102.查询请求接收模块600,用于接收日志查询请求;
103.显示模块700,用于根据日志查询请求查询存储的结构化对象,并显示所查询到的结构化对象。
104.在其中一个实施例中,上述的结构化处理模块400可以包括:
105.结构化模板获取单元,用于获取预先设置的结构化模板;
106.日志内容提取单元,用于从排版后的日志信息的每一行提取日志内容;
107.日志基础内容获取单元,用于获取事件对象对应的日志基础内容;
108.结构化对象生成单元,用于将所提取的日志内容以及日志基础内容存储至结构化模板中得到结构化对象。
109.在其中一个实施例中,上述的存储模块300可以包括:
110.缓存单元,用于将结构化对象存储至本地内存队列中,并对结构化对象进行序列化后存储至缓存队列中;
111.存储单元,用于从缓存队列中提取序列化后的结构化对象,并对序列化后的结构化对象进行反序列化为结构化对象后存储。
112.在其中一个实施例中,上述的存储单元包括:
113.监听子单元,用于监听序列化后的所述结构化对象对应的消费信息;
114.反序列化操作子单元,用于从缓存队列中获取与消费信息对应的序列化后的结构化对象从缓存队列中获取与消费信息对应的序列化后的结构化对象,并对序列化后的结构化对象进行反序列化为结构化对象后存储。
115.在其中一个实施例中,上述的反序列化操作子单元还用于按照预设时间间隔周期性地,从缓存队列中批量获取与消费信息对应的序列化后的结构化对象。
116.在其中一个实施例中,上述的反序列化操作子单元包括:
117.日志处理量获取子单元,用于获取基于处理性能所预设的日志处理量;
118.查询子单元,用于按照预设时间间隔周期性地,从缓存队列中查询与消费信息对应的序列化后的结构化对象;
119.提取子单元,用于从所查询的结构化对象中提取与日志处理量对应数量的序列化后的结构化对象。
120.在其中一个实施例中,上述的显示模块500包括:
121.查询单元,用于根据日志查询请求查询存储的结构化对象;
122.展示模板获取单元,用于获取所选择的预设的展示模板;
123.展示内容提取单元,用于提取展示模板中的展示字段,并从结构化对象中提取与
展示字段对应的展示内容;
124.输入单元,用于将展示内容输入至展示模板中;
125.显示单元,用于显示输入了展示内容的展示模板。
126.关于系统日志处理装置的具体限定可以参见上文中对于系统日志处理方法的限定,在此不再赘述。上述系统日志处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
127.在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储日志数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种系统日志处理方法。
128.本领域技术人员可以理解,图5中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
129.在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:获取系统输出的日志,并创建对应的事件对象;判断事件对象中是否存在异常报错字段;当事件对象中存在异常报错字段时,则获取对应事件对象的日志信息,并对所述日志信息进行排版处理;将排版后的日志信息进行结构化处理得到结构化对象,排版后的日志的日志信息包括至少一行,结构化对象中包括日志信息;将结构化对象进行序列化操作后进行存储,获取存储的序列化操作后的结构化对象,并对序列化后的结构化对象进行反序列化为结构化对象;接收日志查询请求;根据日志查询请求查询存储的结构化对象,并输出所查询到的结构化对象。
130.在一个实施例中,处理器执行计算机程序时所实现的将排版后的日志信息进行结构化处理得到结构化对象,包括:获取预先设置的结构化模板;从排版后的日志信息的每一行提取日志内容;获取事件对象对应的日志基础内容;将所提取的日志内容以及日志基础内容存储至结构化模板中得到结构化对象。
131.在一个实施例中,处理器执行计算机程序时所实现的将结构化对象进行序列化操作后进行存储,获取存储的序列化操作后的结构化对象,并对序列化后的结构化对象进行反序列化为结构化对象,包括:将结构化对象存储至本地内存队列中,并对结构化对象进行序列化后存储至缓存队列中;从缓存队列中提取序列化后的结构化对象,并对序列化后的结构化对象进行反序列化为结构化对象后存储。
132.在一个实施例中,处理器执行计算机程序时所实现的从缓存队列中提取序列化后的结构化对象,并对序列化后的结构化对象进行反序列化为结构化对象后存储,包括:监听序列化后的所述结构化对象对应的消费信息;从缓存队列中获取与消费信息对应的序列化后的结构化对象从缓存队列中获取与消费信息对应的序列化后的结构化对象,并对序列化
后的结构化对象进行反序列化为结构化对象后存储。
133.在一个实施例中,处理器执行计算机程序时所实现的从缓存队列中获取与消费信息对应的序列化后的结构化对象,包括:按照预设时间间隔周期性地,从缓存队列中批量获取与消费信息对应的序列化后的结构化对象。
134.在一个实施例中,处理器执行计算机程序时所实现的按照预设时间间隔周期性地,从缓存队列中批量获取与消费信息对应的序列化后的结构化对象,包括:获取基于处理性能所预设的日志处理量;按照预设时间间隔周期性地,从缓存队列中查询与消费信息对应的序列化后的结构化对象;从所查询的结构化对象中提取与日志处理量对应数量的序列化后的结构化对象。
135.在一个实施例中,处理器执行计算机程序时所实现的根据日志查询请求查询存储的结构化对象,并显示所查询到的结构化对象,包括:根据日志查询请求查询存储的结构化对象;获取所选择的预设的展示模板;提取展示模板中的展示字段,并从结构化对象中提取与展示字段对应的展示内容;将展示内容输入至展示模板中;显示输入了展示内容的展示模板。
136.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:获取系统输出的日志,并创建对应的事件对象;判断事件对象中是否存在异常报错字段;当事件对象中存在异常报错字段时,则获取对应事件对象的日志信息,并对所述日志信息进行排版处理将排版后的日志信息进行结构化处理得到结构化对象,属于同一日志的日志信息包括至少一行,结构化对象中包括日志信息;将结构化对象进行序列化操作后进行存储,获取存储的序列化操作后的结构化对象,并对序列化后的结构化对象进行反序列化为结构化对象;接收日志查询请求;根据日志查询请求查询存储的结构化对象,并输出所查询到的结构化对象。
137.在一个实施例中,计算机程序被处理器执行时所实现的将排版后的日志信息进行结构化处理得到结构化对象,包括:获取预先设置的结构化模板;从排版后的日志信息的每一行提取日志内容;获取事件对象对应的日志基础内容;将所提取的日志内容以及日志基础内容存储至结构化模板中得到结构化对象。
138.在一个实施例中,计算机程序被处理器执行时所实现的将结构化对象进行序列化操作后进行存储,获取存储的序列化操作后的结构化对象,并对序列化后的结构化对象进行反序列化为结构化对象,包括:将结构化对象存储至本地内存队列中,并对结构化对象进行序列化后存储至缓存队列中;从缓存队列中提取序列化后的结构化对象,并对序列化后的结构化对象进行反序列化为结构化对象后存储。
139.在一个实施例中,计算机程序被处理器执行时所实现的从缓存队列中提取序列化后的结构化对象,并对序列化后的结构化对象进行反序列化为结构化对象后存储,包括:监听序列化后的所述结构化对象对应的消费信息;从缓存队列中获取与消费信息对应的序列化后的结构化对象从缓存队列中获取与消费信息对应的序列化后的结构化对象,并对序列化后的结构化对象进行反序列化为结构化对象后存储。
140.在一个实施例中,计算机程序被处理器执行时所实现的从缓存队列中获取与消费信息对应的序列化后的结构化对象,包括:按照预设时间间隔周期性地,从缓存队列中批量获取与消费信息对应的结构化对象。
141.在一个实施例中,计算机程序被处理器执行时所实现的按照预设时间间隔周期性地,从缓存队列中批量获取与消费信息对应的序列化后的结构化对象,包括:获取基于处理性能所预设的日志处理量;按照预设时间间隔周期性地,从缓存队列中查询与消费信息对应的序列化后的结构化对象;从所查询的结构化对象中提取与日志处理量对应数量的序列化后的结构化对象。
142.在一个实施例中,计算机程序被处理器执行时所实现的根据日志查询请求查询存储的结构化对象,并显示所查询到的结构化对象,包括:根据日志查询请求查询存储的结构化对象;获取所选择的预设的展示模板;提取展示模板中的展示字段,并从结构化对象中提取与展示字段对应的展示内容;将展示内容输入至展示模板中;显示输入了展示内容的展示模板。
143.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read

only memory,rom)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。
144.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
145.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1