CN110941543A - 日志处理方法、装置、计算机设备和存储介质 - Google Patents
日志处理方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN110941543A CN110941543A CN201911172919.8A CN201911172919A CN110941543A CN 110941543 A CN110941543 A CN 110941543A CN 201911172919 A CN201911172919 A CN 201911172919A CN 110941543 A CN110941543 A CN 110941543A
- Authority
- CN
- China
- Prior art keywords
- log
- transaction
- line
- server
- request
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title abstract description 12
- 238000012545 processing Methods 0.000 claims abstract description 104
- 238000000034 method Methods 0.000 claims abstract description 42
- 238000013499 data model Methods 0.000 claims abstract description 30
- 230000003993 interaction Effects 0.000 claims abstract description 10
- 238000004590 computer program Methods 0.000 claims description 23
- 230000000007 visual effect Effects 0.000 claims description 13
- 230000006399 behavior Effects 0.000 claims description 12
- 230000011218 segmentation Effects 0.000 claims description 10
- 230000009471 action Effects 0.000 claims description 8
- 238000002347 injection Methods 0.000 claims description 3
- 239000007924 injection Substances 0.000 claims description 3
- 238000012544 monitoring process Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 10
- 230000004044 response Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 6
- 230000002159 abnormal effect Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 3
- 238000005553 drilling Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及一种日志处理方法、装置、计算机设备和存储介质。所述方法包括:获取每个服务器中的初始日志,提取所述初始日志中的记录行,并将所述记录行按照交易进行分类得到交易日志,所述交易为客户端与所述服务器的一次完整交互;根据预设数据模型对每个交易对应的所述交易日志进行处理,以对所述交易进行分段得到交易段;获取所述交易段对应的日志内容,根据所述日志内容计算得到每个交易段对应的单一性能指标;获取每一服务器对应的交易段,并基于所述交易段对应的单一性能指标计算每个服务器对应的综合性能指标。采用本方法能够规范日志处理。
Description
技术领域
本申请涉及大数据技术领域,特别是涉及一种日志处理方法、装置、计算机设备和存储介质。
背景技术
随着移动互联应用的快速发展,传统的手工运维工作已难以适应问题快速分析诊断的要求,在大量的设备和日志中发现问题,变得愈发不现实,催生了建设日志搜索引擎和应用故障监测预警平台的需求。同时,基于IT基础设施的监控及防范日益突出的IT安全风险的需要,通过工具化、平台化,充分发挥系统日志在安全建设过程中的基础性作用,决定了项目建设的迫切性。
随着业务系统内程序调用关系日趋复杂,跨系统远程调用场景愈发频繁及难以追踪,如何解决系统性能监控等问题,成为亟待解决的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够规范日志处理的日志处理方法、装置、计算机设备和存储介质。
一种日志处理方法,所述方法包括:
获取每个服务器中的初始日志,提取所述初始日志中的记录行,并将所述记录行按照交易进行分类得到交易日志,所述交易为客户端与所述服务器的一次完整交互;
根据预设数据模型对每个交易对应的所述交易日志进行处理,以对所述交易进行分段得到交易段;
获取所述交易段对应的日志内容,根据所述日志内容计算得到每个交易段对应的单一性能指标;
获取每一服务器对应的交易段,并基于所述交易段对应的单一性能指标计算每个服务器对应的综合性能指标。
在其中一个实施例中,所述日志的生成方式包括:
拦截终端发送至服务器的请求,并为所述请求生成请求标识;
从所述请求中提取到终端信息、用户信息以及访问路径信息,根据所述终端信息、用户信息以及访问路径信息生成键值对;
将所述键值对注入到预设组件中,以对所述请求进行追踪;
根据所述预设组件的追踪结果,在每个服务器中针对所述请求生成统一了输出标准格式的日志头,所述日志头包括所述请求标识和所述键值对;
根据所述日志头和所述服务器针对所述请求的处理操作生成日志。
在其中一个实施例中,所述请求标识的生成方法包括:
获取服务器当前毫秒级时间,并生成随机数;
根据当前毫秒级时间以及所述随机数计算得到哈希值,将所述哈希值作为所述请求标识。
在其中一个实施例中,所述根据预设数据模型对每个交易对应的所述交易日志进行处理,包括:
遍历每个交易对应的所述交易日志,以获取到日志起始行、客户端字段非空行以及日志结束行;
根据所述日志起始行、客户端字段非空行以及日志结束行对所述日志进行处理,以对所述交易进行分段得到交易段。
在其中一个实施例中,所述根据所述日志起始行、客户端字段非空行以及日志结束行对所述日志进行处理,以对所述交易进行分段得到交易段,包括:
获取所述交易日志的当前行;
当所述当前行为日志起始行时,则继续获取所述交易日志的下一行;
当所述下一行为客户端字段非空行或者是日志结束行时,则将所述日志起始行和所述客户端字段非空行之间的交易日志划分为一段,或者将所述日志起始行和所述日志结束行之间的交易日志划分为一段,以对所述交易进行分段得到交易段;
当所述下一行不为客户端字段非空行或者是日志结束行时,则继续获取所述交易日志的下一行;
当所述当前行为客户端字段非空行时,则继续获取所述交易日志的下一行;
当所述下一行也为客户端字段非空行或者是日志结束行时,则将两个所述客户端字段非空行之间的交易日志划分为一段,或者将所述客户端字段非空行和所述日志结束行之间的交易日志划分为一段,以对所述交易进行分段得到交易段;
当所述下一行不为客户端字段非空行或者是日志结束行时,则继续获取所述交易日志的下一行。
在其中一个实施例中,所述获取每一服务器对应的交易段,并基于所述交易段对应的单一性能指标计算每个服务器对应的综合性能指标之后,还包括:
通过预设报表创建工具,根据所述单一性能指标和所述综合性能指标生成可视化报表;
将所述可视化报表进行显示。
一种日志处理装置,所述装置包括:
分类模块,用于获取每个服务器中的初始日志,提取所述初始日志中的记录行,并将所述记录行按照交易进行分类得到交易日志,所述交易为客户端与所述服务器的一次完整交互;
分段模块,用于根据预设数据模型对所述交易日志进行处理,以对所述交易进行分段得到交易段;
单一性能指标获取模块,用于获取所述交易段对应的日志内容,根据所述日志内容计算得到每个交易段对应的单一性能指标;
综合性能指标获取模块,用于获取每一服务器对应的交易段,并基于所述交易段对应的单一性能指标计算每个服务器对应的综合性能指标。
在其中一个实施例中,所述装置还包括:
拦截模块,用于拦截终端发送至服务器的请求,并为所述请求生成请求标识;
键值对生成模块,用于从所述请求中提取到终端信息、用户信息以及访问路径信息,根据所述终端信息、用户信息以及访问路径信息生成键值对;
注入模块,用于将所述键值对注入到预设组件中,以对所述请求进行追踪;
日志头生成模块,用于根据所述预设组件的追踪结果,在每个服务器中针对所述请求生成统一了输出标准格式的日志头,所述日志头包括所述请求标识和所述键值对;
日志生成模块,用于根据所述日志头和所述服务器针对所述请求的处理操作生成日志。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法的步骤。
上述日志处理方法、装置、计算机设备和存储介质,可以从每个服务器中获取到日志,并将日志按照交易进行分类,且在根据预设数据模型对每个交易对应的交易日志进行处理,以对交易进行分段得到交易段后,从而可以根据每个交易段对应的日志内容计算得到每个交易段对应的单一性能指标,还可以基于单一性能指标,计算每个服务器对应的综合性能指标,这样可以规范日志的处理,解决系统性能监控的问题。
附图说明
图1为一个实施例中日志处理方法的应用场景图;
图2为一个实施例中日志处理方法的流程示意图;
图3为一个实施例中的日志生成方式步骤的流程图;
图4为一个实施例中日志处理装置的结构框图;
图5为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的日志处理方法,可以应用于如图1所示的应用环境中。其中,日志处理平台102通过网络与服务器104进行通信。日志处理平台102可以获取到服务器104中的日志,提取初始日志中的记录行,并将记录行按照交易进行分类得到交易日志,从而可以根据每个交易段对应的日志内容计算得到每个交易段对应的单一性能指标,且在根据预设数据模型对每个交易对应的交易日志进行处理,以对交易进行分段得到交易段后,还可以基于所获取的交易段对应的交易内容,计算每个服务器104对应的综合性能指标,这样可以规范日志的处理,解决系统性能监控的问题。其中,日志处理平台102以及服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。日志处理平台102中可以(一)部署Splunk产品,为需要收集日志数据的服务器104安装配置转发客户端,进行日志数据收集。
在一个实施例中,如图2所示,提供了一种日志处理方法,以该方法应用于图1中的日志处理平台为例进行说明,包括以下步骤:
S202:获取每个服务器中的初始日志,提取初始日志中的记录行,并将记录行按照交易进行分类得到交易日志,交易为客户端与服务器的一次完整交互。
具体地,日志是记录系统中硬件、软件和系统问题的信息,监视系统中发生的事件,可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹,包括系统日志、应用程序日志和安全日志等。系统日志输出有特定的规范要求,其中用于记录用户的关键信息并使用同一规范输出的特定日志内容称为日志头,例如记录客户端IP、用户名、用户浏览器信息、请求开始及结束时间等。每个服务器中均独自生成属于该服务器本身的日志,且该日志中可能存在多个交易的内容,但是每个交易对应的每行日志的日志头不同,日志头可以包括日志头包括请求标识和键值对,键值对是根据终端信息、用户信息以及访问路径信息生成的。记录行为日志中记录了服务器针对请求的操作行为的行。交易为客户端与服务器的一次完整交互。即终端中的客户端向服务器发送请求,服务器通过自身或者是调用其他的服务器对该请求进行处理得到响应结果,并返回该响应结果至终端中的客户端的一次完整的过程称为一笔交易。对于一次客户端向服务端发起请求产生的所有业务系统日志,可以通过服务调用的先后顺序,将整个程序运行路径以链条的方式进行跟踪,并对产生的所有日志形成一个时间维度上的汇总,即将一笔交易以调用链的形式进行记录。
日志处理平台对于平台接入的日志数据,分析提取各项特征数据,完成数据建模,得到应用系统基础交易数据。具体地,日志处理平台可以获取到每个服务器中的日志,然后对每个服务器的日志的每行内容进行遍历,获取到每行日志对应的日志头,然后基于日志头中的内容对日志进行分类得到一笔笔交易,且根据各个日志头中的日志内容的记录时间形成一个时间维度上的汇总,得到以调用链为表示形式的交易。例如日志处理平台可以获取到日志头中为start的标记,将其定义为交易开始数据,然后根据该start标记的日志的日志头中的请求标识搜索所有日志头中包含该请求标识的日志行,将其归属到该交易下,直至搜索到日志头中的end标记,则将其定义为交易结束数据,且根据所搜索到的日志行生成与该交易对应的日志。
S204:根据预设数据模型对每个交易对应的交易日志进行处理,以对交易进行分段得到交易段。
具体地,预设数据模型是存储在日志交易平台的,其定义了表示各个交易段的字段,将交易划分为系统内分段和跨系统分段,其中交易段的字段可以包括交易段编号、所属的服务器、交易标识、全局标识、客户端系统、服务系统、调用标识、是否跨系统标识、起始时间、结束时间以及其他交易字段等,其他交易字段可以包括主机、日志来源、clientIp、userName、uri、action、sessionId、method、qs等。日志处理平台根据预设数据模型对应的客户端字段非空行、日志起始行以及日志结束行对每个交易对应的日志进行处理,以对交易进行分段得到交易段。
S206:获取交易段对应的日志内容,根据日志内容计算得到每个交易段对应的单一性能指标。
S208:获取每一服务器对应的交易段,并基于所述交易段对应的单一性能指标计算每个服务器对应的综合性能指标。
具体地,单一性能指标可以包括交易段完成状态、交易耗时等。服务器以交易段为单位,判断预设时间段内每个交易段的完成状态以及交易耗时等。综合性能指标可以包括每秒请求数量、并发量以及异常数等。服务器可以根据每个服务器对应的交易段的单一性能指标计算得到综合性能指标,例如根据每个交易段的交易耗时得到平均处理时间,根据每个交易段的响应时间得到平均响应时间,根据每个交易段的请求数的累计得到每秒请求数量等。
具体地,综合性能指标可以是单个服务器对应的实时系统性能概括,其中包括预设时间段内的处理中请求数、每秒请求数和平均处理时间,日志处理平台可以从数据模型中读取所要计算的服务器对应的交易段,然后获取到预设时间段内的处理中请求数,该时间段内所有的请求数,以及所有的处理完成的请求的耗时时间,然后根据该时间段内所有的请求数以及时间段计算得到每秒请求数,根据所有的处理完成的请求的耗时时间以及时间段计算得到平均处理时间。
当综合性能指标是单个服务器的实时请求监控时,其中包括每秒请求数、响应时间、请求时序图、请求分布、高并发URI以及处理中请求,日志处理平台可以从数据模型中读取所要计算的服务器对应的交易段,然后获取到预设时间段内的处理中请求数,该时间段内所有的请求数,以及接到请求至返回给请求对应的响应数据的耗时时间,然后根据该时间段内所有的请求数以及时间段计算得到每秒请求数,根据所有的接到请求至返回给请求对应的响应数据的耗时时间以及时间段计算得到响应时间。
当综合性能指标是单个服务器的处理中请求监控时,其可以包括当前处理中请求数,分布情况、时序图以及URI清单等详细信息,其中日志处理平台可以从数据模型中读取所要计算的服务器对应的交易段,然后获取到预设时间段内的处理中请求数,并将各个处理中请求对应的数据模型中的字段进行显示,给出各个处理中请求的分布。
当综合性能指标是实时异常监控的时候,日志处理平台可以获取到预设时间段内的服务器对应的交易段,然后根据数据模型中该交易段是否异常来进行显示,例如将异常的交易段显示出来。此外,日志处理平台还可以获取到异常的交易段对应的交易,并将该交易进行显示,以标识交易异常,即同时显示了单一性能指标。
当综合性能指标是交易量分析的时候,日志处理平台可以获取到预设时间段内对应服务器的对应的交易段,然后定位到每一秒中各包括多少个交易段,以趋势图的形式显示。
当综合性能指标是耗时分析的时候,日志处理平台可以获取到预设时间段内对应服务器的对应的交易段,然后获取到该交易段对应的起始时间和结束时间,日志处理平台根据该起始时间和结束时间得到交易耗时,并定位到每一秒中所包括的交易段,计算每一秒中的交易段的平均值作为该秒的交易耗时。此外还可以获取到该预设时间段中所有交易段的交易耗时的平均值作为交易平均耗时,获取到耗时时间最长的预设数量的交易段进行显示等,以便于用户查看。
当综合性能指标是性能分析的时候,日志处理平台可以获取到预设时间段内对应服务器的对应的交易段,然后将该交易段对应的数据模型中的字段进行显示。
当综合性能指标是交易明细的时候,日志处理平台可以获取到预设时间段内对应服务器的对应的交易段,然后将该交易段对应的数据模型中的字段进行显示。
上述规范的日志数据接入日志处理平台Splunk平台后,可以直接使用类似“交易明细报表”、实时请求监控、实时处理中请求监控、异常监控报表等内容,直接实现机器数据的解析、分析、可视化展示、告警等功能。
此外,当日志处理平台计算得到了单一性能指标和综合性能指标后,可以与预先设置的指标设定阈值进行比较,如果超过该指标设定阈值,则以邮件或企业微信的方式发送提醒内容。
上述日志处理方法,可以从每个服务器中获取到日志,并将日志按照交易进行分类,且在根据预设数据模型对每个交易对应的交易日志进行处理,以对交易进行分段得到交易段后,从而可以根据每个交易段对应的日志内容计算得到每个交易段对应的单一性能指标,还可以基于单一性能指标,计算每个服务器对应的综合性能指标,这样可以规范日志的处理,解决系统性能监控的问题。且对于接入的不同服务器的日志,当应用上述日志分析平台,即Splunk产品进行日志数据分析时,避免了为每个服务器、每套日志规范实现对应的分析报表,提高了产品配置的通用性,大大减少定制开发的工作量及开发周期。
在其中一个实施例中,参见图3所示,图3为一个实施例中的日志生成方式步骤的流程图,该日志的生成方式可以包括:
S302:拦截终端发送至服务器的请求,并为请求生成请求标识。
具体地,日志处理平台可以在各个服务器中web.xml配置文件中增加拦截所有请求的拦截语句以获取到终端发送至服务器的请求。
此外,日志处理平台可以预先生成一个日志处理工具,该日志处理工具安装到各个服务器中以对各个服务器中的日志进行处理,该日志处理工具应用log4j的相关配置,将MDC中相关参数进行格式化规范输出设置,该日志处理工具可以对请求进行追踪处理,包括对请求开始时初始化处理、请求过程中的处理以及请求结束时的处理。需要说明的是此处使用的是Log4j的开源项目,也可以考虑其他日志框架来生成该日志处理工具。
可选地,请求标识的生成方法包括:获取服务器当前毫秒级时间,并生成随机数;根据当前毫秒级时间以及随机数计算得到哈希值,将哈希值作为请求标识。
S304:从请求中提取到终端信息、用户信息以及访问路径信息,根据终端信息、用户信息以及访问路径信息生成键值对。
具体地,终端信息包括但不限于客户端IP地址、操作系统、终端类型、浏览器类型及版本等基本信息;用户信息包括但不限于用户名、手机、邮箱等内容;以及访问路径信息包括但不限于本次访问URI,上一次跳转来源URI。
该日志处理工具从http请求中抓取客户端信息相关参数,包括客户端IP地址、操作系统、终端类型、浏览器类型及版本等基本信息;从session中抓取本次登录用户的相关信息,包括用户名、手机、邮箱等内容;从http请求中抓取访问路径信息,包括本次访问URI,上一次跳转来源URI等,并将所抓取到的参数以键值对的形式添加到一个map中。
S306:将键值对注入到预设组件中,以对请求进行追踪。
具体地,日志处理工具通过log4j的MDC组件进行注入,以便在当前线程执行过程中,后续使用log4j进行日志输出时获取使用,通过log4j日志输出请求开始相关信息,通过“start”标记,申明一笔交易的开始。
S308:根据预设组件的追踪结果,在每个服务器中针对请求生成统一了输出标准格式的日志头,日志头包括请求标识和键值对。
具体地,日志头包括请求标识和键值对,对于同一线程中所有通过log4j输出的日志,统一输出标准格式的日志头。
S310:根据日志头和服务器针对请求的处理操作生成日志。
具体地,根据日志头和服务器针对请求的处理操作生成日志具体包括:日志处理工具计算请求结束时间、整个交易耗时;通过log4j日志输出请求结束相关信息,通过“end”标记,申明一笔交易的结束;清理MDC中本线程相关参数信息。
上述实施例中,在每个服务器都安装有上述日志处理工具,从而可以根据日志头和服务器对请求的处理操作生成日志行,所有日志头中请求标识相同的日志行则组成一个交易对应的日志。一个服务器或多个服务器组成的服务器群,可以按照同一个日志规范进行输出,并且此项规范只需要进行简单配置即可,不需要额外的系统开发工作。
在其中一个实施例中,根据预设数据模型对每个交易对应的交易日志进行处理,包括:遍历每个交易对应的交易日志,以获取到日志起始行、客户端字段非空行以及日志结束行;根据日志起始行、客户端字段非空行以及日志结束行对日志进行处理,以对交易进行分段得到交易段。
在其中一个实施例中,根据日志起始行、客户端字段非空行以及日志结束行对日志进行处理,以对交易进行分段得到交易段,包括:获取交易日志的当前行;当当前行为日志起始行时,则继续获取交易日志的下一行;当下一行为客户端字段非空行或者是日志结束行时,则将日志起始行和客户端字段非空行之间的交易日志划分为一段,或者将日志起始行和日志结束行之间的交易日志划分为一段,以对交易进行分段得到交易段;当下一行不为客户端字段非空行或者是日志结束行时,则继续获取交易日志的下一行;当当前行为客户端字段非空行时,则继续获取交易日志的下一行;当下一行也为客户端字段非空行或者是日志结束行时,则将两个客户端字段非空行之间的交易日志划分为一段,或者将客户端字段非空行和日志结束行之间的交易日志划分为一段,以对交易进行分段得到交易段;当下一行不为客户端字段非空行或者是日志结束行时,则继续获取交易日志的下一行。
具体地,日志处理平台为每个服务器建立一个初步的数据模型,里面存放着每行交易的日志信息,其中根据交易中的不同的时间节点、交易开始结束时的关键字、本服务器输出日志中有关“客户端系统调用”的相关字段,来定义各交易段范围,“交易段”包括了划入该段内所有交易日志的信息,并提取关键信息组成本交易段的主要信息并展示;各“交易段”只包括本系统的日志输出,涉及跨系统调用的交易段,其服务端系统日志属于“黑盒”,可以向下钻取。根据这些字段大致可以把交易时间段分为两种类型,包括“系统内分段”、“跨系统分段”。
具体地,交易的分段方式包括:日志处理平台遍历每行交易日志:
由“日志起始行”至第一个“客户端字段非空行”或“日志结束行”止,为第一个分段。
由上一个“客户端字段非空行”至下一个“客户端字段非空且取值相同行”或“日志结束行”止,为下一个分段;以此类推。
由上一个“客户端字段非空行”至下一个“客户端字段非空且取值不相同行”或“日志结束行”止,为下一个分段;以此类推。
具体地,为了便于理解,此处假设存在一个系统,其中存在异步调用,包括A系统,其可以调用B系统和C系统。
表1A系统
表2B系统
表3C系统
根据上述表格,日志处理平台可以得到数据模型的各字段如下:
上述实施例中,根据预先设置的数据模型对交易进行分段,以便于后续综合性能指标的计算。
在其中一个实施例中,获取每一服务器对应的交易段,并基于所述交易段对应的单一性能指标计算每个服务器对应的综合性能指标之后,还包括:通过预设报表创建工具,根据单一性能指标和综合性能指标生成可视化报表;将可视化报表进行显示。
具体地,约束报表创建工具为Splunk产品自带的报表创建工具,报表展示内容为从基础指标中挑选部分重要指标,在各层次维度上的统计值。其中可以通过以下方式实现报表的开发:
可视化面板:其支持以图形化方式展现多种系统视图,如拓扑图、列表图;支持下钻。拓扑图:按层次划分,如应用系统(银保通系统)->子系统(按职能,如通讯前置、寿险核心、规则库等)->相关服务器设备。列表图:其的钻取方向为:应用群->应用服务器->应用实例(或进程)->相关服务器设备。
二维表:常规报表形式,支持下钻。
趋势图:支持查看部分基础指标,以时间为横轴,以指标值为纵轴的历史数据变化曲线,反映系统的变化趋势;支持比例尺随统计时间区间扩展而增大的展现方式。如查看某交易量指标在距离当前时点天、周、月、年时间跨度内的变化曲线时,比例尺逐渐增大;类似股票K线图。
上述实施例中,可以根据单一性能指标和综合性能指标生成可视化报表,以便于用户查看,将数据可视化展示,可以提高数据的可读性。
应该理解的是,虽然图2-3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图4所示,提供了一种日志处理装置,包括:分类模块100、分段模块200、单一性能指标获取模块300和综合性能指标获取模块400,其中:
分类模块100,用于获取每个服务器中的初始日志,提取初始日志中的记录行,并将记录行按照交易进行分类得到交易日志,交易为客户端与服务器的一次完整交互。
分段模块200,用于根据预设数据模型对交易日志进行处理,以对交易进行分段得到交易段。
单一性能指标获取模块300,用于获取交易段对应的日志内容,根据日志内容计算得到每个交易段对应的单一性能指标。
综合性能指标获取模块400,用于获取每一服务器对应的交易段,并基于所述交易段对应的单一性能指标计算每个服务器对应的综合性能指标。
在其中一个实施例中,上述日志处理装置还包括:
拦截模块,用于拦截终端发送至服务器的请求,并为请求生成请求标识。
键值对生成模块,用于从请求中提取到终端信息、用户信息以及访问路径信息,根据终端信息、用户信息以及访问路径信息生成键值对。
注入模块,用于将键值对注入到预设组件中,以对请求进行追踪。
日志头生成模块,用于根据预设组件的追踪结果,在每个服务器中针对请求生成统一了输出标准格式的日志头,日志头包括请求标识和键值对。
日志生成模块,用于根据日志头和服务器针对请求的处理操作生成日志。
在其中一个实施例中,上述拦截模块包括:
随机数获取单元,用于获取服务器当前毫秒级时间,并生成随机数。
标识生成单元,用于根据当前毫秒级时间以及随机数计算得到哈希值,将哈希值作为请求标识。
在其中一个实施例中,上述分段模块200包括:
遍历单元,用于遍历每个交易对应的交易日志,以获取到日志起始行、客户端字段非空行以及日志结束行。
分段单元,用于根据日志起始行、客户端字段非空行以及日志结束行对日志进行处理,以对交易进行分段得到交易段。
在其中一个实施例中,上述分段单元可以包括:
第一获取子单元,用于获取交易日志的当前行。
第二获取子单元,用于当当前行为日志起始行时,则继续获取交易日志的下一行。
第一分段子单元,用于当下一行为客户端字段非空行或者是日志结束行时,则将日志起始行和客户端字段非空行之间的交易日志划分为一段,或者将日志起始行和日志结束行之间的交易日志划分为一段,以对交易进行分段得到交易段。
第一循环子单元,用于当下一行不为客户端字段非空行或者是日志结束行时,则继续获取交易日志的下一行。
第三获取子单元,用于当当前行为客户端字段非空行时,则继续获取交易日志的下一行。
第二分段子单元,用于当下一行也为客户端字段非空行或者是日志结束行时,则将两个客户端字段非空行之间的交易日志划分为一段,或者将客户端字段非空行和日志结束行之间的交易日志划分为一段,以对交易进行分段得到交易段。
第二循环子单元,用于当下一行不为客户端字段非空行或者是日志结束行时,则继续获取交易日志的下一行。
在其中一个实施例中,上述日志处理模块还包括:
报表生成模块,用于通过预设报表创建工具,根据单一性能指标和综合性能指标生成可视化报表。
显示模块,用于将可视化报表进行显示。
关于日志处理装置的具体限定可以参见上文中对于日志处理方法的限定,在此不再赘述。上述日志处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储日志数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种日志处理方法。
本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行计算机程序时实现以下步骤:获取每个服务器中的初始日志,提取初始日志中的记录行,并将记录行按照交易进行分类得到交易日志,交易为客户端与服务器的一次完整交互;根据预设数据模型对每个交易对应的交易日志进行处理,以对交易进行分段得到交易段;获取交易段对应的日志内容,根据日志内容计算得到每个交易段对应的单一性能指标;获取每一服务器对应的交易段,并基于所述交易段对应的单一性能指标计算每个服务器对应的综合性能指标。
在一个实施例中,处理器执行计算机程序时所实现的日志的生成方式包括:拦截终端发送至服务器的请求,并为请求生成请求标识;从请求中提取到终端信息、用户信息以及访问路径信息,根据终端信息、用户信息以及访问路径信息生成键值对;将键值对注入到预设组件中,以对请求进行追踪;根据预设组件的追踪结果,在每个服务器中针对请求生成统一了输出标准格式的日志头,日志头包括请求标识和键值对;根据日志头和服务器针对请求的处理操作生成日志。
在一个实施例中,处理器执行计算机程序时所实现的请求标识的生成方法包括:获取服务器当前毫秒级时间,并生成随机数;根据当前毫秒级时间以及随机数计算得到哈希值,将哈希值作为请求标识。
在一个实施例中,处理器执行计算机程序时所实现的根据预设数据模型对每个交易对应的交易日志进行处理,包括:遍历每个交易对应的交易日志,以获取到日志起始行、客户端字段非空行以及日志结束行;根据日志起始行、客户端字段非空行以及日志结束行对日志进行处理,以对交易进行分段得到交易段。
在一个实施例中,处理器执行计算机程序时所实现的根据日志起始行、客户端字段非空行以及日志结束行对日志进行处理,以对交易进行分段得到交易段,包括:获取交易日志的当前行;当当前行为日志起始行时,则继续获取交易日志的下一行;当下一行为客户端字段非空行或者是日志结束行时,则将日志起始行和客户端字段非空行之间的交易日志划分为一段,或者将日志起始行和日志结束行之间的交易日志划分为一段,以对交易进行分段得到交易段;当下一行不为客户端字段非空行或者是日志结束行时,则继续获取交易日志的下一行;当当前行为客户端字段非空行时,则继续获取交易日志的下一行;当下一行也为客户端字段非空行或者是日志结束行时,则将两个客户端字段非空行之间的交易日志划分为一段,或者将客户端字段非空行和日志结束行之间的交易日志划分为一段,以对交易进行分段得到交易段;当下一行不为客户端字段非空行或者是日志结束行时,则继续获取交易日志的下一行。
在一个实施例中,处理器执行计算机程序时所实现的获取每一服务器对应的交易段,并基于所述交易段对应的单一性能指标计算每个服务器对应的综合性能指标之后,还包括:通过预设报表创建工具,根据单一性能指标和综合性能指标生成可视化报表;将可视化报表进行显示。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:获取每个服务器中的初始日志,提取初始日志中的记录行,并将记录行按照交易进行分类得到交易日志,交易为客户端与服务器的一次完整交互;根据预设数据模型对每个交易对应的交易日志进行处理,以对交易进行分段得到交易段;获取交易段对应的日志内容,根据日志内容计算得到每个交易段对应的单一性能指标;获取每一服务器对应的交易段,并基于所述交易段对应的单一性能指标计算每个服务器对应的综合性能指标。
在一个实施例中,计算机程序被处理器执行时所实现的日志的生成方式包括:拦截终端发送至服务器的请求,并为请求生成请求标识;从请求中提取到终端信息、用户信息以及访问路径信息,根据终端信息、用户信息以及访问路径信息生成键值对;将键值对注入到预设组件中,以对请求进行追踪;根据预设组件的追踪结果,在每个服务器中针对请求生成统一了输出标准格式的日志头,日志头包括请求标识和键值对;根据日志头和服务器针对请求的处理操作生成日志。
在一个实施例中,计算机程序被处理器执行时所实现的请求标识的生成方法包括:获取服务器当前毫秒级时间,并生成随机数;根据当前毫秒级时间以及随机数计算得到哈希值,将哈希值作为请求标识。
在一个实施例中,计算机程序被处理器执行时所实现的根据预设数据模型对每个交易对应的交易日志进行处理,包括:遍历每个交易对应的交易日志,以获取到日志起始行、客户端字段非空行以及日志结束行;根据日志起始行、客户端字段非空行以及日志结束行对日志进行处理,以对交易进行分段得到交易段。
在一个实施例中,计算机程序被处理器执行时所实现的根据日志起始行、客户端字段非空行以及日志结束行对日志进行处理,以对交易进行分段得到交易段,包括:获取交易日志的当前行;当当前行为日志起始行时,则继续获取交易日志的下一行;当下一行为客户端字段非空行或者是日志结束行时,则将日志起始行和客户端字段非空行之间的交易日志划分为一段,或者将日志起始行和日志结束行之间的交易日志划分为一段,以对交易进行分段得到交易段;当下一行不为客户端字段非空行或者是日志结束行时,则继续获取交易日志的下一行;当当前行为客户端字段非空行时,则继续获取交易日志的下一行;当下一行也为客户端字段非空行或者是日志结束行时,则将两个客户端字段非空行之间的交易日志划分为一段,或者将客户端字段非空行和日志结束行之间的交易日志划分为一段,以对交易进行分段得到交易段;当下一行不为客户端字段非空行或者是日志结束行时,则继续获取交易日志的下一行。
在一个实施例中,计算机程序被处理器执行时所实现的获取每一服务器对应的交易段,并基于所述交易段对应的单一性能指标计算每个服务器对应的综合性能指标之后,还包括:通过预设报表创建工具,根据单一性能指标和综合性能指标生成可视化报表;将可视化报表进行显示。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种日志处理方法,所述方法包括:
获取每个服务器中的初始日志,提取所述初始日志中的记录行,并将所述记录行按照交易进行分类得到交易日志,所述交易为客户端与所述服务器的一次完整交互;
根据预设数据模型对每个交易对应的所述交易日志进行处理,以对所述交易进行分段得到交易段;
获取所述交易段对应的日志内容,根据所述日志内容计算得到每个交易段对应的单一性能指标;
获取每一服务器对应的交易段,并基于所述交易段对应的单一性能指标计算每个服务器对应的综合性能指标。
2.根据权利要求1所述的方法,其特征在于,所述日志的生成方式包括:
拦截终端发送至服务器的请求,并为所述请求生成请求标识;
从所述请求中提取到终端信息、用户信息以及访问路径信息,根据所述终端信息、用户信息以及访问路径信息生成键值对;
将所述键值对注入到预设组件中,以对所述请求进行追踪;
根据所述预设组件的追踪结果,在每个服务器中针对所述请求生成统一了输出标准格式的日志头,所述日志头包括所述请求标识和所述键值对;
根据所述日志头和所述服务器针对所述请求的处理操作生成日志。
3.根据权利要求2所述的方法,其特征在于,所述请求标识的生成方法包括:
获取服务器当前毫秒级时间,并生成随机数;
根据当前毫秒级时间以及所述随机数计算得到哈希值,将所述哈希值作为所述请求标识。
4.根据权利要求1所述的方法,其特征在于,所述根据预设数据模型对每个交易对应的所述交易日志进行处理,包括:
遍历每个交易对应的所述交易日志,以获取到日志起始行、客户端字段非空行以及日志结束行;
根据所述日志起始行、客户端字段非空行以及日志结束行对所述交易日志进行处理,以对所述交易进行分段得到交易段。
5.根据权利要求4所述的方法,其特征在于,所述根据所述日志起始行、客户端字段非空行以及日志结束行对所述日志进行处理,以对所述交易进行分段得到交易段,包括:
获取所述交易日志的当前行;
当所述当前行为日志起始行时,则继续获取所述交易日志的下一行;
当所述下一行为客户端字段非空行或者是日志结束行时,则将所述日志起始行和所述客户端字段非空行之间的交易日志划分为一段,或者将所述日志起始行和所述日志结束行之间的交易日志划分为一段,以对所述交易进行分段得到交易段;
当所述下一行不为客户端字段非空行或者是日志结束行时,则继续获取所述交易日志的下一行;
当所述当前行为客户端字段非空行时,则继续获取所述交易日志的下一行;
当所述下一行也为客户端字段非空行或者是日志结束行时,则将两个所述客户端字段非空行之间的交易日志划分为一段,或者将所述客户端字段非空行和所述日志结束行之间的交易日志划分为一段,以对所述交易进行分段得到交易段;
当所述下一行不为客户端字段非空行或者是日志结束行时,则继续获取所述交易日志的下一行。
6.根据权利要求1至5任意一项所述的方法,其特征在于,所述获取每一服务器对应的交易段,并基于所述交易段对应的单一性能指标计算每个服务器对应的综合性能指标之后,还包括:
通过预设报表创建工具,根据所述单一性能指标和所述综合性能指标生成可视化报表;
将所述可视化报表进行显示。
7.一种日志处理装置,其特征在于,所述装置包括:
分类模块,用于获取每个服务器中的初始日志,提取所述初始日志中的记录行,并将所述记录行按照交易进行分类得到交易日志,所述交易为客户端与所述服务器的一次完整交互;
分段模块,用于根据预设数据模型对所述交易日志进行处理,以对所述交易进行分段得到交易段;
单一性能指标获取模块,用于获取所述交易段对应的日志内容,根据所述日志内容计算得到每个交易段对应的单一性能指标;
综合性能指标获取模块,用于获取每一服务器对应的交易段,并基于所述交易段对应的单一性能指标计算每个服务器对应的综合性能指标。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
拦截模块,用于拦截终端发送至服务器的请求,并为所述请求生成请求标识;
键值对生成模块,用于从所述请求中提取到终端信息、用户信息以及访问路径信息,根据所述终端信息、用户信息以及访问路径信息生成键值对;
注入模块,用于将所述键值对注入到预设组件中,以对所述请求进行追踪;
日志头生成模块,用于根据所述预设组件的追踪结果,在每个服务器中针对所述请求生成统一了输出标准格式的日志头,所述日志头包括所述请求标识和所述键值对;
日志生成模块,用于根据所述日志头和所述服务器针对所述请求的处理操作生成日志。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911172919.8A CN110941543A (zh) | 2019-11-26 | 2019-11-26 | 日志处理方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911172919.8A CN110941543A (zh) | 2019-11-26 | 2019-11-26 | 日志处理方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110941543A true CN110941543A (zh) | 2020-03-31 |
Family
ID=69908091
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911172919.8A Pending CN110941543A (zh) | 2019-11-26 | 2019-11-26 | 日志处理方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110941543A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112084249A (zh) * | 2020-09-11 | 2020-12-15 | 浙江立元科技有限公司 | 一种访问记录提取方法及装置 |
CN112202632A (zh) * | 2020-09-24 | 2021-01-08 | 建信金融科技有限责任公司 | 报文的提取方法、装置、电子设备及计算机可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100293137A1 (en) * | 2009-05-14 | 2010-11-18 | Boris Zuckerman | Method and system for journaling data updates in a distributed file system |
CN106407078A (zh) * | 2016-09-26 | 2017-02-15 | 中国工商银行股份有限公司 | 基于信息交互的客户端性能监控装置及方法 |
-
2019
- 2019-11-26 CN CN201911172919.8A patent/CN110941543A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100293137A1 (en) * | 2009-05-14 | 2010-11-18 | Boris Zuckerman | Method and system for journaling data updates in a distributed file system |
CN106407078A (zh) * | 2016-09-26 | 2017-02-15 | 中国工商银行股份有限公司 | 基于信息交互的客户端性能监控装置及方法 |
Non-Patent Citations (1)
Title |
---|
田昌鹏;: "基于Web日志分析的Web QoS研究" * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112084249A (zh) * | 2020-09-11 | 2020-12-15 | 浙江立元科技有限公司 | 一种访问记录提取方法及装置 |
CN112202632A (zh) * | 2020-09-24 | 2021-01-08 | 建信金融科技有限责任公司 | 报文的提取方法、装置、电子设备及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110399293B (zh) | 系统测试方法、装置、计算机设备和存储介质 | |
CN110266752B (zh) | 区块链信息推送方法、装置、计算机设备和存储介质 | |
CN112506894A (zh) | 基于链路追踪的服务链日志处理方法、装置和计算机设备 | |
CN104731816A (zh) | 一种处理异常业务数据的方法和装置 | |
CN109359866B (zh) | 基于租赁设备的风险隐患监控方法、装置和计算机设备 | |
CN110309109B (zh) | 数据监控方法、装置、计算机设备及存储介质 | |
US7908239B2 (en) | System for storing event data using a sum calculator that sums the cubes and squares of events | |
CN110569222B (zh) | 链路追踪方法、装置、计算机设备和可读存储介质 | |
CN109544014B (zh) | 基于历史数据回放的反欺诈方法及装置 | |
CN109325058B (zh) | 规则批量比对方法、装置、计算机设备和存储介质 | |
CN110941543A (zh) | 日志处理方法、装置、计算机设备和存储介质 | |
CN110400080A (zh) | 考核数据监控方法、装置、计算机设备和存储介质 | |
CN112463834A (zh) | 流式处理中自动实现根因分析的方法、装置及电子设备 | |
CN110750443A (zh) | 网页测试的方法、装置、计算机设备及存储介质 | |
CN111131290B (zh) | 流量数据处理方法和装置 | |
CN110674149B (zh) | 业务数据处理方法、装置、计算机设备和存储介质 | |
CN112632330A (zh) | Atm设备的巡检方法、装置、计算机设备和存储介质 | |
CN114201090A (zh) | 产品生产异常预警系统、方法、计算机设备和存储介质 | |
CN109284331B (zh) | 基于业务数据资源的制证信息获取方法、终端设备及介质 | |
CN112948504B (zh) | 数据采集方法、装置、计算机设备和存储介质 | |
CN112256532A (zh) | 测试界面生成方法、装置、计算机设备及可读存储介质 | |
CN112100201A (zh) | 基于大数据技术的数据监测方法、装置、设备和存储介质 | |
CN117057794A (zh) | 基于区块链的智能支付网关交易方法、系统、设备及介质 | |
KR102516819B1 (ko) | 빅데이터를 기반으로 위협 이벤트를 분석하고 대응하도록 지원하는 방법 및 이를 이용한 서버 | |
CN111738868A (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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20200331 |
|
WD01 | Invention patent application deemed withdrawn after publication |