Logstash как разбить поле в logstash - PullRequest
0 голосов
/ 16 мая 2019

Мне нужна помощь в разбивке поля ниже, я хочу создать массив всех вхождений в поле ниже, которое начинается с «START - PHASE 1 09: 02: 16.31, время - это динамическое значение, сгенерированное. Пожалуйста, найдите входполе и ожидаемый результат обновлены ниже. Ищу решение в сети, я не совсем понимаю, пожалуйста, помогите.

Поле для разделения:

"restData" => "START - PHASE 109: 02: 16,31 \ nSTART - ФАЗА 1 субфаза-09: 02: 16.31 \ nPROCESSING СЕМЬИ \ nSTARTING сЕМЕЙ IL_UPGRADEMGMT IL_RIESEN IL_RIAMAN IL_MFSPRB IL_NASEVA \ п IL_EFOCEF \ nPROCESSING СЕМЬИ \ nREADY - ФАЗА 1 субфаза-09: 02: 16,67 \ nSTART - ФАЗА1 субфазе 3 09: 02: 16.67 \ nPROCESSING СЕМЬИ \ nFILE ЗАГРУЗКА TSLCGRGX SWOCGRGX SCHORDGX SMPERMGX CMECGRGX \ п CGNAMEGX UCQFILNG UCYFILNG UC2FILNG UC3FILNG \ п NGDATANG ID9FILNG LEFILEGX M3PARAGX IP9FILNG \ п IP8FILNG IP7FILNG ALQFILGX TDNFILGX NG2DATNG \ п IW6FILNG VAITXTNG VAD01001 VAD01002 PHPARAGX \ п IWPARAGXVAXL00NG VAXL01NG VAXL02NG VAXL03NG \п VAXL04NG VAXL05NG VAXL06NG VAXL07NG VAXL08NG \ п VAXL09NG VAXL10NG VAXL11NG VAXL12NG VAXL13NG \ п VAXL14NG VAXL15NG VAXE00NG VAXE01NG VAXE02NG \ п VAXE03NG VAXE04NG VAXE05NG VAXE06NG VAXE07NG \ п VAXE08NG VAXE09NG VAXE10NG VAXE11NG VAXE12NG \ п VAXE13NG VAXE14NG VAXE15NG IWQFILNG TO3FILNG \ п TN3FILNG P5PARAGX LEKFILNG LTGFILNG H24LOGNG \ пAKFILEGX VKFILEGX RKFILEGX TKFILEGX IP2FILNG \ п IP4FILNG EIKFILNG \ nPROCESSING СЕМЬЯ \ nREADY - ФАЗА 1 субфаза-09: 02: 17,22 \ nSTART - ФАЗА 1 субфаза-09: 02: 17.22 \ nPROCESSING сЕМЕЙ \ nSTARTING СЕМЬИ IL_WUPMAN IL_FMPPRB IL_AMNPRB IL_THERMO IL_LASTPROC12 \ nPROCESSING сЕМЕЙIL_LASTPROC12 \ nREADY - ФАЗА 1 ПОДФАЗА 2 09: 02: 17.23 \ nREADY - ФАЗА 1 \ nSTART - ФАЗА 2 09: 02: 17.23 \ nSTART - ФАЗА 2 ПОДФАЗА 1 09: 02: 17.23 \ nПЕРЕРАБАТЫВАЕМЫЕ СЕМЬИ2 СУБФАЗА 1 09: 02: 17.23 \ nSTART - ФАЗА 2 СУБФАЗА 3 09: 02: 17.23 \ nПЕРЕРАБОТКА СЕМЬЕЙ \ nФИЛИРОВАНИЕ ЗАГРУЗКИ \ nОБРАБОТКА СЕМЬЕЙ \ nREADY - ФАЗА 2 СУБФАЗА 3 09: 02: 17.23 \ nSTART - PHASE 2 субфазы-09: 02: 17.23 \ nPROCESSING СЕМЬИ \ nSTARTING СЕМЕЙ IL_MM5PRB IL_GIVCLIENT IL_CPMONITOR IL_LASTPROC22 \ nPROCESSING СЕМЬИ IL_LASTPROC22 \ nREADY - ФАЗА 2 субфазы-09: 02: 17,27 \ nREADY - ФАЗА 2 \ nSTART - ФАЗА 3 09: 02: 17.27\ nSTART - ФАЗА 3 СУБФАЗА 1 09: 02: 17.27 \ nОБРАБОТКА СЕМЬЕЙ IL_RIESEN \ nПЕРЕРАБОТКА СЕМЬЕЙ \ nREADY - ФАЗА 3 СУБФАЗА 1 09: 02: 17.27 \ nSTART - ФАЗА 3 СУБФАЗА 2 09: 02: 17.2 ФИНАНСОВАЯ ФИРМА \ nPROMGW_PHLPRB MGW_VMGWHANDLER MGW_NSMANA MGW_REMOTETDMMGR MGW_TDMLOGICSTATES \ п MGW_MLPMAS MGW_PSEMAN MGW_UMXPRB MGW_RTBPRB MGW_RFHPRB MGW_ATVPRB \ п MGW_PMHPRB MGW_TG3CAL MGW_CM4PRB MGW_CMQPRB MGW_NEMED MGW_ZAUPRB \ п MGW_UMZPRO MGW_TR6FRA MGW_TDMPROXY MGW_UPPHANDLER IL_LASTPROC32 \ nPROCESSING СЕМЬИ IL_THERMO \ nREADY - ФАЗА 3 субфазе 2 09: 02: 17,52 \ nREADY - ФАЗА 3 \nSTART - ФАЗА 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.72 \ n ----------- Устройство запускается в 2017-10-01 09: 16: 14.48 --------------- "

Попытка разбиения с помощью регулярного выражения и попытка использования фильтра KV.Ничто не может взломать это.

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

Ожидаемый результат:

[START - ФАЗА 1 09: 02: 16,31 \ nSTART - ФАЗА 1 субфаза-09: 02: 16.31 \ nPROCESSING СЕМЬЯ \ nSTARTING СЕМЬЯ IL_UPGRADEMGMT IL_RIESEN IL_RIAMAN IL_MFSPRB IL_NASEVA \ п IL_EFOCEF \ nPROCESSING СЕМЬЯ \ nREADY - ФАЗА 1 субфаза-09: 02: 16.67 \ nSTART - ФАЗА 1 субфазе 3 09: 02: 16.67 \ nPROCESSING СЕМЬИ \ nFILE ЗАГРУЗКА TSLCGRGX SWOCGRGX SCHORDGX SMPERMGX CMECGRGX \ п CGNAMEGX UCQFILNG UCYFILNG UC2FILNG UC3FILNG \ п NGDATANG ID9FILNG LEFILEGX M3PARAGX IP9FILNG \ п IP8FILNG IP7FILNG ALQFILGX TDNFILGX NG2DATNG \ п IW6FILNG VAITXTNG VAD01001 VAD01002 PHPARAGX \ п IWPARAGX VAXL00NG VAXL01NG VAXL02NG VAXL03NG \ п VAXL04NG VAXL05NG VAXL06NG VAXL07NG VAXL08NG \ п VAXL09NG VAXL10NG VAXL11NG VAXL12NG VAXL13NG \ п VAXL14NG VAXL15NG VAXE00NG VAXE01NG VAXE02NG \ п VAXE03NG VAXE04NG VAXE05NG VAXE06NG VAXE07NG \ п VAXE08NG VAXE09NG VAXE10NG VAXE11NG VAXE12NG \ п VAXE13NG VAXE14NG VAXE15NG IWQFILNG TO3FILNG \ п TN3FILNG P5PARAGX LEKFILNG LTGFILNG H24LOGNG \ п AKFILEGX VKFILEGX RKFILEGX TKFILEGX IP2FILNG \ п IP4FILNG EIKFILNG \ nPROCESSING СЕМЬЯ \ nREADY - ФАЗА 1 субфаза-09: 02: 17,22 \ nSTART - ФАЗА 1 субфаза-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 \ 1 \ NREAD - START - ФАЗА 2 09: 02: 17.23 \ nSTART - ФАЗА 2 ПОДФАЗА 1 09: 02: 17.23 \ n ОБРАБОТКА СЕМЬЕЙ \ nПЕРЕРАБОТКА СЕМЬЕЙ \ nREADY - ФАЗА 2 ПОДФАЗА 1 09: 02: 17.23 \ nSTART - ФАЗА 2 ПОДФАЗА 3 09:02: 17.23 \ nПЕРЕРАБАТЫВАЮЩИЕ СЕМЬИ \ nФИЗИЛЬНАЯ ЗАГРУЗКА \ nПРОЦЕССИРУЮЩИЕ СЕМЬИ \ nREADY - ФАЗА 2 ПОДФАЗА 3 09: 02: 17.23 \ nSTART - ФАЗА 2 ПОДФАЗА 2 09: 02: 17.23 \ nПРОЦЕССИРУЮЩИЕ СЕМЕЙСТВА - ФАЗА 2 ПОДФАЗА 2 09: 02: 17.27 \ n ГОТОВ - ФАЗА 2 \ n, START - ФАЗА 3 09: 02: 17.27 \ nSTART - ФАЗА 3 ПОДФАЗА 1 09: 02: 17.27 \ n ОБРАБАТЫВАЕМЫЕ СЕМЬИ IL_RIESEN \ nПЕРЕРАБАТЫВАЕМЫЕ СЕМЕЙСТВА : 17,27 \ nPROCESSING СЕМЬЯ IL_THERMO \ nSTARTING СЕМЬЯ MGW_PHLPRB MGW_VMGWHANDLER MGW_NSMANA MGW_REMOTETDMMGR MGW_TDMLOGICSTATES \ п MGW_MLPMAS MGW_PSEMAN MGW_UMXPRB MGW_RTBPRB MGW_RFHPRB MGW_ATVPRB \ п MGW_PMHPRB MGW_TG3CAL MGW_CM4PRB MGW_CMQPRB MGW_NEMED MGW_ZAUPRB \ п MGW_UMZPRO MGW_TR6FRA MGW_TDMPROXY MGW_UPPHANDLER IL_LASTPROC32 \ nPROCESSING СЕМЬЯ IL_THERMO \ nREADY - ФАЗА 3 субфазы-09: 02: 17.52 \ nREADY - ФАЗА 3 \ 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: 09.11: \ n ----------- Устройство запускается в 2017-10-01 09: 16: 14.48 --------------- ]

1 Ответ

0 голосов
/ 16 мая 2019

Получил помощь от сообщества Elastic :).Может использовать регулярное выражение ruby ​​с отрицательным утверждением прогнозирования.

ruby ​​{code => 'event.set ("совпадения", event.get ("сообщение"). Scan (/ ^ START - PHASE [0-9] [0-9] (? :( НАЧАТЬ - ФАЗА [0-9] [0-9]).) * / M)) '}

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

...