在Logstash中进行解析的奇异日志结构。意见感激

时间:2019-07-15 13:08:56

标签: logging logstash elastic-stack logstash-configuration

我有一个日志文件,该文件基本上不遵循普通日志文件的格式。通常,在诸如Apache之类的已知日志中,您会在一行中记录一个事件。但是,矿山通过多行分布,有点像COBOL日志。我已经尝试过使用多行编解码器来解析此内容,但并没有太大帮助。我想提取一些信息,在主题末尾将详细介绍。

该主题是相当长且复杂的imo,因此,我真的很感谢您的时间和您对此的看法,因为以前从未见过这样的日志。如果您不明白,请随时给我报价。我很乐意为您买一杯咖啡,以解决问题:)

这是日志结构的一个示例。

*****************************************************************
*            Chain ABC           (UNIX)                    *
***************************************************************** 

JOB: ABC                          DATE : 15/07/2019 12:15:42

*-------------------------- STEP000 ---------------------------*
*                  Initialization                 *
*---------------------------------------------------------------*

AA100PPP-STOC0001-------------------------------------
AA100PPP-STOC0002-PROGRAM IDENTIFICATION : PPP/2.000/2018-01-01/F/
AA100PPP-STOC0003-START PROCESSING – START TIMESTAMP : 2019-07-15-12.45.00
AA100PPP-STOC0004-....+....1....+....2....+....3....+....4....+....5
…
AA100PPP-STOC0010-*** PPP : END SUCCESSFULLY – END TIMESTAMP : 2019-07-15-12.46.00

*-------------------------- STEP001 ---------------------------*
*             Configuration              *
*---------------------------------------------------------------*
…
*-------------------------- STEP002 ---------------------------*
*             Execution              *
*---------------------------------------------------------------*
…
*-------------------------- STEP003 ---------------------------*
*             Computing              *
*---------------------------------------------------------------*
BBCPTXYZ-STOC0001-------------------------------------
BBCPTXYZ-STOC0002-PROGRAM IDENTIFICATION : TY1/2.000/2018-01-01/F/
*CD00TY1-STOC0002-PROGRAM IDENTIFICATION : XYZ/2.000/2018-02-14/F/
*CD00TY1-STOC0003-START PROCESSING – START TIMESTAMP : 2019-07-15-12.51.00
…
BBCPTXYZ-STOC0001-------------------------------------
*CD00TY1-STOC0002-PROGRAM IDENTIFICATION : OPM/2.000/2018-02-14/F/
*CD00TY1-STOC0003-START PROCESSING – START TIMESTAMP : 2019-07-15-12.53.00
BBCPTOPM-STOC0001-------------------------------------
BBCPTOPM-STOC0002-FILE EXTRACTED : 000000000002
*CD00TY1-STOC0010-*** XYZ :  END SUCCESSFULLY - END TIMESTAMP : 2019-07-15-12.55.00
…

JOB: ABC                          DATE : 15/07/2019 12:58:34

*---------------------------------------------------------------*
*                          End job                          *
*---------------------------------------------------------------*

问题1: 如您所见,我们有两行定义了作业 ABC 和整个作业的两个全局时间戳。第一个是开始时间,第二个是结束时间。不幸的是,由于它们具有相同的格式,因此无法分辨开头和结尾。我想要这份工作,将时间戳添加到从此文件中提取的每个事件中。

问题2: 日志文件的内容除以名为 STEP 的块。对于每个步骤,您都有一个主程序,该程序由步骤的第一行中的前八个字符的后三个字符标识,最后是许多小程序,我将在下面的问题3 中进行讨论。 例如在 STEP000 AA100PPP-STOC0001-------------------------------------

来自AA100PPP的

PPP是此步骤的主程序。它有两个本地时间戳记,开始时间和结束时间。利用此信息,它创建一个事件。简而言之,事件定义如下:

{
job: ABC
timestampstartglobal: 15/07/2019 12:15:42
timestampendglobal: 15/07/2019 12:58:34 
process: PPP
timestampstartprocess: 2019-07-15-12.45.00
timestampendprocess:  2019-07-15-12.46.00
}

问题3: STEP003 中,主程序XYZ称为迷你程序TY1。 TY1现在负责在此步骤中管理所有程序。每个程序都有多个程序标识/开始处理–开始时间。因此,对于这一步,我只关心XYZ的时间戳,但是此信息分为两行,因此我需要告诉解析器在PROGRAM IDENTIFICATION下的那一行获取XYZ的起始时间戳。 XYZ应该从此行开始时间戳记: *CD00TY1-STOC0003-START PROCESSING – START TIMESTAMP : 2019-07-15-12.51.00 不是迷你程序OPM的行 *CD00TY1-STOC0003-START PROCESSING – START TIMESTAMP : 2019-07-15-12.53.00

问题4: 同样在 STEP003 中,我想使用从小程序OPM中提取的信息向事件添加一个嵌套字段 BBCPTOPM-STOC0002-FILE EXTRACTED : 000000000002 最后,我们在类似问题问题2 中的事件中添加了一个额外的字段

{
job: ABC
process: XYZ
...
extraInfo: [
fileExtracted: 2
]
} 

是否可以解决所有问题并实现对此类日志的解析?谢谢

0 个答案:

没有答案