Logstash如何拆分logstash中的一个字段
Logstash how to split a field in logstash
我需要帮助拆分下面的字段,我想创建下面字段中所有事件的数组,这些字段以“START - PHASE 1 09:02:16.31 开头,时间是生成的动态值。
请在下面找到更新的输入字段和预期输出。我在网上寻找解决方案我不太了解它,请帮助。
要拆分的字段:
"restData" => "START - PHASE 1 09:02:16.31\nSTART - PHASE 1 SUBPHASE 1 09:02:16.31\nPROCESSING FAMILIES \nSTARTING FAMILIES IL_UPGRADEMGMT IL_RIESEN IL_RIAMAN IL_MFSPRB IL_NASEVA \n IL_EFOCEF \nPROCESSING FAMILIES \nREADY - PHASE 1 SUBPHASE 1 09:02:16.67\nSTART - PHASE 1 SUBPHASE 3 09:02:16.67\nPROCESSING FAMILIES \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 FAMILIES \nREADY - PHASE 1 SUBPHASE 3 09:02:17.22\nSTART - PHASE 1 SUBPHASE 2 09:02:17.22\nPROCESSING FAMILIES \nSTARTING FAMILIES IL_WUPMAN IL_FMPPRB IL_AMNPRB IL_THERMO IL_LASTPROC12 \nPROCESSING FAMILIES IL_LASTPROC12 \nREADY - PHASE 1 SUBPHASE 2 09:02:17.23\nREADY - PHASE 1\nSTART - PHASE 2 09:02:17.23\nSTART - PHASE 2 SUBPHASE 1 09:02:17.23\nPROCESSING FAMILIES \nPROCESSING FAMILIES \nREADY - PHASE 2 SUBPHASE 1 09:02:17.23\nSTART - PHASE 2 SUBPHASE 3 09:02:17.23\nPROCESSING FAMILIES \nFILE LOADING \nPROCESSING FAMILIES \nREADY - PHASE 2 SUBPHASE 3 09:02:17.23\nSTART - PHASE 2 SUBPHASE 2 09:02:17.23\nPROCESSING FAMILIES \nSTARTING FAMILIES IL_MM5PRB IL_GIVCLIENT IL_CPMONITOR IL_LASTPROC22 \nPROCESSING FAMILIES IL_LASTPROC22 \nREADY - PHASE 2 SUBPHASE 2 09:02:17.27\nREADY - PHASE 2\nSTART - PHASE 3 09:02:17.27\nSTART - PHASE 3 SUBPHASE 1 09:02:17.27\nPROCESSING FAMILIES IL_RIESEN \nPROCESSING FAMILIES \nREADY - PHASE 3 SUBPHASE 1 09:02:17.27\nSTART - PHASE 3 SUBPHASE 2 09:02:17.27\nPROCESSING FAMILIES IL_THERMO \nSTARTING FAMILIES 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 FAMILIES IL_THERMO \nREADY - PHASE 3 SUBPHASE 2 09:02:17.52\nREADY - PHASE 3\nSTART - PHASE 4 09:02:17.52\nWARMING BEGIN 09:02:17.52\nWARMING FAILURE WITH ERROR 0xff\nWARMING END 09:06:12.72\nPROCESSING FAMILIES IL_UPGRADEMGMT IL_LASTPROC32 \nREADY - PHASE 4\nREADY - SE 09:06:12.72\n-----------Unit Starting up at 2017-10-01 09:16:14.48---------------"
尝试使用正则表达式拆分并尝试使用 KV 过滤器。
没有什么能破解它。
kv
{
field_split => "START - PHASE\s*%{NUMBER}\s*%{HOUR}:%{MINUTE}:%{SECOND}"
source => "restData"
}
预期输出:
[
开始 - 第 1 阶段 09:02:16.31\nSTART - 第 1 阶段子阶段 1 09:02:16.31\nPROCESSING 家庭\n开始家庭 IL_UPGRADEMGMT IL_RIESEN IL_RIAMAN IL_MFSPRB IL_NASEVA \n IL_EFOCEF \n处理系列\n就绪 - 阶段 1 子阶段 1 09:02:16。67\nSTART - 阶段 1 子阶段 3 09:02:16.67\nPROCESSING FAMILIES \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 \n处理家庭\n就绪 - 阶段 1 子阶段 3 09:02:17。22\nSTART - 阶段 1 子阶段 = 2 [=58]。 30=] 家庭 \n开始家庭 IL_WUPMAN IL_FMPPRB IL_AMNPRB IL_THERMO IL_LASTPROC12 \n正在处理家庭 IL_LASTPROC12 \n准备就绪 - 第 1 阶段第 2 子阶段 09:02:17.23\nREADY - 阶段 1\n,
开始 - 阶段 2 09:02:17.23\nSTART - 阶段 2 子阶段 1 09:02:17.23\nPROCESSING 家庭\n正在处理家庭\n就绪 - 阶段 2 子阶段 1 09:02:17.23\nSTART - 阶段 2 子阶段 3 09:02:17.23\nPROCESSING 系列\n文件加载\n正在处理系列\n就绪 - 阶段 2 子阶段 3 09:02:17.23\nSTART - 阶段 2 子阶段 2 09:02:17.23\nPROCESSING 家庭\n开始家庭 IL_MM5PRB IL_GIVCLIENT IL_CPMONITOR IL_LASTPROC22 \n正在处理家庭 IL_LASTPROC22 \n准备 - 第 2 阶段第 2 子09:02:17.27\nREADY - 阶段 2\n,
开始 - 阶段 3 09:02:17.27\nSTART - 阶段 3 子阶段 1 09:02:17.27\nPROCESSING 家庭 IL_RIESEN\n处理家庭\n准备 - 阶段 3 子阶段 1 09:02:17.27\nSTART - 第 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 FAMILIES IL_THERMO\nREADY - PHASE 3 SUBPHASE 2 09:02:17.52\nREADY - PHASE 3\n,
开始 - 第 4 阶段 09:02:17.52\n预热开始 09:02:17.52\n预热失败并出现错误 0xff\nWARMING 结束 09:06:12.72\n正在处理家庭 IL_UPGRADEMGMT IL_LASTPROC32\n就绪 - 阶段 4\nREADY - SE 09:06:12.72\n------------单元开始截至 2017-10-01 09:16:14.48--------------
]
从 Elastic 社区获得了帮助:)。
可以使用带有否定先行断言的 ruby 正则表达式。
ruby { 代码 => 'event.set("matches", event.get("message").scan(/^START - PHASE [0-9] [0-9](?:(?!START - PHASE [0-9] [0-9]).)*/m))' }
https://discuss.elastic.co/t/split-an-event-help-needed/181420
我需要帮助拆分下面的字段,我想创建下面字段中所有事件的数组,这些字段以“START - PHASE 1 09:02:16.31 开头,时间是生成的动态值。 请在下面找到更新的输入字段和预期输出。我在网上寻找解决方案我不太了解它,请帮助。
要拆分的字段:
"restData" => "START - PHASE 1 09:02:16.31\nSTART - PHASE 1 SUBPHASE 1 09:02:16.31\nPROCESSING FAMILIES \nSTARTING FAMILIES IL_UPGRADEMGMT IL_RIESEN IL_RIAMAN IL_MFSPRB IL_NASEVA \n IL_EFOCEF \nPROCESSING FAMILIES \nREADY - PHASE 1 SUBPHASE 1 09:02:16.67\nSTART - PHASE 1 SUBPHASE 3 09:02:16.67\nPROCESSING FAMILIES \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 FAMILIES \nREADY - PHASE 1 SUBPHASE 3 09:02:17.22\nSTART - PHASE 1 SUBPHASE 2 09:02:17.22\nPROCESSING FAMILIES \nSTARTING FAMILIES IL_WUPMAN IL_FMPPRB IL_AMNPRB IL_THERMO IL_LASTPROC12 \nPROCESSING FAMILIES IL_LASTPROC12 \nREADY - PHASE 1 SUBPHASE 2 09:02:17.23\nREADY - PHASE 1\nSTART - PHASE 2 09:02:17.23\nSTART - PHASE 2 SUBPHASE 1 09:02:17.23\nPROCESSING FAMILIES \nPROCESSING FAMILIES \nREADY - PHASE 2 SUBPHASE 1 09:02:17.23\nSTART - PHASE 2 SUBPHASE 3 09:02:17.23\nPROCESSING FAMILIES \nFILE LOADING \nPROCESSING FAMILIES \nREADY - PHASE 2 SUBPHASE 3 09:02:17.23\nSTART - PHASE 2 SUBPHASE 2 09:02:17.23\nPROCESSING FAMILIES \nSTARTING FAMILIES IL_MM5PRB IL_GIVCLIENT IL_CPMONITOR IL_LASTPROC22 \nPROCESSING FAMILIES IL_LASTPROC22 \nREADY - PHASE 2 SUBPHASE 2 09:02:17.27\nREADY - PHASE 2\nSTART - PHASE 3 09:02:17.27\nSTART - PHASE 3 SUBPHASE 1 09:02:17.27\nPROCESSING FAMILIES IL_RIESEN \nPROCESSING FAMILIES \nREADY - PHASE 3 SUBPHASE 1 09:02:17.27\nSTART - PHASE 3 SUBPHASE 2 09:02:17.27\nPROCESSING FAMILIES IL_THERMO \nSTARTING FAMILIES 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 FAMILIES IL_THERMO \nREADY - PHASE 3 SUBPHASE 2 09:02:17.52\nREADY - PHASE 3\nSTART - PHASE 4 09:02:17.52\nWARMING BEGIN 09:02:17.52\nWARMING FAILURE WITH ERROR 0xff\nWARMING END 09:06:12.72\nPROCESSING FAMILIES IL_UPGRADEMGMT IL_LASTPROC32 \nREADY - PHASE 4\nREADY - SE 09:06:12.72\n-----------Unit Starting up at 2017-10-01 09:16:14.48---------------"
尝试使用正则表达式拆分并尝试使用 KV 过滤器。 没有什么能破解它。
kv
{
field_split => "START - PHASE\s*%{NUMBER}\s*%{HOUR}:%{MINUTE}:%{SECOND}"
source => "restData"
}
预期输出:
[ 开始 - 第 1 阶段 09:02:16.31\nSTART - 第 1 阶段子阶段 1 09:02:16.31\nPROCESSING 家庭\n开始家庭 IL_UPGRADEMGMT IL_RIESEN IL_RIAMAN IL_MFSPRB IL_NASEVA \n IL_EFOCEF \n处理系列\n就绪 - 阶段 1 子阶段 1 09:02:16。67\nSTART - 阶段 1 子阶段 3 09:02:16.67\nPROCESSING FAMILIES \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 \n处理家庭\n就绪 - 阶段 1 子阶段 3 09:02:17。22\nSTART - 阶段 1 子阶段 = 2 [=58]。 30=] 家庭 \n开始家庭 IL_WUPMAN IL_FMPPRB IL_AMNPRB IL_THERMO IL_LASTPROC12 \n正在处理家庭 IL_LASTPROC12 \n准备就绪 - 第 1 阶段第 2 子阶段 09:02:17.23\nREADY - 阶段 1\n, 开始 - 阶段 2 09:02:17.23\nSTART - 阶段 2 子阶段 1 09:02:17.23\nPROCESSING 家庭\n正在处理家庭\n就绪 - 阶段 2 子阶段 1 09:02:17.23\nSTART - 阶段 2 子阶段 3 09:02:17.23\nPROCESSING 系列\n文件加载\n正在处理系列\n就绪 - 阶段 2 子阶段 3 09:02:17.23\nSTART - 阶段 2 子阶段 2 09:02:17.23\nPROCESSING 家庭\n开始家庭 IL_MM5PRB IL_GIVCLIENT IL_CPMONITOR IL_LASTPROC22 \n正在处理家庭 IL_LASTPROC22 \n准备 - 第 2 阶段第 2 子09:02:17.27\nREADY - 阶段 2\n, 开始 - 阶段 3 09:02:17.27\nSTART - 阶段 3 子阶段 1 09:02:17.27\nPROCESSING 家庭 IL_RIESEN\n处理家庭\n准备 - 阶段 3 子阶段 1 09:02:17.27\nSTART - 第 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 FAMILIES IL_THERMO\nREADY - PHASE 3 SUBPHASE 2 09:02:17.52\nREADY - PHASE 3\n, 开始 - 第 4 阶段 09:02:17.52\n预热开始 09:02:17.52\n预热失败并出现错误 0xff\nWARMING 结束 09:06:12.72\n正在处理家庭 IL_UPGRADEMGMT IL_LASTPROC32\n就绪 - 阶段 4\nREADY - SE 09:06:12.72\n------------单元开始截至 2017-10-01 09:16:14.48-------------- ]
从 Elastic 社区获得了帮助:)。 可以使用带有否定先行断言的 ruby 正则表达式。
ruby { 代码 => 'event.set("matches", event.get("message").scan(/^START - PHASE [0-9] [0-9](?:(?!START - PHASE [0-9] [0-9]).)*/m))' }
https://discuss.elastic.co/t/split-an-event-help-needed/181420