У меня такой формат журнала
[23:59:43] TYPE[student03]
[23:59:43] Write Ack!
[23:59:43] <application><status>Active</status></application>
[23:59:43] --------PushToFile Start--------
[23:59:43] --------PushToFile Name --------
[23:59:43] --------PushToFile End--------
[23:59:47] --------on parser--------
[23:59:47] ClientIPAddress > 123.12.123.2
[23:59:43] TYPE[student04]
[23:59:43] Write Ack!
[23:59:43] FGHSFHG3453D56HJ3456FJ372GJ1387FFKJH
[23:59:43] --------PushToFile Start--------
[23:59:43] --------PushToFile Name --------
[23:59:43] --------PushToFile End--------
[23:59:47] --------on parser--------
[23:59:47] ClientIPAddress > 123.12.123.2
[23:59:43] TYPE[student03]
[23:59:43] Write Ack!
[23:59:43] FGHSFHG3453D56HJ3456FJ372GJ1387FFKJH
[23:59:43] --------PushToFile Start--------
[23:59:43] --------PushToFile Name --------
[23:59:43] --------PushToFile End--------
[23:59:47] --------on parser--------
[23:59:47] ClientIPAddress > 123.12.123.2
Я хочу проанализировать эти журналы, чтобы получить только ТИП [student03] и статус студента. Остальные строчки сбрасываю фильтрами losta sh. Теперь мне нужен ТИП и статус как одно событие, чтобы я мог отправить его в rabbitmq как одно сообщение, например
[23:59:43]-student03-<application><status>Active</status></application>
Как мы можем добиться этого с помощью агрегированных фильтров? Я пробовал агрегатные фильтры. Но я думаю, что нам нужен один и тот же шаблон в обеих строках журнала для слияния с агрегатом. или любые альтернативы для этого
Пожалуйста, помогите!
My logsta sh файл конфигурации
beats {
port => 5044
}
}
filter {
if ([message] =~ "Write Ack!"){
drop{}
}
else if ([message] =~ "PushToFile Start"){
drop{}
}
else if ([message] =~ "PushToFile Name"){
drop{}
}
else if ([message] =~ "PushToFile End"){
drop{}
}
else if ([message] =~ "on parser"){
drop{}
}
else if ([message] =~ "ClientIPAddress") {
drop { }
}
}
output {
stdout { codec => rubydebug }
}