Logstash如何在Logstash中拆分字段

时间:2019-05-16 14:15:24

标签: logstash logstash-grok logstash-configuration

我需要拆分下面的字段,我想在下面的字段中创建所有出现的数组,该数组以“ START-PHASE 1 09:02:16.31”开头,时间是生成的动态值。 请在下面找到输入字段和预期的输出更新。在网上寻找解决方案还不太了解,请提供帮助。

要拆分的字段:

“ restData” =>“开始-阶段1 09:02:16.31 \ n开始-阶段1子阶段1 09:02:16.31 \ n正在处理家族\ n正在启动家族IL_UPGRADEMGMT IL_RIESEN IL_RIAMAN IL_MFSPRB IL_NASEVA \ n IL_EFOCY \ n正在处理家族阶段1子阶段1 09:02:16.67 \ n开始-阶段1子阶段3 09:02:16.67 \ n处理家族\ n文件加载TSLCGRGX SWOCGRGX SCHORDGX SMPERMGX CMECGRGX \ n CGNAMEGX UCQFILNG IPCYLNGNG UC2FIL ALQFILGX TDNFILGX NG2DATNG \ n IW6FILNG VAITXTNG VAD01001 VAD01002 PHPARAGX \ n IWPARAGX VAXL00NG VAXL01NG VAXL02NG VAXL03NG \ n VAXL04NG VAXL05NG VAXL06NG VAXL07NG VAXL08NG \ n VAXL09NG VAXL10NG VAXL11NG VAXL12NG VAXL13NG \ n VAXL14NG VAXL15NG VAXE00NG VAXE01NG VAXE02NG \ n VAXE03NG VAXE04NG VAXE05NG VAXE06NG VAXE07NG \ n VAXE08NG VAXE09NG VAXE10NG VAXE11NG VAXE12NG \ n VAXE13NG VAXE14NG VAXE15NG IWQFILNG TO3FILNG \ n TN3FILNG P5PARAGX LEKFILNG LTGFILNG H24LOGNG \ n AKFILEGX VKFILEGX RKFILEGX TKFILEGX IP2FILNG \ n PHASE \ n PHASE 4子代:PHASE \ SUB 2 ASE:PHASE \ SUBFASE \ n PH4FIESNG \ n 1 ASE:PHASE \ SUB 2FASE \ SUB_FASE \ n PH4FASENG \ n PHASE \ SUBSTYLE \ n PH4FASENG \ n 1 02:17.22 \ n正在处理家族\ n正在启动家族IL_WUPMAN IL_FMPPRB IL_AMNPRB IL_THERMO IL_LASTPROC12 \ n正在处理家族IL_LASTPROC12 \ nREADY-阶段1子阶段2 09:02:17.23 \ nREADY-阶段1 \ nSTART-阶段2。子阶段1 09:02:17.23 \ n处理家族\ n处理家族\ nREADY-阶段2子阶段1 09:02:17.23 \ n开始-阶段2子阶段3 09:02:17.23 \ n正在处理家族\ n文件加载\ n正在处理家族\ n 2子阶段3 09:02:17.23 \ n开始-阶段2子阶段2 09:02:17.23 \ n正在处理家族\ n正在启动家族IL_MM5PRB IL_GIVCLIENT IL_CPMONITOR IL_LASTPROC22 \ n正在处理家族IL_LASTPROC22 \ nREAL DY-阶段2子阶段2 09:02:17.27 \ n就绪-阶段2 \ nSTART-阶段3 09:02:17.27 \ nSTART-阶段3子阶段1 09:02:17.27 \ n正在处理家族IL_RIESEN \ n正在处理家族\ n已准备就绪-阶段3副相1 09:02:17.27 \ n开始 - 第3阶段副相2 09:02:17.27 \ nPROCESSING族IL_THERMO \ n起始族MGW_PHLPRB MGW_VMGWHANDLER MGW_NSMANA MGW_REMOTETDMMGR MGW_TDMLOGICSTATES \ n MGW_MLPMAS MGW_PSEMAN MGW_UMXPRB MGW_RTBPRB MGW_RFHPRB MGW_ATVPRB \ n MGW_PMHPRB MGW_TG3CAL MGW_CM4PRB MGW_CMQPRB MGW_NEMED MGW_ZAUPRB \ n MGW_UMZPRO MGW_TR6FRA MGW_TDMPROXY MGW_UPPHANDLER IL_LASTPROC32 \ n正在处理家族IL_THERMO \ nREADY-阶段3子阶段2 09:02:17.52 \ nREADY-阶段3 \ nSTART-阶段4 09:02:17.52 \ n警告开始时错误0:09:02:17。 nWARMING END 09:06:12.72 \ n处理家族IL_UPGRADEMGMT IL_LASTPROC32 \ nREADY-阶段4 \ nREADY-SE 09:06:12.72 \ n -----------设备从以下位置启动2017-10-01 09:16:14.48 ---------------“

尝试使用正则表达式拆分并尝试使用KV过滤器。 没有什么能够破解它。

kv
{
field_split => "START - PHASE\s*%{NUMBER}\s*%{HOUR}:%{MINUTE}:%{SECOND}"
source => "restData"
}

预期输出:

[ START-PHASE 1 09:02:16.31 \ nSTART-PHASE 1 SUBPHASE 1 09:02:16.31 \ n正在处理家族\ n正在启动家族IL_UPGRADEMGMT IL_RIESEN IL_RIAMAN IL_MFSPRB IL_NASEVA \ n IL_EFOCEF \ n正在处理家族\ SUB1已准备就绪:PHASE 1:阶段16:阶段1。 \ n开始 - 阶段1个副相3 09:02:16.67 \ nPROCESSING族\ NFILE LOADING TSLCGRGX SWOCGRGX SCHORDGX SMPERMGX CMECGRGX \ n CGNAMEGX UCQFILNG UCYFILNG UC2FILNG UC3FILNG \ n NGDATANG ID9FILNG LEFILEGX M3PARAGX IP9FILNG \ n IP8FILNG IP7FILNG ALQFILGX TDNFILGX NG2DATNG \ n IW6FILNG VAITXTNG VAD01001 VAD01002 PHPARAGX \ n IWPARAGX VAXL00NG VAXL01NG VAXL02NG VAXL03NG \ n VAXL04NG VAXL05NG VAXL06NG VAXL07NG VAXL08NG \ n VAXL09NG VAXL10NG VAXL11NG VAXL12NG VAXL13NG \ n VAXL14NG VAXL15NG VAXE00NG VAXE01NG VAXE02NG \ n VAXE03NG VAXE04NG VAXE05NG VAXE06NG VAXE07NG \ n VAXE08NG VAXE09NG VAXE10NG VAXE11NG VAXE12NG \ n VAXE13NG VAXE14NG VAXE15NG IWQFILNG TO3FILNG \ n TN3FILNG P5PARAGX LEKFILNG LTGFILNG H24LOGNG \ n AKFILEGX VKFILEGX RKFILEGX TKFILEGX IP2FILNG \ n IP4FILNG EIKFILNG \ nPROCESSING族\ nREADY - PHASE 1副相3 09:02:17.22 \ n开始 - 阶段1个副相2 09:02:17.22 \ n正在处理家族\ n正在启动家族IL_WUPMAN IL_FMPPRB IL_AMNPRB IL_THERMO IL_LASTPROC12 \ n正在处理家族IL_LASTPROC12 \ nREADY-阶段1子阶段2 09:02:17.23 \ nREADY-阶段1 \ n, 开始-第二阶段09:02:17.23 \ n开始-第二阶段子阶段09:02:17.23 \ n正在处理家族\ n正在处理家庭\ nREADY-第二阶段子阶段1 09:02:17.23 \ n开始-第二阶段子阶段09:02: 17.23 \ n正在处理家族\ n正在加载文件\ n正在处理家族\ nREADY-阶段2子阶段3 09:02:17.23 \ nSTART-阶段2子阶段2 09:02:17.23 \ n正在处理家族\ n正在启动家族IL_MM5PRB IL_GIVCILIC \ PROFIELI -2期SUBPHASE 2 09:02:17.27 \ nREADY-2期\ n, 开始-第3阶段09:02:17.27 \ n开始-第3阶段子阶段09:02:17.27 \ n正在处理的家庭IL_RIESEN \ n正在处理的家庭\ nREADY-第3阶段的子阶段1 09:02:17.27 \ n开始-第3阶段的子阶段2 09:02 :17.27 \ nPROCESSING族IL_THERMO \ n起始族MGW_PHLPRB MGW_VMGWHANDLER MGW_NSMANA MGW_REMOTETDMMGR MGW_TDMLOGICSTATES \ n MGW_MLPMAS MGW_PSEMAN MGW_UMXPRB MGW_RTBPRB MGW_RFHPRB MGW_ATVPRB \ n MGW_PMHPRB MGW_TG3CAL MGW_CM4PRB MGW_CMQPRB MGW_NEMED MGW_ZAUPRB \ n MGW_UMZPRO MGW_TR6FRA MGW_TDMPROXY MGW_UPPHANDLER IL_LASTPROC32 \ nPROCESSING族IL_THERMO \ nREADY - 第3阶段副相2 09: 02:17.52 \ nREADY-第三阶段\ n, 开始-阶段4 09:02:17.52 \ n开始热身09:02:17.52 \ n警告发生错误0xff \ n警告结束09:06:12.72 \ n正在处理家族IL_UPGRADEMGMT IL_LASTPROC32 \ nREADY-阶段4 \ nREADY-SE 09:06:12。 \ n -----------单元启动于2017-10-01 09:16:14.48 --------------- ]

1 个答案:

答案 0 :(得分:0)

从Elastic社区获得帮助:)。 可以使用带有否定超前断言的ruby正则表达式。

红宝石{代码=>'event.set(“ matches”,event.get(“ message”)。scan(/ ^ START-阶段[0-9] [0-9](?:( ?! START -阶段[0-9] [0-9])。)* / m))'}

https://discuss.elastic.co/t/split-an-event-help-needed/181420