И по традиции отвечу сам )
для себя выбрал такой механизм, может кому понадобится
input {
file {
codec => plain #сначала получаем логи как они есть
# codec => multiline {
# pattern => "T" ##создаем патерны (теги) по которым будет разбираться простыня
# negate => true
# what => "previous" ##определяет положение сшивающего тега(в данном случае в начале листа тег и инфа до следующего указаного в патерне)если ставить "next" то патерн попадает в предыдущий лист
# }
path => "/home/kab/logs/*.log"
start_position => "beginning"
type => "syslog"
}
}
filter {
##############################WORK BLOCK#######################################
mutate { # избавляемся от ненужных символов
type => "syslog"
gsub => ["message","\]|\["," "] # delete from log symbol"[]"
gsub => ["message","\|"," "] # delete from log symbol "|"
}
grok { # обрабатываем поступающее сообщение (шапку) так как она +- стандартна, остальное пройдет через фильтр неизменным
type => "syslog"
pattern => "%{SYSLOGPROG:timing_level} %{HOST:app_name}%{NOTSPACE:IDsession} %{WORD:jpkg_name} %{NOTSPACE:date} %{TIME:app_timestamp} %{PROG:method}"
}
multiline { #ну а теперь сшиваем все
type => "syslog"
pattern => "^(T0_)|(T1_)"
negate => true
what => "previous"
}
###############################################################################
mutate { # избавляемся от ненужных данных
type => "syslog"
remove => [tags]
remove => [program]
}
}
output { # и передаем на выход
stdout {
codec => "rubydebug"
}
elasticsearch {
host => "localhost"
}
}
Как то так