Я играл с логсташем и хотел попробовать многострочный фильтр. Я пытаюсь разобрать один файл, который может содержать многострочный контент. Я использую многострочный фильтр, но он не работает так, как должен. У меня есть следующий файл в файле.Многострочный фильтр с logstash не работает, как ожидалось
2014-10-11 10:10:10 xxxx yyyy
2013-09-12 11:11:11 aaaa bbbb
2012-01-01 10:10:10 cccc dddd
2011-10-12 01:01:01 mmmm Nan
Grok-модель используется
CUSTOMTIME %{YEAR}-%{MONTHNUM}-%{MONTHDAY} %{TIME}
Я использую следующий файл конфигурации в logstash
input {
file{
path => "/Users/akshayanilkapoor/Kumo/logs/akshay"
codec => multiline {
pattern => "^.*"
what => "previous"
negate => true
}
}
stdin{
codec => multiline {
pattern => "^%{CUSTOMTIME}"
what => "previous"
negate => true
}
}
}
filter {
grok {
patterns_dir => "./patterns"
match => ["message", "%{CUSTOMTIME:date1} %{GREEDYDATA:lumber-type} %{GREEDYDATA:lumber-desc}"]
}
}
output {
stdout {codec => rubydebug}
}
Когда я копировать вставить данные, приведенные выше, из стандартного ввода , он работает как ожидалось, т.е. отображает вывод с сообщением, содержащим все события в файле. Когда я передаю то же самое с файлом, он выводит другое сообщение для каждой записи в журнале, то есть я получаю 4 разных события журнала (что не то, что я хочу)
Примечание: Я попытался использовать следующие параметры вместе с многострочным,
- (? M) многострочный режим в grok, и это тоже никоим образом не помогает.
- Также используется фильтр mutate для замены «\ n» на «» и проанализируйте его с помощью grok.
Я думаю, что есть очень глупая ошибка, которую я делаю, или я понимаю, что фильтр неправильно реализован. Любая помощь приветствуется!